Name: series-workflowp9blz Phase: Succeeded StartedAt: 2026-06-25 07:47:06 +0000 UTC FinishedAt: 2026-06-25 12:26:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[0] Phase: Succeeded StartedAt: 2026-06-25 07:47:06 +0000 UTC FinishedAt: 2026-06-25 08:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[0].run-triage Phase: Succeeded StartedAt: 2026-06-25 07:47:06 +0000 UTC FinishedAt: 2026-06-25 08:06:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_UDP_TUNNEL", "NETDEVSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_UDP_TUNNEL", "NETDEVSIM" ], "series_id": "ebc357bb-28a7-4c3b-81c2-c88a6398a33d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "udp_tunnel_nic_device_sync_work", "udp_tunnel_nic_device_sync", "__udp_tunnel_nic_device_sync", "udp_tunnel_nic_replay", "udp_tunnel_nic_flush", "udp_tunnel_nic_unregister", "udp_tunnel_nic_add_new" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9VRFBfVFVOTkVMJiMzNDssCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMmIzM0OywKICAgICYjMzQ7X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19yZXBsYXkmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZmx1c2gmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlciYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19hZGRfbmV3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGF0YSByYWNlIGFuZCBjb25jdXJyZW5jeSBpc3N1ZSBpbiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBpbmZyYXN0cnVjdHVyZSBieSByZXBsYWNpbmcgYml0ZmllbGRzIHdpdGggYXRvbWljIGJpdCBvcGVyYXRpb25zLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIsIHdoaWNoIHNpbXVsYXRlcyBVRFAgdHVubmVsIG9mZmxvYWRzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgc3luY2hyb25pemF0aW9uIGFuZCB3b3JrcXVldWUgZnVuY3Rpb25zIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDkyZjM5NDM3ZGYyMjhhMWVjYzI4ZjIzZjIzNjNiNTBkMThkNTFkN2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAwODowNDo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jIGIvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xuaW5kZXggOTk0NGVkOTIzZGRmZDEuLjlhNTY3YTg3NjM1Y2FhIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xuQEAgLTMwLDkgJiM0MzszMCw3IEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7XG4gICogQHdvcms6XHRhc3luYyB3b3JrIGZvciB0YWxraW5nIHRvIGhhcmR3YXJlIGZyb20gcHJvY2VzcyBjb250ZXh0XG4gICogQGRldjpcdG5ldGRldiBwb2ludGVyXG4gICogQGxvY2s6XHRwcm90ZWN0cyBhbGwgZmllbGRzXG4tICogQG5lZWRfc3luYzpcdGF0IGxlYXN0IG9uZSBwb3J0IHN0YXJ0IGNoYW5nZWRcbi0gKiBAbmVlZF9yZXBsYXk6IHNwYWNlIHdhcyBmcmVlZCwgd2UgbmVlZCBhIHJlcGxheSBvZiBhbGwgcG9ydHNcbi0gKiBAd29ya19wZW5kaW5nOiBAd29yayBpcyBjdXJyZW50bHkgc2NoZWR1bGVkXG4mIzQzOyAqIEBmbGFnczpcdHN5bmMsIHJlcGxheSwgcGVuZGluZyBmbGFnc1xuICAqIEBuX3RhYmxlczpcdG51bWJlciBvZiB0YWJsZXMgdW5kZXIgQGVudHJpZXNcbiAgKiBAbWlzc2VkOlx0Yml0bWFwIG9mIHRhYmxlcyB3aGljaCBvdmVyZmxvd25cbiAgKiBAZW50cmllczpcdHRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkXG5AQCAtNDQsOSAmIzQzOzQyLDEwIEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pYyB7XG4gXG4gXHRzdHJ1Y3QgbXV0ZXggbG9jaztcbiBcbi1cdHU4IG5lZWRfc3luYzoxO1xuLVx0dTggbmVlZF9yZXBsYXk6MTtcbi1cdHU4IHdvcmtfcGVuZGluZzoxO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4mIzQzOyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DXHQwXG4mIzQzOyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVlcdDFcbiYjNDM7I2RlZmluZSBVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkdcdDJcbiBcbiBcdHVuc2lnbmVkIGludCBuX3RhYmxlcztcbiBcdHVuc2lnbmVkIGxvbmcgbWlzc2VkO1xuQEAgLTExNiw3ICYjNDM7MTE1LDcgQEAgdWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4gXHRcdFx0ICAgdW5zaWduZWQgaW50IGZsYWcpXG4ge1xuIFx0ZW50cnktXHUwMDNlZmxhZ3MgfD0gZmxhZztcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSAxO1xuJiM0MztcdHNldF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZFxuQEAgLTE0OCw3ICYjNDM7MTQ3LDcgQEAgdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZTtcbiBcdHVuc2lnbmVkIGludCBpLCBqO1xuIFxuLVx0aWYgKCF1dG4tXHUwMDNlbWlzc2VkKVxuJiM0MztcdGlmICghUkVBRF9PTkNFKHV0bi1cdTAwM2VtaXNzZWQpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KSB7XG5AQCAtMjgzLDcgJiM0MzsyODIsNyBAQCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHN0YXRpYyB2b2lkXG4gX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiB7XG4tXHRpZiAoIXV0bi1cdTAwM2VuZWVkX3N5bmMpXG4mIzQzO1x0aWYgKCF0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2VzeW5jX3RhYmxlKVxuQEAgLTI5MSwyMSAmIzQzOzI5MCwyNyBAQCBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0ZWxzZVxuIFx0XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV9wb3J0KGRldiwgdXRuKTtcbiBcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSAwO1xuJiM0MztcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gXHQvKiBDYW4mIzM5O3QgcmVwbGF5IGRpcmVjdGx5IGhlcmUsIGluIGNhc2Ugd2UgY29tZSBmcm9tIHRoZSB0dW5uZWwgZHJpdmVyJiMzOTtzXG4gXHQgKiBub3RpZmljYXRpb24gLSB0cnlpbmcgdG8gcmVwbGF5IG1heSBkZWFkbG9jayBpbnNpZGUgdHVubmVsIGRyaXZlci5cbiBcdCAqL1xuLVx0dXRuLVx1MDAzZW5lZWRfcmVwbGF5ID0gdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bik7XG4mIzQzO1x0aWYgKHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pKVxuJiM0MztcdFx0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG4gdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4ge1xuLVx0aWYgKCF1dG4tXHUwMDNlbmVlZF9zeW5jKVxuJiM0MztcdGlmICghdGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAodGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXHUwMDI2dXRuLVx1MDAzZXdvcmspO1xuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDE7XG4mIzQzO1x0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkcsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyBib29sXG5AQCAtMzQ4LDcgJiM0MzszNTMsNyBAQCB1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuIFx0XHRcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGVudHJ5LVx1MDAzZXBvcnQgPT0gdGktXHUwMDNlcG9ydCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgZW50cnktXHUwMDNldHlwZSAhPSB0aS1cdTAwM2V0eXBlKSB7XG4tXHRcdFx0XHRfX3NldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4mIzQzO1x0XHRcdFx0c2V0X2JpdChpLCBcdTAwMjZ1dG4tXHUwMDNlbWlzc2VkKTtcbiBcdFx0XHRcdHJldHVybiB0cnVlO1xuIFx0XHRcdH1cbiBcdFx0fVxuQEAgLTQ4Myw3ICYjNDM7NDg4LDcgQEAgdWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbiBcdFx0ICogYXJlIG5vIGRldmljZXMgY3VycmVudGx5IHdoaWNoIGhhdmUgbXVsdGlwbGUgdGFibGVzIGFjY2VwdGluZ1xuIFx0XHQgKiB0aGUgc2FtZSB0dW5uZWwgdHlwZSwgYW5kIGZhbHNlIHBvc2l0aXZlcyBhcmUgb2theS5cbiBcdFx0ICovXG4tXHRcdF9fc2V0X2JpdChpLCBcdTAwMjZ1dG4tXHUwMDNlbWlzc2VkKTtcbiYjNDM7XHRcdHNldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtNTUyLDcgJiM0Mzs1NTcsNyBAQCBzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX3Jlc2V0X250ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4gXG4tXHR1dG4tXHUwMDNlbmVlZF9zeW5jID0gZmFsc2U7XG4mIzQzO1x0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspXG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspIHtcbiBcdFx0XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xuQEAgLTY5Niw4ICYjNDM7NzAxLDggQEAgdWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KVxuIFx0XHRtZW1zZXQodXRuLVx1MDAzZWVudHJpZXNbaV0sIDAsIGFycmF5X3NpemUoaW5mby1cdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzLFxuIFx0XHRcdFx0XHRcdCAgICAgIHNpemVvZigqKnV0bi1cdTAwM2VlbnRyaWVzKSkpO1xuLVx0V0FSTl9PTih1dG4tXHUwMDNlbmVlZF9zeW5jKTtcbi1cdHV0bi1cdTAwM2VuZWVkX3JlcGxheSA9IDA7XG4mIzQzO1x0V0FSTl9PTih0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpO1xuJiM0MztcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIHZvaWRcbkBAIC03MTMsOCAmIzQzOzcxOCw4IEBAIHVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspXG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspXG4gXHRcdFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbaV1bal0pO1xuLVx0dXRuLVx1MDAzZW1pc3NlZCA9IDA7XG4tXHR1dG4tXHUwMDNlbmVlZF9yZXBsYXkgPSAwO1xuJiM0MztcdFdSSVRFX09OQ0UodXRuLVx1MDAzZW1pc3NlZCwgMCk7XG4mIzQzO1x0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIFxuIFx0aWYgKCFpbmZvLVx1MDAzZXNoYXJlZCkge1xuIFx0XHR1ZHBfdHVubmVsX2dldF9yeF9pbmZvKGRldik7XG5AQCAtNzM2LDEwICYjNDM7NzQxLDEwIEBAIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0cnRubF9sb2NrKCk7XG4gXHRtdXRleF9sb2NrKFx1MDAyNnV0bi1cdTAwM2Vsb2NrKTtcbiBcbi1cdHV0bi1cdTAwM2V3b3JrX3BlbmRpbmcgPSAwO1xuJiM0MztcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkcsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gXHRfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4tXHRpZiAodXRuLVx1MDAzZW5lZWRfcmVwbGF5KVxuJiM0MztcdGlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSlcbiBcdFx0dWRwX3R1bm5lbF9uaWNfcmVwbGF5KHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4gXHRtdXRleF91bmxvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuQEAgLTkwNCw3ICYjNDM7OTA5LDcgQEAgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdC8qIFdhaXQgZm9yIHRoZSB3b3JrIHRvIGJlIGRvbmUgdXNpbmcgdGhlIHN0YXRlLCBuZXRkZXYgY29yZSB3aWxsXG4gXHQgKiByZXRyeSB1bnJlZ2lzdGVyIHVudGlsIHdlIGdpdmUgdXAgb3VyIHJlZmVyZW5jZSBvbiB0aGlzIGRldmljZS5cbiBcdCAqL1xuLVx0aWYgKHV0bi1cdTAwM2V3b3JrX3BlbmRpbmcpXG4mIzQzO1x0aWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX1dPUktfUEVORElORywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0dWRwX3R1bm5lbF9uaWNfZnJlZSh1dG4pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9VRFBfVFVOTkVMJiMzNDssCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMmIzM0OywKICAgICYjMzQ7X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19yZXBsYXkmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZmx1c2gmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlciYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19hZGRfbmV3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGF0YSByYWNlIGFuZCBjb25jdXJyZW5jeSBpc3N1ZSBpbiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBpbmZyYXN0cnVjdHVyZSBieSByZXBsYWNpbmcgYml0ZmllbGRzIHdpdGggYXRvbWljIGJpdCBvcGVyYXRpb25zLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIsIHdoaWNoIHNpbXVsYXRlcyBVRFAgdHVubmVsIG9mZmxvYWRzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgc3luY2hyb25pemF0aW9uIGFuZCB3b3JrcXVldWUgZnVuY3Rpb25zIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTJmMzk0MzdkZjIyOGExZWNjMjhmMjNmMjM2M2I1MGQxOGQ1MWQ3ZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDA4OjA0OjU1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMKaW5kZXggOTk0NGVkOTIzZGRmZDEuLjlhNTY3YTg3NjM1Y2FhIDEwMDY0NAotLS0gYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMKQEAgLTMwLDkgJiM0MzszMCw3IEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7CiAgKiBAd29yazoJYXN5bmMgd29yayBmb3IgdGFsa2luZyB0byBoYXJkd2FyZSBmcm9tIHByb2Nlc3MgY29udGV4dAogICogQGRldjoJbmV0ZGV2IHBvaW50ZXIKICAqIEBsb2NrOglwcm90ZWN0cyBhbGwgZmllbGRzCi0gKiBAbmVlZF9zeW5jOglhdCBsZWFzdCBvbmUgcG9ydCBzdGFydCBjaGFuZ2VkCi0gKiBAbmVlZF9yZXBsYXk6IHNwYWNlIHdhcyBmcmVlZCwgd2UgbmVlZCBhIHJlcGxheSBvZiBhbGwgcG9ydHMKLSAqIEB3b3JrX3BlbmRpbmc6IEB3b3JrIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQKJiM0MzsgKiBAZmxhZ3M6CXN5bmMsIHJlcGxheSwgcGVuZGluZyBmbGFncwogICogQG5fdGFibGVzOgludW1iZXIgb2YgdGFibGVzIHVuZGVyIEBlbnRyaWVzCiAgKiBAbWlzc2VkOgliaXRtYXAgb2YgdGFibGVzIHdoaWNoIG92ZXJmbG93bgogICogQGVudHJpZXM6CXRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkCkBAIC00NCw5ICYjNDM7NDIsMTAgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHsKIAogCXN0cnVjdCBtdXRleCBsb2NrOwogCi0JdTggbmVlZF9zeW5jOjE7Ci0JdTggbmVlZF9yZXBsYXk6MTsKLQl1OCB3b3JrX3BlbmRpbmc6MTsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKJiM0MzsjZGVmaW5lIFVEUF9UVU5ORUxfTklDX05FRURfU1lOQwkwCiYjNDM7I2RlZmluZSBVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWQkxCiYjNDM7I2RlZmluZSBVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkcJMgogCiAJdW5zaWduZWQgaW50IG5fdGFibGVzOwogCXVuc2lnbmVkIGxvbmcgbWlzc2VkOwpAQCAtMTE2LDcgJiM0MzsxMTUsNyBAQCB1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZShzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0biwKIAkJCSAgIHVuc2lnbmVkIGludCBmbGFnKQogewogCWVudHJ5LSZndDtmbGFncyB8PSBmbGFnOwotCXV0bi0mZ3Q7bmVlZF9zeW5jID0gMTsKJiM0MzsJc2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsICZhbXA7dXRuLSZndDtmbGFncyk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDgsNyAmIzQzOzE0Nyw3IEBAIHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiAJY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlOwogCXVuc2lnbmVkIGludCBpLCBqOwogCi0JaWYgKCF1dG4tJmd0O21pc3NlZCkKJiM0MzsJaWYgKCFSRUFEX09OQ0UodXRuLSZndDttaXNzZWQpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgdXRuLSZndDtuX3RhYmxlczsgaSYjNDM7JiM0MzspIHsKQEAgLTI4Myw3ICYjNDM7MjgyLDcgQEAgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIHN0YXRpYyB2b2lkCiBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogewotCWlmICghdXRuLSZndDtuZWVkX3N5bmMpCiYjNDM7CWlmICghdGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpKQogCQlyZXR1cm47CiAKIAlpZiAoZGV2LSZndDt1ZHBfdHVubmVsX25pY19pbmZvLSZndDtzeW5jX3RhYmxlKQpAQCAtMjkxLDIxICYjNDM7MjkwLDI3IEBAIF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiAJZWxzZQogCQl1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV9wb3J0KGRldiwgdXRuKTsKIAotCXV0bi0mZ3Q7bmVlZF9zeW5jID0gMDsKJiM0MzsJY2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgJmFtcDt1dG4tJmd0O2ZsYWdzKTsKIAkvKiBDYW4mIzM5O3QgcmVwbGF5IGRpcmVjdGx5IGhlcmUsIGluIGNhc2Ugd2UgY29tZSBmcm9tIHRoZSB0dW5uZWwgZHJpdmVyJiMzOTtzCiAJICogbm90aWZpY2F0aW9uIC0gdHJ5aW5nIHRvIHJlcGxheSBtYXkgZGVhZGxvY2sgaW5zaWRlIHR1bm5lbCBkcml2ZXIuCiAJICovCi0JdXRuLSZndDtuZWVkX3JlcGxheSA9IHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pOwomIzQzOwlpZiAodWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bikpCiYjNDM7CQlzZXRfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpOwomIzQzOwllbHNlCiYjNDM7CQljbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksICZhbXA7dXRuLSZndDtmbGFncyk7CiB9CiAKIHN0YXRpYyB2b2lkCiB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIHsKLQlpZiAoIXV0bi0mZ3Q7bmVlZF9zeW5jKQomIzQzOwlpZiAoIXRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgJmFtcDt1dG4tJmd0O2ZsYWdzKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX1dPUktfUEVORElORywgJmFtcDt1dG4tJmd0O2ZsYWdzKSkKIAkJcmV0dXJuOwogCiAJcXVldWVfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsICZhbXA7dXRuLSZndDt3b3JrKTsKLQl1dG4tJmd0O3dvcmtfcGVuZGluZyA9IDE7CiYjNDM7CXNldF9iaXQoVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpOwogfQogCiBzdGF0aWMgYm9vbApAQCAtMzQ4LDcgJiM0MzszNTMsNyBAQCB1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLAogCQkJaWYgKCF1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKGVudHJ5KSAmYW1wOyZhbXA7CiAJCQkgICAgZW50cnktJmd0O3BvcnQgPT0gdGktJmd0O3BvcnQgJmFtcDsmYW1wOwogCQkJICAgIGVudHJ5LSZndDt0eXBlICE9IHRpLSZndDt0eXBlKSB7Ci0JCQkJX19zZXRfYml0KGksICZhbXA7dXRuLSZndDttaXNzZWQpOwomIzQzOwkJCQlzZXRfYml0KGksICZhbXA7dXRuLSZndDttaXNzZWQpOwogCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQl9CkBAIC00ODMsNyAmIzQzOzQ4OCw3IEBAIHVkcF90dW5uZWxfbmljX2FkZF9uZXcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sCiAJCSAqIGFyZSBubyBkZXZpY2VzIGN1cnJlbnRseSB3aGljaCBoYXZlIG11bHRpcGxlIHRhYmxlcyBhY2NlcHRpbmcKIAkJICogdGhlIHNhbWUgdHVubmVsIHR5cGUsIGFuZCBmYWxzZSBwb3NpdGl2ZXMgYXJlIG9rYXkuCiAJCSAqLwotCQlfX3NldF9iaXQoaSwgJmFtcDt1dG4tJmd0O21pc3NlZCk7CiYjNDM7CQlzZXRfYml0KGksICZhbXA7dXRuLSZndDttaXNzZWQpOwogCX0KIAogCXJldHVybiBmYWxzZTsKQEAgLTU1Miw3ICYjNDM7NTU3LDcgQEAgc3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19yZXNldF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCW11dGV4X2xvY2soJmFtcDt1dG4tJmd0O2xvY2spOwogCi0JdXRuLSZndDtuZWVkX3N5bmMgPSBmYWxzZTsKJiM0MzsJY2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgJmFtcDt1dG4tJmd0O2ZsYWdzKTsKIAlmb3IgKGkgPSAwOyBpICZsdDsgdXRuLSZndDtuX3RhYmxlczsgaSYjNDM7JiM0MzspCiAJCWZvciAoaiA9IDA7IGogJmx0OyBpbmZvLSZndDt0YWJsZXNbaV0ubl9lbnRyaWVzOyBqJiM0MzsmIzQzOykgewogCQkJc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTsKQEAgLTY5Niw4ICYjNDM7NzAxLDggQEAgdWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiAJZm9yIChpID0gMDsgaSAmbHQ7IHV0bi0mZ3Q7bl90YWJsZXM7IGkmIzQzOyYjNDM7KQogCQltZW1zZXQodXRuLSZndDtlbnRyaWVzW2ldLCAwLCBhcnJheV9zaXplKGluZm8tJmd0O3RhYmxlc1tpXS5uX2VudHJpZXMsCiAJCQkJCQkgICAgICBzaXplb2YoKip1dG4tJmd0O2VudHJpZXMpKSk7Ci0JV0FSTl9PTih1dG4tJmd0O25lZWRfc3luYyk7Ci0JdXRuLSZndDtuZWVkX3JlcGxheSA9IDA7CiYjNDM7CVdBUk5fT04odGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpKTsKJiM0MzsJY2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNzEzLDggJiM0Mzs3MTgsOCBAQCB1ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiAJZm9yIChpID0gMDsgaSAmbHQ7IHV0bi0mZ3Q7bl90YWJsZXM7IGkmIzQzOyYjNDM7KQogCQlmb3IgKGogPSAwOyBqICZsdDsgaW5mby0mZ3Q7dGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspCiAJCQl1ZHBfdHVubmVsX25pY19lbnRyeV9mcmVlemVfdXNlZCgmYW1wO3V0bi0mZ3Q7ZW50cmllc1tpXVtqXSk7Ci0JdXRuLSZndDttaXNzZWQgPSAwOwotCXV0bi0mZ3Q7bmVlZF9yZXBsYXkgPSAwOwomIzQzOwlXUklURV9PTkNFKHV0bi0mZ3Q7bWlzc2VkLCAwKTsKJiM0MzsJY2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpOwogCiAJaWYgKCFpbmZvLSZndDtzaGFyZWQpIHsKIAkJdWRwX3R1bm5lbF9nZXRfcnhfaW5mbyhkZXYpOwpAQCAtNzM2LDEwICYjNDM7NzQxLDEwIEBAIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXJ0bmxfbG9jaygpOwogCW11dGV4X2xvY2soJmFtcDt1dG4tJmd0O2xvY2spOwogCi0JdXRuLSZndDt3b3JrX3BlbmRpbmcgPSAwOwomIzQzOwljbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpOwogCV9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmModXRuLSZndDtkZXYsIHV0bik7CiAKLQlpZiAodXRuLSZndDtuZWVkX3JlcGxheSkKJiM0MzsJaWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpKQogCQl1ZHBfdHVubmVsX25pY19yZXBsYXkodXRuLSZndDtkZXYsIHV0bik7CiAKIAltdXRleF91bmxvY2soJmFtcDt1dG4tJmd0O2xvY2spOwpAQCAtOTA0LDcgJiM0Mzs5MDksNyBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogCS8qIFdhaXQgZm9yIHRoZSB3b3JrIHRvIGJlIGRvbmUgdXNpbmcgdGhlIHN0YXRlLCBuZXRkZXYgY29yZSB3aWxsCiAJICogcmV0cnkgdW5yZWdpc3RlciB1bnRpbCB3ZSBnaXZlIHVwIG91ciByZWZlcmVuY2Ugb24gdGhpcyBkZXZpY2UuCiAJICovCi0JaWYgKHV0bi0mZ3Q7d29ya19wZW5kaW5nKQomIzQzOwlpZiAodGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpKQogCQlyZXR1cm47CiAKIAl1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29uY3VycmVuY3kgRml4IGluIHRoZSBVRFAgVHVubmVsIE5JQyBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyB0b3VjaGluZyBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIEludGVyZXN0aW5nLiBUaGV5JiMzOTt2ZSBnb25lIGFuZCByZWZhY3RvcmVkIGEgZmV3IGJpdGZpZWxkcyB3aXRoaW4gdGhlIGB1ZHBfdHVubmVsX25pY2Agc3RydWN0IOKAkyBgbmVlZF9zeW5jYCwgYG5lZWRfcmVwbGF5YCwgYW5kIGB3b3JrX3BlbmRpbmdgIOKAkyBhbmQgY29uc29saWRhdGVkIHRoZW0gaW50byBhIHNpbmdsZSBgdW5zaWduZWQgbG9uZyBmbGFnc2AgZmllbGQuIFNtYXJ0IG1vdmUsIHRoYXQmIzM5O3MgYWxtb3N0IGFsd2F5cyBhIGdvb2QgaW5kaWNhdG9yIGZvciBhIGNvbmN1cnJlbmN5IG9yIGRhdGEgcmFjZSBmaXguIFRoZXkmIzM5O3JlIHVzaW5nIGF0b21pYyBiaXQgb3BlcmF0aW9ucyAoYHNldF9iaXRgLCBgY2xlYXJfYml0YCwgYHRlc3RfYml0YCksIGFuZCBgUkVBRF9PTkNFYC9gV1JJVEVfT05DRWAgZm9yIGBtaXNzZWRgLiBUaGlzIHJlYWxseSBzbWVsbHMgbGlrZSBhIGNsYXNzaWMgbXVsdGktdGhyZWFkZWQgYWNjZXNzIHByb2JsZW0gdGhhdCBuZWVkZWQgYSBjbGVhbiBzb2x1dGlvbi4KCk5vdywgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGNvbnRleHQuIExldCBtZSBkaXZlIGludG8gYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgIGl0c2VsZi4gUmlnaHQsIGl0JiMzOTtzIHBhcnQgb2YgdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgaW5mcmFzdHJ1Y3R1cmUuIE9rYXksIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB3aGF0IHBhcnRzIG9mIHRoZSBzeXN0ZW0gYXJlIGFjdHVhbGx5ICp1c2luZyogdGhpcy4gSXMgaXQgZXZlbiByZWFjaGFibGUgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJiMzOTttIHRyeWluZyB0byByZWNhbGwgdGhlIGNvbW1vbiBhcmNoaXRlY3R1cmVzIHVzaW5nIGl0IGFuZCB0aGUgcG90ZW50aWFsIGdvdGNoYXMuLi4gV2FpdCwgaXQmIzM5O3MgZm9yIE5JQyBvZmZsb2FkLiBUaGF0JiMzOTtzIGEga2V5IGRldGFpbCEgU28gdGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGFueSAqdmlydHVhbCogZHJpdmVyIGxldmVyYWdlIHRoaXM/IE9yIGlzIGl0IHNvbWV0aGluZyB0aGF0IGNvdWxkIGFsc28gYmUgdHJpZ2dlcmVkIGJ5IHNvZnR3YXJlLCBwZXJoYXBzIGV2ZW4gcnVubmluZyBpbiBhIFZNPyBIbW0uLi4KCk9rYXksIGxldCYjMzk7cyB0cmFjZSB0aGlzIGJhY2suIEkmIzM5O2xsIGNoZWNrIHRoZSB1c2FnZSBvZiBgdWRwX3R1bm5lbF9uaWNfaW5mb2AuIFRoYXQmIzM5O3MgdGhlIGJlc3Qgd2F5IHRvIGRldGVybWluZSB0aGUgc2NvcGUgYW5kIGltcGFjdCBvZiB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBhbmQgaG93IHRoaXMgY29kZSBpcyBiZWluZyBhY2Nlc3NlZCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoZSBwYXRjaCBhbmQgaG93IGl0IGFkZHJlc3NlcyB0aGUgcmFjZSBjb25kaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX3R1bm5lbF9uaWNfaW5mbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvbmV0X2RldmljZS5yc3Q9MTcyPXN0cnVjdCBtYWNzZWNfb3BzKiAgICAgICAgICAgICAgICAgIG1hY3NlY19vcHNcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9uZXRfZGV2aWNlLnJzdDoxNzM6c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8qICAgICAgICAgdWRwX3R1bm5lbF9uaWNfaW5mb1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0LTE3NC1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWMqICAgICAgICAgICAgICB1ZHBfdHVubmVsX25pY1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9ODk1PXN0YXRpYyBpbnQgeGdiZV92eGxhbl91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6OTA2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB4Z2JlX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDctXHQuc2V0X3BvcnRcdD0geGdiZV92eGxhbl9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6OTE1OmNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICp4Z2JlX2dldF91ZHBfdHVubmVsX2luZm8odm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTE2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLW1haW4uYz0xNTI9aW50IHhnYmVfY29uZmlnX25ldGRldihzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmM6MjYzOlx0XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IHhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbygpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjY0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaD0xMjk2PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqeGdiZV9nZXRfZXRodG9vbF9vcHModm9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg6MTI5Nzpjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqeGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKHZvaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTEyOTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEwMjExPXN0YXRpYyBpbnQgYm54MnhfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTAyMjI6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJueDJ4X3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEwMjIzLVx0LnN5bmNfdGFibGVcdD0gYm54MnhfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMzA0MD1zdGF0aWMgaW50IGJueDJ4X2luaXRfZGV2KHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzIwNy1cdFx0aWYgKElTX1BGKGJwKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMzIwODpcdFx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmJueDJ4X3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMjA5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE1OTYyPXN0YXRpYyBpbnQgYm54dF91ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE1OTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTU5Nzg6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJueHRfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3OS1cdC5zZXRfcG9ydFx0PSBibnh0X3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTY5NDU9c3RhdGljIGludCBibnh0X2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE3MDUyLVx0aWYgKGJwLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MDUzOlx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmJueHRfdWRwX3R1bm5lbHNfcDc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1NC1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MDU1Olx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmJueHRfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0yNjg1PXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2OTY6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGxpcXVpZGlvX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5Ny1cdC5zZXRfcG9ydFx0PSBsaXF1aWRpb191ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTMzMjI9c3RhdGljIGludCBzZXR1cF9uaWNfZGV2aWNlcyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzU4MzpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM1ODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc3Mj1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzgzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBsaXF1aWRpb191ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3ODQtXHQuc2V0X3BvcnRcdD0gbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0xOTE5PXN0YXRpYyBpbnQgc2V0dXBfbmljX2RldmljZXMoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjA5My1cdFx0ICAgIChsaW8tXHUwMDNlZW5jX2Rldl9jYXBhYmlsaXR5IFx1MDAyNiB+TkVUSUZfRl9MUk8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MjA5NDpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIwOTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9Mzc3MD1zdGF0aWMgaW50IGN4Z2JfdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozODE4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBjeGdiX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzgxOS1cdC5zZXRfcG9ydFx0PSBjeGdiX3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9NjU3MT1zdGF0aWMgaW50IGluaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTY4MDAtXHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlcmF3Zl9jbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzo2ODAxOlx0XHRcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZjeGdiX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtNjgwMi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM9MjA3PXN0YXRpYyBpbnQgZW5pY191ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jLTIyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM6MjI5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBlbmljX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yMzAtXHQuc2V0X3BvcnRcdD0gZW5pY191ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM9MjY3NT1zdGF0aWMgaW50IGVuaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTQ4LVx0XHQgICAgZW5pYy1cdTAwM2V2eGxhbi5mbGFncyBcdTAwMjYgRU5JQ19WWExBTl9NVUxUSV9XUSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTQ5Olx0XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2ZW5pY191ZHBfdHVubmVsc192NDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1MC1cdFx0XHRpZiAoZW5pYy1cdTAwM2V2eGxhbi5mbGFncyBcdTAwMjYgRU5JQ19WWExBTl9PVVRFUl9JUFY2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTUxOlx0XHRcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZlbmljX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTUyLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYz00MDE1PXN0YXRpYyBpbnQgYmVfdnhsYW5fdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy00MDMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYzo0MDM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBiZV91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzNS1cdC5zZXRfcG9ydFx0PSBiZV92eGxhbl9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jPTUxNzk9c3RhdGljIHZvaWQgYmVfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTUyMDctXHRpZiAoIWxhbmNlcl9jaGlwKGFkYXB0ZXIpIFx1MDAyNlx1MDAyNiAhQkV4X2NoaXAoYWRhcHRlcikgXHUwMDI2XHUwMDI2ICFiZV9pc19tYyhhZGFwdGVyKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM6NTIwODpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZiZV91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNTIwOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYz00MDI9c3RhdGljIGludCBmbTEwa191ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jOjQxNzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZm0xMGtfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy00MTgtXHQuc3luY190YWJsZVx0PSBmbTEwa191ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9MTU0MT1zdHJ1Y3QgbmV0X2RldmljZSAqZm0xMGtfYWxsb2NfbmV0ZGV2KGNvbnN0IHN0cnVjdCBmbTEwa19pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTE1ODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzoxNTgxOlx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmZtMTBrX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtMTU4Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaD00Njg9c3RydWN0IGk0MGVfcGYge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oLTUyMS1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWQgdWRwX3R1bm5lbF9zaGFyZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaDo1MjI6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB1ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oLTUyMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTEzNjM3PXN0YXRpYyBpbnQgaTQwZV9jb25maWdfbmV0ZGV2KHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjEzNjgxOlx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZwZi1cdTAwM2V1ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM9MzQ0Mz1zdGF0aWMgdm9pZCBpY2Vfc2V0X29wcyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM0NTQtXHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmljZV9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6MzQ1NTpcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cGYtXHUwMDNlaHcudWRwX3R1bm5lbF9uaWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zNDU2LVx0bmV0ZGV2LVx1MDAzZXhkcF9tZXRhZGF0YV9vcHMgPSBcdTAwMjZpY2VfeGRwX21kX29wcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz0zOTcwPWludCBpY2VfaW5pdF9wZihzdHJ1Y3QgaWNlX3BmICpwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM5NzEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6Mzk3MjpcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICp1ZHBfdHVubmVsX25pYyA9IFx1MDAyNnBmLVx1MDAzZWh3LnVkcF90dW5uZWxfbmljO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzk3My1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGljZV9wZl90b19kZXYocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oPTg5OT1zdHJ1Y3QgaWNlX2h3IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaC0xMDExLVx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB1ZHBfdHVubmVsX3NoYXJlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oOjEwMTI6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB1ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oLTEwMTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTU0NDg9c3RhdGljIGludCBpeGdiZV91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjU0Njc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGl4Z2JlX3VkcF90dW5uZWxzX3g1NTAgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2OC1cdC5zeW5jX3RhYmxlXHQ9IGl4Z2JlX3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo1NDc1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBpeGdiZV91ZHBfdHVubmVsc194NTUwZW1fYSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDc2LVx0LnN5bmNfdGFibGVcdD0gaXhnYmVfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz0xMTU0OD1zdGF0aWMgaW50IGl4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTY5OS1cdGNhc2UgaXhnYmVfbWFjX2U2MTA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTE3MDA6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTcwMS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDItXHRjYXNlIGl4Z2JlX21hY194NTUwZW1fYTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTcwMzpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZpeGdiZV91ZHBfdHVubmVsc194NTUwZW1fYTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTcwNC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0yNjM5PXN0YXRpYyBpbnQgbWx4NF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjY1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM6MjY1NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbWx4NF91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjY1OC1cdC5zeW5jX3RhYmxlXHQ9IG1seDRfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM9MzE2MT1pbnQgbWx4NF9lbl9pbml0X25ldGRldihzdHJ1Y3QgbWx4NF9lbl9kZXYgKm1kZXYsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMzM0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM6MzM0NzpcdFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZtbHg0X3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0zMzQ4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTkwNT1zdHJ1Y3QgbWx4NWVfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTU3Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbmljX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTgtI2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz01NDU2PXZvaWQgbWx4NWVfdnhsYW5fc2V0X25ldGRldl9pbmZvKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTQ2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NTQ2OTpcdHByaXYtXHUwMDNlbmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZwcml2LVx1MDAzZW5pY19pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01NDcwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmM9MjM3Nj1zdGF0aWMgaW50IG5mcF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yMzk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jOjIzOTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5mcF91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yMzk2LVx0LnN5bmNfdGFibGUgICAgID0gbmZwX3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmM9MjY2Nj1zdGF0aWMgdm9pZCBuZnBfbmV0X25ldGRldl9pbml0KHN0cnVjdCBuZnBfbmV0ICpubilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjcxOC1cdFx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jOjI3MTk6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2bmZwX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MjAtXHRcdG5uLVx1MDAzZWRwLmN0cmwgfD0gTkZQX05FVF9DRkdfQ1RSTF9WWExBTjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jPTk1Nz1zdGF0aWMgaW50IHFlZGVfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6OTg4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBxZWRlX3VkcF90dW5uZWxzX2JvdGggPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4OS1cdC5zeW5jX3RhYmxlXHQ9IHFlZGVfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM9MTAwNj12b2lkIHFlZGVfc2V0X3VkcF90dW5uZWxzKHN0cnVjdCBxZWRlX2RldiAqZWRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMDktXHQgICAgZWRldi1cdTAwM2VkZXZfaW5mby5jb21tb24uZ2VuZXZlX2VuYWJsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6MTAxMDpcdFx0ZWRldi1cdTAwM2VuZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZxZWRlX3VkcF90dW5uZWxzX2JvdGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTEtXHRlbHNlIGlmIChlZGV2LVx1MDAzZWRldl9pbmZvLmNvbW1vbi52eGxhbl9lbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTI6XHRcdGVkZXYtXHUwMDNlbmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cWVkZV91ZHBfdHVubmVsc192eGxhbjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAxMy1cdGVsc2UgaWYgKGVkZXYtXHUwMDNlZGV2X2luZm8uY29tbW9uLmdlbmV2ZV9lbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTQ6XHRcdGVkZXYtXHUwMDNlbmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cWVkZV91ZHBfdHVubmVsc19nZW5ldmU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYz00NzE9c3RhdGljIGludCBxbGNuaWNfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtNDg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jOjQ4NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gcWxjbmljX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4OC1cdC5zeW5jX3RhYmxlXHQ9IHFsY25pY191ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jPTIyNTQ9cWxjbmljX3NldHVwX25ldGRldihzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTIzMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM6MjMwNDpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZxbGNuaWNfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtMjMwNS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTQyPXN0YXRpYyBpbnQgZWZ4X2VmMTBfc2V0X3VkcF90bmxfcG9ydHMoc3RydWN0IGVmeF9uaWMgKmVmeCwgYm9vbCB1bmxvYWRpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzo0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTQ0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9NTI1PXN0YXRpYyBpbnQgZWZ4X2VmMTBfcHJvYmUoc3RydWN0IGVmeF9uaWMgKmVmeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4MC1cdCAgICAoMSBcdTAwM2NcdTAwM2MgTUNfQ01EX0RSVl9BVFRBQ0hfRVhUX09VVF9GTEFHX1RSVVNURUQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzo2ODE6XHRcdGVmeC1cdTAwM2VuZXRfZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZlZnhfZWYxMF91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtNjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9Mzk2Mj1zdGF0aWMgaW50IGVmeF9lZjEwX3VkcF90bmxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtMzk4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6Mzk4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTM5ODYtXHQuc2V0X3BvcnRcdD0gZWZ4X2VmMTBfdWRwX3RubF9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz02MTk9c3RhdGljIGludCB0eGdiZV91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjY0MjpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdHhnYmVfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDMtXHQuc3luY190YWJsZVx0PSB0eGdiZV91ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjgxPXN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzQ3LVx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NzQ4Olx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZ0eGdiZV91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTc0OS1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYz02Nj1uc2ltX3VkcF90dW5uZWxfc3luY190YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtODQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzo4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbnNpbV91ZHBfdHVubmVsX2luZm8gPSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy04Ni1cdC5zZXRfcG9ydFx0PSBuc2ltX3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTI1PWludCBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTI4LVx0c3RydWN0IG5ldGRldnNpbSAqbnMgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTI5Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm87XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMzAtXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTg0LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTg1Olx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBpbmZvO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTg2LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTg5PXZvaWQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xOTMtXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUobnMtXHUwMDNldWRwX3BvcnRzLmRkaXIpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTk0Olx0a2ZyZWUoZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8pO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTk1Olx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBOVUxMO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTk2LX1cbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTc2PXN0cnVjdCB1ZHBfdHVubmVsX2luZm87XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjc3OnN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC03OC1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWM7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xODA0PWVudW0gbmV0ZGV2X3JlZ19zdGF0ZSB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yMDg5LSAqXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjIwOTA6ICpcdEB1ZHBfdHVubmVsX25pY19pbmZvOlx0c3RhdGljIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBVRFAgdHVubmVsXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIwOTEtICpcdFx0XHRcdG9mZmxvYWQgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2Vcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxMzk9c3RydWN0IG5ldF9kZXZpY2Uge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjUwNC0jZW5kaWZcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjUwNTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvXHQqdWRwX3R1bm5lbF9uaWNfaW5mbztcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjUwNi1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY1x0KnVkcF90dW5uZWxfbmljO1xuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0yMjU9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfZW5jYXBfZW5hYmxlKHN0cnVjdCBzb2NrICpzaylcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjM4LVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjIzOTplbnVtIHVkcF90dW5uZWxfbmljX2luZm9fZmxhZ3Mge1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI0MC1cdC8qIERldmljZSBvbmx5IHN1cHBvcnRzIG9mZmxvYWRzIHdoZW4gaXQmIzM5O3Mgb3BlbiwgYWxsIHBvcnRzXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTI1Nz1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkIHtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDoyNTg6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnVkcF90dW5uZWxfbmljX2luZm87XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjU5LVxuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0yNjM9c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZF9ub2RlIHtcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjY4LS8qKlxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjI2OTogKiBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAtIGRyaXZlciBVRFAgdHVubmVsIG9mZmxvYWQgaW5mb3JtYXRpb25cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNzAtICogQHNldF9wb3J0Olx0Y2FsbGJhY2sgZm9yIGFkZGluZyBhIG5ldyBwb3J0XG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI3My0gKiBAc2hhcmVkOlx0cmVmZXJlbmNlIHRvIGRldmljZSBnbG9iYWwgc3RhdGUgKG9wdGlvbmFsKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjI3NDogKiBAZmxhZ3M6XHRkZXZpY2UgZmxhZ3MgZnJvbSBlbnVtIHVkcF90dW5uZWxfbmljX2luZm9fZmxhZ3NcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNzUtICogQHRhYmxlczpcdFVEUCBwb3J0IHRhYmxlcyB0aGlzIGRldmljZSBoYXNcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjk2LSAqL1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjI5NzpzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjk4LVx0Lyogb25lLWJ5LW9uZSAqL1xuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zMjItICogbW9kdWxlLiBOSUMgZHJpdmVycyBhcmUgbm90LCB0aGV5IGp1c3QgYXR0YWNoIHRoZWlyXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzIzOiAqIHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHRvIHRoZSBuZXRkZXYgYW5kIHdhaXQgZm9yIGNhbGxiYWNrcyB0byBjb21lLlxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTMyNC0gKiBMb2FkaW5nIGEgdHVubmVsIGRyaXZlciB3aWxsIGNhdXNlIHRoZSB1ZHBfdHVubmVsIG1vZHVsZSB0byBiZSBsb2FkZWRcbi0tXG5uZXQvY29yZS9kZXYuYz0xMTMyMD1pbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2NvcmUvZGV2LmMtMTEzOTQtXG5uZXQvY29yZS9kZXYuYzoxMTM5NTpcdGlmIChkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xubmV0L2NvcmUvZGV2LmMtMTEzOTYtXHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX1JYX1VEUF9UVU5ORUxfUE9SVDtcbi0tXG5uZXQvZXRodG9vbC90dW5uZWxzLmM9MzY9ZXRobmxfdHVubmVsX2luZm9fcmVwbHlfc2l6ZShjb25zdCBzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxuLS1cbm5ldC9ldGh0b29sL3R1bm5lbHMuYy0zOS1cdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVx1MDAzZWZsYWdzIFx1MDAyNiBFVEhUT09MX0ZMQUdfQ09NUEFDVF9CSVRTRVRTO1xubmV0L2V0aHRvb2wvdHVubmVscy5jOjQwOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm87XG5uZXQvZXRodG9vbC90dW5uZWxzLmMtNDEtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtNDQtXG5uZXQvZXRodG9vbC90dW5uZWxzLmM6NDU6XHRpbmZvID0gcmVxX2Jhc2UtXHUwMDNlZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvZXRodG9vbC90dW5uZWxzLmMtNDYtXHRpZiAoIWluZm8pIHtcbi0tXG5uZXQvZXRodG9vbC90dW5uZWxzLmM9ODI9ZXRobmxfdHVubmVsX2luZm9fZmlsbF9yZXBseShjb25zdCBzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxuLS1cbm5ldC9ldGh0b29sL3R1bm5lbHMuYy04NS1cdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVx1MDAzZWZsYWdzIFx1MDAyNiBFVEhUT09MX0ZMQUdfQ09NUEFDVF9CSVRTRVRTO1xubmV0L2V0aHRvb2wvdHVubmVscy5jOjg2Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm87XG5uZXQvZXRodG9vbC90dW5uZWxzLmMtODctXHRzdHJ1Y3QgbmxhdHRyICpwb3J0cywgKnRhYmxlLCAqZW50cnk7XG4tLVxubmV0L2V0aHRvb2wvdHVubmVscy5jLTg5LVxubmV0L2V0aHRvb2wvdHVubmVscy5jOjkwOlx0aW5mbyA9IHJlcV9iYXNlLVx1MDAzZWRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2V0aHRvb2wvdHVubmVscy5jLTkxLVx0aWYgKCFpbmZvKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTMyPXVkcF90dW5uZWxfbmljX2lzX2VtcHR5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzMte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMzQ6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzUtXHR1bnNpZ25lZCBpbnQgaSwgajtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE0NT11ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTUzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdXRuLVx1MDAzZW5fdGFibGVzOyBpJiM0MzsmIzQzOykge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxNTQ6XHRcdHRhYmxlID0gXHUwMDI2ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXHUwMDNldGFibGVzW2ldO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNTUtXHRcdGlmICghdGVzdF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCkpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yMTE9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjQtXHRpZiAoZW50cnktXHUwMDNlZmxhZ3MgXHUwMDI2IFVEUF9UVU5ORUxfTklDX0VOVFJZX0FERClcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjI1Olx0XHRlcnIgPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2VzZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsIFx1MDAyNnRpKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjI2LVx0ZWxzZVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMjc6XHRcdGVyciA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXVuc2V0X3BvcnQoZGV2LCB0YWJsZSwgaWR4LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjgtXHRcdFx0XHRcdFx0XHQgICBcdTAwMjZ0aSk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yNDA9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQyLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjQzOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQ0LVx0dW5zaWduZWQgaW50IGksIGo7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yNTI9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1NC17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI1NTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1Ni1cdHVuc2lnbmVkIGludCBpLCBqO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjgzPV9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yODctXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI4ODpcdGlmIChkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2VzeW5jX3RhYmxlKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yODktXHRcdHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKGRldiwgdXRuKTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMyND11ZHBfdHVubmVsX25pY19pc19jYXBhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzI2LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzI3Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzI4LVx0dW5zaWduZWQgaW50IGk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zNDI9dWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM0NC17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM0NTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM0Ni1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00MjY9dWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDMyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdXRuLVx1MDAzZW5fdGFibGVzOyBpJiM0MzsmIzQzOykge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MzM6XHRcdHRhYmxlID0gXHUwMDI2ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXHUwMDNldGFibGVzW2ldO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MzQtXHRcdGlmICghdWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZSh0YWJsZSwgdGkpKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDYxPXVkcF90dW5uZWxfbmljX2FkZF9uZXcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ2ODpcdFx0dGFibGUgPSBcdTAwMjZkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2V0YWJsZXNbaV07XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ2OS1cdFx0aWYgKCF1ZHBfdHVubmVsX25pY190YWJsZV9pc19jYXBhYmxlKHRhYmxlLCB0aSkpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00OTg9X191ZHBfdHVubmVsX25pY19hZGRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDk5LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTAwOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTAxLVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01NDg9c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19yZXNldF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTQ5LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTUwOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTUxLVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01ODQ9X191ZHBfdHVubmVsX25pY19kdW1wX3NpemUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01ODUte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1ODY6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01ODctXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTYwOT1fX3VkcF90dW5uZWxfbmljX2R1bXBfd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjExLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjEyOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjEzLVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02ODY9dWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY4Ny17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY4ODpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY4OS1cdHVuc2lnbmVkIGludCBpLCBqO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzA5PXVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzEwLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzExOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzEyLVx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZF9ub2RlICpub2RlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzU0PXN0YXRpYyBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKlxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NTU6dWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc1Ni1cdFx0ICAgICB1bnNpZ25lZCBpbnQgbl90YWJsZXMpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03OTM9c3RhdGljIGludCB1ZHBfdHVubmVsX25pY19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03OTQte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3OTU6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03OTYtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkX25vZGUgKm5vZGUgPSBOVUxMO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODM0LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4MzU6XHRpZiAoaW5mby1cdTAwM2VzaGFyZWQgXHUwMDI2XHUwMDI2IGluZm8tXHUwMDNlc2hhcmVkLVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8pIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODM2Olx0XHR1dG4gPSBpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04MzctXHR9IGVsc2Uge1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODQ1LVx0aWYgKGluZm8tXHUwMDNlc2hhcmVkKSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg0NjpcdFx0aWYgKCFpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0Ny1cdFx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2VkZXZpY2VzKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODQ4Olx0XHRcdGluZm8tXHUwMDNlc2hhcmVkLVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSB1dG47XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0OS1cdFx0fVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODY4PXVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg2OS17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg3MDpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg3MS1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg5OS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTAwOlx0XHRpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gTlVMTDtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTAxLVx0fVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTIyPXVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkyNS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBuZXRkZXZfbm90aWZpZXJfaW5mb190b19kZXYocHRyKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTI2Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkyNy1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MjgtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkyOTpcdGluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTMwLVx0aWYgKCFpbmZvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTM5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvbmN1cnJlbmN5IEJ1ZyBpbiBVRFAgVHVubmVsIE5JQyBPZmZsb2FkKioKCk9rYXksIHNvIHRoZSBgdWRwX3R1bm5lbF9uaWNfaW5mb2Agc3RydWN0dXJlIGlzIHVzZWQgc3BlY2lmaWNhbGx5IHdpdGhpbiBgbmV0ZGV2c2ltYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHNvbWV0aGluZyB3ZSYjMzk7cmUgbGlrZWx5IHRvIGVuY291bnRlciBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMg4oCTIG5ldGRldnNpbSBpcyBhbGwgYWJvdXQgc29mdHdhcmUtc2ltdWxhdGluZyBuZXR3b3JrIGRldmljZSBmdW5jdGlvbmFsaXR5IGZvciB0ZXN0aW5nIG9mZmxvYWRzLiBUaGF04oCZcyBhIGtleSBkZXRhaWwuIEl0IGFsc28gZmxhZ3MgdGhlIGZlYXR1cmUgYXMgYmVpbmcgY29yZSBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgKFVEUCB0dW5uZWwgTklDIG9mZmxvYWQpLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGNvZGUmIzM5O3MgcHJpbWFyeSBwdXJwb3NlIGlzIGZvciBvZmZsb2FkLgoKVGhlIHBhdGNoIGZvY3VzZXMgb24gYSBjb25jdXJyZW5jeSBidWcsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlIHN5bmNocm9uaXphdGlvbiBwcm9ibGVtcyB3ZXJlLiBUaGUgY29kZSB0b3VjaGVzIGEgYnJvYWQgc3dhdGhlIG9mIGZ1bmN0aW9uczogYHVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlYCwgYHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXlgLCBgX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uYCwgYHVkcF90dW5uZWxfbmljX2FkZF9uZXdgLCBgX191ZHBfdHVubmVsX25pY19yZXNldF9udGZgLCBgdWRwX3R1bm5lbF9uaWNfZmx1c2hgLCBgdWRwX3R1bm5lbF9uaWNfcmVwbGF5YCwgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgLCBhbmQgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgLiBUaGF0JiMzOTtzIGEgZ29vZCBjaHVuayBvZiB0aGUgVURQIHR1bm5lbCBOSUMgY29kZSwgc28gdGhpcyBjb3VsZCBoYXZlIGJlZW4gYSBwcmV0dHkgY3JpdGljYWwgaXNzdWUuCgpOb3csIGJlZm9yZSBJIGRpZyBkZWVwZXIsIEkgd2FudCB0byBzZWUgaWYgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyBhZmZlY3QgdGhpcyBjb2RlJiMzOTtzIGJ1aWxkIGFuZCBiZWhhdmlvci4gSSBrbm93IHRoYXQgYENPTkZJR19ORVRERVZTSU1gIGlzIGEgZ2l2ZW4sIGJ1dCBpcyB0aGVyZSBhbnl0aGluZyBlbHNlPyBQZXJoYXBzIGBDT05GSUdfVURQX1RVTk5FTGAgb3Igc29tZXRoaW5nIHJlbGF0ZWQ/IEkmIzM5O2xsIHByb2JhYmx5IGZpbmQgdGhlIGFuc3dlciBpbiBlaXRoZXIgYG5ldC9pcHY0L01ha2VmaWxlYCBvciBgbmV0L2lwdjQvS2NvbmZpZ2Ag4oCTIHRob3NlIGFyZSB0aGUgdXN1YWwgcGxhY2VzIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciBuZXR3b3JraW5nLXJlbGF0ZWQgbW9kdWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZHBfdHVubmVsX25pY1xcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9MzA9b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgJiM0Mzs9IGlwX2dyZS5vXG5uZXQvaXB2NC9NYWtlZmlsZTozMTp1ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xubmV0L2lwdjQvTWFrZWZpbGUtMzItb2JqLSQoQ09ORklHX05FVF9VRFBfVFVOTkVMKSAmIzQzOz0gdWRwX3R1bm5lbC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5NTIKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIFVEUCBUdW5uZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIFVEUCB0dW5uZWwgc2V0dXAuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBgQ09ORklHX05FVF9VRFBfVFVOTkVMYCBpcyB0aGUgY3JpdGljYWwgY29uZmlnIG9wdGlvbiBJIG5lZWQgdG8gZm9jdXMgb24uIEl0JiMzOTtzIHRoZSB1c3VhbCBzdGFydGluZyBwb2ludC4gTm93LCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBzaW11bGF0aW9uIGVudmlyb25tZW50LCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgbmV0ZGV2c2ltIGZyYW1ld29yaywgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBuZXRkZXZzaW0gZHJpdmVyLCBsb2NhdGVkIGF0IGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZ2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jeSBsYW5kc2NhcGUgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgd2lsbCBvdXRsaW5lIGlmIHRoZSBzaW11bGF0aW9uIG9mZmVycyBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIFVEUCB0dW5uZWxpbmcsIG9yIGlmIGl0IHV0aWxpemVzIGEgbW9yZSBnZW5lcmljIGFwcHJvYWNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgc2ltdWxhdGVkIG5ldHdvcmsgc3RhY2sgYWNjb3VudHMgZm9yIHR1bm5lbGluZywgb3IgaWYgaXQgc2ltcGx5IHBhc3NlcyBhbG9uZyB0aGUgZGF0YSBhcyBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNDpjb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4Mjk1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRm9jdXM6IFVEUCBUdW5uZWwgTklDIE9mZmxvYWQgTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBORVRERVZTSU1gIGFuZCBgTkVUX1VEUF9UVU5ORUxgIGNvbmZpZ3VyYXRpb25zIGhlcmUuIFJpZ2h0LCB0aGF0IHBsYWNlcyB0aGUgcmVsZXZhbnQgcGF0Y2ggaW4gYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLiBUaW1lIHRvIG1hcCBvdXQgdGhlIGZ1bmN0aW9uIGxhbmRzY2FwZSBhbmQgZGVjaWRlIHdoZXJlIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cy4gTGV0JiMzOTtzIHNlZS4uLgoKSSYjMzk7dmUgZ290IGB1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZWAsIGB1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5YCwgYF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbmAsIGB1ZHBfdHVubmVsX25pY19hZGRfbmV3YCwgYF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmYCwgYHVkcF90dW5uZWxfbmljX2ZsdXNoYCwgYHVkcF90dW5uZWxfbmljX3JlcGxheWAsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYC4gVGhlc2UgYXJlIGFsbCBjbGVhcmx5IHBhcnQgb2YgdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgbG9naWMuCgpOb3csIHdoaWNoIG9uZXMgYXJlIHRoZSBtb3N0IHByb21pc2luZyB0YXJnZXRzIGZvciBmdXp6aW5nPyBUaGlua2luZyBzdHJhdGVnaWNhbGx5LCBJJiMzOTtsbCBzZWxlY3QgYSBzaG9ydGxpc3Q6IGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCwgYHVkcF90dW5uZWxfbmljX3JlcGxheWAsIGB1ZHBfdHVubmVsX25pY19mbHVzaGAsIGFuZCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAuIFRoZXNlIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cyBmb3IgZXhwbG9yaW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuCgpIb2xkIG9uLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLiBJIHdhbnQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBJIGp1c3QgY2hlY2tlZCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AgaXMgc3RhdGljLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIGFsc28gc3RhdGljLiBOb3csIHdhaXQgYSBtaW51dGUsIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCAqaXNuJiMzOTt0KiBzdGF0aWMuIEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGF0IGluIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX3VucmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz04Njc9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODY4OnVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg2OS17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05MjI9dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTQ2LVx0aWYgKGV2ZW50ID09IE5FVERFVl9VTlJFR0lTVEVSKSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk0NzpcdFx0dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk0OC1cdFx0cmV0dXJuIE5PVElGWV9PSztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyOTcKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyBpZiB0aGVzZSBhcmUgbXkgdGhvdWdodHMsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKlN0dWNrIG9uIGEgU3RhbGUgUG9pbnQqKgoKVWdoLCB0aGlzIGZlZWxzIGNvbXBsZXRlbHkgc3RhdGljLiBJJiMzOTttIGhpdHRpbmcgYSByb2FkYmxvY2suIEkmIzM5O20gc2VlaW5nIG5vdGhpbmcgZHluYW1pYyBvciBmb3J3YXJkIG1vdmluZy4gSSBuZWVkIHRvIGJyZWFrIG91dCBvZiB0aGlzIGxvb3AuCgpXYWl0IGEgbWludXRlLi4uIHdoYXQgYWJvdXQgdGhhdCBmdW5jdGlvbiwgYHVkcF90dW5uZWxfbmljX2FkZF9wb3J0YD8gQ291bGQgdGhhdCBiZSBhIGtleT8gSXQgaGFzIHBvc3NpYmlsaXRpZXMsIHRoYXQgY2VydGFpbmx5ICpzb3VuZHMqIHJlbGV2YW50IHRvIHdoYXQgSSBhbSBkb2luZy4uLkkgc2hvdWxkIHJlYWxseSB0aGluayB0aGlzIHRocm91Z2ghCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX2FkZF9wb3J0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zOTY9c3RhdGljIGlubGluZSB2b2lkXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mzk3OnVkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM5OC17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTAwPXZvaWQgdWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTEwOC1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjEwOTpcdHVkcF90dW5uZWxfbmljX2FkZF9wb3J0KGRldiwgXHUwMDI2dGkpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTEwLX1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xMjc9dm9pZCB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IHR5cGUpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQwLVx0XHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxNDE6XHRcdHVkcF90dW5uZWxfbmljX2FkZF9wb3J0KGRldiwgXHUwMDI2dGkpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQyLVx0XHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ5Nz1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0OTg6X191ZHBfdHVubmVsX25pY19hZGRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDk5LXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTY3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX29wcyBfX3VkcF90dW5uZWxfbmljX29wcyA9IHtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY3NC1cdC5zZXRfcG9ydF9wcml2XHQ9IF9fdWRwX3R1bm5lbF9uaWNfc2V0X3BvcnRfcHJpdixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Njc1Olx0LmFkZF9wb3J0XHQ9IF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY3Ni1cdC5kZWxfcG9ydFx0PSBfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAzOQoJCQkJCQkJb3V0cHV0OiAxOTMKCQkJCQkJCXRob3VnaHRzOiA0MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVRFAgVHVubmVsIE5JQyBPZmZsb2FkIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYSBjb3JlIHNlY3Rpb24gb2YgdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgbWVjaGFuaXNtLiBJdCBzZWVtcyBsaWtlIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjZW50ZXJlZCBhcm91bmQgc3RhdGUgbWFuYWdlbWVudCBhbmQgdGhlIHdvcmtxdWV1ZSB3aXRoaW4gYHVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlYCwgc3BlY2lmaWNhbGx5IGludm9sdmluZyBmdW5jdGlvbnMgbGlrZSBgdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheWAsIGBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCwgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCwgYHVkcF90dW5uZWxfbmljX2hhc19jb2xsaXNpb25gLCBgdWRwX3R1bm5lbF9uaWNfYWRkX25ld2AsIGBfX3VkcF90dW5uZWxfbmljX3Jlc2V0X250ZmAsIGB1ZHBfdHVubmVsX25pY19mbHVzaGAsIGB1ZHBfdHVubmVsX25pY19yZXBsYXlgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AsIGFuZCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAuIFRoZXNlIGFyZSBhbGwgdGlnaHRseSBpbnRlcnR3aW5lZCB3aXRoIHRoZSBzdGF0ZSBtYWNoaW5lIGFuZCB0aGUgd29ya2VyIHRocmVhZHMgbWFuYWdpbmcgdGhlIG9mZmxvYWQgcHJvY2Vzcy4KClRoZSBwYXRjaCBpdHNlbGYgYXBwZWFycyB0byBiZSBhZGRyZXNzaW5nIGEgZGF0YSByYWNlIG9yIGNvbmN1cnJlbmN5IGlzc3VlLiBUaGUga2V5IGlzIHRoZSBzaGlmdCBmcm9tIGJpdGZpZWxkcyB0byBhdG9taWMgYml0IG9wZXJhdGlvbnMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGJ1ZyBmaXgsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBsb29raW5nIGludG8gbW9yZSBjbG9zZWx5LgoKR2l2ZW4gdGhhdCB0aGlzIGZpeCBpcyBzcGVjaWZpYyB0byB0aGUgVURQIHR1bm5lbCBOSUMsIGFuZCBpdCB1c2VzIGBORVRERVZTSU1gLCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIHRoZSBmdXp6aW5nIGVmZm9ydHMgb24gdGhpcyBwYXRjaC4gSSBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgZnVuY3Rpb25hbGl0eSB1c2luZyBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgZmFjdCB0aGF0IGBuZXRkZXZzaW1gIHByb3ZpZGVzIGEgc2ltdWxhdGVkIGVudmlyb25tZW50IHRvIHRlc3QgVURQIHR1bm5lbCBvZmZsb2FkcyBtYWtlcyBpdCBhIGdyZWF0IHRhcmdldC4gVGhlIHN5bmNocm9uaXphdGlvbiBhbmQgd29ya3F1ZXVlIGZ1bmN0aW9uc+KAlHBhcnRpY3VsYXJseSB0aG9zZSBJIGxpc3RlZCBlYXJsaWVy4oCUYXJlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgdG8gcHJvYmUgZm9yIGFueSByZW1haW5pbmcgc3VidGxlIGlzc3Vlcy4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBgTkVUX1VEUF9UVU5ORUxgIGNvbmZpZyBvcHRpb24gaXMgdGhlIGNvcmUgbW9kdWxlIGhlcmUsIGFuZCBgTkVUREVWU0lNYCBpcyB0aGUgc3BlY2lmaWMgZHJpdmVyIHRoYXQgZXhlcmNpc2VzIGl0LCB3aGljaCBpcyB0aGUgcGVyZmVjdCBzZXQtdXAgZm9yIGEgZ29vZCBmdXp6aW5nIHRlc3QuIE5vdywgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9VRFBfVFVOTkVMJiMzNDssCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMmIzM0OywKICAgICYjMzQ7X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19yZXBsYXkmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZmx1c2gmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlciYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19hZGRfbmV3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGF0YSByYWNlIGFuZCBjb25jdXJyZW5jeSBpc3N1ZSBpbiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBpbmZyYXN0cnVjdHVyZSBieSByZXBsYWNpbmcgYml0ZmllbGRzIHdpdGggYXRvbWljIGJpdCBvcGVyYXRpb25zLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIsIHdoaWNoIHNpbXVsYXRlcyBVRFAgdHVubmVsIG9mZmxvYWRzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgc3luY2hyb25pemF0aW9uIGFuZCB3b3JrcXVldWUgZnVuY3Rpb25zIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1VEUF9UVU5ORUwmIzM0OywKICAgICYjMzQ7TkVUREVWU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyYjMzQ7LAogICAgJiMzNDtfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX3JlcGxheSYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19mbHVzaCYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX2FkZF9uZXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBkYXRhIHJhY2UgYW5kIGNvbmN1cnJlbmN5IGlzc3VlIGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlIGJ5IHJlcGxhY2luZyBiaXRmaWVsZHMgd2l0aCBhdG9taWMgYml0IG9wZXJhdGlvbnMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdGhlIGBuZXRkZXZzaW1gIGRyaXZlciwgd2hpY2ggc2ltdWxhdGVzIFVEUCB0dW5uZWwgb2ZmbG9hZHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBzeW5jaHJvbml6YXRpb24gYW5kIHdvcmtxdWV1ZSBmdW5jdGlvbnMgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MDQ6NTcuNzcwNjMxOTA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEyNjgwMjc4MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1VEUF9UVU5ORUxcIixcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jXCIsXG4gICAgXCJfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19yZXBsYXlcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2ZsdXNoXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19hZGRfbmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkYXRhIHJhY2UgYW5kIGNvbmN1cnJlbmN5IGlzc3VlIGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlIGJ5IHJlcGxhY2luZyBiaXRmaWVsZHMgd2l0aCBhdG9taWMgYml0IG9wZXJhdGlvbnMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdGhlIGBuZXRkZXZzaW1gIGRyaXZlciwgd2hpY2ggc2ltdWxhdGVzIFVEUCB0dW5uZWwgb2ZmbG9hZHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBzeW5jaHJvbml6YXRpb24gYW5kIHdvcmtxdWV1ZSBmdW5jdGlvbnMgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODowNDo1Ny43NzA2Mzc4NjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODg5ODAzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkyZjM5NDM3ZGYyMjhhMWVjYzI4ZjIzZjIzNjNiNTBkMThkNTFkN2VcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDg6MDQ6NTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcXG5pbmRleCA5OTQ0ZWQ5MjNkZGZkMS4uOWE1NjdhODc2MzVjYWEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xcbisrKyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcXG5AQCAtMzAsOSArMzAsNyBAQCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkge1xcbiAgKiBAd29yazpcXHRhc3luYyB3b3JrIGZvciB0YWxraW5nIHRvIGhhcmR3YXJlIGZyb20gcHJvY2VzcyBjb250ZXh0XFxuICAqIEBkZXY6XFx0bmV0ZGV2IHBvaW50ZXJcXG4gICogQGxvY2s6XFx0cHJvdGVjdHMgYWxsIGZpZWxkc1xcbi0gKiBAbmVlZF9zeW5jOlxcdGF0IGxlYXN0IG9uZSBwb3J0IHN0YXJ0IGNoYW5nZWRcXG4tICogQG5lZWRfcmVwbGF5OiBzcGFjZSB3YXMgZnJlZWQsIHdlIG5lZWQgYSByZXBsYXkgb2YgYWxsIHBvcnRzXFxuLSAqIEB3b3JrX3BlbmRpbmc6IEB3b3JrIGlzIGN1cnJlbnRseSBzY2hlZHVsZWRcXG4rICogQGZsYWdzOlxcdHN5bmMsIHJlcGxheSwgcGVuZGluZyBmbGFnc1xcbiAgKiBAbl90YWJsZXM6XFx0bnVtYmVyIG9mIHRhYmxlcyB1bmRlciBAZW50cmllc1xcbiAgKiBAbWlzc2VkOlxcdGJpdG1hcCBvZiB0YWJsZXMgd2hpY2ggb3ZlcmZsb3duXFxuICAqIEBlbnRyaWVzOlxcdHRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkXFxuQEAgLTQ0LDkgKzQyLDEwIEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pYyB7XFxuIFxcbiBcXHRzdHJ1Y3QgbXV0ZXggbG9jaztcXG4gXFxuLVxcdHU4IG5lZWRfc3luYzoxO1xcbi1cXHR1OCBuZWVkX3JlcGxheToxO1xcbi1cXHR1OCB3b3JrX3BlbmRpbmc6MTtcXG4rXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4rI2RlZmluZSBVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkNcXHQwXFxuKyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVlcXHQxXFxuKyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HXFx0MlxcbiBcXG4gXFx0dW5zaWduZWQgaW50IG5fdGFibGVzO1xcbiBcXHR1bnNpZ25lZCBsb25nIG1pc3NlZDtcXG5AQCAtMTE2LDcgKzExNSw3IEBAIHVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbiBcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgZmxhZylcXG4ge1xcbiBcXHRlbnRyeS1cXHUwMDNlZmxhZ3MgfD0gZmxhZztcXG4tXFx0dXRuLVxcdTAwM2VuZWVkX3N5bmMgPSAxO1xcbitcXHRzZXRfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZFxcbkBAIC0xNDgsNyArMTQ3LDcgQEAgdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4gXFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlO1xcbiBcXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4gXFxuLVxcdGlmICghdXRuLVxcdTAwM2VtaXNzZWQpXFxuK1xcdGlmICghUkVBRF9PTkNFKHV0bi1cXHUwMDNlbWlzc2VkKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKykge1xcbkBAIC0yODMsNyArMjgyLDcgQEAgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gc3RhdGljIHZvaWRcXG4gX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4ge1xcbi1cXHRpZiAoIXV0bi1cXHUwMDNlbmVlZF9zeW5jKVxcbitcXHRpZiAoIXRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRpZiAoZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVxcdTAwM2VzeW5jX3RhYmxlKVxcbkBAIC0yOTEsMjEgKzI5MCwyNyBAQCBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBcXHRlbHNlXFxuIFxcdFxcdHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3BvcnQoZGV2LCB1dG4pO1xcbiBcXG4tXFx0dXRuLVxcdTAwM2VuZWVkX3N5bmMgPSAwO1xcbitcXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncyk7XFxuIFxcdC8qIENhbid0IHJlcGxheSBkaXJlY3RseSBoZXJlLCBpbiBjYXNlIHdlIGNvbWUgZnJvbSB0aGUgdHVubmVsIGRyaXZlcidzXFxuIFxcdCAqIG5vdGlmaWNhdGlvbiAtIHRyeWluZyB0byByZXBsYXkgbWF5IGRlYWRsb2NrIGluc2lkZSB0dW5uZWwgZHJpdmVyLlxcbiBcXHQgKi9cXG4tXFx0dXRuLVxcdTAwM2VuZWVkX3JlcGxheSA9IHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pO1xcbitcXHRpZiAodWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bikpXFxuK1xcdFxcdHNldF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFxcdTAwMjZ1dG4tXFx1MDAzZWZsYWdzKTtcXG4rXFx0ZWxzZVxcbitcXHRcXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFxcdTAwMjZ1dG4tXFx1MDAzZWZsYWdzKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWRcXG4gdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuIHtcXG4tXFx0aWYgKCF1dG4tXFx1MDAzZW5lZWRfc3luYylcXG4rXFx0aWYgKCF0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFxcdTAwMjZ1dG4tXFx1MDAzZWZsYWdzKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0aWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX1dPUktfUEVORElORywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXFx1MDAyNnV0bi1cXHUwMDNld29yayk7XFxuLVxcdHV0bi1cXHUwMDNld29ya19wZW5kaW5nID0gMTtcXG4rXFx0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkcsIFxcdTAwMjZ1dG4tXFx1MDAzZWZsYWdzKTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2xcXG5AQCAtMzQ4LDcgKzM1Myw3IEBAIHVkcF90dW5uZWxfbmljX2hhc19jb2xsaXNpb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxuIFxcdFxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIGVudHJ5LVxcdTAwM2Vwb3J0ID09IHRpLVxcdTAwM2Vwb3J0IFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICBlbnRyeS1cXHUwMDNldHlwZSAhPSB0aS1cXHUwMDNldHlwZSkge1xcbi1cXHRcXHRcXHRcXHRfX3NldF9iaXQoaSwgXFx1MDAyNnV0bi1cXHUwMDNlbWlzc2VkKTtcXG4rXFx0XFx0XFx0XFx0c2V0X2JpdChpLCBcXHUwMDI2dXRuLVxcdTAwM2VtaXNzZWQpO1xcbiBcXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuQEAgLTQ4Myw3ICs0ODgsNyBAQCB1ZHBfdHVubmVsX25pY19hZGRfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbiBcXHRcXHQgKiBhcmUgbm8gZGV2aWNlcyBjdXJyZW50bHkgd2hpY2ggaGF2ZSBtdWx0aXBsZSB0YWJsZXMgYWNjZXB0aW5nXFxuIFxcdFxcdCAqIHRoZSBzYW1lIHR1bm5lbCB0eXBlLCBhbmQgZmFsc2UgcG9zaXRpdmVzIGFyZSBva2F5LlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0X19zZXRfYml0KGksIFxcdTAwMjZ1dG4tXFx1MDAzZW1pc3NlZCk7XFxuK1xcdFxcdHNldF9iaXQoaSwgXFx1MDAyNnV0bi1cXHUwMDNlbWlzc2VkKTtcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIGZhbHNlO1xcbkBAIC01NTIsNyArNTU3LDcgQEAgc3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19yZXNldF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnV0bi1cXHUwMDNlbG9jayk7XFxuIFxcbi1cXHR1dG4tXFx1MDAzZW5lZWRfc3luYyA9IGZhbHNlO1xcbitcXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncyk7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspXFxuIFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBpbmZvLVxcdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzOyBqKyspIHtcXG4gXFx0XFx0XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcXG5AQCAtNjk2LDggKzcwMSw4IEBAIHVkcF90dW5uZWxfbmljX2ZsdXNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdXRuLVxcdTAwM2VuX3RhYmxlczsgaSsrKVxcbiBcXHRcXHRtZW1zZXQodXRuLVxcdTAwM2VlbnRyaWVzW2ldLCAwLCBhcnJheV9zaXplKGluZm8tXFx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXMsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHNpemVvZigqKnV0bi1cXHUwMDNlZW50cmllcykpKTtcXG4tXFx0V0FSTl9PTih1dG4tXFx1MDAzZW5lZWRfc3luYyk7XFxuLVxcdHV0bi1cXHUwMDNlbmVlZF9yZXBsYXkgPSAwO1xcbitcXHRXQVJOX09OKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpKTtcXG4rXFx0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkXFxuQEAgLTcxMyw4ICs3MTgsOCBAQCB1ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspXFxuIFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBpbmZvLVxcdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzOyBqKyspXFxuIFxcdFxcdFxcdHVkcF90dW5uZWxfbmljX2VudHJ5X2ZyZWV6ZV91c2VkKFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbaV1bal0pO1xcbi1cXHR1dG4tXFx1MDAzZW1pc3NlZCA9IDA7XFxuLVxcdHV0bi1cXHUwMDNlbmVlZF9yZXBsYXkgPSAwO1xcbitcXHRXUklURV9PTkNFKHV0bi1cXHUwMDNlbWlzc2VkLCAwKTtcXG4rXFx0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncyk7XFxuIFxcbiBcXHRpZiAoIWluZm8tXFx1MDAzZXNoYXJlZCkge1xcbiBcXHRcXHR1ZHBfdHVubmVsX2dldF9yeF9pbmZvKGRldik7XFxuQEAgLTczNiwxMCArNzQxLDEwIEBAIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRydG5sX2xvY2soKTtcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2dXRuLVxcdTAwM2Vsb2NrKTtcXG4gXFxuLVxcdHV0bi1cXHUwMDNld29ya19wZW5kaW5nID0gMDtcXG4rXFx0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX1dPUktfUEVORElORywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi1cXHUwMDNlZGV2LCB1dG4pO1xcbiBcXG4tXFx0aWYgKHV0bi1cXHUwMDNlbmVlZF9yZXBsYXkpXFxuK1xcdGlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpKVxcbiBcXHRcXHR1ZHBfdHVubmVsX25pY19yZXBsYXkodXRuLVxcdTAwM2VkZXYsIHV0bik7XFxuIFxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNnV0bi1cXHUwMDNlbG9jayk7XFxuQEAgLTkwNCw3ICs5MDksNyBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBcXHQvKiBXYWl0IGZvciB0aGUgd29yayB0byBiZSBkb25lIHVzaW5nIHRoZSBzdGF0ZSwgbmV0ZGV2IGNvcmUgd2lsbFxcbiBcXHQgKiByZXRyeSB1bnJlZ2lzdGVyIHVudGlsIHdlIGdpdmUgdXAgb3VyIHJlZmVyZW5jZSBvbiB0aGlzIGRldmljZS5cXG4gXFx0ICovXFxuLVxcdGlmICh1dG4tXFx1MDAzZXdvcmtfcGVuZGluZylcXG4rXFx0aWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX1dPUktfUEVORElORywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHR1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjA0OjU4LjMyMDU3MDIyOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA3MTgwNzk1MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1VEUF9UVU5ORUxcIixcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jXCIsXG4gICAgXCJfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19yZXBsYXlcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2ZsdXNoXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19hZGRfbmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkYXRhIHJhY2UgYW5kIGNvbmN1cnJlbmN5IGlzc3VlIGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlIGJ5IHJlcGxhY2luZyBiaXRmaWVsZHMgd2l0aCBhdG9taWMgYml0IG9wZXJhdGlvbnMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdGhlIGBuZXRkZXZzaW1gIGRyaXZlciwgd2hpY2ggc2ltdWxhdGVzIFVEUCB0dW5uZWwgb2ZmbG9hZHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBzeW5jaHJvbml6YXRpb24gYW5kIHdvcmtxdWV1ZSBmdW5jdGlvbnMgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDkyZjM5NDM3ZGYyMjhhMWVjYzI4ZjIzZjIzNjNiNTBkMThkNTFkN2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAwODowNDo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG5pbmRleCA5OTQ0ZWQ5MjNkZGZkMS4uOWE1NjdhODc2MzVjYWEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG4rKysgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG5AQCAtMzAsOSArMzAsNyBAQCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkge1xuICAqIEB3b3JrOlx0YXN5bmMgd29yayBmb3IgdGFsa2luZyB0byBoYXJkd2FyZSBmcm9tIHByb2Nlc3MgY29udGV4dFxuICAqIEBkZXY6XHRuZXRkZXYgcG9pbnRlclxuICAqIEBsb2NrOlx0cHJvdGVjdHMgYWxsIGZpZWxkc1xuLSAqIEBuZWVkX3N5bmM6XHRhdCBsZWFzdCBvbmUgcG9ydCBzdGFydCBjaGFuZ2VkXG4tICogQG5lZWRfcmVwbGF5OiBzcGFjZSB3YXMgZnJlZWQsIHdlIG5lZWQgYSByZXBsYXkgb2YgYWxsIHBvcnRzXG4tICogQHdvcmtfcGVuZGluZzogQHdvcmsgaXMgY3VycmVudGx5IHNjaGVkdWxlZFxuKyAqIEBmbGFnczpcdHN5bmMsIHJlcGxheSwgcGVuZGluZyBmbGFnc1xuICAqIEBuX3RhYmxlczpcdG51bWJlciBvZiB0YWJsZXMgdW5kZXIgQGVudHJpZXNcbiAgKiBAbWlzc2VkOlx0Yml0bWFwIG9mIHRhYmxlcyB3aGljaCBvdmVyZmxvd25cbiAgKiBAZW50cmllczpcdHRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkXG5AQCAtNDQsOSArNDIsMTAgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHtcbiBcbiBcdHN0cnVjdCBtdXRleCBsb2NrO1xuIFxuLVx0dTggbmVlZF9zeW5jOjE7XG4tXHR1OCBuZWVkX3JlcGxheToxO1xuLVx0dTggd29ya19wZW5kaW5nOjE7XG4rXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuKyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DXHQwXG4rI2RlZmluZSBVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWVx0MVxuKyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HXHQyXG4gXG4gXHR1bnNpZ25lZCBpbnQgbl90YWJsZXM7XG4gXHR1bnNpZ25lZCBsb25nIG1pc3NlZDtcbkBAIC0xMTYsNyArMTE1LDcgQEAgdWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4gXHRcdFx0ICAgdW5zaWduZWQgaW50IGZsYWcpXG4ge1xuIFx0ZW50cnktXHUwMDNlZmxhZ3MgfD0gZmxhZztcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSAxO1xuK1x0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG5AQCAtMTQ4LDcgKzE0Nyw3IEBAIHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfaW5mbyAqdGFibGU7XG4gXHR1bnNpZ25lZCBpbnQgaSwgajtcbiBcbi1cdGlmICghdXRuLVx1MDAzZW1pc3NlZClcbitcdGlmICghUkVBRF9PTkNFKHV0bi1cdTAwM2VtaXNzZWQpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkrKykge1xuQEAgLTI4Myw3ICsyODIsNyBAQCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHN0YXRpYyB2b2lkXG4gX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiB7XG4tXHRpZiAoIXV0bi1cdTAwM2VuZWVkX3N5bmMpXG4rXHRpZiAoIXRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0aWYgKGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXN5bmNfdGFibGUpXG5AQCAtMjkxLDIxICsyOTAsMjcgQEAgX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdGVsc2VcbiBcdFx0dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChkZXYsIHV0bik7XG4gXG4tXHR1dG4tXHUwMDNlbmVlZF9zeW5jID0gMDtcbitcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gXHQvKiBDYW4ndCByZXBsYXkgZGlyZWN0bHkgaGVyZSwgaW4gY2FzZSB3ZSBjb21lIGZyb20gdGhlIHR1bm5lbCBkcml2ZXInc1xuIFx0ICogbm90aWZpY2F0aW9uIC0gdHJ5aW5nIHRvIHJlcGxheSBtYXkgZGVhZGxvY2sgaW5zaWRlIHR1bm5lbCBkcml2ZXIuXG4gXHQgKi9cbi1cdHV0bi1cdTAwM2VuZWVkX3JlcGxheSA9IHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pO1xuK1x0aWYgKHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pKVxuK1x0XHRzZXRfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuK1x0ZWxzZVxuK1x0XHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG4gdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4ge1xuLVx0aWYgKCF1dG4tXHUwMDNlbmVlZF9zeW5jKVxuK1x0aWYgKCF0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpXG4rXHRcdHJldHVybjtcbitcbitcdGlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkcsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpXG4gXHRcdHJldHVybjtcbiBcbiBcdHF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yayk7XG4tXHR1dG4tXHUwMDNld29ya19wZW5kaW5nID0gMTtcbitcdHNldF9iaXQoVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbFxuQEAgLTM0OCw3ICszNTMsNyBAQCB1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuIFx0XHRcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGVudHJ5LVx1MDAzZXBvcnQgPT0gdGktXHUwMDNlcG9ydCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgZW50cnktXHUwMDNldHlwZSAhPSB0aS1cdTAwM2V0eXBlKSB7XG4tXHRcdFx0XHRfX3NldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4rXHRcdFx0XHRzZXRfYml0KGksIFx1MDAyNnV0bi1cdTAwM2VtaXNzZWQpO1xuIFx0XHRcdFx0cmV0dXJuIHRydWU7XG4gXHRcdFx0fVxuIFx0XHR9XG5AQCAtNDgzLDcgKzQ4OCw3IEBAIHVkcF90dW5uZWxfbmljX2FkZF9uZXcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4gXHRcdCAqIGFyZSBubyBkZXZpY2VzIGN1cnJlbnRseSB3aGljaCBoYXZlIG11bHRpcGxlIHRhYmxlcyBhY2NlcHRpbmdcbiBcdFx0ICogdGhlIHNhbWUgdHVubmVsIHR5cGUsIGFuZCBmYWxzZSBwb3NpdGl2ZXMgYXJlIG9rYXkuXG4gXHRcdCAqL1xuLVx0XHRfX3NldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4rXHRcdHNldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtNTUyLDcgKzU1Nyw3IEBAIHN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnV0bi1cdTAwM2Vsb2NrKTtcbiBcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSBmYWxzZTtcbitcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkrKylcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgaW5mby1cdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzOyBqKyspIHtcbiBcdFx0XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xuQEAgLTY5Niw4ICs3MDEsOCBAQCB1ZHBfdHVubmVsX25pY19mbHVzaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSsrKVxuIFx0XHRtZW1zZXQodXRuLVx1MDAzZWVudHJpZXNbaV0sIDAsIGFycmF5X3NpemUoaW5mby1cdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzLFxuIFx0XHRcdFx0XHRcdCAgICAgIHNpemVvZigqKnV0bi1cdTAwM2VlbnRyaWVzKSkpO1xuLVx0V0FSTl9PTih1dG4tXHUwMDNlbmVlZF9zeW5jKTtcbi1cdHV0bi1cdTAwM2VuZWVkX3JlcGxheSA9IDA7XG4rXHRXQVJOX09OKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSk7XG4rXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG5AQCAtNzEzLDggKzcxOCw4IEBAIHVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSsrKVxuIFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpbmZvLVx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGorKylcbiBcdFx0XHR1ZHBfdHVubmVsX25pY19lbnRyeV9mcmVlemVfdXNlZChcdTAwMjZ1dG4tXHUwMDNlZW50cmllc1tpXVtqXSk7XG4tXHR1dG4tXHUwMDNlbWlzc2VkID0gMDtcbi1cdHV0bi1cdTAwM2VuZWVkX3JlcGxheSA9IDA7XG4rXHRXUklURV9PTkNFKHV0bi1cdTAwM2VtaXNzZWQsIDApO1xuK1x0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIFxuIFx0aWYgKCFpbmZvLVx1MDAzZXNoYXJlZCkge1xuIFx0XHR1ZHBfdHVubmVsX2dldF9yeF9pbmZvKGRldik7XG5AQCAtNzM2LDEwICs3NDEsMTAgQEAgc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRydG5sX2xvY2soKTtcbiBcdG11dGV4X2xvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuIFxuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDA7XG4rXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIFx0X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyh1dG4tXHUwMDNlZGV2LCB1dG4pO1xuIFxuLVx0aWYgKHV0bi1cdTAwM2VuZWVkX3JlcGxheSlcbitcdGlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSlcbiBcdFx0dWRwX3R1bm5lbF9uaWNfcmVwbGF5KHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4gXHRtdXRleF91bmxvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuQEAgLTkwNCw3ICs5MDksNyBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0LyogV2FpdCBmb3IgdGhlIHdvcmsgdG8gYmUgZG9uZSB1c2luZyB0aGUgc3RhdGUsIG5ldGRldiBjb3JlIHdpbGxcbiBcdCAqIHJldHJ5IHVucmVnaXN0ZXIgdW50aWwgd2UgZ2l2ZSB1cCBvdXIgcmVmZXJlbmNlIG9uIHRoaXMgZGV2aWNlLlxuIFx0ICovXG4tXHRpZiAodXRuLVx1MDAzZXdvcmtfcGVuZGluZylcbitcdGlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkcsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpXG4gXHRcdHJldHVybjtcbiBcbiBcdHVkcF90dW5uZWxfbmljX2ZyZWUodXRuKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjA0OjU4LjMyMDU3Mjc2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0MTIzOTc4NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29uY3VycmVuY3kgRml4IGluIHRoZSBVRFAgVHVubmVsIE5JQyBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyB0b3VjaGluZyBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIEludGVyZXN0aW5nLiBUaGV5J3ZlIGdvbmUgYW5kIHJlZmFjdG9yZWQgYSBmZXcgYml0ZmllbGRzIHdpdGhpbiB0aGUgYHVkcF90dW5uZWxfbmljYCBzdHJ1Y3Qg4oCTIGBuZWVkX3N5bmNgLCBgbmVlZF9yZXBsYXlgLCBhbmQgYHdvcmtfcGVuZGluZ2Ag4oCTIGFuZCBjb25zb2xpZGF0ZWQgdGhlbSBpbnRvIGEgc2luZ2xlIGB1bnNpZ25lZCBsb25nIGZsYWdzYCBmaWVsZC4gU21hcnQgbW92ZSwgdGhhdCdzIGFsbW9zdCBhbHdheXMgYSBnb29kIGluZGljYXRvciBmb3IgYSBjb25jdXJyZW5jeSBvciBkYXRhIHJhY2UgZml4LiBUaGV5J3JlIHVzaW5nIGF0b21pYyBiaXQgb3BlcmF0aW9ucyAoYHNldF9iaXRgLCBgY2xlYXJfYml0YCwgYHRlc3RfYml0YCksIGFuZCBgUkVBRF9PTkNFYC9gV1JJVEVfT05DRWAgZm9yIGBtaXNzZWRgLiBUaGlzIHJlYWxseSBzbWVsbHMgbGlrZSBhIGNsYXNzaWMgbXVsdGktdGhyZWFkZWQgYWNjZXNzIHByb2JsZW0gdGhhdCBuZWVkZWQgYSBjbGVhbiBzb2x1dGlvbi5cblxuTm93LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgY29udGV4dC4gTGV0IG1lIGRpdmUgaW50byBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgaXRzZWxmLiBSaWdodCwgaXQncyBwYXJ0IG9mIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlLiBPa2F5LCBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB3aGF0IHBhcnRzIG9mIHRoZSBzeXN0ZW0gYXJlIGFjdHVhbGx5ICp1c2luZyogdGhpcy4gSXMgaXQgZXZlbiByZWFjaGFibGUgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJ20gdHJ5aW5nIHRvIHJlY2FsbCB0aGUgY29tbW9uIGFyY2hpdGVjdHVyZXMgdXNpbmcgaXQgYW5kIHRoZSBwb3RlbnRpYWwgZ290Y2hhcy4uLiBXYWl0LCBpdCdzIGZvciBOSUMgb2ZmbG9hZC4gVGhhdCdzIGEga2V5IGRldGFpbCEgU28gdGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGFueSAqdmlydHVhbCogZHJpdmVyIGxldmVyYWdlIHRoaXM/IE9yIGlzIGl0IHNvbWV0aGluZyB0aGF0IGNvdWxkIGFsc28gYmUgdHJpZ2dlcmVkIGJ5IHNvZnR3YXJlLCBwZXJoYXBzIGV2ZW4gcnVubmluZyBpbiBhIFZNPyBIbW0uLi5cblxuT2theSwgbGV0J3MgdHJhY2UgdGhpcyBiYWNrLiBJJ2xsIGNoZWNrIHRoZSB1c2FnZSBvZiBgdWRwX3R1bm5lbF9uaWNfaW5mb2AuIFRoYXQncyB0aGUgYmVzdCB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGFuZCBob3cgdGhpcyBjb2RlIGlzIGJlaW5nIGFjY2Vzc2VkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIHBhdGNoIGFuZCBob3cgaXQgYWRkcmVzc2VzIHRoZSByYWNlIGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk0NSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjA1OjA2LjczMjk3NTA3NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzA4NDMxMjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF90dW5uZWxfbmljX2luZm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0PTE3Mj1zdHJ1Y3QgbWFjc2VjX29wcyogICAgICAgICAgICAgICAgICBtYWNzZWNfb3BzXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0OjE3MzpzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyogICAgICAgICB1ZHBfdHVubmVsX25pY19pbmZvXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0LTE3NC1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWMqICAgICAgICAgICAgICB1ZHBfdHVubmVsX25pY1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz04OTU9c3RhdGljIGludCB4Z2JlX3Z4bGFuX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzo5MDY6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHhnYmVfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDctXFx0LnNldF9wb3J0XFx0PSB4Z2JlX3Z4bGFuX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzo5MTU6Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKnhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbyh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jPTE1Mj1pbnQgeGdiZV9jb25maWdfbmV0ZGV2KHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jLTI2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLW1haW4uYzoyNjM6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0geGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjY0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaD0xMjk2PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqeGdiZV9nZXRfZXRodG9vbF9vcHModm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oOjEyOTc6Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKnhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbyh2b2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmgtMTI5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMDIxMT1zdGF0aWMgaW50IGJueDJ4X3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEwMjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibngyeF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjMtXFx0LnN5bmNfdGFibGVcXHQ9IGJueDJ4X3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMzA0MD1zdGF0aWMgaW50IGJueDJ4X2luaXRfZGV2KHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMjA3LVxcdFxcdGlmIChJU19QRihicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEzMjA4OlxcdFxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZibngyeF91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTMyMDktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTU5NjI9c3RhdGljIGludCBibnh0X3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNTk3ODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gYm54dF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3OS1cXHQuc2V0X3BvcnRcXHQ9IGJueHRfdWRwX3R1bm5lbF9zZXRfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2OTQ1PXN0YXRpYyBpbnQgYm54dF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE3MDUyLVxcdGlmIChicC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNzA1MzpcXHRcXHRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2Ym54dF91ZHBfdHVubmVsc19wNztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1NC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTcwNTU6XFx0XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmJueHRfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTcwNTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0yNjg1PXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2OTY6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGxpcXVpZGlvX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2OTctXFx0LnNldF9wb3J0XFx0PSBsaXF1aWRpb191ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MzMyMj1zdGF0aWMgaW50IHNldHVwX25pY19kZXZpY2VzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzU4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNTgzOlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNTg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc3Mj1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzgzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBsaXF1aWRpb191ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzg0LVxcdC5zZXRfcG9ydFxcdD0gbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTE5MTk9c3RhdGljIGludCBzZXR1cF9uaWNfZGV2aWNlcyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIwOTMtXFx0XFx0ICAgIChsaW8tXFx1MDAzZWVuY19kZXZfY2FwYWJpbGl0eSBcXHUwMDI2IH5ORVRJRl9GX0xSTyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MjA5NDpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2bGlxdWlkaW9fdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjA5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTM3NzA9c3RhdGljIGludCBjeGdiX3VkcF90dW5uZWxfc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6MzgxODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gY3hnYl91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zODE5LVxcdC5zZXRfcG9ydFxcdD0gY3hnYl91ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9NjU3MT1zdGF0aWMgaW50IGluaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtNjgwMC1cXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlcmF3Zl9jbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6NjgwMTpcXHRcXHRcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2Y3hnYl91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy02ODAyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM9MjA3PXN0YXRpYyBpbnQgZW5pY191ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM6MjI5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBlbmljX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjMwLVxcdC5zZXRfcG9ydFxcdD0gZW5pY191ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYz0yNjc1PXN0YXRpYyBpbnQgZW5pY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk0OC1cXHRcXHQgICAgZW5pYy1cXHUwMDNldnhsYW4uZmxhZ3MgXFx1MDAyNiBFTklDX1ZYTEFOX01VTFRJX1dRKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTQ5OlxcdFxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZlbmljX3VkcF90dW5uZWxzX3Y0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1MC1cXHRcXHRcXHRpZiAoZW5pYy1cXHUwMDNldnhsYW4uZmxhZ3MgXFx1MDAyNiBFTklDX1ZYTEFOX09VVEVSX0lQVjYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTUxOlxcdFxcdFxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZlbmljX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1Mi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jPTQwMTU9c3RhdGljIGludCBiZV92eGxhbl91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jOjQwMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJlX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzNS1cXHQuc2V0X3BvcnRcXHQ9IGJlX3Z4bGFuX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYz01MTc5PXN0YXRpYyB2b2lkIGJlX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTUyMDctXFx0aWYgKCFsYW5jZXJfY2hpcChhZGFwdGVyKSBcXHUwMDI2XFx1MDAyNiAhQkV4X2NoaXAoYWRhcHRlcikgXFx1MDAyNlxcdTAwMjYgIWJlX2lzX21jKGFkYXB0ZXIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM6NTIwODpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2YmVfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy01MjA5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9NDAyPXN0YXRpYyBpbnQgZm0xMGtfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTQxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzo0MTc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGZtMTBrX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTQxOC1cXHQuc3luY190YWJsZVxcdD0gZm0xMGtfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9MTU0MT1zdHJ1Y3QgbmV0X2RldmljZSAqZm0xMGtfYWxsb2NfbmV0ZGV2KGNvbnN0IHN0cnVjdCBmbTEwa19pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtMTU4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzoxNTgxOlxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZmbTEwa191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy0xNTgyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oPTQ2OD1zdHJ1Y3QgaTQwZV9wZiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC01MjEtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB1ZHBfdHVubmVsX3NoYXJlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaDo1MjI6XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmgtNTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xMzYzNz1zdGF0aWMgaW50IGk0MGVfY29uZmlnX25ldGRldihzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxMzY4MTpcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2cGYtXFx1MDAzZXVkcF90dW5uZWxfbmljO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz0zNDQzPXN0YXRpYyB2b2lkIGljZV9zZXRfb3BzKHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zNDU0LVxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZpY2VfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzozNDU1OlxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZwZi1cXHUwMDNlaHcudWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzQ1Ni1cXHRuZXRkZXYtXFx1MDAzZXhkcF9tZXRhZGF0YV9vcHMgPSBcXHUwMDI2aWNlX3hkcF9tZF9vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz0zOTcwPWludCBpY2VfaW5pdF9wZihzdHJ1Y3QgaWNlX3BmICpwZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zOTcxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzozOTcyOlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICp1ZHBfdHVubmVsX25pYyA9IFxcdTAwMjZwZi1cXHUwMDNlaHcudWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzk3My1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpY2VfcGZfdG9fZGV2KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oPTg5OT1zdHJ1Y3QgaWNlX2h3IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oLTEwMTEtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB1ZHBfdHVubmVsX3NoYXJlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaDoxMDEyOlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHVkcF90dW5uZWxfbmljO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oLTEwMTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9NTQ0OD1zdGF0aWMgaW50IGl4Z2JlX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NTQ2NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gaXhnYmVfdWRwX3R1bm5lbHNfeDU1MCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2OC1cXHQuc3luY190YWJsZVxcdD0gaXhnYmVfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTU0NzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjU0NzU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGl4Z2JlX3VkcF90dW5uZWxzX3g1NTBlbV9hID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDc2LVxcdC5zeW5jX3RhYmxlXFx0PSBpeGdiZV91ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTE1NDg9c3RhdGljIGludCBpeGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTY5OS1cXHRjYXNlIGl4Z2JlX21hY19lNjEwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTcwMDpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExNzAyLVxcdGNhc2UgaXhnYmVfbWFjX3g1NTBlbV9hOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTcwMzpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MGVtX2E7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExNzA0LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0yNjM5PXN0YXRpYyBpbnQgbWx4NF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0yNjU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM6MjY1NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbWx4NF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTI2NTgtXFx0LnN5bmNfdGFibGVcXHQ9IG1seDRfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0zMTYxPWludCBtbHg0X2VuX2luaXRfbmV0ZGV2KHN0cnVjdCBtbHg0X2VuX2RldiAqbWRldiwgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTMzNDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYzozMzQ3OlxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZtbHg0X3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMzM0OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD05MDU9c3RydWN0IG1seDVlX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjk1NzpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuaWNfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTgtI2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTU0NTY9dm9pZCBtbHg1ZV92eGxhbl9zZXRfbmV0ZGV2X2luZm8oc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU0NjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1NDY5OlxcdHByaXYtXFx1MDAzZW5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZwcml2LVxcdTAwM2VuaWNfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU0NzAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jPTIzNzY9c3RhdGljIGludCBuZnBfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yMzk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYzoyMzk1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuZnBfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTIzOTYtXFx0LnN5bmNfdGFibGUgICAgID0gbmZwX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYz0yNjY2PXN0YXRpYyB2b2lkIG5mcF9uZXRfbmV0ZGV2X2luaXQoc3RydWN0IG5mcF9uZXQgKm5uKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MTgtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYzoyNzE5OlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZuZnBfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MjAtXFx0XFx0bm4tXFx1MDAzZWRwLmN0cmwgfD0gTkZQX05FVF9DRkdfQ1RSTF9WWExBTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM9OTU3PXN0YXRpYyBpbnQgcWVkZV91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy05ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYzo5ODg6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHFlZGVfdWRwX3R1bm5lbHNfYm90aCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4OS1cXHQuc3luY190YWJsZVxcdD0gcWVkZV91ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jPTEwMDY9dm9pZCBxZWRlX3NldF91ZHBfdHVubmVscyhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMDktXFx0ICAgIGVkZXYtXFx1MDAzZWRldl9pbmZvLmNvbW1vbi5nZW5ldmVfZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6MTAxMDpcXHRcXHRlZGV2LVxcdTAwM2VuZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnFlZGVfdWRwX3R1bm5lbHNfYm90aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTEtXFx0ZWxzZSBpZiAoZWRldi1cXHUwMDNlZGV2X2luZm8uY29tbW9uLnZ4bGFuX2VuYWJsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTI6XFx0XFx0ZWRldi1cXHUwMDNlbmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZxZWRlX3VkcF90dW5uZWxzX3Z4bGFuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAxMy1cXHRlbHNlIGlmIChlZGV2LVxcdTAwM2VkZXZfaW5mby5jb21tb24uZ2VuZXZlX2VuYWJsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTQ6XFx0XFx0ZWRldi1cXHUwMDNlbmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZxZWRlX3VkcF90dW5uZWxzX2dlbmV2ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jPTQ3MT1zdGF0aWMgaW50IHFsY25pY191ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM6NDg3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBxbGNuaWNfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4OC1cXHQuc3luY190YWJsZVxcdD0gcWxjbmljX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYz0yMjU0PXFsY25pY19zZXR1cF9uZXRkZXYoc3RydWN0IHFsY25pY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTIzMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jOjIzMDQ6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnFsY25pY191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtMjMwNS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTQyPXN0YXRpYyBpbnQgZWZ4X2VmMTBfc2V0X3VkcF90bmxfcG9ydHMoc3RydWN0IGVmeF9uaWMgKmVmeCwgYm9vbCB1bmxvYWRpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6NDM6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGVmeF9lZjEwX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtNDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTUyNT1zdGF0aWMgaW50IGVmeF9lZjEwX3Byb2JlKHN0cnVjdCBlZnhfbmljICplZngpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4MC1cXHQgICAgKDEgXFx1MDAzY1xcdTAwM2MgTUNfQ01EX0RSVl9BVFRBQ0hfRVhUX09VVF9GTEFHX1RSVVNURUQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6NjgxOlxcdFxcdGVmeC1cXHUwMDNlbmV0X2Rldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZlZnhfZWYxMF91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9Mzk2Mj1zdGF0aWMgaW50IGVmeF9lZjEwX3VkcF90bmxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy0zOTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6Mzk4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy0zOTg2LVxcdC5zZXRfcG9ydFxcdD0gZWZ4X2VmMTBfdWRwX3RubF9zZXRfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTYxOT1zdGF0aWMgaW50IHR4Z2JlX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NjQyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB0eGdiZV91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDMtXFx0LnN5bmNfdGFibGVcXHQ9IHR4Z2JlX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTY4MT1zdGF0aWMgaW50IHR4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzQ3LVxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjc0ODpcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2dHhnYmVfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9NjY9bnNpbV91ZHBfdHVubmVsX3N5bmNfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtODQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6ODU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5zaW1fdWRwX3R1bm5lbF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTg2LVxcdC5zZXRfcG9ydFxcdD0gbnNpbV91ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTI1PWludCBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMjgtXFx0c3RydWN0IG5ldGRldnNpbSAqbnMgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjEyOTpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xODQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTg1OlxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IGluZm87XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTg2LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTg5PXZvaWQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE5My1cXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUobnMtXFx1MDAzZXVkcF9wb3J0cy5kZGlyKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxOTQ6XFx0a2ZyZWUoZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxOTU6XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gTlVMTDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xOTYtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD03Nj1zdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6Nzc6c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm87XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC03OC1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWM7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MDQ9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjA4OS0gKlxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjA5MDogKlxcdEB1ZHBfdHVubmVsX25pY19pbmZvOlxcdHN0YXRpYyBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgVURQIHR1bm5lbFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjA5MS0gKlxcdFxcdFxcdFxcdG9mZmxvYWQgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2VcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1MDQtI2VuZGlmXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNTA1OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvXFx0KnVkcF90dW5uZWxfbmljX2luZm87XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTA2LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY1xcdCp1ZHBfdHVubmVsX25pYztcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0yMjU9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfZW5jYXBfZW5hYmxlKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yMzgtXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjIzOTplbnVtIHVkcF90dW5uZWxfbmljX2luZm9fZmxhZ3Mge1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNDAtXFx0LyogRGV2aWNlIG9ubHkgc3VwcG9ydHMgb2ZmbG9hZHMgd2hlbiBpdCdzIG9wZW4sIGFsbCBwb3J0c1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTI1Nz1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkIHtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MjU4OlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdWRwX3R1bm5lbF9uaWNfaW5mbztcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjU5LVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTI2Mz1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkX25vZGUge1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI2OC0vKipcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MjY5OiAqIHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIC0gZHJpdmVyIFVEUCB0dW5uZWwgb2ZmbG9hZCBpbmZvcm1hdGlvblxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNzAtICogQHNldF9wb3J0OlxcdGNhbGxiYWNrIGZvciBhZGRpbmcgYSBuZXcgcG9ydFxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI3My0gKiBAc2hhcmVkOlxcdHJlZmVyZW5jZSB0byBkZXZpY2UgZ2xvYmFsIHN0YXRlIChvcHRpb25hbClcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mjc0OiAqIEBmbGFnczpcXHRkZXZpY2UgZmxhZ3MgZnJvbSBlbnVtIHVkcF90dW5uZWxfbmljX2luZm9fZmxhZ3NcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjc1LSAqIEB0YWJsZXM6XFx0VURQIHBvcnQgdGFibGVzIHRoaXMgZGV2aWNlIGhhc1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI5Ni0gKi9cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mjk3OnN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjk4LVxcdC8qIG9uZS1ieS1vbmUgKi9cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zMjItICogbW9kdWxlLiBOSUMgZHJpdmVycyBhcmUgbm90LCB0aGV5IGp1c3QgYXR0YWNoIHRoZWlyXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjMyMzogKiBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB0byB0aGUgbmV0ZGV2IGFuZCB3YWl0IGZvciBjYWxsYmFja3MgdG8gY29tZS5cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzI0LSAqIExvYWRpbmcgYSB0dW5uZWwgZHJpdmVyIHdpbGwgY2F1c2UgdGhlIHVkcF90dW5uZWwgbW9kdWxlIHRvIGJlIGxvYWRlZFxcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTEzMjA9aW50IHJlZ2lzdGVyX25ldGRldmljZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTEzOTQtXFxubmV0L2NvcmUvZGV2LmM6MTEzOTU6XFx0aWYgKGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xcbm5ldC9jb3JlL2Rldi5jLTExMzk2LVxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9SWF9VRFBfVFVOTkVMX1BPUlQ7XFxuLS1cXG5uZXQvZXRodG9vbC90dW5uZWxzLmM9MzY9ZXRobmxfdHVubmVsX2luZm9fcmVwbHlfc2l6ZShjb25zdCBzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxcbi0tXFxubmV0L2V0aHRvb2wvdHVubmVscy5jLTM5LVxcdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVxcdTAwM2VmbGFncyBcXHUwMDI2IEVUSFRPT0xfRkxBR19DT01QQUNUX0JJVFNFVFM7XFxubmV0L2V0aHRvb2wvdHVubmVscy5jOjQwOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvO1xcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy00MS1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy00NC1cXG5uZXQvZXRodG9vbC90dW5uZWxzLmM6NDU6XFx0aW5mbyA9IHJlcV9iYXNlLVxcdTAwM2VkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2V0aHRvb2wvdHVubmVscy5jLTQ2LVxcdGlmICghaW5mbykge1xcbi0tXFxubmV0L2V0aHRvb2wvdHVubmVscy5jPTgyPWV0aG5sX3R1bm5lbF9pbmZvX2ZpbGxfcmVwbHkoY29uc3Qgc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG4tLVxcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy04NS1cXHRib29sIGNvbXBhY3QgPSByZXFfYmFzZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBFVEhUT09MX0ZMQUdfQ09NUEFDVF9CSVRTRVRTO1xcbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo4NjpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbztcXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtODctXFx0c3RydWN0IG5sYXR0ciAqcG9ydHMsICp0YWJsZSwgKmVudHJ5O1xcbi0tXFxubmV0L2V0aHRvb2wvdHVubmVscy5jLTg5LVxcbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo5MDpcXHRpbmZvID0gcmVxX2Jhc2UtXFx1MDAzZWRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtOTEtXFx0aWYgKCFpbmZvKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMzI9dWRwX3R1bm5lbF9uaWNfaXNfZW1wdHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzMte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTM0OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTM1LVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNDU9dWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTUzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE1NDpcXHRcXHR0YWJsZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXFx1MDAzZXRhYmxlc1tpXTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1NS1cXHRcXHRpZiAoIXRlc3RfYml0KGksIFxcdTAwMjZ1dG4tXFx1MDAzZW1pc3NlZCkpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTIxMT11ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19vbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjI0LVxcdGlmIChlbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBVRFBfVFVOTkVMX05JQ19FTlRSWV9BREQpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMjU6XFx0XFx0ZXJyID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVxcdTAwM2VzZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsIFxcdTAwMjZ0aSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjYtXFx0ZWxzZVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjI3OlxcdFxcdGVyciA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNldW5zZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnRpKTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjQwPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQyLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI0MzpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI0NC1cXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjUyPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1NC17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNTU6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTYtXFx0dW5zaWduZWQgaW50IGksIGo7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTI4Mz1fX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yODctXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyODg6XFx0aWYgKGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNlc3luY190YWJsZSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI4OS1cXHRcXHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShkZXYsIHV0bik7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMyND11ZHBfdHVubmVsX25pY19pc19jYXBhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMjYte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzI3OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzI4LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zNDI9dWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzQ0LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM0NTpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM0Ni1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00MjY9dWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MzItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDMzOlxcdFxcdHRhYmxlID0gXFx1MDAyNmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNldGFibGVzW2ldO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDM0LVxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZSh0YWJsZSwgdGkpKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00NjE9dWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDY3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ2ODpcXHRcXHR0YWJsZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXFx1MDAzZXRhYmxlc1tpXTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ2OS1cXHRcXHRpZiAoIXVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUodGFibGUsIHRpKSlcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDk4PV9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00OTkte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTAwOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTAxLVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01NDg9c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19yZXNldF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0OS17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NTA6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NTEtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTU4ND1fX3VkcF90dW5uZWxfbmljX2R1bXBfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01ODUte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTg2OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTg3LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02MDk9X191ZHBfdHVubmVsX25pY19kdW1wX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjExLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYxMjpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxMy1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Njg2PXVkcF90dW5uZWxfbmljX2ZsdXNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjg3LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY4ODpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY4OS1cXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzA5PXVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcxMC17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MTE6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MTItXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZF9ub2RlICpub2RlO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03NTQ9c3RhdGljIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NTU6dWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTYtXFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbl90YWJsZXMpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc5Mz1zdGF0aWMgaW50IHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03OTQte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Nzk1OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzk2LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSAqbm9kZSA9IE5VTEw7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTgzNC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjgzNTpcXHRpZiAoaW5mby1cXHUwMDNlc2hhcmVkIFxcdTAwMjZcXHUwMDI2IGluZm8tXFx1MDAzZXNoYXJlZC1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODM2OlxcdFxcdHV0biA9IGluZm8tXFx1MDAzZXNoYXJlZC1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTgzNy1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NDUtXFx0aWYgKGluZm8tXFx1MDAzZXNoYXJlZCkge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODQ2OlxcdFxcdGlmICghaW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NDctXFx0XFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmluZm8tXFx1MDAzZXNoYXJlZC1cXHUwMDNlZGV2aWNlcyk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NDg6XFx0XFx0XFx0aW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gdXRuO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODQ5LVxcdFxcdH1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODY4PXVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04Njkte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODcwOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODcxLVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04OTktXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MDA6XFx0XFx0aW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gTlVMTDtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkwMS1cXHR9XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTkyMj11ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkyNS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MjY6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MjctXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MjgtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5Mjk6XFx0aW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkzMC1cXHRpZiAoIWluZm8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjA1OjEzLjA0MTQxMTE2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMDk3Mjk3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29uY3VycmVuY3kgQnVnIGluIFVEUCBUdW5uZWwgTklDIE9mZmxvYWQqKlxuXG5Pa2F5LCBzbyB0aGUgYHVkcF90dW5uZWxfbmljX2luZm9gIHN0cnVjdHVyZSBpcyB1c2VkIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldGRldnNpbWAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBzb21ldGhpbmcgd2UncmUgbGlrZWx5IHRvIGVuY291bnRlciBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMg4oCTIG5ldGRldnNpbSBpcyBhbGwgYWJvdXQgc29mdHdhcmUtc2ltdWxhdGluZyBuZXR3b3JrIGRldmljZSBmdW5jdGlvbmFsaXR5IGZvciB0ZXN0aW5nIG9mZmxvYWRzLiBUaGF04oCZcyBhIGtleSBkZXRhaWwuIEl0IGFsc28gZmxhZ3MgdGhlIGZlYXR1cmUgYXMgYmVpbmcgY29yZSBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgKFVEUCB0dW5uZWwgTklDIG9mZmxvYWQpLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGNvZGUncyBwcmltYXJ5IHB1cnBvc2UgaXMgZm9yIG9mZmxvYWQuXG5cblRoZSBwYXRjaCBmb2N1c2VzIG9uIGEgY29uY3VycmVuY3kgYnVnLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoZSBzeW5jaHJvbml6YXRpb24gcHJvYmxlbXMgd2VyZS4gVGhlIGNvZGUgdG91Y2hlcyBhIGJyb2FkIHN3YXRoZSBvZiBmdW5jdGlvbnM6IGB1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZWAsIGB1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5YCwgYF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbmAsIGB1ZHBfdHVubmVsX25pY19hZGRfbmV3YCwgYF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmYCwgYHVkcF90dW5uZWxfbmljX2ZsdXNoYCwgYHVkcF90dW5uZWxfbmljX3JlcGxheWAsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYC4gVGhhdCdzIGEgZ29vZCBjaHVuayBvZiB0aGUgVURQIHR1bm5lbCBOSUMgY29kZSwgc28gdGhpcyBjb3VsZCBoYXZlIGJlZW4gYSBwcmV0dHkgY3JpdGljYWwgaXNzdWUuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGRlZXBlciwgSSB3YW50IHRvIHNlZSBpZiBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFmZmVjdCB0aGlzIGNvZGUncyBidWlsZCBhbmQgYmVoYXZpb3IuIEkga25vdyB0aGF0IGBDT05GSUdfTkVUREVWU0lNYCBpcyBhIGdpdmVuLCBidXQgaXMgdGhlcmUgYW55dGhpbmcgZWxzZT8gUGVyaGFwcyBgQ09ORklHX1VEUF9UVU5ORUxgIG9yIHNvbWV0aGluZyByZWxhdGVkPyBJJ2xsIHByb2JhYmx5IGZpbmQgdGhlIGFuc3dlciBpbiBlaXRoZXIgYG5ldC9pcHY0L01ha2VmaWxlYCBvciBgbmV0L2lwdjQvS2NvbmZpZ2Ag4oCTIHRob3NlIGFyZSB0aGUgdXN1YWwgcGxhY2VzIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciBuZXR3b3JraW5nLXJlbGF0ZWQgbW9kdWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxMzksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MDU6MTkuMTUxMTQzMDMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NzE4MDQyMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9MzA9b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgKz0gaXBfZ3JlLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTozMTp1ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xcbm5ldC9pcHY0L01ha2VmaWxlLTMyLW9iai0kKENPTkZJR19ORVRfVURQX1RVTk5FTCkgKz0gdWRwX3R1bm5lbC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjA1OjIxLjgyMjk1Mzc5NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzY4MTQ0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgVURQIFR1bm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIFVEUCB0dW5uZWwgc2V0dXAuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBgQ09ORklHX05FVF9VRFBfVFVOTkVMYCBpcyB0aGUgY3JpdGljYWwgY29uZmlnIG9wdGlvbiBJIG5lZWQgdG8gZm9jdXMgb24uIEl0J3MgdGhlIHVzdWFsIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIHNpbXVsYXRpb24gZW52aXJvbm1lbnQsIGVzcGVjaWFsbHkgd2l0aGluIHRoZSBuZXRkZXZzaW0gZnJhbWV3b3JrLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgbmV0ZGV2c2ltIGRyaXZlciwgbG9jYXRlZCBhdCBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdgLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY3kgbGFuZHNjYXBlIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zLiBJJ20gZXhwZWN0aW5nIHRoaXMgd2lsbCBvdXRsaW5lIGlmIHRoZSBzaW11bGF0aW9uIG9mZmVycyBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIFVEUCB0dW5uZWxpbmcsIG9yIGlmIGl0IHV0aWxpemVzIGEgbW9yZSBnZW5lcmljIGFwcHJvYWNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgc2ltdWxhdGVkIG5ldHdvcmsgc3RhY2sgYWNjb3VudHMgZm9yIHR1bm5lbGluZywgb3IgaWYgaXQgc2ltcGx5IHBhc3NlcyBhbG9uZyB0aGUgZGF0YSBhcyBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5NTIsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODowNToyNi44NTk3NzAzOTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1MTcwNTg1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUREVWU0lNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjA1OjI5LjExMTQ4MjAzOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNjk1NTYxOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGb2N1czogVURQIFR1bm5lbCBOSUMgT2ZmbG9hZCBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBORVRERVZTSU1gIGFuZCBgTkVUX1VEUF9UVU5ORUxgIGNvbmZpZ3VyYXRpb25zIGhlcmUuIFJpZ2h0LCB0aGF0IHBsYWNlcyB0aGUgcmVsZXZhbnQgcGF0Y2ggaW4gYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLiBUaW1lIHRvIG1hcCBvdXQgdGhlIGZ1bmN0aW9uIGxhbmRzY2FwZSBhbmQgZGVjaWRlIHdoZXJlIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cy4gTGV0J3Mgc2VlLi4uXG5cbkkndmUgZ290IGB1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZWAsIGB1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5YCwgYF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbmAsIGB1ZHBfdHVubmVsX25pY19hZGRfbmV3YCwgYF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmYCwgYHVkcF90dW5uZWxfbmljX2ZsdXNoYCwgYHVkcF90dW5uZWxfbmljX3JlcGxheWAsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYC4gVGhlc2UgYXJlIGFsbCBjbGVhcmx5IHBhcnQgb2YgdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgbG9naWMuXG5cbk5vdywgd2hpY2ggb25lcyBhcmUgdGhlIG1vc3QgcHJvbWlzaW5nIHRhcmdldHMgZm9yIGZ1enppbmc/IFRoaW5raW5nIHN0cmF0ZWdpY2FsbHksIEknbGwgc2VsZWN0IGEgc2hvcnRsaXN0OiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY19yZXBsYXlgLCBgdWRwX3R1bm5lbF9uaWNfZmx1c2hgLCBhbmQgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgLiBUaGVzZSBzZWVtIGxpa2UgZ29vZCBzdGFydGluZyBwb2ludHMgZm9yIGV4cGxvcmluZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5Ib2xkIG9uLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLiBJIHdhbnQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBJIGp1c3QgY2hlY2tlZCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AgaXMgc3RhdGljLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIGFsc28gc3RhdGljLiBOb3csIHdhaXQgYSBtaW51dGUsIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCAqaXNuJ3QqIHN0YXRpYy4gSSdkIGJldHRlciBkb3VibGUtY2hlY2sgdGhhdCBpbiBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI5NSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODowNTozNi40ODEwNDExN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2MDM0OTMwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODY3PXN0YXRpYyB2b2lkXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4Njg6dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg2OS17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTkyMj11ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk0Ni1cXHRpZiAoZXZlbnQgPT0gTkVUREVWX1VOUkVHSVNURVIpIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk0NzpcXHRcXHR1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKGRldiwgdXRuKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk0OC1cXHRcXHRyZXR1cm4gTk9USUZZX09LO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODowNTozOC45NDEzOTc1MDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1MzI3ODA2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGlmIHRoZXNlIGFyZSBteSB0aG91Z2h0cywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipTdHVjayBvbiBhIFN0YWxlIFBvaW50KipcblxuVWdoLCB0aGlzIGZlZWxzIGNvbXBsZXRlbHkgc3RhdGljLiBJJ20gaGl0dGluZyBhIHJvYWRibG9jay4gSSdtIHNlZWluZyBub3RoaW5nIGR5bmFtaWMgb3IgZm9yd2FyZCBtb3ZpbmcuIEkgbmVlZCB0byBicmVhayBvdXQgb2YgdGhpcyBsb29wLlxuXG5XYWl0IGEgbWludXRlLi4uIHdoYXQgYWJvdXQgdGhhdCBmdW5jdGlvbiwgYHVkcF90dW5uZWxfbmljX2FkZF9wb3J0YD8gQ291bGQgdGhhdCBiZSBhIGtleT8gSXQgaGFzIHBvc3NpYmlsaXRpZXMsIHRoYXQgY2VydGFpbmx5ICpzb3VuZHMqIHJlbGV2YW50IHRvIHdoYXQgSSBhbSBkb2luZy4uLkkgc2hvdWxkIHJlYWxseSB0aGluayB0aGlzIHRocm91Z2ghXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5Mjk3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MDU6NDIuNzk0Njc4Njk2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTUzMTA3Njg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF90dW5uZWxfbmljX2FkZF9wb3J0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zOTY9c3RhdGljIGlubGluZSB2b2lkXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM5Nzp1ZHBfdHVubmVsX25pY19hZGRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzk4LXtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTEwMD12b2lkIHVkcF90dW5uZWxfcHVzaF9yeF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTEwOC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxMDk6XFx0dWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoZGV2LCBcXHUwMDI2dGkpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTExMC19XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xMjc9dm9pZCB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IHR5cGUpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xNDAtXFx0XFx0dWRwX3R1bm5lbF9uaWNfbG9jayhkZXYpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjE0MTpcXHRcXHR1ZHBfdHVubmVsX25pY19hZGRfcG9ydChkZXYsIFxcdTAwMjZ0aSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQyLVxcdFxcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00OTc9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ5ODpfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDk5LXtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfb3BzIF9fdWRwX3R1bm5lbF9uaWNfb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NzQtXFx0LnNldF9wb3J0X3ByaXZcXHQ9IF9fdWRwX3R1bm5lbF9uaWNfc2V0X3BvcnRfcHJpdixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY3NTpcXHQuYWRkX3BvcnRcXHQ9IF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NzYtXFx0LmRlbF9wb3J0XFx0PSBfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODowNTo0NS4zNDc3OTE0NDJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM1NTE1MDA0MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVRFAgVHVubmVsIE5JQyBPZmZsb2FkIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBhIGNvcmUgc2VjdGlvbiBvZiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBtZWNoYW5pc20uIEl0IHNlZW1zIGxpa2UgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGNlbnRlcmVkIGFyb3VuZCBzdGF0ZSBtYW5hZ2VtZW50IGFuZCB0aGUgd29ya3F1ZXVlIHdpdGhpbiBgdWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWVgLCBzcGVjaWZpY2FsbHkgaW52b2x2aW5nIGZ1bmN0aW9ucyBsaWtlIGB1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5YCwgYF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbmAsIGB1ZHBfdHVubmVsX25pY19hZGRfbmV3YCwgYF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmYCwgYHVkcF90dW5uZWxfbmljX2ZsdXNoYCwgYHVkcF90dW5uZWxfbmljX3JlcGxheWAsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYC4gVGhlc2UgYXJlIGFsbCB0aWdodGx5IGludGVydHdpbmVkIHdpdGggdGhlIHN0YXRlIG1hY2hpbmUgYW5kIHRoZSB3b3JrZXIgdGhyZWFkcyBtYW5hZ2luZyB0aGUgb2ZmbG9hZCBwcm9jZXNzLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGFwcGVhcnMgdG8gYmUgYWRkcmVzc2luZyBhIGRhdGEgcmFjZSBvciBjb25jdXJyZW5jeSBpc3N1ZS4gVGhlIGtleSBpcyB0aGUgc2hpZnQgZnJvbSBiaXRmaWVsZHMgdG8gYXRvbWljIGJpdCBvcGVyYXRpb25zLiBUaGF0J3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGJ1ZyBmaXgsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBsb29raW5nIGludG8gbW9yZSBjbG9zZWx5LlxuXG5HaXZlbiB0aGF0IHRoaXMgZml4IGlzIHNwZWNpZmljIHRvIHRoZSBVRFAgdHVubmVsIE5JQywgYW5kIGl0IHVzZXMgYE5FVERFVlNJTWAsIEknbSBnb2luZyB0byBmb2N1cyB0aGUgZnV6emluZyBlZmZvcnRzIG9uIHRoaXMgcGF0Y2guIEkgc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIGZ1bmN0aW9uYWxpdHkgdXNpbmcgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGZhY3QgdGhhdCBgbmV0ZGV2c2ltYCBwcm92aWRlcyBhIHNpbXVsYXRlZCBlbnZpcm9ubWVudCB0byB0ZXN0IFVEUCB0dW5uZWwgb2ZmbG9hZHMgbWFrZXMgaXQgYSBncmVhdCB0YXJnZXQuIFRoZSBzeW5jaHJvbml6YXRpb24gYW5kIHdvcmtxdWV1ZSBmdW5jdGlvbnPigJRwYXJ0aWN1bGFybHkgdGhvc2UgSSBsaXN0ZWQgZWFybGllcuKAlGFyZSBwcmltZSBjYW5kaWRhdGVzIGZvciBmdXp6aW5nIHRvIHByb2JlIGZvciBhbnkgcmVtYWluaW5nIHN1YnRsZSBpc3N1ZXMuXG5cbkkndmUgY29uZmlybWVkIHRoYXQgdGhlIGBORVRfVURQX1RVTk5FTGAgY29uZmlnIG9wdGlvbiBpcyB0aGUgY29yZSBtb2R1bGUgaGVyZSwgYW5kIGBORVRERVZTSU1gIGlzIHRoZSBzcGVjaWZpYyBkcml2ZXIgdGhhdCBleGVyY2lzZXMgaXQsIHdoaWNoIGlzIHRoZSBwZXJmZWN0IHNldC11cCBmb3IgYSBnb29kIGZ1enppbmcgdGVzdC4gTm93LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDM5LCJPdXRwdXRUb2tlbnMiOjE5MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODowNTo1OC44OTkyOTUxOTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzkzNTA4MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9VRFBfVFVOTkVMXCIsXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY1wiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY1wiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfcmVwbGF5XCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19mbHVzaFwiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlclwiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfYWRkX25ld1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZGF0YSByYWNlIGFuZCBjb25jdXJyZW5jeSBpc3N1ZSBpbiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBpbmZyYXN0cnVjdHVyZSBieSByZXBsYWNpbmcgYml0ZmllbGRzIHdpdGggYXRvbWljIGJpdCBvcGVyYXRpb25zLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIsIHdoaWNoIHNpbXVsYXRlcyBVRFAgdHVubmVsIG9mZmxvYWRzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgc3luY2hyb25pemF0aW9uIGFuZCB3b3JrcXVldWUgZnVuY3Rpb25zIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfVURQX1RVTk5FTFwiLFxuICAgIFwiTkVUREVWU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya1wiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNcIixcbiAgICBcIl9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNcIixcbiAgICBcInVkcF90dW5uZWxfbmljX3JlcGxheVwiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfZmx1c2hcIixcbiAgICBcInVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2FkZF9uZXdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRhdGEgcmFjZSBhbmQgY29uY3VycmVuY3kgaXNzdWUgaW4gdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgaW5mcmFzdHJ1Y3R1cmUgYnkgcmVwbGFjaW5nIGJpdGZpZWxkcyB3aXRoIGF0b21pYyBiaXQgb3BlcmF0aW9ucy4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYG5ldGRldnNpbWAgZHJpdmVyLCB3aGljaCBzaW11bGF0ZXMgVURQIHR1bm5lbCBvZmZsb2Fkcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHN5bmNocm9uaXphdGlvbiBhbmQgd29ya3F1ZXVlIGZ1bmN0aW9ucyBtb2RpZmllZCBieSB0aGUgcGF0Y2guXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowp9blz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-25 07:47:06 +0000 UTC FinishedAt: 2026-06-25 08:06:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_UDP_TUNNEL", "NETDEVSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_UDP_TUNNEL", "NETDEVSIM" ], "series_id": "ebc357bb-28a7-4c3b-81c2-c88a6398a33d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "udp_tunnel_nic_device_sync_work", "udp_tunnel_nic_device_sync", "__udp_tunnel_nic_device_sync", "udp_tunnel_nic_replay", "udp_tunnel_nic_flush", "udp_tunnel_nic_unregister", "udp_tunnel_nic_add_new" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9VRFBfVFVOTkVMJiMzNDssCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMmIzM0OywKICAgICYjMzQ7X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19yZXBsYXkmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZmx1c2gmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlciYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19hZGRfbmV3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGF0YSByYWNlIGFuZCBjb25jdXJyZW5jeSBpc3N1ZSBpbiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBpbmZyYXN0cnVjdHVyZSBieSByZXBsYWNpbmcgYml0ZmllbGRzIHdpdGggYXRvbWljIGJpdCBvcGVyYXRpb25zLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIsIHdoaWNoIHNpbXVsYXRlcyBVRFAgdHVubmVsIG9mZmxvYWRzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgc3luY2hyb25pemF0aW9uIGFuZCB3b3JrcXVldWUgZnVuY3Rpb25zIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDkyZjM5NDM3ZGYyMjhhMWVjYzI4ZjIzZjIzNjNiNTBkMThkNTFkN2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAwODowNDo1NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jIGIvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xuaW5kZXggOTk0NGVkOTIzZGRmZDEuLjlhNTY3YTg3NjM1Y2FhIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xuQEAgLTMwLDkgJiM0MzszMCw3IEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7XG4gICogQHdvcms6XHRhc3luYyB3b3JrIGZvciB0YWxraW5nIHRvIGhhcmR3YXJlIGZyb20gcHJvY2VzcyBjb250ZXh0XG4gICogQGRldjpcdG5ldGRldiBwb2ludGVyXG4gICogQGxvY2s6XHRwcm90ZWN0cyBhbGwgZmllbGRzXG4tICogQG5lZWRfc3luYzpcdGF0IGxlYXN0IG9uZSBwb3J0IHN0YXJ0IGNoYW5nZWRcbi0gKiBAbmVlZF9yZXBsYXk6IHNwYWNlIHdhcyBmcmVlZCwgd2UgbmVlZCBhIHJlcGxheSBvZiBhbGwgcG9ydHNcbi0gKiBAd29ya19wZW5kaW5nOiBAd29yayBpcyBjdXJyZW50bHkgc2NoZWR1bGVkXG4mIzQzOyAqIEBmbGFnczpcdHN5bmMsIHJlcGxheSwgcGVuZGluZyBmbGFnc1xuICAqIEBuX3RhYmxlczpcdG51bWJlciBvZiB0YWJsZXMgdW5kZXIgQGVudHJpZXNcbiAgKiBAbWlzc2VkOlx0Yml0bWFwIG9mIHRhYmxlcyB3aGljaCBvdmVyZmxvd25cbiAgKiBAZW50cmllczpcdHRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkXG5AQCAtNDQsOSAmIzQzOzQyLDEwIEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pYyB7XG4gXG4gXHRzdHJ1Y3QgbXV0ZXggbG9jaztcbiBcbi1cdHU4IG5lZWRfc3luYzoxO1xuLVx0dTggbmVlZF9yZXBsYXk6MTtcbi1cdHU4IHdvcmtfcGVuZGluZzoxO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4mIzQzOyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DXHQwXG4mIzQzOyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVlcdDFcbiYjNDM7I2RlZmluZSBVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkdcdDJcbiBcbiBcdHVuc2lnbmVkIGludCBuX3RhYmxlcztcbiBcdHVuc2lnbmVkIGxvbmcgbWlzc2VkO1xuQEAgLTExNiw3ICYjNDM7MTE1LDcgQEAgdWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4gXHRcdFx0ICAgdW5zaWduZWQgaW50IGZsYWcpXG4ge1xuIFx0ZW50cnktXHUwMDNlZmxhZ3MgfD0gZmxhZztcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSAxO1xuJiM0MztcdHNldF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZFxuQEAgLTE0OCw3ICYjNDM7MTQ3LDcgQEAgdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9pbmZvICp0YWJsZTtcbiBcdHVuc2lnbmVkIGludCBpLCBqO1xuIFxuLVx0aWYgKCF1dG4tXHUwMDNlbWlzc2VkKVxuJiM0MztcdGlmICghUkVBRF9PTkNFKHV0bi1cdTAwM2VtaXNzZWQpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KSB7XG5AQCAtMjgzLDcgJiM0MzsyODIsNyBAQCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHN0YXRpYyB2b2lkXG4gX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiB7XG4tXHRpZiAoIXV0bi1cdTAwM2VuZWVkX3N5bmMpXG4mIzQzO1x0aWYgKCF0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2VzeW5jX3RhYmxlKVxuQEAgLTI5MSwyMSAmIzQzOzI5MCwyNyBAQCBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0ZWxzZVxuIFx0XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV9wb3J0KGRldiwgdXRuKTtcbiBcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSAwO1xuJiM0MztcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gXHQvKiBDYW4mIzM5O3QgcmVwbGF5IGRpcmVjdGx5IGhlcmUsIGluIGNhc2Ugd2UgY29tZSBmcm9tIHRoZSB0dW5uZWwgZHJpdmVyJiMzOTtzXG4gXHQgKiBub3RpZmljYXRpb24gLSB0cnlpbmcgdG8gcmVwbGF5IG1heSBkZWFkbG9jayBpbnNpZGUgdHVubmVsIGRyaXZlci5cbiBcdCAqL1xuLVx0dXRuLVx1MDAzZW5lZWRfcmVwbGF5ID0gdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bik7XG4mIzQzO1x0aWYgKHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pKVxuJiM0MztcdFx0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG4gdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4ge1xuLVx0aWYgKCF1dG4tXHUwMDNlbmVlZF9zeW5jKVxuJiM0MztcdGlmICghdGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAodGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXHUwMDI2dXRuLVx1MDAzZXdvcmspO1xuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDE7XG4mIzQzO1x0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkcsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyBib29sXG5AQCAtMzQ4LDcgJiM0MzszNTMsNyBAQCB1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuIFx0XHRcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGVudHJ5LVx1MDAzZXBvcnQgPT0gdGktXHUwMDNlcG9ydCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgZW50cnktXHUwMDNldHlwZSAhPSB0aS1cdTAwM2V0eXBlKSB7XG4tXHRcdFx0XHRfX3NldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4mIzQzO1x0XHRcdFx0c2V0X2JpdChpLCBcdTAwMjZ1dG4tXHUwMDNlbWlzc2VkKTtcbiBcdFx0XHRcdHJldHVybiB0cnVlO1xuIFx0XHRcdH1cbiBcdFx0fVxuQEAgLTQ4Myw3ICYjNDM7NDg4LDcgQEAgdWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbiBcdFx0ICogYXJlIG5vIGRldmljZXMgY3VycmVudGx5IHdoaWNoIGhhdmUgbXVsdGlwbGUgdGFibGVzIGFjY2VwdGluZ1xuIFx0XHQgKiB0aGUgc2FtZSB0dW5uZWwgdHlwZSwgYW5kIGZhbHNlIHBvc2l0aXZlcyBhcmUgb2theS5cbiBcdFx0ICovXG4tXHRcdF9fc2V0X2JpdChpLCBcdTAwMjZ1dG4tXHUwMDNlbWlzc2VkKTtcbiYjNDM7XHRcdHNldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtNTUyLDcgJiM0Mzs1NTcsNyBAQCBzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX3Jlc2V0X250ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4gXG4tXHR1dG4tXHUwMDNlbmVlZF9zeW5jID0gZmFsc2U7XG4mIzQzO1x0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspXG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspIHtcbiBcdFx0XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xuQEAgLTY5Niw4ICYjNDM7NzAxLDggQEAgdWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KVxuIFx0XHRtZW1zZXQodXRuLVx1MDAzZWVudHJpZXNbaV0sIDAsIGFycmF5X3NpemUoaW5mby1cdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzLFxuIFx0XHRcdFx0XHRcdCAgICAgIHNpemVvZigqKnV0bi1cdTAwM2VlbnRyaWVzKSkpO1xuLVx0V0FSTl9PTih1dG4tXHUwMDNlbmVlZF9zeW5jKTtcbi1cdHV0bi1cdTAwM2VuZWVkX3JlcGxheSA9IDA7XG4mIzQzO1x0V0FSTl9PTih0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpO1xuJiM0MztcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIHZvaWRcbkBAIC03MTMsOCAmIzQzOzcxOCw4IEBAIHVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspXG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspXG4gXHRcdFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbaV1bal0pO1xuLVx0dXRuLVx1MDAzZW1pc3NlZCA9IDA7XG4tXHR1dG4tXHUwMDNlbmVlZF9yZXBsYXkgPSAwO1xuJiM0MztcdFdSSVRFX09OQ0UodXRuLVx1MDAzZW1pc3NlZCwgMCk7XG4mIzQzO1x0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIFxuIFx0aWYgKCFpbmZvLVx1MDAzZXNoYXJlZCkge1xuIFx0XHR1ZHBfdHVubmVsX2dldF9yeF9pbmZvKGRldik7XG5AQCAtNzM2LDEwICYjNDM7NzQxLDEwIEBAIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0cnRubF9sb2NrKCk7XG4gXHRtdXRleF9sb2NrKFx1MDAyNnV0bi1cdTAwM2Vsb2NrKTtcbiBcbi1cdHV0bi1cdTAwM2V3b3JrX3BlbmRpbmcgPSAwO1xuJiM0MztcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkcsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gXHRfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4tXHRpZiAodXRuLVx1MDAzZW5lZWRfcmVwbGF5KVxuJiM0MztcdGlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSlcbiBcdFx0dWRwX3R1bm5lbF9uaWNfcmVwbGF5KHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4gXHRtdXRleF91bmxvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuQEAgLTkwNCw3ICYjNDM7OTA5LDcgQEAgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdC8qIFdhaXQgZm9yIHRoZSB3b3JrIHRvIGJlIGRvbmUgdXNpbmcgdGhlIHN0YXRlLCBuZXRkZXYgY29yZSB3aWxsXG4gXHQgKiByZXRyeSB1bnJlZ2lzdGVyIHVudGlsIHdlIGdpdmUgdXAgb3VyIHJlZmVyZW5jZSBvbiB0aGlzIGRldmljZS5cbiBcdCAqL1xuLVx0aWYgKHV0bi1cdTAwM2V3b3JrX3BlbmRpbmcpXG4mIzQzO1x0aWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX1dPUktfUEVORElORywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0dWRwX3R1bm5lbF9uaWNfZnJlZSh1dG4pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9VRFBfVFVOTkVMJiMzNDssCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMmIzM0OywKICAgICYjMzQ7X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19yZXBsYXkmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZmx1c2gmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlciYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19hZGRfbmV3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGF0YSByYWNlIGFuZCBjb25jdXJyZW5jeSBpc3N1ZSBpbiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBpbmZyYXN0cnVjdHVyZSBieSByZXBsYWNpbmcgYml0ZmllbGRzIHdpdGggYXRvbWljIGJpdCBvcGVyYXRpb25zLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIsIHdoaWNoIHNpbXVsYXRlcyBVRFAgdHVubmVsIG9mZmxvYWRzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgc3luY2hyb25pemF0aW9uIGFuZCB3b3JrcXVldWUgZnVuY3Rpb25zIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTJmMzk0MzdkZjIyOGExZWNjMjhmMjNmMjM2M2I1MGQxOGQ1MWQ3ZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVuIDI1IDA4OjA0OjU1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMKaW5kZXggOTk0NGVkOTIzZGRmZDEuLjlhNTY3YTg3NjM1Y2FhIDEwMDY0NAotLS0gYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMKQEAgLTMwLDkgJiM0MzszMCw3IEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7CiAgKiBAd29yazoJYXN5bmMgd29yayBmb3IgdGFsa2luZyB0byBoYXJkd2FyZSBmcm9tIHByb2Nlc3MgY29udGV4dAogICogQGRldjoJbmV0ZGV2IHBvaW50ZXIKICAqIEBsb2NrOglwcm90ZWN0cyBhbGwgZmllbGRzCi0gKiBAbmVlZF9zeW5jOglhdCBsZWFzdCBvbmUgcG9ydCBzdGFydCBjaGFuZ2VkCi0gKiBAbmVlZF9yZXBsYXk6IHNwYWNlIHdhcyBmcmVlZCwgd2UgbmVlZCBhIHJlcGxheSBvZiBhbGwgcG9ydHMKLSAqIEB3b3JrX3BlbmRpbmc6IEB3b3JrIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQKJiM0MzsgKiBAZmxhZ3M6CXN5bmMsIHJlcGxheSwgcGVuZGluZyBmbGFncwogICogQG5fdGFibGVzOgludW1iZXIgb2YgdGFibGVzIHVuZGVyIEBlbnRyaWVzCiAgKiBAbWlzc2VkOgliaXRtYXAgb2YgdGFibGVzIHdoaWNoIG92ZXJmbG93bgogICogQGVudHJpZXM6CXRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkCkBAIC00NCw5ICYjNDM7NDIsMTAgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHsKIAogCXN0cnVjdCBtdXRleCBsb2NrOwogCi0JdTggbmVlZF9zeW5jOjE7Ci0JdTggbmVlZF9yZXBsYXk6MTsKLQl1OCB3b3JrX3BlbmRpbmc6MTsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKJiM0MzsjZGVmaW5lIFVEUF9UVU5ORUxfTklDX05FRURfU1lOQwkwCiYjNDM7I2RlZmluZSBVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWQkxCiYjNDM7I2RlZmluZSBVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkcJMgogCiAJdW5zaWduZWQgaW50IG5fdGFibGVzOwogCXVuc2lnbmVkIGxvbmcgbWlzc2VkOwpAQCAtMTE2LDcgJiM0MzsxMTUsNyBAQCB1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZShzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0biwKIAkJCSAgIHVuc2lnbmVkIGludCBmbGFnKQogewogCWVudHJ5LSZndDtmbGFncyB8PSBmbGFnOwotCXV0bi0mZ3Q7bmVlZF9zeW5jID0gMTsKJiM0MzsJc2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsICZhbXA7dXRuLSZndDtmbGFncyk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDgsNyAmIzQzOzE0Nyw3IEBAIHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiAJY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlOwogCXVuc2lnbmVkIGludCBpLCBqOwogCi0JaWYgKCF1dG4tJmd0O21pc3NlZCkKJiM0MzsJaWYgKCFSRUFEX09OQ0UodXRuLSZndDttaXNzZWQpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgdXRuLSZndDtuX3RhYmxlczsgaSYjNDM7JiM0MzspIHsKQEAgLTI4Myw3ICYjNDM7MjgyLDcgQEAgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIHN0YXRpYyB2b2lkCiBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogewotCWlmICghdXRuLSZndDtuZWVkX3N5bmMpCiYjNDM7CWlmICghdGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpKQogCQlyZXR1cm47CiAKIAlpZiAoZGV2LSZndDt1ZHBfdHVubmVsX25pY19pbmZvLSZndDtzeW5jX3RhYmxlKQpAQCAtMjkxLDIxICYjNDM7MjkwLDI3IEBAIF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiAJZWxzZQogCQl1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV9wb3J0KGRldiwgdXRuKTsKIAotCXV0bi0mZ3Q7bmVlZF9zeW5jID0gMDsKJiM0MzsJY2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgJmFtcDt1dG4tJmd0O2ZsYWdzKTsKIAkvKiBDYW4mIzM5O3QgcmVwbGF5IGRpcmVjdGx5IGhlcmUsIGluIGNhc2Ugd2UgY29tZSBmcm9tIHRoZSB0dW5uZWwgZHJpdmVyJiMzOTtzCiAJICogbm90aWZpY2F0aW9uIC0gdHJ5aW5nIHRvIHJlcGxheSBtYXkgZGVhZGxvY2sgaW5zaWRlIHR1bm5lbCBkcml2ZXIuCiAJICovCi0JdXRuLSZndDtuZWVkX3JlcGxheSA9IHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pOwomIzQzOwlpZiAodWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bikpCiYjNDM7CQlzZXRfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpOwomIzQzOwllbHNlCiYjNDM7CQljbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksICZhbXA7dXRuLSZndDtmbGFncyk7CiB9CiAKIHN0YXRpYyB2b2lkCiB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIHsKLQlpZiAoIXV0bi0mZ3Q7bmVlZF9zeW5jKQomIzQzOwlpZiAoIXRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgJmFtcDt1dG4tJmd0O2ZsYWdzKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX1dPUktfUEVORElORywgJmFtcDt1dG4tJmd0O2ZsYWdzKSkKIAkJcmV0dXJuOwogCiAJcXVldWVfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsICZhbXA7dXRuLSZndDt3b3JrKTsKLQl1dG4tJmd0O3dvcmtfcGVuZGluZyA9IDE7CiYjNDM7CXNldF9iaXQoVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpOwogfQogCiBzdGF0aWMgYm9vbApAQCAtMzQ4LDcgJiM0MzszNTMsNyBAQCB1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLAogCQkJaWYgKCF1ZHBfdHVubmVsX25pY19lbnRyeV9pc19mcmVlKGVudHJ5KSAmYW1wOyZhbXA7CiAJCQkgICAgZW50cnktJmd0O3BvcnQgPT0gdGktJmd0O3BvcnQgJmFtcDsmYW1wOwogCQkJICAgIGVudHJ5LSZndDt0eXBlICE9IHRpLSZndDt0eXBlKSB7Ci0JCQkJX19zZXRfYml0KGksICZhbXA7dXRuLSZndDttaXNzZWQpOwomIzQzOwkJCQlzZXRfYml0KGksICZhbXA7dXRuLSZndDttaXNzZWQpOwogCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQl9CkBAIC00ODMsNyAmIzQzOzQ4OCw3IEBAIHVkcF90dW5uZWxfbmljX2FkZF9uZXcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sCiAJCSAqIGFyZSBubyBkZXZpY2VzIGN1cnJlbnRseSB3aGljaCBoYXZlIG11bHRpcGxlIHRhYmxlcyBhY2NlcHRpbmcKIAkJICogdGhlIHNhbWUgdHVubmVsIHR5cGUsIGFuZCBmYWxzZSBwb3NpdGl2ZXMgYXJlIG9rYXkuCiAJCSAqLwotCQlfX3NldF9iaXQoaSwgJmFtcDt1dG4tJmd0O21pc3NlZCk7CiYjNDM7CQlzZXRfYml0KGksICZhbXA7dXRuLSZndDttaXNzZWQpOwogCX0KIAogCXJldHVybiBmYWxzZTsKQEAgLTU1Miw3ICYjNDM7NTU3LDcgQEAgc3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19yZXNldF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCW11dGV4X2xvY2soJmFtcDt1dG4tJmd0O2xvY2spOwogCi0JdXRuLSZndDtuZWVkX3N5bmMgPSBmYWxzZTsKJiM0MzsJY2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgJmFtcDt1dG4tJmd0O2ZsYWdzKTsKIAlmb3IgKGkgPSAwOyBpICZsdDsgdXRuLSZndDtuX3RhYmxlczsgaSYjNDM7JiM0MzspCiAJCWZvciAoaiA9IDA7IGogJmx0OyBpbmZvLSZndDt0YWJsZXNbaV0ubl9lbnRyaWVzOyBqJiM0MzsmIzQzOykgewogCQkJc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTsKQEAgLTY5Niw4ICYjNDM7NzAxLDggQEAgdWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiAJZm9yIChpID0gMDsgaSAmbHQ7IHV0bi0mZ3Q7bl90YWJsZXM7IGkmIzQzOyYjNDM7KQogCQltZW1zZXQodXRuLSZndDtlbnRyaWVzW2ldLCAwLCBhcnJheV9zaXplKGluZm8tJmd0O3RhYmxlc1tpXS5uX2VudHJpZXMsCiAJCQkJCQkgICAgICBzaXplb2YoKip1dG4tJmd0O2VudHJpZXMpKSk7Ci0JV0FSTl9PTih1dG4tJmd0O25lZWRfc3luYyk7Ci0JdXRuLSZndDtuZWVkX3JlcGxheSA9IDA7CiYjNDM7CVdBUk5fT04odGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpKTsKJiM0MzsJY2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNzEzLDggJiM0Mzs3MTgsOCBAQCB1ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiAJZm9yIChpID0gMDsgaSAmbHQ7IHV0bi0mZ3Q7bl90YWJsZXM7IGkmIzQzOyYjNDM7KQogCQlmb3IgKGogPSAwOyBqICZsdDsgaW5mby0mZ3Q7dGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspCiAJCQl1ZHBfdHVubmVsX25pY19lbnRyeV9mcmVlemVfdXNlZCgmYW1wO3V0bi0mZ3Q7ZW50cmllc1tpXVtqXSk7Ci0JdXRuLSZndDttaXNzZWQgPSAwOwotCXV0bi0mZ3Q7bmVlZF9yZXBsYXkgPSAwOwomIzQzOwlXUklURV9PTkNFKHV0bi0mZ3Q7bWlzc2VkLCAwKTsKJiM0MzsJY2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpOwogCiAJaWYgKCFpbmZvLSZndDtzaGFyZWQpIHsKIAkJdWRwX3R1bm5lbF9nZXRfcnhfaW5mbyhkZXYpOwpAQCAtNzM2LDEwICYjNDM7NzQxLDEwIEBAIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXJ0bmxfbG9jaygpOwogCW11dGV4X2xvY2soJmFtcDt1dG4tJmd0O2xvY2spOwogCi0JdXRuLSZndDt3b3JrX3BlbmRpbmcgPSAwOwomIzQzOwljbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpOwogCV9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmModXRuLSZndDtkZXYsIHV0bik7CiAKLQlpZiAodXRuLSZndDtuZWVkX3JlcGxheSkKJiM0MzsJaWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpKQogCQl1ZHBfdHVubmVsX25pY19yZXBsYXkodXRuLSZndDtkZXYsIHV0bik7CiAKIAltdXRleF91bmxvY2soJmFtcDt1dG4tJmd0O2xvY2spOwpAQCAtOTA0LDcgJiM0Mzs5MDksNyBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogCS8qIFdhaXQgZm9yIHRoZSB3b3JrIHRvIGJlIGRvbmUgdXNpbmcgdGhlIHN0YXRlLCBuZXRkZXYgY29yZSB3aWxsCiAJICogcmV0cnkgdW5yZWdpc3RlciB1bnRpbCB3ZSBnaXZlIHVwIG91ciByZWZlcmVuY2Ugb24gdGhpcyBkZXZpY2UuCiAJICovCi0JaWYgKHV0bi0mZ3Q7d29ya19wZW5kaW5nKQomIzQzOwlpZiAodGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpKQogCQlyZXR1cm47CiAKIAl1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ29uY3VycmVuY3kgRml4IGluIHRoZSBVRFAgVHVubmVsIE5JQyBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyB0b3VjaGluZyBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIEludGVyZXN0aW5nLiBUaGV5JiMzOTt2ZSBnb25lIGFuZCByZWZhY3RvcmVkIGEgZmV3IGJpdGZpZWxkcyB3aXRoaW4gdGhlIGB1ZHBfdHVubmVsX25pY2Agc3RydWN0IOKAkyBgbmVlZF9zeW5jYCwgYG5lZWRfcmVwbGF5YCwgYW5kIGB3b3JrX3BlbmRpbmdgIOKAkyBhbmQgY29uc29saWRhdGVkIHRoZW0gaW50byBhIHNpbmdsZSBgdW5zaWduZWQgbG9uZyBmbGFnc2AgZmllbGQuIFNtYXJ0IG1vdmUsIHRoYXQmIzM5O3MgYWxtb3N0IGFsd2F5cyBhIGdvb2QgaW5kaWNhdG9yIGZvciBhIGNvbmN1cnJlbmN5IG9yIGRhdGEgcmFjZSBmaXguIFRoZXkmIzM5O3JlIHVzaW5nIGF0b21pYyBiaXQgb3BlcmF0aW9ucyAoYHNldF9iaXRgLCBgY2xlYXJfYml0YCwgYHRlc3RfYml0YCksIGFuZCBgUkVBRF9PTkNFYC9gV1JJVEVfT05DRWAgZm9yIGBtaXNzZWRgLiBUaGlzIHJlYWxseSBzbWVsbHMgbGlrZSBhIGNsYXNzaWMgbXVsdGktdGhyZWFkZWQgYWNjZXNzIHByb2JsZW0gdGhhdCBuZWVkZWQgYSBjbGVhbiBzb2x1dGlvbi4KCk5vdywgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGNvbnRleHQuIExldCBtZSBkaXZlIGludG8gYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgIGl0c2VsZi4gUmlnaHQsIGl0JiMzOTtzIHBhcnQgb2YgdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgaW5mcmFzdHJ1Y3R1cmUuIE9rYXksIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB3aGF0IHBhcnRzIG9mIHRoZSBzeXN0ZW0gYXJlIGFjdHVhbGx5ICp1c2luZyogdGhpcy4gSXMgaXQgZXZlbiByZWFjaGFibGUgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJiMzOTttIHRyeWluZyB0byByZWNhbGwgdGhlIGNvbW1vbiBhcmNoaXRlY3R1cmVzIHVzaW5nIGl0IGFuZCB0aGUgcG90ZW50aWFsIGdvdGNoYXMuLi4gV2FpdCwgaXQmIzM5O3MgZm9yIE5JQyBvZmZsb2FkLiBUaGF0JiMzOTtzIGEga2V5IGRldGFpbCEgU28gdGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGFueSAqdmlydHVhbCogZHJpdmVyIGxldmVyYWdlIHRoaXM/IE9yIGlzIGl0IHNvbWV0aGluZyB0aGF0IGNvdWxkIGFsc28gYmUgdHJpZ2dlcmVkIGJ5IHNvZnR3YXJlLCBwZXJoYXBzIGV2ZW4gcnVubmluZyBpbiBhIFZNPyBIbW0uLi4KCk9rYXksIGxldCYjMzk7cyB0cmFjZSB0aGlzIGJhY2suIEkmIzM5O2xsIGNoZWNrIHRoZSB1c2FnZSBvZiBgdWRwX3R1bm5lbF9uaWNfaW5mb2AuIFRoYXQmIzM5O3MgdGhlIGJlc3Qgd2F5IHRvIGRldGVybWluZSB0aGUgc2NvcGUgYW5kIGltcGFjdCBvZiB0aGlzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSBhbmQgaG93IHRoaXMgY29kZSBpcyBiZWluZyBhY2Nlc3NlZCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoZSBwYXRjaCBhbmQgaG93IGl0IGFkZHJlc3NlcyB0aGUgcmFjZSBjb25kaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX3R1bm5lbF9uaWNfaW5mbyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvbmV0X2RldmljZS5yc3Q9MTcyPXN0cnVjdCBtYWNzZWNfb3BzKiAgICAgICAgICAgICAgICAgIG1hY3NlY19vcHNcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9uZXRfZGV2aWNlLnJzdDoxNzM6c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8qICAgICAgICAgdWRwX3R1bm5lbF9uaWNfaW5mb1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0LTE3NC1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWMqICAgICAgICAgICAgICB1ZHBfdHVubmVsX25pY1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9ODk1PXN0YXRpYyBpbnQgeGdiZV92eGxhbl91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6OTA2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB4Z2JlX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDctXHQuc2V0X3BvcnRcdD0geGdiZV92eGxhbl9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM6OTE1OmNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICp4Z2JlX2dldF91ZHBfdHVubmVsX2luZm8odm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTE2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLW1haW4uYz0xNTI9aW50IHhnYmVfY29uZmlnX25ldGRldihzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmM6MjYzOlx0XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IHhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbygpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjY0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaD0xMjk2PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqeGdiZV9nZXRfZXRodG9vbF9vcHModm9pZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg6MTI5Nzpjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqeGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKHZvaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oLTEyOTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEwMjExPXN0YXRpYyBpbnQgYm54MnhfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTAyMjI6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJueDJ4X3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEwMjIzLVx0LnN5bmNfdGFibGVcdD0gYm54MnhfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMzA0MD1zdGF0aWMgaW50IGJueDJ4X2luaXRfZGV2KHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzIwNy1cdFx0aWYgKElTX1BGKGJwKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMzIwODpcdFx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmJueDJ4X3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMjA5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE1OTYyPXN0YXRpYyBpbnQgYm54dF91ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE1OTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTU5Nzg6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJueHRfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3OS1cdC5zZXRfcG9ydFx0PSBibnh0X3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTY5NDU9c3RhdGljIGludCBibnh0X2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE3MDUyLVx0aWYgKGJwLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MDUzOlx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmJueHRfdWRwX3R1bm5lbHNfcDc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1NC1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE3MDU1Olx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmJueHRfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0yNjg1PXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2OTY6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGxpcXVpZGlvX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMjY5Ny1cdC5zZXRfcG9ydFx0PSBsaXF1aWRpb191ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTMzMjI9c3RhdGljIGludCBzZXR1cF9uaWNfZGV2aWNlcyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2Rldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6MzU4MzpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTM1ODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc3Mj1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3ODItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzgzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBsaXF1aWRpb191ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTE3ODQtXHQuc2V0X3BvcnRcdD0gbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0xOTE5PXN0YXRpYyBpbnQgc2V0dXBfbmljX2RldmljZXMoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjA5My1cdFx0ICAgIChsaW8tXHUwMDNlZW5jX2Rldl9jYXBhYmlsaXR5IFx1MDAyNiB+TkVUSUZfRl9MUk8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MjA5NDpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIwOTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9Mzc3MD1zdGF0aWMgaW50IGN4Z2JfdWRwX3R1bm5lbF9zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzozODE4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBjeGdiX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtMzgxOS1cdC5zZXRfcG9ydFx0PSBjeGdiX3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9NjU3MT1zdGF0aWMgaW50IGluaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTY4MDAtXHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlcmF3Zl9jbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYzo2ODAxOlx0XHRcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZjeGdiX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtNjgwMi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM9MjA3PXN0YXRpYyBpbnQgZW5pY191ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jLTIyOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM6MjI5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBlbmljX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yMzAtXHQuc2V0X3BvcnRcdD0gZW5pY191ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM9MjY3NT1zdGF0aWMgaW50IGVuaWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTQ4LVx0XHQgICAgZW5pYy1cdTAwM2V2eGxhbi5mbGFncyBcdTAwMjYgRU5JQ19WWExBTl9NVUxUSV9XUSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTQ5Olx0XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2ZW5pY191ZHBfdHVubmVsc192NDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1MC1cdFx0XHRpZiAoZW5pYy1cdTAwM2V2eGxhbi5mbGFncyBcdTAwMjYgRU5JQ19WWExBTl9PVVRFUl9JUFY2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTUxOlx0XHRcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZlbmljX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yOTUyLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYz00MDE1PXN0YXRpYyBpbnQgYmVfdnhsYW5fdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy00MDMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYzo0MDM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBiZV91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzNS1cdC5zZXRfcG9ydFx0PSBiZV92eGxhbl9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jPTUxNzk9c3RhdGljIHZvaWQgYmVfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTUyMDctXHRpZiAoIWxhbmNlcl9jaGlwKGFkYXB0ZXIpIFx1MDAyNlx1MDAyNiAhQkV4X2NoaXAoYWRhcHRlcikgXHUwMDI2XHUwMDI2ICFiZV9pc19tYyhhZGFwdGVyKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM6NTIwODpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZiZV91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNTIwOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYz00MDI9c3RhdGljIGludCBmbTEwa191ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jOjQxNzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZm0xMGtfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy00MTgtXHQuc3luY190YWJsZVx0PSBmbTEwa191ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9MTU0MT1zdHJ1Y3QgbmV0X2RldmljZSAqZm0xMGtfYWxsb2NfbmV0ZGV2KGNvbnN0IHN0cnVjdCBmbTEwa19pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTE1ODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzoxNTgxOlx0XHRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmZtMTBrX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtMTU4Mi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaD00Njg9c3RydWN0IGk0MGVfcGYge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oLTUyMS1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWQgdWRwX3R1bm5lbF9zaGFyZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaDo1MjI6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB1ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oLTUyMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jPTEzNjM3PXN0YXRpYyBpbnQgaTQwZV9jb25maWdfbmV0ZGV2KHN0cnVjdCBpNDBlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jOjEzNjgxOlx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZwZi1cdTAwM2V1ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM9MzQ0Mz1zdGF0aWMgdm9pZCBpY2Vfc2V0X29wcyhzdHJ1Y3QgaWNlX3ZzaSAqdnNpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM0NTQtXHRuZXRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmljZV9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6MzQ1NTpcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cGYtXHUwMDNlaHcudWRwX3R1bm5lbF9uaWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zNDU2LVx0bmV0ZGV2LVx1MDAzZXhkcF9tZXRhZGF0YV9vcHMgPSBcdTAwMjZpY2VfeGRwX21kX29wcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz0zOTcwPWludCBpY2VfaW5pdF9wZihzdHJ1Y3QgaWNlX3BmICpwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM5NzEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM6Mzk3MjpcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICp1ZHBfdHVubmVsX25pYyA9IFx1MDAyNnBmLVx1MDAzZWh3LnVkcF90dW5uZWxfbmljO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzk3My1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGljZV9wZl90b19kZXYocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oPTg5OT1zdHJ1Y3QgaWNlX2h3IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaC0xMDExLVx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB1ZHBfdHVubmVsX3NoYXJlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oOjEwMTI6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB1ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oLTEwMTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTU0NDg9c3RhdGljIGludCBpeGdiZV91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjU0Njc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGl4Z2JlX3VkcF90dW5uZWxzX3g1NTAgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2OC1cdC5zeW5jX3RhYmxlXHQ9IGl4Z2JlX3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo1NDc1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBpeGdiZV91ZHBfdHVubmVsc194NTUwZW1fYSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDc2LVx0LnN5bmNfdGFibGVcdD0gaXhnYmVfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz0xMTU0OD1zdGF0aWMgaW50IGl4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTY5OS1cdGNhc2UgaXhnYmVfbWFjX2U2MTA6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTE3MDA6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTcwMS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDItXHRjYXNlIGl4Z2JlX21hY194NTUwZW1fYTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTcwMzpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZpeGdiZV91ZHBfdHVubmVsc194NTUwZW1fYTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTcwNC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0yNjM5PXN0YXRpYyBpbnQgbWx4NF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjY1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM6MjY1NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbWx4NF91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMjY1OC1cdC5zeW5jX3RhYmxlXHQ9IG1seDRfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM9MzE2MT1pbnQgbWx4NF9lbl9pbml0X25ldGRldihzdHJ1Y3QgbWx4NF9lbl9kZXYgKm1kZXYsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMzM0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM6MzM0NzpcdFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZtbHg0X3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0zMzQ4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTkwNT1zdHJ1Y3QgbWx4NWVfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTU3Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbmljX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTgtI2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz01NDU2PXZvaWQgbWx4NWVfdnhsYW5fc2V0X25ldGRldl9pbmZvKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTQ2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6NTQ2OTpcdHByaXYtXHUwMDNlbmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZwcml2LVx1MDAzZW5pY19pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy01NDcwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmM9MjM3Nj1zdGF0aWMgaW50IG5mcF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yMzk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jOjIzOTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5mcF91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yMzk2LVx0LnN5bmNfdGFibGUgICAgID0gbmZwX3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmM9MjY2Nj1zdGF0aWMgdm9pZCBuZnBfbmV0X25ldGRldl9pbml0KHN0cnVjdCBuZnBfbmV0ICpubilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjcxOC1cdFx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jOjI3MTk6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2bmZwX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MjAtXHRcdG5uLVx1MDAzZWRwLmN0cmwgfD0gTkZQX05FVF9DRkdfQ1RSTF9WWExBTjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jPTk1Nz1zdGF0aWMgaW50IHFlZGVfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6OTg4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBxZWRlX3VkcF90dW5uZWxzX2JvdGggPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4OS1cdC5zeW5jX3RhYmxlXHQ9IHFlZGVfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM9MTAwNj12b2lkIHFlZGVfc2V0X3VkcF90dW5uZWxzKHN0cnVjdCBxZWRlX2RldiAqZWRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMDktXHQgICAgZWRldi1cdTAwM2VkZXZfaW5mby5jb21tb24uZ2VuZXZlX2VuYWJsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6MTAxMDpcdFx0ZWRldi1cdTAwM2VuZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZxZWRlX3VkcF90dW5uZWxzX2JvdGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTEtXHRlbHNlIGlmIChlZGV2LVx1MDAzZWRldl9pbmZvLmNvbW1vbi52eGxhbl9lbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTI6XHRcdGVkZXYtXHUwMDNlbmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cWVkZV91ZHBfdHVubmVsc192eGxhbjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAxMy1cdGVsc2UgaWYgKGVkZXYtXHUwMDNlZGV2X2luZm8uY29tbW9uLmdlbmV2ZV9lbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTQ6XHRcdGVkZXYtXHUwMDNlbmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cWVkZV91ZHBfdHVubmVsc19nZW5ldmU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYz00NzE9c3RhdGljIGludCBxbGNuaWNfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtNDg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jOjQ4NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gcWxjbmljX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4OC1cdC5zeW5jX3RhYmxlXHQ9IHFsY25pY191ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jPTIyNTQ9cWxjbmljX3NldHVwX25ldGRldihzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTIzMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM6MjMwNDpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZxbGNuaWNfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtMjMwNS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTQyPXN0YXRpYyBpbnQgZWZ4X2VmMTBfc2V0X3VkcF90bmxfcG9ydHMoc3RydWN0IGVmeF9uaWMgKmVmeCwgYm9vbCB1bmxvYWRpbmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzo0MzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTQ0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9NTI1PXN0YXRpYyBpbnQgZWZ4X2VmMTBfcHJvYmUoc3RydWN0IGVmeF9uaWMgKmVmeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4MC1cdCAgICAoMSBcdTAwM2NcdTAwM2MgTUNfQ01EX0RSVl9BVFRBQ0hfRVhUX09VVF9GTEFHX1RSVVNURUQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYzo2ODE6XHRcdGVmeC1cdTAwM2VuZXRfZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZlZnhfZWYxMF91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtNjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9Mzk2Mj1zdGF0aWMgaW50IGVmeF9lZjEwX3VkcF90bmxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtMzk4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6Mzk4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTM5ODYtXHQuc2V0X3BvcnRcdD0gZWZ4X2VmMTBfdWRwX3RubF9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz02MTk9c3RhdGljIGludCB0eGdiZV91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjY0MjpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdHhnYmVfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDMtXHQuc3luY190YWJsZVx0PSB0eGdiZV91ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjgxPXN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzQ3LVx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NzQ4Olx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZ0eGdiZV91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTc0OS1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYz02Nj1uc2ltX3VkcF90dW5uZWxfc3luY190YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtODQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzo4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbnNpbV91ZHBfdHVubmVsX2luZm8gPSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy04Ni1cdC5zZXRfcG9ydFx0PSBuc2ltX3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTI1PWludCBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTI4LVx0c3RydWN0IG5ldGRldnNpbSAqbnMgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTI5Olx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm87XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMzAtXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTg0LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTg1Olx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBpbmZvO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTg2LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTg5PXZvaWQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xOTMtXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUobnMtXHUwMDNldWRwX3BvcnRzLmRkaXIpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTk0Olx0a2ZyZWUoZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8pO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTk1Olx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBOVUxMO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTk2LX1cbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTc2PXN0cnVjdCB1ZHBfdHVubmVsX2luZm87XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjc3OnN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC03OC1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWM7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xODA0PWVudW0gbmV0ZGV2X3JlZ19zdGF0ZSB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yMDg5LSAqXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjIwOTA6ICpcdEB1ZHBfdHVubmVsX25pY19pbmZvOlx0c3RhdGljIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBVRFAgdHVubmVsXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIwOTEtICpcdFx0XHRcdG9mZmxvYWQgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2Vcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxMzk9c3RydWN0IG5ldF9kZXZpY2Uge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjUwNC0jZW5kaWZcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjUwNTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvXHQqdWRwX3R1bm5lbF9uaWNfaW5mbztcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjUwNi1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY1x0KnVkcF90dW5uZWxfbmljO1xuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0yMjU9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfZW5jYXBfZW5hYmxlKHN0cnVjdCBzb2NrICpzaylcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjM4LVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjIzOTplbnVtIHVkcF90dW5uZWxfbmljX2luZm9fZmxhZ3Mge1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI0MC1cdC8qIERldmljZSBvbmx5IHN1cHBvcnRzIG9mZmxvYWRzIHdoZW4gaXQmIzM5O3Mgb3BlbiwgYWxsIHBvcnRzXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTI1Nz1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkIHtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDoyNTg6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnVkcF90dW5uZWxfbmljX2luZm87XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjU5LVxuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0yNjM9c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZF9ub2RlIHtcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjY4LS8qKlxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjI2OTogKiBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAtIGRyaXZlciBVRFAgdHVubmVsIG9mZmxvYWQgaW5mb3JtYXRpb25cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNzAtICogQHNldF9wb3J0Olx0Y2FsbGJhY2sgZm9yIGFkZGluZyBhIG5ldyBwb3J0XG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI3My0gKiBAc2hhcmVkOlx0cmVmZXJlbmNlIHRvIGRldmljZSBnbG9iYWwgc3RhdGUgKG9wdGlvbmFsKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjI3NDogKiBAZmxhZ3M6XHRkZXZpY2UgZmxhZ3MgZnJvbSBlbnVtIHVkcF90dW5uZWxfbmljX2luZm9fZmxhZ3NcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNzUtICogQHRhYmxlczpcdFVEUCBwb3J0IHRhYmxlcyB0aGlzIGRldmljZSBoYXNcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjk2LSAqL1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjI5NzpzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjk4LVx0Lyogb25lLWJ5LW9uZSAqL1xuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zMjItICogbW9kdWxlLiBOSUMgZHJpdmVycyBhcmUgbm90LCB0aGV5IGp1c3QgYXR0YWNoIHRoZWlyXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MzIzOiAqIHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHRvIHRoZSBuZXRkZXYgYW5kIHdhaXQgZm9yIGNhbGxiYWNrcyB0byBjb21lLlxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTMyNC0gKiBMb2FkaW5nIGEgdHVubmVsIGRyaXZlciB3aWxsIGNhdXNlIHRoZSB1ZHBfdHVubmVsIG1vZHVsZSB0byBiZSBsb2FkZWRcbi0tXG5uZXQvY29yZS9kZXYuYz0xMTMyMD1pbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2NvcmUvZGV2LmMtMTEzOTQtXG5uZXQvY29yZS9kZXYuYzoxMTM5NTpcdGlmIChkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xubmV0L2NvcmUvZGV2LmMtMTEzOTYtXHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX1JYX1VEUF9UVU5ORUxfUE9SVDtcbi0tXG5uZXQvZXRodG9vbC90dW5uZWxzLmM9MzY9ZXRobmxfdHVubmVsX2luZm9fcmVwbHlfc2l6ZShjb25zdCBzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxuLS1cbm5ldC9ldGh0b29sL3R1bm5lbHMuYy0zOS1cdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVx1MDAzZWZsYWdzIFx1MDAyNiBFVEhUT09MX0ZMQUdfQ09NUEFDVF9CSVRTRVRTO1xubmV0L2V0aHRvb2wvdHVubmVscy5jOjQwOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm87XG5uZXQvZXRodG9vbC90dW5uZWxzLmMtNDEtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtNDQtXG5uZXQvZXRodG9vbC90dW5uZWxzLmM6NDU6XHRpbmZvID0gcmVxX2Jhc2UtXHUwMDNlZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvZXRodG9vbC90dW5uZWxzLmMtNDYtXHRpZiAoIWluZm8pIHtcbi0tXG5uZXQvZXRodG9vbC90dW5uZWxzLmM9ODI9ZXRobmxfdHVubmVsX2luZm9fZmlsbF9yZXBseShjb25zdCBzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxuLS1cbm5ldC9ldGh0b29sL3R1bm5lbHMuYy04NS1cdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVx1MDAzZWZsYWdzIFx1MDAyNiBFVEhUT09MX0ZMQUdfQ09NUEFDVF9CSVRTRVRTO1xubmV0L2V0aHRvb2wvdHVubmVscy5jOjg2Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm87XG5uZXQvZXRodG9vbC90dW5uZWxzLmMtODctXHRzdHJ1Y3QgbmxhdHRyICpwb3J0cywgKnRhYmxlLCAqZW50cnk7XG4tLVxubmV0L2V0aHRvb2wvdHVubmVscy5jLTg5LVxubmV0L2V0aHRvb2wvdHVubmVscy5jOjkwOlx0aW5mbyA9IHJlcV9iYXNlLVx1MDAzZWRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2V0aHRvb2wvdHVubmVscy5jLTkxLVx0aWYgKCFpbmZvKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTMyPXVkcF90dW5uZWxfbmljX2lzX2VtcHR5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzMte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMzQ6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzUtXHR1bnNpZ25lZCBpbnQgaSwgajtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTE0NT11ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTUzLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdXRuLVx1MDAzZW5fdGFibGVzOyBpJiM0MzsmIzQzOykge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxNTQ6XHRcdHRhYmxlID0gXHUwMDI2ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXHUwMDNldGFibGVzW2ldO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xNTUtXHRcdGlmICghdGVzdF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCkpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yMTE9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfb25lKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjQtXHRpZiAoZW50cnktXHUwMDNlZmxhZ3MgXHUwMDI2IFVEUF9UVU5ORUxfTklDX0VOVFJZX0FERClcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjI1Olx0XHRlcnIgPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2VzZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsIFx1MDAyNnRpKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjI2LVx0ZWxzZVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMjc6XHRcdGVyciA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXVuc2V0X3BvcnQoZGV2LCB0YWJsZSwgaWR4LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjgtXHRcdFx0XHRcdFx0XHQgICBcdTAwMjZ0aSk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yNDA9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQyLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjQzOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQ0LVx0dW5zaWduZWQgaW50IGksIGo7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0yNTI9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1NC17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI1NTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1Ni1cdHVuc2lnbmVkIGludCBpLCBqO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjgzPV9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yODctXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI4ODpcdGlmIChkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2VzeW5jX3RhYmxlKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yODktXHRcdHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKGRldiwgdXRuKTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMyND11ZHBfdHVubmVsX25pY19pc19jYXBhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzI2LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzI3Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzI4LVx0dW5zaWduZWQgaW50IGk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zNDI9dWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM0NC17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM0NTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM0Ni1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnk7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00MjY9dWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDMyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdXRuLVx1MDAzZW5fdGFibGVzOyBpJiM0MzsmIzQzOykge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0MzM6XHRcdHRhYmxlID0gXHUwMDI2ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXHUwMDNldGFibGVzW2ldO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MzQtXHRcdGlmICghdWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZSh0YWJsZSwgdGkpKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDYxPXVkcF90dW5uZWxfbmljX2FkZF9uZXcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ2ODpcdFx0dGFibGUgPSBcdTAwMjZkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2V0YWJsZXNbaV07XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ2OS1cdFx0aWYgKCF1ZHBfdHVubmVsX25pY190YWJsZV9pc19jYXBhYmxlKHRhYmxlLCB0aSkpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00OTg9X191ZHBfdHVubmVsX25pY19hZGRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDk5LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTAwOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTAxLVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01NDg9c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19yZXNldF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTQ5LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTUwOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTUxLVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01ODQ9X191ZHBfdHVubmVsX25pY19kdW1wX3NpemUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01ODUte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1ODY6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01ODctXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTYwOT1fX3VkcF90dW5uZWxfbmljX2R1bXBfd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjExLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NjEyOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjEzLVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02ODY9dWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY4Ny17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY4ODpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY4OS1cdHVuc2lnbmVkIGludCBpLCBqO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzA5PXVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzEwLXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzExOlx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzEyLVx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZF9ub2RlICpub2RlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzU0PXN0YXRpYyBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKlxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NTU6dWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc1Ni1cdFx0ICAgICB1bnNpZ25lZCBpbnQgbl90YWJsZXMpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03OTM9c3RhdGljIGludCB1ZHBfdHVubmVsX25pY19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03OTQte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3OTU6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03OTYtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkX25vZGUgKm5vZGUgPSBOVUxMO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODM0LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4MzU6XHRpZiAoaW5mby1cdTAwM2VzaGFyZWQgXHUwMDI2XHUwMDI2IGluZm8tXHUwMDNlc2hhcmVkLVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8pIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODM2Olx0XHR1dG4gPSBpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04MzctXHR9IGVsc2Uge1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODQ1LVx0aWYgKGluZm8tXHUwMDNlc2hhcmVkKSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg0NjpcdFx0aWYgKCFpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0Ny1cdFx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2VkZXZpY2VzKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODQ4Olx0XHRcdGluZm8tXHUwMDNlc2hhcmVkLVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSB1dG47XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0OS1cdFx0fVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODY4PXVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg2OS17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg3MDpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg3MS1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg5OS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTAwOlx0XHRpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gTlVMTDtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTAxLVx0fVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTIyPXVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkyNS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBuZXRkZXZfbm90aWZpZXJfaW5mb190b19kZXYocHRyKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTI2Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkyNy1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MjgtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkyOTpcdGluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTMwLVx0aWYgKCFpbmZvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTM5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvbmN1cnJlbmN5IEJ1ZyBpbiBVRFAgVHVubmVsIE5JQyBPZmZsb2FkKioKCk9rYXksIHNvIHRoZSBgdWRwX3R1bm5lbF9uaWNfaW5mb2Agc3RydWN0dXJlIGlzIHVzZWQgc3BlY2lmaWNhbGx5IHdpdGhpbiBgbmV0ZGV2c2ltYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHNvbWV0aGluZyB3ZSYjMzk7cmUgbGlrZWx5IHRvIGVuY291bnRlciBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMg4oCTIG5ldGRldnNpbSBpcyBhbGwgYWJvdXQgc29mdHdhcmUtc2ltdWxhdGluZyBuZXR3b3JrIGRldmljZSBmdW5jdGlvbmFsaXR5IGZvciB0ZXN0aW5nIG9mZmxvYWRzLiBUaGF04oCZcyBhIGtleSBkZXRhaWwuIEl0IGFsc28gZmxhZ3MgdGhlIGZlYXR1cmUgYXMgYmVpbmcgY29yZSBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgKFVEUCB0dW5uZWwgTklDIG9mZmxvYWQpLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGNvZGUmIzM5O3MgcHJpbWFyeSBwdXJwb3NlIGlzIGZvciBvZmZsb2FkLgoKVGhlIHBhdGNoIGZvY3VzZXMgb24gYSBjb25jdXJyZW5jeSBidWcsIHdoaWNoIGlzIGFsd2F5cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlIHN5bmNocm9uaXphdGlvbiBwcm9ibGVtcyB3ZXJlLiBUaGUgY29kZSB0b3VjaGVzIGEgYnJvYWQgc3dhdGhlIG9mIGZ1bmN0aW9uczogYHVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlYCwgYHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXlgLCBgX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uYCwgYHVkcF90dW5uZWxfbmljX2FkZF9uZXdgLCBgX191ZHBfdHVubmVsX25pY19yZXNldF9udGZgLCBgdWRwX3R1bm5lbF9uaWNfZmx1c2hgLCBgdWRwX3R1bm5lbF9uaWNfcmVwbGF5YCwgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgLCBhbmQgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgLiBUaGF0JiMzOTtzIGEgZ29vZCBjaHVuayBvZiB0aGUgVURQIHR1bm5lbCBOSUMgY29kZSwgc28gdGhpcyBjb3VsZCBoYXZlIGJlZW4gYSBwcmV0dHkgY3JpdGljYWwgaXNzdWUuCgpOb3csIGJlZm9yZSBJIGRpZyBkZWVwZXIsIEkgd2FudCB0byBzZWUgaWYgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyBhZmZlY3QgdGhpcyBjb2RlJiMzOTtzIGJ1aWxkIGFuZCBiZWhhdmlvci4gSSBrbm93IHRoYXQgYENPTkZJR19ORVRERVZTSU1gIGlzIGEgZ2l2ZW4sIGJ1dCBpcyB0aGVyZSBhbnl0aGluZyBlbHNlPyBQZXJoYXBzIGBDT05GSUdfVURQX1RVTk5FTGAgb3Igc29tZXRoaW5nIHJlbGF0ZWQ/IEkmIzM5O2xsIHByb2JhYmx5IGZpbmQgdGhlIGFuc3dlciBpbiBlaXRoZXIgYG5ldC9pcHY0L01ha2VmaWxlYCBvciBgbmV0L2lwdjQvS2NvbmZpZ2Ag4oCTIHRob3NlIGFyZSB0aGUgdXN1YWwgcGxhY2VzIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciBuZXR3b3JraW5nLXJlbGF0ZWQgbW9kdWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZHBfdHVubmVsX25pY1xcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9MzA9b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgJiM0Mzs9IGlwX2dyZS5vXG5uZXQvaXB2NC9NYWtlZmlsZTozMTp1ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xubmV0L2lwdjQvTWFrZWZpbGUtMzItb2JqLSQoQ09ORklHX05FVF9VRFBfVFVOTkVMKSAmIzQzOz0gdWRwX3R1bm5lbC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5NTIKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIFVEUCBUdW5uZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIFVEUCB0dW5uZWwgc2V0dXAuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBgQ09ORklHX05FVF9VRFBfVFVOTkVMYCBpcyB0aGUgY3JpdGljYWwgY29uZmlnIG9wdGlvbiBJIG5lZWQgdG8gZm9jdXMgb24uIEl0JiMzOTtzIHRoZSB1c3VhbCBzdGFydGluZyBwb2ludC4gTm93LCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBzaW11bGF0aW9uIGVudmlyb25tZW50LCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgbmV0ZGV2c2ltIGZyYW1ld29yaywgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBuZXRkZXZzaW0gZHJpdmVyLCBsb2NhdGVkIGF0IGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZ2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jeSBsYW5kc2NhcGUgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgd2lsbCBvdXRsaW5lIGlmIHRoZSBzaW11bGF0aW9uIG9mZmVycyBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIFVEUCB0dW5uZWxpbmcsIG9yIGlmIGl0IHV0aWxpemVzIGEgbW9yZSBnZW5lcmljIGFwcHJvYWNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgc2ltdWxhdGVkIG5ldHdvcmsgc3RhY2sgYWNjb3VudHMgZm9yIHR1bm5lbGluZywgb3IgaWYgaXQgc2ltcGx5IHBhc3NlcyBhbG9uZyB0aGUgZGF0YSBhcyBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNDpjb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4Mjk1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRm9jdXM6IFVEUCBUdW5uZWwgTklDIE9mZmxvYWQgTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBORVRERVZTSU1gIGFuZCBgTkVUX1VEUF9UVU5ORUxgIGNvbmZpZ3VyYXRpb25zIGhlcmUuIFJpZ2h0LCB0aGF0IHBsYWNlcyB0aGUgcmVsZXZhbnQgcGF0Y2ggaW4gYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLiBUaW1lIHRvIG1hcCBvdXQgdGhlIGZ1bmN0aW9uIGxhbmRzY2FwZSBhbmQgZGVjaWRlIHdoZXJlIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cy4gTGV0JiMzOTtzIHNlZS4uLgoKSSYjMzk7dmUgZ290IGB1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZWAsIGB1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5YCwgYF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbmAsIGB1ZHBfdHVubmVsX25pY19hZGRfbmV3YCwgYF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmYCwgYHVkcF90dW5uZWxfbmljX2ZsdXNoYCwgYHVkcF90dW5uZWxfbmljX3JlcGxheWAsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYC4gVGhlc2UgYXJlIGFsbCBjbGVhcmx5IHBhcnQgb2YgdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgbG9naWMuCgpOb3csIHdoaWNoIG9uZXMgYXJlIHRoZSBtb3N0IHByb21pc2luZyB0YXJnZXRzIGZvciBmdXp6aW5nPyBUaGlua2luZyBzdHJhdGVnaWNhbGx5LCBJJiMzOTtsbCBzZWxlY3QgYSBzaG9ydGxpc3Q6IGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCwgYHVkcF90dW5uZWxfbmljX3JlcGxheWAsIGB1ZHBfdHVubmVsX25pY19mbHVzaGAsIGFuZCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAuIFRoZXNlIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cyBmb3IgZXhwbG9yaW5nIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuCgpIb2xkIG9uLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLiBJIHdhbnQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBJIGp1c3QgY2hlY2tlZCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AgaXMgc3RhdGljLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIGFsc28gc3RhdGljLiBOb3csIHdhaXQgYSBtaW51dGUsIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCAqaXNuJiMzOTt0KiBzdGF0aWMuIEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGF0IGluIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYCBqdXN0IHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX3VucmVnaXN0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz04Njc9c3RhdGljIHZvaWRcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODY4OnVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg2OS17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05MjI9dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTQ2LVx0aWYgKGV2ZW50ID09IE5FVERFVl9VTlJFR0lTVEVSKSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk0NzpcdFx0dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihkZXYsIHV0bik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk0OC1cdFx0cmV0dXJuIE5PVElGWV9PSztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyOTcKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyBpZiB0aGVzZSBhcmUgbXkgdGhvdWdodHMsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKlN0dWNrIG9uIGEgU3RhbGUgUG9pbnQqKgoKVWdoLCB0aGlzIGZlZWxzIGNvbXBsZXRlbHkgc3RhdGljLiBJJiMzOTttIGhpdHRpbmcgYSByb2FkYmxvY2suIEkmIzM5O20gc2VlaW5nIG5vdGhpbmcgZHluYW1pYyBvciBmb3J3YXJkIG1vdmluZy4gSSBuZWVkIHRvIGJyZWFrIG91dCBvZiB0aGlzIGxvb3AuCgpXYWl0IGEgbWludXRlLi4uIHdoYXQgYWJvdXQgdGhhdCBmdW5jdGlvbiwgYHVkcF90dW5uZWxfbmljX2FkZF9wb3J0YD8gQ291bGQgdGhhdCBiZSBhIGtleT8gSXQgaGFzIHBvc3NpYmlsaXRpZXMsIHRoYXQgY2VydGFpbmx5ICpzb3VuZHMqIHJlbGV2YW50IHRvIHdoYXQgSSBhbSBkb2luZy4uLkkgc2hvdWxkIHJlYWxseSB0aGluayB0aGlzIHRocm91Z2ghCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX2FkZF9wb3J0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zOTY9c3RhdGljIGlubGluZSB2b2lkXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mzk3OnVkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTM5OC17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmM9MTAwPXZvaWQgdWRwX3R1bm5lbF9wdXNoX3J4X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTEwOC1cbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjEwOTpcdHVkcF90dW5uZWxfbmljX2FkZF9wb3J0KGRldiwgXHUwMDI2dGkpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTEwLX1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xMjc9dm9pZCB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IHR5cGUpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQwLVx0XHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxNDE6XHRcdHVkcF90dW5uZWxfbmljX2FkZF9wb3J0KGRldiwgXHUwMDI2dGkpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQyLVx0XHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ5Nz1zdGF0aWMgdm9pZFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0OTg6X191ZHBfdHVubmVsX25pY19hZGRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDk5LXtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTY3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX29wcyBfX3VkcF90dW5uZWxfbmljX29wcyA9IHtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY3NC1cdC5zZXRfcG9ydF9wcml2XHQ9IF9fdWRwX3R1bm5lbF9uaWNfc2V0X3BvcnRfcHJpdixcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Njc1Olx0LmFkZF9wb3J0XHQ9IF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQsXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY3Ni1cdC5kZWxfcG9ydFx0PSBfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwODowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAzOQoJCQkJCQkJb3V0cHV0OiAxOTMKCQkJCQkJCXRob3VnaHRzOiA0MTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVRFAgVHVubmVsIE5JQyBPZmZsb2FkIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYSBjb3JlIHNlY3Rpb24gb2YgdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgbWVjaGFuaXNtLiBJdCBzZWVtcyBsaWtlIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjZW50ZXJlZCBhcm91bmQgc3RhdGUgbWFuYWdlbWVudCBhbmQgdGhlIHdvcmtxdWV1ZSB3aXRoaW4gYHVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlYCwgc3BlY2lmaWNhbGx5IGludm9sdmluZyBmdW5jdGlvbnMgbGlrZSBgdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheWAsIGBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCwgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCwgYHVkcF90dW5uZWxfbmljX2hhc19jb2xsaXNpb25gLCBgdWRwX3R1bm5lbF9uaWNfYWRkX25ld2AsIGBfX3VkcF90dW5uZWxfbmljX3Jlc2V0X250ZmAsIGB1ZHBfdHVubmVsX25pY19mbHVzaGAsIGB1ZHBfdHVubmVsX25pY19yZXBsYXlgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AsIGFuZCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAuIFRoZXNlIGFyZSBhbGwgdGlnaHRseSBpbnRlcnR3aW5lZCB3aXRoIHRoZSBzdGF0ZSBtYWNoaW5lIGFuZCB0aGUgd29ya2VyIHRocmVhZHMgbWFuYWdpbmcgdGhlIG9mZmxvYWQgcHJvY2Vzcy4KClRoZSBwYXRjaCBpdHNlbGYgYXBwZWFycyB0byBiZSBhZGRyZXNzaW5nIGEgZGF0YSByYWNlIG9yIGNvbmN1cnJlbmN5IGlzc3VlLiBUaGUga2V5IGlzIHRoZSBzaGlmdCBmcm9tIGJpdGZpZWxkcyB0byBhdG9taWMgYml0IG9wZXJhdGlvbnMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGJ1ZyBmaXgsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBsb29raW5nIGludG8gbW9yZSBjbG9zZWx5LgoKR2l2ZW4gdGhhdCB0aGlzIGZpeCBpcyBzcGVjaWZpYyB0byB0aGUgVURQIHR1bm5lbCBOSUMsIGFuZCBpdCB1c2VzIGBORVRERVZTSU1gLCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIHRoZSBmdXp6aW5nIGVmZm9ydHMgb24gdGhpcyBwYXRjaC4gSSBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgZnVuY3Rpb25hbGl0eSB1c2luZyBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgZmFjdCB0aGF0IGBuZXRkZXZzaW1gIHByb3ZpZGVzIGEgc2ltdWxhdGVkIGVudmlyb25tZW50IHRvIHRlc3QgVURQIHR1bm5lbCBvZmZsb2FkcyBtYWtlcyBpdCBhIGdyZWF0IHRhcmdldC4gVGhlIHN5bmNocm9uaXphdGlvbiBhbmQgd29ya3F1ZXVlIGZ1bmN0aW9uc+KAlHBhcnRpY3VsYXJseSB0aG9zZSBJIGxpc3RlZCBlYXJsaWVy4oCUYXJlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgdG8gcHJvYmUgZm9yIGFueSByZW1haW5pbmcgc3VidGxlIGlzc3Vlcy4KCkkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IHRoZSBgTkVUX1VEUF9UVU5ORUxgIGNvbmZpZyBvcHRpb24gaXMgdGhlIGNvcmUgbW9kdWxlIGhlcmUsIGFuZCBgTkVUREVWU0lNYCBpcyB0aGUgc3BlY2lmaWMgZHJpdmVyIHRoYXQgZXhlcmNpc2VzIGl0LCB3aGljaCBpcyB0aGUgcGVyZmVjdCBzZXQtdXAgZm9yIGEgZ29vZCBmdXp6aW5nIHRlc3QuIE5vdywgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9VRFBfVFVOTkVMJiMzNDssCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMmIzM0OywKICAgICYjMzQ7X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19yZXBsYXkmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZmx1c2gmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlciYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19hZGRfbmV3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGF0YSByYWNlIGFuZCBjb25jdXJyZW5jeSBpc3N1ZSBpbiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBpbmZyYXN0cnVjdHVyZSBieSByZXBsYWNpbmcgYml0ZmllbGRzIHdpdGggYXRvbWljIGJpdCBvcGVyYXRpb25zLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIsIHdoaWNoIHNpbXVsYXRlcyBVRFAgdHVubmVsIG9mZmxvYWRzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgc3luY2hyb25pemF0aW9uIGFuZCB3b3JrcXVldWUgZnVuY3Rpb25zIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1VEUF9UVU5ORUwmIzM0OywKICAgICYjMzQ7TkVUREVWU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyYjMzQ7LAogICAgJiMzNDtfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX3JlcGxheSYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19mbHVzaCYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX2FkZF9uZXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBkYXRhIHJhY2UgYW5kIGNvbmN1cnJlbmN5IGlzc3VlIGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlIGJ5IHJlcGxhY2luZyBiaXRmaWVsZHMgd2l0aCBhdG9taWMgYml0IG9wZXJhdGlvbnMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdGhlIGBuZXRkZXZzaW1gIGRyaXZlciwgd2hpY2ggc2ltdWxhdGVzIFVEUCB0dW5uZWwgb2ZmbG9hZHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBzeW5jaHJvbml6YXRpb24gYW5kIHdvcmtxdWV1ZSBmdW5jdGlvbnMgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MDQ6NTcuNzcwNjMxOTA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEyNjgwMjc4MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1VEUF9UVU5ORUxcIixcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jXCIsXG4gICAgXCJfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19yZXBsYXlcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2ZsdXNoXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19hZGRfbmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkYXRhIHJhY2UgYW5kIGNvbmN1cnJlbmN5IGlzc3VlIGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlIGJ5IHJlcGxhY2luZyBiaXRmaWVsZHMgd2l0aCBhdG9taWMgYml0IG9wZXJhdGlvbnMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdGhlIGBuZXRkZXZzaW1gIGRyaXZlciwgd2hpY2ggc2ltdWxhdGVzIFVEUCB0dW5uZWwgb2ZmbG9hZHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBzeW5jaHJvbml6YXRpb24gYW5kIHdvcmtxdWV1ZSBmdW5jdGlvbnMgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODowNDo1Ny43NzA2Mzc4NjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODg5ODAzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkyZjM5NDM3ZGYyMjhhMWVjYzI4ZjIzZjIzNjNiNTBkMThkNTFkN2VcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdW4gMjUgMDg6MDQ6NTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcXG5pbmRleCA5OTQ0ZWQ5MjNkZGZkMS4uOWE1NjdhODc2MzVjYWEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY1xcbisrKyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcXG5AQCAtMzAsOSArMzAsNyBAQCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkge1xcbiAgKiBAd29yazpcXHRhc3luYyB3b3JrIGZvciB0YWxraW5nIHRvIGhhcmR3YXJlIGZyb20gcHJvY2VzcyBjb250ZXh0XFxuICAqIEBkZXY6XFx0bmV0ZGV2IHBvaW50ZXJcXG4gICogQGxvY2s6XFx0cHJvdGVjdHMgYWxsIGZpZWxkc1xcbi0gKiBAbmVlZF9zeW5jOlxcdGF0IGxlYXN0IG9uZSBwb3J0IHN0YXJ0IGNoYW5nZWRcXG4tICogQG5lZWRfcmVwbGF5OiBzcGFjZSB3YXMgZnJlZWQsIHdlIG5lZWQgYSByZXBsYXkgb2YgYWxsIHBvcnRzXFxuLSAqIEB3b3JrX3BlbmRpbmc6IEB3b3JrIGlzIGN1cnJlbnRseSBzY2hlZHVsZWRcXG4rICogQGZsYWdzOlxcdHN5bmMsIHJlcGxheSwgcGVuZGluZyBmbGFnc1xcbiAgKiBAbl90YWJsZXM6XFx0bnVtYmVyIG9mIHRhYmxlcyB1bmRlciBAZW50cmllc1xcbiAgKiBAbWlzc2VkOlxcdGJpdG1hcCBvZiB0YWJsZXMgd2hpY2ggb3ZlcmZsb3duXFxuICAqIEBlbnRyaWVzOlxcdHRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkXFxuQEAgLTQ0LDkgKzQyLDEwIEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pYyB7XFxuIFxcbiBcXHRzdHJ1Y3QgbXV0ZXggbG9jaztcXG4gXFxuLVxcdHU4IG5lZWRfc3luYzoxO1xcbi1cXHR1OCBuZWVkX3JlcGxheToxO1xcbi1cXHR1OCB3b3JrX3BlbmRpbmc6MTtcXG4rXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4rI2RlZmluZSBVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkNcXHQwXFxuKyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVlcXHQxXFxuKyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HXFx0MlxcbiBcXG4gXFx0dW5zaWduZWQgaW50IG5fdGFibGVzO1xcbiBcXHR1bnNpZ25lZCBsb25nIG1pc3NlZDtcXG5AQCAtMTE2LDcgKzExNSw3IEBAIHVkcF90dW5uZWxfbmljX2VudHJ5X3F1ZXVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbiBcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgZmxhZylcXG4ge1xcbiBcXHRlbnRyeS1cXHUwMDNlZmxhZ3MgfD0gZmxhZztcXG4tXFx0dXRuLVxcdTAwM2VuZWVkX3N5bmMgPSAxO1xcbitcXHRzZXRfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZFxcbkBAIC0xNDgsNyArMTQ3LDcgQEAgdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4gXFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2luZm8gKnRhYmxlO1xcbiBcXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4gXFxuLVxcdGlmICghdXRuLVxcdTAwM2VtaXNzZWQpXFxuK1xcdGlmICghUkVBRF9PTkNFKHV0bi1cXHUwMDNlbWlzc2VkKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKykge1xcbkBAIC0yODMsNyArMjgyLDcgQEAgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gc3RhdGljIHZvaWRcXG4gX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4ge1xcbi1cXHRpZiAoIXV0bi1cXHUwMDNlbmVlZF9zeW5jKVxcbitcXHRpZiAoIXRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRpZiAoZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVxcdTAwM2VzeW5jX3RhYmxlKVxcbkBAIC0yOTEsMjEgKzI5MCwyNyBAQCBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBcXHRlbHNlXFxuIFxcdFxcdHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3BvcnQoZGV2LCB1dG4pO1xcbiBcXG4tXFx0dXRuLVxcdTAwM2VuZWVkX3N5bmMgPSAwO1xcbitcXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncyk7XFxuIFxcdC8qIENhbid0IHJlcGxheSBkaXJlY3RseSBoZXJlLCBpbiBjYXNlIHdlIGNvbWUgZnJvbSB0aGUgdHVubmVsIGRyaXZlcidzXFxuIFxcdCAqIG5vdGlmaWNhdGlvbiAtIHRyeWluZyB0byByZXBsYXkgbWF5IGRlYWRsb2NrIGluc2lkZSB0dW5uZWwgZHJpdmVyLlxcbiBcXHQgKi9cXG4tXFx0dXRuLVxcdTAwM2VuZWVkX3JlcGxheSA9IHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pO1xcbitcXHRpZiAodWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bikpXFxuK1xcdFxcdHNldF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFxcdTAwMjZ1dG4tXFx1MDAzZWZsYWdzKTtcXG4rXFx0ZWxzZVxcbitcXHRcXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFxcdTAwMjZ1dG4tXFx1MDAzZWZsYWdzKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWRcXG4gdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuIHtcXG4tXFx0aWYgKCF1dG4tXFx1MDAzZW5lZWRfc3luYylcXG4rXFx0aWYgKCF0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFxcdTAwMjZ1dG4tXFx1MDAzZWZsYWdzKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0aWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX1dPUktfUEVORElORywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXFx1MDAyNnV0bi1cXHUwMDNld29yayk7XFxuLVxcdHV0bi1cXHUwMDNld29ya19wZW5kaW5nID0gMTtcXG4rXFx0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkcsIFxcdTAwMjZ1dG4tXFx1MDAzZWZsYWdzKTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2xcXG5AQCAtMzQ4LDcgKzM1Myw3IEBAIHVkcF90dW5uZWxfbmljX2hhc19jb2xsaXNpb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxuIFxcdFxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIGVudHJ5LVxcdTAwM2Vwb3J0ID09IHRpLVxcdTAwM2Vwb3J0IFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICBlbnRyeS1cXHUwMDNldHlwZSAhPSB0aS1cXHUwMDNldHlwZSkge1xcbi1cXHRcXHRcXHRcXHRfX3NldF9iaXQoaSwgXFx1MDAyNnV0bi1cXHUwMDNlbWlzc2VkKTtcXG4rXFx0XFx0XFx0XFx0c2V0X2JpdChpLCBcXHUwMDI2dXRuLVxcdTAwM2VtaXNzZWQpO1xcbiBcXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuQEAgLTQ4Myw3ICs0ODgsNyBAQCB1ZHBfdHVubmVsX25pY19hZGRfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbiBcXHRcXHQgKiBhcmUgbm8gZGV2aWNlcyBjdXJyZW50bHkgd2hpY2ggaGF2ZSBtdWx0aXBsZSB0YWJsZXMgYWNjZXB0aW5nXFxuIFxcdFxcdCAqIHRoZSBzYW1lIHR1bm5lbCB0eXBlLCBhbmQgZmFsc2UgcG9zaXRpdmVzIGFyZSBva2F5LlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0X19zZXRfYml0KGksIFxcdTAwMjZ1dG4tXFx1MDAzZW1pc3NlZCk7XFxuK1xcdFxcdHNldF9iaXQoaSwgXFx1MDAyNnV0bi1cXHUwMDNlbWlzc2VkKTtcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIGZhbHNlO1xcbkBAIC01NTIsNyArNTU3LDcgQEAgc3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19yZXNldF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnV0bi1cXHUwMDNlbG9jayk7XFxuIFxcbi1cXHR1dG4tXFx1MDAzZW5lZWRfc3luYyA9IGZhbHNlO1xcbitcXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncyk7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspXFxuIFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBpbmZvLVxcdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzOyBqKyspIHtcXG4gXFx0XFx0XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcXG5AQCAtNjk2LDggKzcwMSw4IEBAIHVkcF90dW5uZWxfbmljX2ZsdXNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdXRuLVxcdTAwM2VuX3RhYmxlczsgaSsrKVxcbiBcXHRcXHRtZW1zZXQodXRuLVxcdTAwM2VlbnRyaWVzW2ldLCAwLCBhcnJheV9zaXplKGluZm8tXFx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXMsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHNpemVvZigqKnV0bi1cXHUwMDNlZW50cmllcykpKTtcXG4tXFx0V0FSTl9PTih1dG4tXFx1MDAzZW5lZWRfc3luYyk7XFxuLVxcdHV0bi1cXHUwMDNlbmVlZF9yZXBsYXkgPSAwO1xcbitcXHRXQVJOX09OKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpKTtcXG4rXFx0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkXFxuQEAgLTcxMyw4ICs3MTgsOCBAQCB1ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspXFxuIFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBpbmZvLVxcdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzOyBqKyspXFxuIFxcdFxcdFxcdHVkcF90dW5uZWxfbmljX2VudHJ5X2ZyZWV6ZV91c2VkKFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbaV1bal0pO1xcbi1cXHR1dG4tXFx1MDAzZW1pc3NlZCA9IDA7XFxuLVxcdHV0bi1cXHUwMDNlbmVlZF9yZXBsYXkgPSAwO1xcbitcXHRXUklURV9PTkNFKHV0bi1cXHUwMDNlbWlzc2VkLCAwKTtcXG4rXFx0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncyk7XFxuIFxcbiBcXHRpZiAoIWluZm8tXFx1MDAzZXNoYXJlZCkge1xcbiBcXHRcXHR1ZHBfdHVubmVsX2dldF9yeF9pbmZvKGRldik7XFxuQEAgLTczNiwxMCArNzQxLDEwIEBAIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRydG5sX2xvY2soKTtcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2dXRuLVxcdTAwM2Vsb2NrKTtcXG4gXFxuLVxcdHV0bi1cXHUwMDNld29ya19wZW5kaW5nID0gMDtcXG4rXFx0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX1dPUktfUEVORElORywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi1cXHUwMDNlZGV2LCB1dG4pO1xcbiBcXG4tXFx0aWYgKHV0bi1cXHUwMDNlbmVlZF9yZXBsYXkpXFxuK1xcdGlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpKVxcbiBcXHRcXHR1ZHBfdHVubmVsX25pY19yZXBsYXkodXRuLVxcdTAwM2VkZXYsIHV0bik7XFxuIFxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNnV0bi1cXHUwMDNlbG9jayk7XFxuQEAgLTkwNCw3ICs5MDksNyBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBcXHQvKiBXYWl0IGZvciB0aGUgd29yayB0byBiZSBkb25lIHVzaW5nIHRoZSBzdGF0ZSwgbmV0ZGV2IGNvcmUgd2lsbFxcbiBcXHQgKiByZXRyeSB1bnJlZ2lzdGVyIHVudGlsIHdlIGdpdmUgdXAgb3VyIHJlZmVyZW5jZSBvbiB0aGlzIGRldmljZS5cXG4gXFx0ICovXFxuLVxcdGlmICh1dG4tXFx1MDAzZXdvcmtfcGVuZGluZylcXG4rXFx0aWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX1dPUktfUEVORElORywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHR1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjA0OjU4LjMyMDU3MDIyOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA3MTgwNzk1MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1VEUF9UVU5ORUxcIixcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jXCIsXG4gICAgXCJfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19yZXBsYXlcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2ZsdXNoXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19hZGRfbmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkYXRhIHJhY2UgYW5kIGNvbmN1cnJlbmN5IGlzc3VlIGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlIGJ5IHJlcGxhY2luZyBiaXRmaWVsZHMgd2l0aCBhdG9taWMgYml0IG9wZXJhdGlvbnMuIFRoaXMgbG9naWMgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdGhlIGBuZXRkZXZzaW1gIGRyaXZlciwgd2hpY2ggc2ltdWxhdGVzIFVEUCB0dW5uZWwgb2ZmbG9hZHMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBzeW5jaHJvbml6YXRpb24gYW5kIHdvcmtxdWV1ZSBmdW5jdGlvbnMgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDkyZjM5NDM3ZGYyMjhhMWVjYzI4ZjIzZjIzNjNiNTBkMThkNTFkN2VcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAwODowNDo1NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG5pbmRleCA5OTQ0ZWQ5MjNkZGZkMS4uOWE1NjdhODc2MzVjYWEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG4rKysgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG5AQCAtMzAsOSArMzAsNyBAQCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkge1xuICAqIEB3b3JrOlx0YXN5bmMgd29yayBmb3IgdGFsa2luZyB0byBoYXJkd2FyZSBmcm9tIHByb2Nlc3MgY29udGV4dFxuICAqIEBkZXY6XHRuZXRkZXYgcG9pbnRlclxuICAqIEBsb2NrOlx0cHJvdGVjdHMgYWxsIGZpZWxkc1xuLSAqIEBuZWVkX3N5bmM6XHRhdCBsZWFzdCBvbmUgcG9ydCBzdGFydCBjaGFuZ2VkXG4tICogQG5lZWRfcmVwbGF5OiBzcGFjZSB3YXMgZnJlZWQsIHdlIG5lZWQgYSByZXBsYXkgb2YgYWxsIHBvcnRzXG4tICogQHdvcmtfcGVuZGluZzogQHdvcmsgaXMgY3VycmVudGx5IHNjaGVkdWxlZFxuKyAqIEBmbGFnczpcdHN5bmMsIHJlcGxheSwgcGVuZGluZyBmbGFnc1xuICAqIEBuX3RhYmxlczpcdG51bWJlciBvZiB0YWJsZXMgdW5kZXIgQGVudHJpZXNcbiAgKiBAbWlzc2VkOlx0Yml0bWFwIG9mIHRhYmxlcyB3aGljaCBvdmVyZmxvd25cbiAgKiBAZW50cmllczpcdHRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkXG5AQCAtNDQsOSArNDIsMTAgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHtcbiBcbiBcdHN0cnVjdCBtdXRleCBsb2NrO1xuIFxuLVx0dTggbmVlZF9zeW5jOjE7XG4tXHR1OCBuZWVkX3JlcGxheToxO1xuLVx0dTggd29ya19wZW5kaW5nOjE7XG4rXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuKyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DXHQwXG4rI2RlZmluZSBVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWVx0MVxuKyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HXHQyXG4gXG4gXHR1bnNpZ25lZCBpbnQgbl90YWJsZXM7XG4gXHR1bnNpZ25lZCBsb25nIG1pc3NlZDtcbkBAIC0xMTYsNyArMTE1LDcgQEAgdWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4gXHRcdFx0ICAgdW5zaWduZWQgaW50IGZsYWcpXG4ge1xuIFx0ZW50cnktXHUwMDNlZmxhZ3MgfD0gZmxhZztcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSAxO1xuK1x0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG5AQCAtMTQ4LDcgKzE0Nyw3IEBAIHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfaW5mbyAqdGFibGU7XG4gXHR1bnNpZ25lZCBpbnQgaSwgajtcbiBcbi1cdGlmICghdXRuLVx1MDAzZW1pc3NlZClcbitcdGlmICghUkVBRF9PTkNFKHV0bi1cdTAwM2VtaXNzZWQpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkrKykge1xuQEAgLTI4Myw3ICsyODIsNyBAQCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHN0YXRpYyB2b2lkXG4gX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiB7XG4tXHRpZiAoIXV0bi1cdTAwM2VuZWVkX3N5bmMpXG4rXHRpZiAoIXRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSlcbiBcdFx0cmV0dXJuO1xuIFxuIFx0aWYgKGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXN5bmNfdGFibGUpXG5AQCAtMjkxLDIxICsyOTAsMjcgQEAgX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdGVsc2VcbiBcdFx0dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChkZXYsIHV0bik7XG4gXG4tXHR1dG4tXHUwMDNlbmVlZF9zeW5jID0gMDtcbitcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gXHQvKiBDYW4ndCByZXBsYXkgZGlyZWN0bHkgaGVyZSwgaW4gY2FzZSB3ZSBjb21lIGZyb20gdGhlIHR1bm5lbCBkcml2ZXInc1xuIFx0ICogbm90aWZpY2F0aW9uIC0gdHJ5aW5nIHRvIHJlcGxheSBtYXkgZGVhZGxvY2sgaW5zaWRlIHR1bm5lbCBkcml2ZXIuXG4gXHQgKi9cbi1cdHV0bi1cdTAwM2VuZWVkX3JlcGxheSA9IHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pO1xuK1x0aWYgKHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pKVxuK1x0XHRzZXRfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuK1x0ZWxzZVxuK1x0XHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG4gdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4ge1xuLVx0aWYgKCF1dG4tXHUwMDNlbmVlZF9zeW5jKVxuK1x0aWYgKCF0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpXG4rXHRcdHJldHVybjtcbitcbitcdGlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkcsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpXG4gXHRcdHJldHVybjtcbiBcbiBcdHF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yayk7XG4tXHR1dG4tXHUwMDNld29ya19wZW5kaW5nID0gMTtcbitcdHNldF9iaXQoVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIH1cbiBcbiBzdGF0aWMgYm9vbFxuQEAgLTM0OCw3ICszNTMsNyBAQCB1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuIFx0XHRcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGVudHJ5LVx1MDAzZXBvcnQgPT0gdGktXHUwMDNlcG9ydCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgZW50cnktXHUwMDNldHlwZSAhPSB0aS1cdTAwM2V0eXBlKSB7XG4tXHRcdFx0XHRfX3NldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4rXHRcdFx0XHRzZXRfYml0KGksIFx1MDAyNnV0bi1cdTAwM2VtaXNzZWQpO1xuIFx0XHRcdFx0cmV0dXJuIHRydWU7XG4gXHRcdFx0fVxuIFx0XHR9XG5AQCAtNDgzLDcgKzQ4OCw3IEBAIHVkcF90dW5uZWxfbmljX2FkZF9uZXcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4gXHRcdCAqIGFyZSBubyBkZXZpY2VzIGN1cnJlbnRseSB3aGljaCBoYXZlIG11bHRpcGxlIHRhYmxlcyBhY2NlcHRpbmdcbiBcdFx0ICogdGhlIHNhbWUgdHVubmVsIHR5cGUsIGFuZCBmYWxzZSBwb3NpdGl2ZXMgYXJlIG9rYXkuXG4gXHRcdCAqL1xuLVx0XHRfX3NldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4rXHRcdHNldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtNTUyLDcgKzU1Nyw3IEBAIHN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnV0bi1cdTAwM2Vsb2NrKTtcbiBcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSBmYWxzZTtcbitcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkrKylcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgaW5mby1cdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzOyBqKyspIHtcbiBcdFx0XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xuQEAgLTY5Niw4ICs3MDEsOCBAQCB1ZHBfdHVubmVsX25pY19mbHVzaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSsrKVxuIFx0XHRtZW1zZXQodXRuLVx1MDAzZWVudHJpZXNbaV0sIDAsIGFycmF5X3NpemUoaW5mby1cdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzLFxuIFx0XHRcdFx0XHRcdCAgICAgIHNpemVvZigqKnV0bi1cdTAwM2VlbnRyaWVzKSkpO1xuLVx0V0FSTl9PTih1dG4tXHUwMDNlbmVlZF9zeW5jKTtcbi1cdHV0bi1cdTAwM2VuZWVkX3JlcGxheSA9IDA7XG4rXHRXQVJOX09OKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSk7XG4rXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG5AQCAtNzEzLDggKzcxOCw4IEBAIHVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSsrKVxuIFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpbmZvLVx1MDAzZXRhYmxlc1tpXS5uX2VudHJpZXM7IGorKylcbiBcdFx0XHR1ZHBfdHVubmVsX25pY19lbnRyeV9mcmVlemVfdXNlZChcdTAwMjZ1dG4tXHUwMDNlZW50cmllc1tpXVtqXSk7XG4tXHR1dG4tXHUwMDNlbWlzc2VkID0gMDtcbi1cdHV0bi1cdTAwM2VuZWVkX3JlcGxheSA9IDA7XG4rXHRXUklURV9PTkNFKHV0bi1cdTAwM2VtaXNzZWQsIDApO1xuK1x0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIFxuIFx0aWYgKCFpbmZvLVx1MDAzZXNoYXJlZCkge1xuIFx0XHR1ZHBfdHVubmVsX2dldF9yeF9pbmZvKGRldik7XG5AQCAtNzM2LDEwICs3NDEsMTAgQEAgc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRydG5sX2xvY2soKTtcbiBcdG11dGV4X2xvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuIFxuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDA7XG4rXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfV09SS19QRU5ESU5HLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIFx0X191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyh1dG4tXHUwMDNlZGV2LCB1dG4pO1xuIFxuLVx0aWYgKHV0bi1cdTAwM2VuZWVkX3JlcGxheSlcbitcdGlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSlcbiBcdFx0dWRwX3R1bm5lbF9uaWNfcmVwbGF5KHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4gXHRtdXRleF91bmxvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuQEAgLTkwNCw3ICs5MDksNyBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0LyogV2FpdCBmb3IgdGhlIHdvcmsgdG8gYmUgZG9uZSB1c2luZyB0aGUgc3RhdGUsIG5ldGRldiBjb3JlIHdpbGxcbiBcdCAqIHJldHJ5IHVucmVnaXN0ZXIgdW50aWwgd2UgZ2l2ZSB1cCBvdXIgcmVmZXJlbmNlIG9uIHRoaXMgZGV2aWNlLlxuIFx0ICovXG4tXHRpZiAodXRuLVx1MDAzZXdvcmtfcGVuZGluZylcbitcdGlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19XT1JLX1BFTkRJTkcsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpXG4gXHRcdHJldHVybjtcbiBcbiBcdHVkcF90dW5uZWxfbmljX2ZyZWUodXRuKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjA0OjU4LjMyMDU3Mjc2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg0MTIzOTc4NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29uY3VycmVuY3kgRml4IGluIHRoZSBVRFAgVHVubmVsIE5JQyBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyB0b3VjaGluZyBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AuIEludGVyZXN0aW5nLiBUaGV5J3ZlIGdvbmUgYW5kIHJlZmFjdG9yZWQgYSBmZXcgYml0ZmllbGRzIHdpdGhpbiB0aGUgYHVkcF90dW5uZWxfbmljYCBzdHJ1Y3Qg4oCTIGBuZWVkX3N5bmNgLCBgbmVlZF9yZXBsYXlgLCBhbmQgYHdvcmtfcGVuZGluZ2Ag4oCTIGFuZCBjb25zb2xpZGF0ZWQgdGhlbSBpbnRvIGEgc2luZ2xlIGB1bnNpZ25lZCBsb25nIGZsYWdzYCBmaWVsZC4gU21hcnQgbW92ZSwgdGhhdCdzIGFsbW9zdCBhbHdheXMgYSBnb29kIGluZGljYXRvciBmb3IgYSBjb25jdXJyZW5jeSBvciBkYXRhIHJhY2UgZml4LiBUaGV5J3JlIHVzaW5nIGF0b21pYyBiaXQgb3BlcmF0aW9ucyAoYHNldF9iaXRgLCBgY2xlYXJfYml0YCwgYHRlc3RfYml0YCksIGFuZCBgUkVBRF9PTkNFYC9gV1JJVEVfT05DRWAgZm9yIGBtaXNzZWRgLiBUaGlzIHJlYWxseSBzbWVsbHMgbGlrZSBhIGNsYXNzaWMgbXVsdGktdGhyZWFkZWQgYWNjZXNzIHByb2JsZW0gdGhhdCBuZWVkZWQgYSBjbGVhbiBzb2x1dGlvbi5cblxuTm93LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgY29udGV4dC4gTGV0IG1lIGRpdmUgaW50byBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgaXRzZWxmLiBSaWdodCwgaXQncyBwYXJ0IG9mIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlLiBPa2F5LCBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB3aGF0IHBhcnRzIG9mIHRoZSBzeXN0ZW0gYXJlIGFjdHVhbGx5ICp1c2luZyogdGhpcy4gSXMgaXQgZXZlbiByZWFjaGFibGUgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJ20gdHJ5aW5nIHRvIHJlY2FsbCB0aGUgY29tbW9uIGFyY2hpdGVjdHVyZXMgdXNpbmcgaXQgYW5kIHRoZSBwb3RlbnRpYWwgZ290Y2hhcy4uLiBXYWl0LCBpdCdzIGZvciBOSUMgb2ZmbG9hZC4gVGhhdCdzIGEga2V5IGRldGFpbCEgU28gdGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGFueSAqdmlydHVhbCogZHJpdmVyIGxldmVyYWdlIHRoaXM/IE9yIGlzIGl0IHNvbWV0aGluZyB0aGF0IGNvdWxkIGFsc28gYmUgdHJpZ2dlcmVkIGJ5IHNvZnR3YXJlLCBwZXJoYXBzIGV2ZW4gcnVubmluZyBpbiBhIFZNPyBIbW0uLi5cblxuT2theSwgbGV0J3MgdHJhY2UgdGhpcyBiYWNrLiBJJ2xsIGNoZWNrIHRoZSB1c2FnZSBvZiBgdWRwX3R1bm5lbF9uaWNfaW5mb2AuIFRoYXQncyB0aGUgYmVzdCB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBhbmQgaW1wYWN0IG9mIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGFuZCBob3cgdGhpcyBjb2RlIGlzIGJlaW5nIGFjY2Vzc2VkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhlIHBhdGNoIGFuZCBob3cgaXQgYWRkcmVzc2VzIHRoZSByYWNlIGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk0NSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjA1OjA2LjczMjk3NTA3NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzA4NDMxMjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF90dW5uZWxfbmljX2luZm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0PTE3Mj1zdHJ1Y3QgbWFjc2VjX29wcyogICAgICAgICAgICAgICAgICBtYWNzZWNfb3BzXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0OjE3MzpzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyogICAgICAgICB1ZHBfdHVubmVsX25pY19pbmZvXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0LTE3NC1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWMqICAgICAgICAgICAgICB1ZHBfdHVubmVsX25pY1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz04OTU9c3RhdGljIGludCB4Z2JlX3Z4bGFuX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzo5MDY6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHhnYmVfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDctXFx0LnNldF9wb3J0XFx0PSB4Z2JlX3Z4bGFuX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzo5MTU6Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKnhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbyh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jPTE1Mj1pbnQgeGdiZV9jb25maWdfbmV0ZGV2KHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jLTI2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLW1haW4uYzoyNjM6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0geGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjY0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaD0xMjk2PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqeGdiZV9nZXRfZXRodG9vbF9vcHModm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oOjEyOTc6Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKnhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbyh2b2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmgtMTI5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMDIxMT1zdGF0aWMgaW50IGJueDJ4X3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEwMjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibngyeF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjMtXFx0LnN5bmNfdGFibGVcXHQ9IGJueDJ4X3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMzA0MD1zdGF0aWMgaW50IGJueDJ4X2luaXRfZGV2KHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMjA3LVxcdFxcdGlmIChJU19QRihicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEzMjA4OlxcdFxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZibngyeF91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTMyMDktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTU5NjI9c3RhdGljIGludCBibnh0X3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNTk3ODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gYm54dF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3OS1cXHQuc2V0X3BvcnRcXHQ9IGJueHRfdWRwX3R1bm5lbF9zZXRfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2OTQ1PXN0YXRpYyBpbnQgYm54dF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE3MDUyLVxcdGlmIChicC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNzA1MzpcXHRcXHRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2Ym54dF91ZHBfdHVubmVsc19wNztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1NC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTcwNTU6XFx0XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmJueHRfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTcwNTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0yNjg1PXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2OTY6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGxpcXVpZGlvX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2OTctXFx0LnNldF9wb3J0XFx0PSBsaXF1aWRpb191ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MzMyMj1zdGF0aWMgaW50IHNldHVwX25pY19kZXZpY2VzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzU4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNTgzOlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNTg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc3Mj1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzgzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBsaXF1aWRpb191ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzg0LVxcdC5zZXRfcG9ydFxcdD0gbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTE5MTk9c3RhdGljIGludCBzZXR1cF9uaWNfZGV2aWNlcyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIwOTMtXFx0XFx0ICAgIChsaW8tXFx1MDAzZWVuY19kZXZfY2FwYWJpbGl0eSBcXHUwMDI2IH5ORVRJRl9GX0xSTyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MjA5NDpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2bGlxdWlkaW9fdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjA5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTM3NzA9c3RhdGljIGludCBjeGdiX3VkcF90dW5uZWxfc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6MzgxODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gY3hnYl91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zODE5LVxcdC5zZXRfcG9ydFxcdD0gY3hnYl91ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9NjU3MT1zdGF0aWMgaW50IGluaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtNjgwMC1cXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlcmF3Zl9jbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6NjgwMTpcXHRcXHRcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2Y3hnYl91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy02ODAyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM9MjA3PXN0YXRpYyBpbnQgZW5pY191ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM6MjI5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBlbmljX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjMwLVxcdC5zZXRfcG9ydFxcdD0gZW5pY191ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYz0yNjc1PXN0YXRpYyBpbnQgZW5pY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk0OC1cXHRcXHQgICAgZW5pYy1cXHUwMDNldnhsYW4uZmxhZ3MgXFx1MDAyNiBFTklDX1ZYTEFOX01VTFRJX1dRKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTQ5OlxcdFxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZlbmljX3VkcF90dW5uZWxzX3Y0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1MC1cXHRcXHRcXHRpZiAoZW5pYy1cXHUwMDNldnhsYW4uZmxhZ3MgXFx1MDAyNiBFTklDX1ZYTEFOX09VVEVSX0lQVjYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTUxOlxcdFxcdFxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZlbmljX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1Mi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jPTQwMTU9c3RhdGljIGludCBiZV92eGxhbl91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jOjQwMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJlX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzNS1cXHQuc2V0X3BvcnRcXHQ9IGJlX3Z4bGFuX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYz01MTc5PXN0YXRpYyB2b2lkIGJlX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTUyMDctXFx0aWYgKCFsYW5jZXJfY2hpcChhZGFwdGVyKSBcXHUwMDI2XFx1MDAyNiAhQkV4X2NoaXAoYWRhcHRlcikgXFx1MDAyNlxcdTAwMjYgIWJlX2lzX21jKGFkYXB0ZXIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM6NTIwODpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2YmVfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy01MjA5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9NDAyPXN0YXRpYyBpbnQgZm0xMGtfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTQxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzo0MTc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGZtMTBrX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTQxOC1cXHQuc3luY190YWJsZVxcdD0gZm0xMGtfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9MTU0MT1zdHJ1Y3QgbmV0X2RldmljZSAqZm0xMGtfYWxsb2NfbmV0ZGV2KGNvbnN0IHN0cnVjdCBmbTEwa19pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtMTU4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzoxNTgxOlxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZmbTEwa191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy0xNTgyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oPTQ2OD1zdHJ1Y3QgaTQwZV9wZiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC01MjEtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB1ZHBfdHVubmVsX3NoYXJlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaDo1MjI6XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmgtNTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xMzYzNz1zdGF0aWMgaW50IGk0MGVfY29uZmlnX25ldGRldihzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxMzY4MTpcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2cGYtXFx1MDAzZXVkcF90dW5uZWxfbmljO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz0zNDQzPXN0YXRpYyB2b2lkIGljZV9zZXRfb3BzKHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zNDU0LVxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZpY2VfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzozNDU1OlxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZwZi1cXHUwMDNlaHcudWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzQ1Ni1cXHRuZXRkZXYtXFx1MDAzZXhkcF9tZXRhZGF0YV9vcHMgPSBcXHUwMDI2aWNlX3hkcF9tZF9vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz0zOTcwPWludCBpY2VfaW5pdF9wZihzdHJ1Y3QgaWNlX3BmICpwZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zOTcxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzozOTcyOlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICp1ZHBfdHVubmVsX25pYyA9IFxcdTAwMjZwZi1cXHUwMDNlaHcudWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzk3My1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpY2VfcGZfdG9fZGV2KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oPTg5OT1zdHJ1Y3QgaWNlX2h3IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oLTEwMTEtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB1ZHBfdHVubmVsX3NoYXJlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaDoxMDEyOlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHVkcF90dW5uZWxfbmljO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oLTEwMTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9NTQ0OD1zdGF0aWMgaW50IGl4Z2JlX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NTQ2NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gaXhnYmVfdWRwX3R1bm5lbHNfeDU1MCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2OC1cXHQuc3luY190YWJsZVxcdD0gaXhnYmVfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTU0NzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjU0NzU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGl4Z2JlX3VkcF90dW5uZWxzX3g1NTBlbV9hID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDc2LVxcdC5zeW5jX3RhYmxlXFx0PSBpeGdiZV91ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTE1NDg9c3RhdGljIGludCBpeGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTY5OS1cXHRjYXNlIGl4Z2JlX21hY19lNjEwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTcwMDpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExNzAyLVxcdGNhc2UgaXhnYmVfbWFjX3g1NTBlbV9hOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTcwMzpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MGVtX2E7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExNzA0LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0yNjM5PXN0YXRpYyBpbnQgbWx4NF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0yNjU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM6MjY1NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbWx4NF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTI2NTgtXFx0LnN5bmNfdGFibGVcXHQ9IG1seDRfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0zMTYxPWludCBtbHg0X2VuX2luaXRfbmV0ZGV2KHN0cnVjdCBtbHg0X2VuX2RldiAqbWRldiwgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTMzNDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYzozMzQ3OlxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZtbHg0X3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMzM0OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD05MDU9c3RydWN0IG1seDVlX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjk1NzpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuaWNfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTgtI2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTU0NTY9dm9pZCBtbHg1ZV92eGxhbl9zZXRfbmV0ZGV2X2luZm8oc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU0NjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1NDY5OlxcdHByaXYtXFx1MDAzZW5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZwcml2LVxcdTAwM2VuaWNfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU0NzAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jPTIzNzY9c3RhdGljIGludCBuZnBfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yMzk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYzoyMzk1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuZnBfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTIzOTYtXFx0LnN5bmNfdGFibGUgICAgID0gbmZwX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYz0yNjY2PXN0YXRpYyB2b2lkIG5mcF9uZXRfbmV0ZGV2X2luaXQoc3RydWN0IG5mcF9uZXQgKm5uKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MTgtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYzoyNzE5OlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZuZnBfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MjAtXFx0XFx0bm4tXFx1MDAzZWRwLmN0cmwgfD0gTkZQX05FVF9DRkdfQ1RSTF9WWExBTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM9OTU3PXN0YXRpYyBpbnQgcWVkZV91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy05ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYzo5ODg6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHFlZGVfdWRwX3R1bm5lbHNfYm90aCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4OS1cXHQuc3luY190YWJsZVxcdD0gcWVkZV91ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jPTEwMDY9dm9pZCBxZWRlX3NldF91ZHBfdHVubmVscyhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMDktXFx0ICAgIGVkZXYtXFx1MDAzZWRldl9pbmZvLmNvbW1vbi5nZW5ldmVfZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6MTAxMDpcXHRcXHRlZGV2LVxcdTAwM2VuZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnFlZGVfdWRwX3R1bm5lbHNfYm90aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTEtXFx0ZWxzZSBpZiAoZWRldi1cXHUwMDNlZGV2X2luZm8uY29tbW9uLnZ4bGFuX2VuYWJsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTI6XFx0XFx0ZWRldi1cXHUwMDNlbmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZxZWRlX3VkcF90dW5uZWxzX3Z4bGFuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAxMy1cXHRlbHNlIGlmIChlZGV2LVxcdTAwM2VkZXZfaW5mby5jb21tb24uZ2VuZXZlX2VuYWJsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTQ6XFx0XFx0ZWRldi1cXHUwMDNlbmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZxZWRlX3VkcF90dW5uZWxzX2dlbmV2ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jPTQ3MT1zdGF0aWMgaW50IHFsY25pY191ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM6NDg3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBxbGNuaWNfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4OC1cXHQuc3luY190YWJsZVxcdD0gcWxjbmljX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYz0yMjU0PXFsY25pY19zZXR1cF9uZXRkZXYoc3RydWN0IHFsY25pY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTIzMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jOjIzMDQ6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnFsY25pY191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtMjMwNS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTQyPXN0YXRpYyBpbnQgZWZ4X2VmMTBfc2V0X3VkcF90bmxfcG9ydHMoc3RydWN0IGVmeF9uaWMgKmVmeCwgYm9vbCB1bmxvYWRpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6NDM6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGVmeF9lZjEwX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtNDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTUyNT1zdGF0aWMgaW50IGVmeF9lZjEwX3Byb2JlKHN0cnVjdCBlZnhfbmljICplZngpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4MC1cXHQgICAgKDEgXFx1MDAzY1xcdTAwM2MgTUNfQ01EX0RSVl9BVFRBQ0hfRVhUX09VVF9GTEFHX1RSVVNURUQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6NjgxOlxcdFxcdGVmeC1cXHUwMDNlbmV0X2Rldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZlZnhfZWYxMF91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9Mzk2Mj1zdGF0aWMgaW50IGVmeF9lZjEwX3VkcF90bmxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy0zOTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6Mzk4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy0zOTg2LVxcdC5zZXRfcG9ydFxcdD0gZWZ4X2VmMTBfdWRwX3RubF9zZXRfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTYxOT1zdGF0aWMgaW50IHR4Z2JlX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NjQyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB0eGdiZV91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDMtXFx0LnN5bmNfdGFibGVcXHQ9IHR4Z2JlX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTY4MT1zdGF0aWMgaW50IHR4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzQ3LVxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjc0ODpcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2dHhnYmVfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9NjY9bnNpbV91ZHBfdHVubmVsX3N5bmNfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtODQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6ODU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5zaW1fdWRwX3R1bm5lbF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTg2LVxcdC5zZXRfcG9ydFxcdD0gbnNpbV91ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTI1PWludCBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMjgtXFx0c3RydWN0IG5ldGRldnNpbSAqbnMgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjEyOTpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xODQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTg1OlxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IGluZm87XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTg2LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTg5PXZvaWQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE5My1cXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUobnMtXFx1MDAzZXVkcF9wb3J0cy5kZGlyKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxOTQ6XFx0a2ZyZWUoZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxOTU6XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gTlVMTDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xOTYtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD03Nj1zdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6Nzc6c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm87XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC03OC1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWM7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MDQ9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjA4OS0gKlxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjA5MDogKlxcdEB1ZHBfdHVubmVsX25pY19pbmZvOlxcdHN0YXRpYyBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgVURQIHR1bm5lbFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjA5MS0gKlxcdFxcdFxcdFxcdG9mZmxvYWQgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2VcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1MDQtI2VuZGlmXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNTA1OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvXFx0KnVkcF90dW5uZWxfbmljX2luZm87XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTA2LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY1xcdCp1ZHBfdHVubmVsX25pYztcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0yMjU9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfZW5jYXBfZW5hYmxlKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yMzgtXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjIzOTplbnVtIHVkcF90dW5uZWxfbmljX2luZm9fZmxhZ3Mge1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNDAtXFx0LyogRGV2aWNlIG9ubHkgc3VwcG9ydHMgb2ZmbG9hZHMgd2hlbiBpdCdzIG9wZW4sIGFsbCBwb3J0c1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTI1Nz1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkIHtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MjU4OlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdWRwX3R1bm5lbF9uaWNfaW5mbztcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjU5LVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTI2Mz1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkX25vZGUge1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI2OC0vKipcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MjY5OiAqIHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIC0gZHJpdmVyIFVEUCB0dW5uZWwgb2ZmbG9hZCBpbmZvcm1hdGlvblxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNzAtICogQHNldF9wb3J0OlxcdGNhbGxiYWNrIGZvciBhZGRpbmcgYSBuZXcgcG9ydFxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI3My0gKiBAc2hhcmVkOlxcdHJlZmVyZW5jZSB0byBkZXZpY2UgZ2xvYmFsIHN0YXRlIChvcHRpb25hbClcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mjc0OiAqIEBmbGFnczpcXHRkZXZpY2UgZmxhZ3MgZnJvbSBlbnVtIHVkcF90dW5uZWxfbmljX2luZm9fZmxhZ3NcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjc1LSAqIEB0YWJsZXM6XFx0VURQIHBvcnQgdGFibGVzIHRoaXMgZGV2aWNlIGhhc1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI5Ni0gKi9cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mjk3OnN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjk4LVxcdC8qIG9uZS1ieS1vbmUgKi9cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zMjItICogbW9kdWxlLiBOSUMgZHJpdmVycyBhcmUgbm90LCB0aGV5IGp1c3QgYXR0YWNoIHRoZWlyXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjMyMzogKiBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB0byB0aGUgbmV0ZGV2IGFuZCB3YWl0IGZvciBjYWxsYmFja3MgdG8gY29tZS5cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzI0LSAqIExvYWRpbmcgYSB0dW5uZWwgZHJpdmVyIHdpbGwgY2F1c2UgdGhlIHVkcF90dW5uZWwgbW9kdWxlIHRvIGJlIGxvYWRlZFxcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTEzMjA9aW50IHJlZ2lzdGVyX25ldGRldmljZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTEzOTQtXFxubmV0L2NvcmUvZGV2LmM6MTEzOTU6XFx0aWYgKGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xcbm5ldC9jb3JlL2Rldi5jLTExMzk2LVxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9SWF9VRFBfVFVOTkVMX1BPUlQ7XFxuLS1cXG5uZXQvZXRodG9vbC90dW5uZWxzLmM9MzY9ZXRobmxfdHVubmVsX2luZm9fcmVwbHlfc2l6ZShjb25zdCBzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxcbi0tXFxubmV0L2V0aHRvb2wvdHVubmVscy5jLTM5LVxcdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVxcdTAwM2VmbGFncyBcXHUwMDI2IEVUSFRPT0xfRkxBR19DT01QQUNUX0JJVFNFVFM7XFxubmV0L2V0aHRvb2wvdHVubmVscy5jOjQwOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvO1xcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy00MS1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy00NC1cXG5uZXQvZXRodG9vbC90dW5uZWxzLmM6NDU6XFx0aW5mbyA9IHJlcV9iYXNlLVxcdTAwM2VkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2V0aHRvb2wvdHVubmVscy5jLTQ2LVxcdGlmICghaW5mbykge1xcbi0tXFxubmV0L2V0aHRvb2wvdHVubmVscy5jPTgyPWV0aG5sX3R1bm5lbF9pbmZvX2ZpbGxfcmVwbHkoY29uc3Qgc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG4tLVxcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy04NS1cXHRib29sIGNvbXBhY3QgPSByZXFfYmFzZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBFVEhUT09MX0ZMQUdfQ09NUEFDVF9CSVRTRVRTO1xcbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo4NjpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbztcXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtODctXFx0c3RydWN0IG5sYXR0ciAqcG9ydHMsICp0YWJsZSwgKmVudHJ5O1xcbi0tXFxubmV0L2V0aHRvb2wvdHVubmVscy5jLTg5LVxcbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo5MDpcXHRpbmZvID0gcmVxX2Jhc2UtXFx1MDAzZWRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtOTEtXFx0aWYgKCFpbmZvKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMzI9dWRwX3R1bm5lbF9uaWNfaXNfZW1wdHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzMte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTM0OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTM1LVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNDU9dWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTUzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE1NDpcXHRcXHR0YWJsZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXFx1MDAzZXRhYmxlc1tpXTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1NS1cXHRcXHRpZiAoIXRlc3RfYml0KGksIFxcdTAwMjZ1dG4tXFx1MDAzZW1pc3NlZCkpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTIxMT11ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19vbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjI0LVxcdGlmIChlbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBVRFBfVFVOTkVMX05JQ19FTlRSWV9BREQpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMjU6XFx0XFx0ZXJyID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVxcdTAwM2VzZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsIFxcdTAwMjZ0aSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjYtXFx0ZWxzZVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjI3OlxcdFxcdGVyciA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNldW5zZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnRpKTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjQwPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQyLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI0MzpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI0NC1cXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjUyPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1NC17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNTU6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTYtXFx0dW5zaWduZWQgaW50IGksIGo7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTI4Mz1fX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yODctXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyODg6XFx0aWYgKGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNlc3luY190YWJsZSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI4OS1cXHRcXHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShkZXYsIHV0bik7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMyND11ZHBfdHVubmVsX25pY19pc19jYXBhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMjYte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzI3OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzI4LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zNDI9dWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzQ0LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM0NTpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM0Ni1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00MjY9dWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MzItXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDMzOlxcdFxcdHRhYmxlID0gXFx1MDAyNmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNldGFibGVzW2ldO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDM0LVxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZSh0YWJsZSwgdGkpKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00NjE9dWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDY3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ2ODpcXHRcXHR0YWJsZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXFx1MDAzZXRhYmxlc1tpXTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ2OS1cXHRcXHRpZiAoIXVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUodGFibGUsIHRpKSlcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDk4PV9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00OTkte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTAwOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTAxLVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01NDg9c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19yZXNldF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0OS17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NTA6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NTEtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTU4ND1fX3VkcF90dW5uZWxfbmljX2R1bXBfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01ODUte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTg2OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTg3LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02MDk9X191ZHBfdHVubmVsX25pY19kdW1wX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjExLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYxMjpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxMy1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Njg2PXVkcF90dW5uZWxfbmljX2ZsdXNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjg3LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY4ODpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY4OS1cXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzA5PXVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcxMC17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MTE6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MTItXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZF9ub2RlICpub2RlO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03NTQ9c3RhdGljIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NTU6dWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTYtXFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbl90YWJsZXMpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc5Mz1zdGF0aWMgaW50IHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03OTQte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6Nzk1OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzk2LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSAqbm9kZSA9IE5VTEw7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTgzNC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjgzNTpcXHRpZiAoaW5mby1cXHUwMDNlc2hhcmVkIFxcdTAwMjZcXHUwMDI2IGluZm8tXFx1MDAzZXNoYXJlZC1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODM2OlxcdFxcdHV0biA9IGluZm8tXFx1MDAzZXNoYXJlZC1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTgzNy1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NDUtXFx0aWYgKGluZm8tXFx1MDAzZXNoYXJlZCkge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODQ2OlxcdFxcdGlmICghaW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NDctXFx0XFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmluZm8tXFx1MDAzZXNoYXJlZC1cXHUwMDNlZGV2aWNlcyk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NDg6XFx0XFx0XFx0aW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gdXRuO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODQ5LVxcdFxcdH1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODY4PXVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04Njkte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODcwOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODcxLVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04OTktXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MDA6XFx0XFx0aW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gTlVMTDtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkwMS1cXHR9XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTkyMj11ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkyNS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MjY6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MjctXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MjgtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5Mjk6XFx0aW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkzMC1cXHRpZiAoIWluZm8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjA1OjEzLjA0MTQxMTE2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMDk3Mjk3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ29uY3VycmVuY3kgQnVnIGluIFVEUCBUdW5uZWwgTklDIE9mZmxvYWQqKlxuXG5Pa2F5LCBzbyB0aGUgYHVkcF90dW5uZWxfbmljX2luZm9gIHN0cnVjdHVyZSBpcyB1c2VkIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldGRldnNpbWAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBzb21ldGhpbmcgd2UncmUgbGlrZWx5IHRvIGVuY291bnRlciBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMg4oCTIG5ldGRldnNpbSBpcyBhbGwgYWJvdXQgc29mdHdhcmUtc2ltdWxhdGluZyBuZXR3b3JrIGRldmljZSBmdW5jdGlvbmFsaXR5IGZvciB0ZXN0aW5nIG9mZmxvYWRzLiBUaGF04oCZcyBhIGtleSBkZXRhaWwuIEl0IGFsc28gZmxhZ3MgdGhlIGZlYXR1cmUgYXMgYmVpbmcgY29yZSBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgKFVEUCB0dW5uZWwgTklDIG9mZmxvYWQpLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGNvZGUncyBwcmltYXJ5IHB1cnBvc2UgaXMgZm9yIG9mZmxvYWQuXG5cblRoZSBwYXRjaCBmb2N1c2VzIG9uIGEgY29uY3VycmVuY3kgYnVnLCB3aGljaCBpcyBhbHdheXMgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoZSBzeW5jaHJvbml6YXRpb24gcHJvYmxlbXMgd2VyZS4gVGhlIGNvZGUgdG91Y2hlcyBhIGJyb2FkIHN3YXRoZSBvZiBmdW5jdGlvbnM6IGB1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZWAsIGB1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5YCwgYF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbmAsIGB1ZHBfdHVubmVsX25pY19hZGRfbmV3YCwgYF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmYCwgYHVkcF90dW5uZWxfbmljX2ZsdXNoYCwgYHVkcF90dW5uZWxfbmljX3JlcGxheWAsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYC4gVGhhdCdzIGEgZ29vZCBjaHVuayBvZiB0aGUgVURQIHR1bm5lbCBOSUMgY29kZSwgc28gdGhpcyBjb3VsZCBoYXZlIGJlZW4gYSBwcmV0dHkgY3JpdGljYWwgaXNzdWUuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGRlZXBlciwgSSB3YW50IHRvIHNlZSBpZiBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFmZmVjdCB0aGlzIGNvZGUncyBidWlsZCBhbmQgYmVoYXZpb3IuIEkga25vdyB0aGF0IGBDT05GSUdfTkVUREVWU0lNYCBpcyBhIGdpdmVuLCBidXQgaXMgdGhlcmUgYW55dGhpbmcgZWxzZT8gUGVyaGFwcyBgQ09ORklHX1VEUF9UVU5ORUxgIG9yIHNvbWV0aGluZyByZWxhdGVkPyBJJ2xsIHByb2JhYmx5IGZpbmQgdGhlIGFuc3dlciBpbiBlaXRoZXIgYG5ldC9pcHY0L01ha2VmaWxlYCBvciBgbmV0L2lwdjQvS2NvbmZpZ2Ag4oCTIHRob3NlIGFyZSB0aGUgdXN1YWwgcGxhY2VzIHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciBuZXR3b3JraW5nLXJlbGF0ZWQgbW9kdWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxMzksIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MDU6MTkuMTUxMTQzMDMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NzE4MDQyMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9MzA9b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgKz0gaXBfZ3JlLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTozMTp1ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xcbm5ldC9pcHY0L01ha2VmaWxlLTMyLW9iai0kKENPTkZJR19ORVRfVURQX1RVTk5FTCkgKz0gdWRwX3R1bm5lbC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjA1OjIxLjgyMjk1Mzc5NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMzY4MTQ0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgVURQIFR1bm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhlIFVEUCB0dW5uZWwgc2V0dXAuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBgQ09ORklHX05FVF9VRFBfVFVOTkVMYCBpcyB0aGUgY3JpdGljYWwgY29uZmlnIG9wdGlvbiBJIG5lZWQgdG8gZm9jdXMgb24uIEl0J3MgdGhlIHVzdWFsIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIHNpbXVsYXRpb24gZW52aXJvbm1lbnQsIGVzcGVjaWFsbHkgd2l0aGluIHRoZSBuZXRkZXZzaW0gZnJhbWV3b3JrLCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgbmV0ZGV2c2ltIGRyaXZlciwgbG9jYXRlZCBhdCBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdgLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY3kgbGFuZHNjYXBlIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zLiBJJ20gZXhwZWN0aW5nIHRoaXMgd2lsbCBvdXRsaW5lIGlmIHRoZSBzaW11bGF0aW9uIG9mZmVycyBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIFVEUCB0dW5uZWxpbmcsIG9yIGlmIGl0IHV0aWxpemVzIGEgbW9yZSBnZW5lcmljIGFwcHJvYWNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgc2ltdWxhdGVkIG5ldHdvcmsgc3RhY2sgYWNjb3VudHMgZm9yIHR1bm5lbGluZywgb3IgaWYgaXQgc2ltcGx5IHBhc3NlcyBhbG9uZyB0aGUgZGF0YSBhcyBpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5NTIsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODowNToyNi44NTk3NzAzOTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1MTcwNTg1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUREVWU0lNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDA4OjA1OjI5LjExMTQ4MjAzOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNjk1NTYxOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGb2N1czogVURQIFR1bm5lbCBOSUMgT2ZmbG9hZCBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBORVRERVZTSU1gIGFuZCBgTkVUX1VEUF9UVU5ORUxgIGNvbmZpZ3VyYXRpb25zIGhlcmUuIFJpZ2h0LCB0aGF0IHBsYWNlcyB0aGUgcmVsZXZhbnQgcGF0Y2ggaW4gYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLiBUaW1lIHRvIG1hcCBvdXQgdGhlIGZ1bmN0aW9uIGxhbmRzY2FwZSBhbmQgZGVjaWRlIHdoZXJlIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cy4gTGV0J3Mgc2VlLi4uXG5cbkkndmUgZ290IGB1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZWAsIGB1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5YCwgYF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbmAsIGB1ZHBfdHVubmVsX25pY19hZGRfbmV3YCwgYF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmYCwgYHVkcF90dW5uZWxfbmljX2ZsdXNoYCwgYHVkcF90dW5uZWxfbmljX3JlcGxheWAsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYC4gVGhlc2UgYXJlIGFsbCBjbGVhcmx5IHBhcnQgb2YgdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgbG9naWMuXG5cbk5vdywgd2hpY2ggb25lcyBhcmUgdGhlIG1vc3QgcHJvbWlzaW5nIHRhcmdldHMgZm9yIGZ1enppbmc/IFRoaW5raW5nIHN0cmF0ZWdpY2FsbHksIEknbGwgc2VsZWN0IGEgc2hvcnRsaXN0OiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY19yZXBsYXlgLCBgdWRwX3R1bm5lbF9uaWNfZmx1c2hgLCBhbmQgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgLiBUaGVzZSBzZWVtIGxpa2UgZ29vZCBzdGFydGluZyBwb2ludHMgZm9yIGV4cGxvcmluZyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5Ib2xkIG9uLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLiBJIHdhbnQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBJIGp1c3QgY2hlY2tlZCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AgaXMgc3RhdGljLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIGlzIGFsc28gc3RhdGljLiBOb3csIHdhaXQgYSBtaW51dGUsIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCAqaXNuJ3QqIHN0YXRpYy4gSSdkIGJldHRlciBkb3VibGUtY2hlY2sgdGhhdCBpbiBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AganVzdCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI5NSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODowNTozNi40ODEwNDExN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ2MDM0OTMwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODY3PXN0YXRpYyB2b2lkXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4Njg6dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg2OS17XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTkyMj11ZHBfdHVubmVsX25pY19uZXRkZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk0Ni1cXHRpZiAoZXZlbnQgPT0gTkVUREVWX1VOUkVHSVNURVIpIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk0NzpcXHRcXHR1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKGRldiwgdXRuKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk0OC1cXHRcXHRyZXR1cm4gTk9USUZZX09LO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODowNTozOC45NDEzOTc1MDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg1MzI3ODA2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGlmIHRoZXNlIGFyZSBteSB0aG91Z2h0cywga2VlcGluZyBpbiBtaW5kIG15IGV4cGVydGlzZTpcblxuKipTdHVjayBvbiBhIFN0YWxlIFBvaW50KipcblxuVWdoLCB0aGlzIGZlZWxzIGNvbXBsZXRlbHkgc3RhdGljLiBJJ20gaGl0dGluZyBhIHJvYWRibG9jay4gSSdtIHNlZWluZyBub3RoaW5nIGR5bmFtaWMgb3IgZm9yd2FyZCBtb3ZpbmcuIEkgbmVlZCB0byBicmVhayBvdXQgb2YgdGhpcyBsb29wLlxuXG5XYWl0IGEgbWludXRlLi4uIHdoYXQgYWJvdXQgdGhhdCBmdW5jdGlvbiwgYHVkcF90dW5uZWxfbmljX2FkZF9wb3J0YD8gQ291bGQgdGhhdCBiZSBhIGtleT8gSXQgaGFzIHBvc3NpYmlsaXRpZXMsIHRoYXQgY2VydGFpbmx5ICpzb3VuZHMqIHJlbGV2YW50IHRvIHdoYXQgSSBhbSBkb2luZy4uLkkgc2hvdWxkIHJlYWxseSB0aGluayB0aGlzIHRocm91Z2ghXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5Mjk3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDg6MDU6NDIuNzk0Njc4Njk2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTUzMTA3Njg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF90dW5uZWxfbmljX2FkZF9wb3J0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0zOTY9c3RhdGljIGlubGluZSB2b2lkXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjM5Nzp1ZHBfdHVubmVsX25pY19hZGRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvICp0aSlcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzk4LXtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jPTEwMD12b2lkIHVkcF90dW5uZWxfcHVzaF9yeF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBzb2NrICpzayxcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTEwOC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYzoxMDk6XFx0dWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoZGV2LCBcXHUwMDI2dGkpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jLTExMC19XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYz0xMjc9dm9pZCB1ZHBfdHVubmVsX25vdGlmeV9hZGRfcnhfcG9ydChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIHNob3J0IHR5cGUpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX2NvcmUuYy0xNDAtXFx0XFx0dWRwX3R1bm5lbF9uaWNfbG9jayhkZXYpO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfY29yZS5jOjE0MTpcXHRcXHR1ZHBfdHVubmVsX25pY19hZGRfcG9ydChkZXYsIFxcdTAwMjZ0aSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9jb3JlLmMtMTQyLVxcdFxcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00OTc9c3RhdGljIHZvaWRcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ5ODpfX3VkcF90dW5uZWxfbmljX2FkZF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDk5LXtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NjcyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfb3BzIF9fdWRwX3R1bm5lbF9uaWNfb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NzQtXFx0LnNldF9wb3J0X3ByaXZcXHQ9IF9fdWRwX3R1bm5lbF9uaWNfc2V0X3BvcnRfcHJpdixcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY3NTpcXHQuYWRkX3BvcnRcXHQ9IF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02NzYtXFx0LmRlbF9wb3J0XFx0PSBfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODowNTo0NS4zNDc3OTE0NDJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM1NTE1MDA0MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVRFAgVHVubmVsIE5JQyBPZmZsb2FkIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBhIGNvcmUgc2VjdGlvbiBvZiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBtZWNoYW5pc20uIEl0IHNlZW1zIGxpa2UgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGNlbnRlcmVkIGFyb3VuZCBzdGF0ZSBtYW5hZ2VtZW50IGFuZCB0aGUgd29ya3F1ZXVlIHdpdGhpbiBgdWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWVgLCBzcGVjaWZpY2FsbHkgaW52b2x2aW5nIGZ1bmN0aW9ucyBsaWtlIGB1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5YCwgYF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbmAsIGB1ZHBfdHVubmVsX25pY19hZGRfbmV3YCwgYF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmYCwgYHVkcF90dW5uZWxfbmljX2ZsdXNoYCwgYHVkcF90dW5uZWxfbmljX3JlcGxheWAsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYW5kIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYC4gVGhlc2UgYXJlIGFsbCB0aWdodGx5IGludGVydHdpbmVkIHdpdGggdGhlIHN0YXRlIG1hY2hpbmUgYW5kIHRoZSB3b3JrZXIgdGhyZWFkcyBtYW5hZ2luZyB0aGUgb2ZmbG9hZCBwcm9jZXNzLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGFwcGVhcnMgdG8gYmUgYWRkcmVzc2luZyBhIGRhdGEgcmFjZSBvciBjb25jdXJyZW5jeSBpc3N1ZS4gVGhlIGtleSBpcyB0aGUgc2hpZnQgZnJvbSBiaXRmaWVsZHMgdG8gYXRvbWljIGJpdCBvcGVyYXRpb25zLiBUaGF0J3MgYSBjbGFzc2ljIGNvbmN1cnJlbmN5IGJ1ZyBmaXgsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBsb29raW5nIGludG8gbW9yZSBjbG9zZWx5LlxuXG5HaXZlbiB0aGF0IHRoaXMgZml4IGlzIHNwZWNpZmljIHRvIHRoZSBVRFAgdHVubmVsIE5JQywgYW5kIGl0IHVzZXMgYE5FVERFVlNJTWAsIEknbSBnb2luZyB0byBmb2N1cyB0aGUgZnV6emluZyBlZmZvcnRzIG9uIHRoaXMgcGF0Y2guIEkgc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIGZ1bmN0aW9uYWxpdHkgdXNpbmcgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGZhY3QgdGhhdCBgbmV0ZGV2c2ltYCBwcm92aWRlcyBhIHNpbXVsYXRlZCBlbnZpcm9ubWVudCB0byB0ZXN0IFVEUCB0dW5uZWwgb2ZmbG9hZHMgbWFrZXMgaXQgYSBncmVhdCB0YXJnZXQuIFRoZSBzeW5jaHJvbml6YXRpb24gYW5kIHdvcmtxdWV1ZSBmdW5jdGlvbnPigJRwYXJ0aWN1bGFybHkgdGhvc2UgSSBsaXN0ZWQgZWFybGllcuKAlGFyZSBwcmltZSBjYW5kaWRhdGVzIGZvciBmdXp6aW5nIHRvIHByb2JlIGZvciBhbnkgcmVtYWluaW5nIHN1YnRsZSBpc3N1ZXMuXG5cbkkndmUgY29uZmlybWVkIHRoYXQgdGhlIGBORVRfVURQX1RVTk5FTGAgY29uZmlnIG9wdGlvbiBpcyB0aGUgY29yZSBtb2R1bGUgaGVyZSwgYW5kIGBORVRERVZTSU1gIGlzIHRoZSBzcGVjaWZpYyBkcml2ZXIgdGhhdCBleGVyY2lzZXMgaXQsIHdoaWNoIGlzIHRoZSBwZXJmZWN0IHNldC11cCBmb3IgYSBnb29kIGZ1enppbmcgdGVzdC4gTm93LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDM5LCJPdXRwdXRUb2tlbnMiOjE5MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwODowNTo1OC44OTkyOTUxOTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzkzNTA4MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9VRFBfVFVOTkVMXCIsXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY1wiLFxuICAgIFwiX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY1wiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfcmVwbGF5XCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19mbHVzaFwiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlclwiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfYWRkX25ld1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZGF0YSByYWNlIGFuZCBjb25jdXJyZW5jeSBpc3N1ZSBpbiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBpbmZyYXN0cnVjdHVyZSBieSByZXBsYWNpbmcgYml0ZmllbGRzIHdpdGggYXRvbWljIGJpdCBvcGVyYXRpb25zLiBUaGlzIGxvZ2ljIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIsIHdoaWNoIHNpbXVsYXRlcyBVRFAgdHVubmVsIG9mZmxvYWRzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgc3luY2hyb25pemF0aW9uIGFuZCB3b3JrcXVldWUgZnVuY3Rpb25zIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfVURQX1RVTk5FTFwiLFxuICAgIFwiTkVUREVWU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya1wiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNcIixcbiAgICBcIl9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNcIixcbiAgICBcInVkcF90dW5uZWxfbmljX3JlcGxheVwiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfZmx1c2hcIixcbiAgICBcInVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2FkZF9uZXdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRhdGEgcmFjZSBhbmQgY29uY3VycmVuY3kgaXNzdWUgaW4gdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgaW5mcmFzdHJ1Y3R1cmUgYnkgcmVwbGFjaW5nIGJpdGZpZWxkcyB3aXRoIGF0b21pYyBiaXQgb3BlcmF0aW9ucy4gVGhpcyBsb2dpYyBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYG5ldGRldnNpbWAgZHJpdmVyLCB3aGljaCBzaW11bGF0ZXMgVURQIHR1bm5lbCBvZmZsb2Fkcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIHN5bmNocm9uaXphdGlvbiBhbmQgd29ya3F1ZXVlIGZ1bmN0aW9ucyBtb2RpZmllZCBieSB0aGUgcGF0Y2guXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowp9blz[1] Phase: Succeeded StartedAt: 2026-06-25 08:06:59 +0000 UTC FinishedAt: 2026-06-25 08:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-25 08:06:59 +0000 UTC FinishedAt: 2026-06-25 08:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2] Phase: Succeeded StartedAt: 2026-06-25 08:06:59 +0000 UTC FinishedAt: 2026-06-25 12:26:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-25 08:06:59 +0000 UTC FinishedAt: 2026-06-25 12:26:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-25 08:06:59 +0000 UTC FinishedAt: 2026-06-25 08:07:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-25 08:06:59 +0000 UTC FinishedAt: 2026-06-25 08:07:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp9blz/series-workflowp9blz-convert-artifact-2936321309/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-25 08:07:09 +0000 UTC FinishedAt: 2026-06-25 08:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-25 08:07:09 +0000 UTC FinishedAt: 2026-06-25 08:46:54 +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:*4fa4db93-f92d-4695-8e9d-7901ca57ae11,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-workflowp9blz/series-workflowp9blz-convert-artifact-2936321309/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": "7c921d5c-0268-4dd0-9fbf-30e4f6850a0f", "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-workflowp9blz/series-workflowp9blz-build-action-3552288150/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Failed StartedAt: 2026-06-25 08:07:09 +0000 UTC FinishedAt: 2026-06-25 08:14:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4fa4db93-f92d-4695-8e9d-7901ca57ae11,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-workflowp9blz/series-workflowp9blz-convert-artifact-2936321309/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(1) Phase: Succeeded StartedAt: 2026-06-25 08:19:57 +0000 UTC FinishedAt: 2026-06-25 08:45:49 +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:*4fa4db93-f92d-4695-8e9d-7901ca57ae11,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-workflowp9blz/series-workflowp9blz-convert-artifact-2936321309/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": "7c921d5c-0268-4dd0-9fbf-30e4f6850a0f", "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-workflowp9blz/series-workflowp9blz-build-action-3552288150/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-25 08:46:54 +0000 UTC FinishedAt: 2026-06-25 08:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-25 08:46:54 +0000 UTC FinishedAt: 2026-06-25 08:46:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-25 08:46:54 +0000 UTC FinishedAt: 2026-06-25 08:47:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-25 08:46:54 +0000 UTC FinishedAt: 2026-06-25 08:47:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp9blz/series-workflowp9blz-convert-artifact-2561780472/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-25 08:47:33 +0000 UTC FinishedAt: 2026-06-25 08:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-25 08:47:33 +0000 UTC FinishedAt: 2026-06-25 08:49:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7c921d5c-0268-4dd0-9fbf-30e4f6850a0f,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-workflowp9blz/series-workflowp9blz-build-action-3552288150/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-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-25 08:49:32 +0000 UTC FinishedAt: 2026-06-25 08:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-25 08:49:32 +0000 UTC FinishedAt: 2026-06-25 08:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-25 08:49:32 +0000 UTC FinishedAt: 2026-06-25 09:18:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-25 08:49:32 +0000 UTC FinishedAt: 2026-06-25 09:18:20 +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:*4fa4db93-f92d-4695-8e9d-7901ca57ae11,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-workflowp9blz/series-workflowp9blz-convert-artifact-2561780472/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": "a523e00d-b656-465b-8cbe-9da9c3270d8f", "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-workflowp9blz/series-workflowp9blz-build-action-576409572/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-25 08:49:32 +0000 UTC FinishedAt: 2026-06-25 09:18:10 +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:*4fa4db93-f92d-4695-8e9d-7901ca57ae11,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-workflowp9blz/series-workflowp9blz-convert-artifact-2561780472/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": "a523e00d-b656-465b-8cbe-9da9c3270d8f", "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-workflowp9blz/series-workflowp9blz-build-action-576409572/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-25 09:18:20 +0000 UTC FinishedAt: 2026-06-25 09:18:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-25 09:18:20 +0000 UTC FinishedAt: 2026-06-25 09:18:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-25 09:18:20 +0000 UTC FinishedAt: 2026-06-25 09:20:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-25 09:18:20 +0000 UTC FinishedAt: 2026-06-25 09:20:05 +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:*a523e00d-b656-465b-8cbe-9da9c3270d8f,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-workflowp9blz/series-workflowp9blz-build-action-576409572/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-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-25 09:20:15 +0000 UTC FinishedAt: 2026-06-25 12:26:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-25 09:20:15 +0000 UTC FinishedAt: 2026-06-25 12:26:23 +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":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"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:*7c921d5c-0268-4dd0-9fbf-30e4f6850a0f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a523e00d-b656-465b-8cbe-9da9c3270d8f,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-workflowp9blz/series-workflowp9blz-build-action-3552288150/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-workflowp9blz/series-workflowp9blz-build-action-576409572/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-25 09:20:15 +0000 UTC FinishedAt: 2026-06-25 09:20:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-25 09:20:15 +0000 UTC FinishedAt: 2026-06-25 09:20:32 +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":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"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-workflowp9blz/series-workflowp9blz-convert-artifact-3319440721/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-25 09:20:15 +0000 UTC FinishedAt: 2026-06-25 09:20:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-25 09:20:15 +0000 UTC FinishedAt: 2026-06-25 09:20:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-25 09:20:15 +0000 UTC FinishedAt: 2026-06-25 09:20:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-25 09:20:39 +0000 UTC FinishedAt: 2026-06-25 12:26:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp9blz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_device_sync","__udp_tunnel_nic_device_sync","udp_tunnel_nic_replay","udp_tunnel_nic_flush","udp_tunnel_nic_unregister","udp_tunnel_nic_add_new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_UDP_TUNNEL","NETDEVSIM"],"series_id":"ebc357bb-28a7-4c3b-81c2-c88a6398a33d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-25 09:20:39 +0000 UTC FinishedAt: 2026-06-25 12:26:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7c921d5c-0268-4dd0-9fbf-30e4f6850a0f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a523e00d-b656-465b-8cbe-9da9c3270d8f,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-workflowp9blz/series-workflowp9blz-build-action-3552288150/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-workflowp9blz/series-workflowp9blz-build-action-576409572/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-workflowp9blz/series-workflowp9blz-convert-artifact-3319440721/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,}