Name: series-workflowd5s67 Phase: Succeeded StartedAt: 2026-07-20 18:26:20 +0000 UTC FinishedAt: 2026-07-20 23:10:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[0] Phase: Succeeded StartedAt: 2026-07-20 18:26:20 +0000 UTC FinishedAt: 2026-07-20 18:46:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[0].run-triage Phase: Succeeded StartedAt: 2026-07-20 18:26:20 +0000 UTC FinishedAt: 2026-07-20 18:46:52 +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": "e13caf1c26587434f0b768193100440939c0fb91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE", "IPV6_GRE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e13caf1c26587434f0b768193100440939c0fb91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE", "IPV6_GRE" ], "series_id": "d3610706-76de-4534-a8fd-5a53db5cbcf2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__gre_xmit", "ipgre_xmit", "erspan_xmit", "gre_tap_xmit", "ipgre_fill_info", "erspan_fill_info", "__gre6_xmit", "ip6erspan_tunnel_xmit", "ip6gre_fill_info" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtJUFY2X0dSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3htaXQmIzM0OywKICAgICYjMzQ7aXBncmVfeG1pdCYjMzQ7LAogICAgJiMzNDtlcnNwYW5feG1pdCYjMzQ7LAogICAgJiMzNDtncmVfdGFwX3htaXQmIzM0OywKICAgICYjMzQ7aXBncmVfZmlsbF9pbmZvJiMzNDssCiAgICAmIzM0O2Vyc3Bhbl9maWxsX2luZm8mIzM0OywKICAgICYjMzQ7X19ncmU2X3htaXQmIzM0OywKICAgICYjMzQ7aXA2ZXJzcGFuX3R1bm5lbF94bWl0JiMzNDssCiAgICAmIzM0O2lwNmdyZV9maWxsX2luZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzYCB3YXMgbW9kaWZpZWQgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIG5ldGxpbmsgaW5mbyBkdW1waW5nLCB3aGljaCBjb3VsZCBjYXVzZSByYWNlIGNvbmRpdGlvbnMgb3IgdW5pbnRlbmRlZCBzdGF0ZSBjaGFuZ2VzIGZvciBHUkUgYW5kIEVSU1BBTiB0dW5uZWxzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYGZsYWdzYCB2YXJpYWJsZSB0byBob2xkIHRoZSBmbGFncyBkdXJpbmcgdHJhbnNtaXNzaW9uIGFuZCBjb3JyZWN0bHkgc2V0cyB0aGUgYElQX1RVTk5FTF9LRVlfQklUYCBpbiBgaXBncmVfZmlsbF9pbmZvYCBpbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgdHVubmVsIHBhcmFtZXRlcnMgaW4gYGVyc3Bhbl9maWxsX2luZm9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgR1JFL0VSU1BBTiB0dW5uZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBidWdzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODRlNWU1MTQ4OTNhMGExY2E2MTgyODU2YWMxZTBlYWRmNDQ4NmNhMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDIwIDE4OjQ2OjA0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmNcbmluZGV4IDNlZmRmYjRmZmEyMTEyLi40NDJhMmM5NTEzZTg0ZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF9ncmUuY1xuQEAgLTQ3NSwxNSAmIzQzOzQ3NSwxMiBAQCBzdGF0aWMgaW50IGdyZV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcbiBzdGF0aWMgdm9pZCBfX2dyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaXBoZHIgKnRubF9wYXJhbXMsXG4tXHRcdCAgICAgICBfX2JlMTYgcHJvdG8pXG4mIzQzO1x0XHQgICAgICAgX19iZTE2IHByb3RvLCBjb25zdCB1bnNpZ25lZCBsb25nICpmbGFncylcbiB7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xuLVx0SVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1MoZmxhZ3MpO1xuLVxuLVx0aXBfdHVubmVsX2ZsYWdzX2NvcHkoZmxhZ3MsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKTtcbiBcbiBcdC8qIFB1c2ggR1JFIGhlYWRlci4gKi9cbi1cdGdyZV9idWlsZF9oZWFkZXIoc2tiLCB0dW5uZWwtXHUwMDNldHVuX2hsZW4sXG4mIzQzO1x0Z3JlX2J1aWxkX2hlYWRlcihza2IsIGdyZV9jYWxjX2hsZW4oZmxhZ3MpLFxuIFx0XHRcdCBmbGFncywgcHJvdG8sIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2tleSxcbiBcdFx0XHQgdGVzdF9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKSA/XG4gXHRcdFx0IGh0b25sKGF0b21pY19mZXRjaF9pbmMoXHUwMDI2dHVubmVsLVx1MDAzZW9fc2Vxbm8pKSA6IDApO1xuQEAgLTY1NCw2ICYjNDM7NjUxLDcgQEAgc3RhdGljIG5ldGRldl90eF90IGlwZ3JlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiB7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0Y29uc3Qgc3RydWN0IGlwaGRyICp0bmxfcGFyYW1zO1xuJiM0MztcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcbiBcbiBcdGlmICghcHNrYl9pbmV0X21heV9wdWxsKHNrYikpXG4gXHRcdGdvdG8gZnJlZV9za2I7XG5AQCAtNjYzLDYgJiM0Mzs2NjEsOCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIFx0fVxuIFxuJiM0MztcdGlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4mIzQzO1xuIFx0aWYgKGRldi1cdTAwM2VoZWFkZXJfb3BzKSB7XG4gXHRcdGludCBwdWxsX2xlbiA9IHR1bm5lbC1cdTAwM2VobGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpO1xuIFxuQEAgLTY4OCwxMSAmIzQzOzY4OCwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR0bmxfcGFyYW1zID0gXHUwMDI2dHVubmVsLVx1MDAzZXBhcm1zLmlwaDtcbiBcdH1cbiBcbi1cdGlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULFxuLVx0XHRcdFx0XHQgICAgICB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncykpKVxuJiM0MztcdGlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncykpKVxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuIFxuLVx0X19ncmVfeG1pdChza2IsIGRldiwgdG5sX3BhcmFtcywgc2tiLVx1MDAzZXByb3RvY29sKTtcbiYjNDM7XHRfX2dyZV94bWl0KHNrYiwgZGV2LCB0bmxfcGFyYW1zLCBza2ItXHUwMDNlcHJvdG9jb2wsIGZsYWdzKTtcbiBcdHJldHVybiBORVRERVZfVFhfT0s7XG4gXG4gZnJlZV9za2I6XG5AQCAtNzA1LDYgJiM0Mzs3MDQsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZXJzcGFuX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xuJiM0MztcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcbiBcdGJvb2wgdHJ1bmNhdGUgPSBmYWxzZTtcbiBcdF9fYmUxNiBwcm90bztcbiBcbkBAIC03MjgsMTAgJiM0Mzs3MjgsMTIgQEAgc3RhdGljIG5ldGRldl90eF90IGVyc3Bhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHRydW5jYXRlID0gdHJ1ZTtcbiBcdH1cbiBcbiYjNDM7XHRpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xuJiM0MztcbiBcdC8qIFB1c2ggRVJTUEFOIGhlYWRlciAqL1xuIFx0aWYgKHR1bm5lbC1cdTAwM2VlcnNwYW5fdmVyID09IDApIHtcbiBcdFx0cHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pO1xuLVx0XHRfX2NsZWFyX2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xuJiM0MztcdFx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKTtcbiBcdH0gZWxzZSBpZiAodHVubmVsLVx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xuIFx0XHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsLVx1MDAzZXBhcm1zLm9fa2V5KSxcbiBcdFx0XHRcdCAgICB0dW5uZWwtXHUwMDNlaW5kZXgsXG5AQCAtNzQ2LDggJiM0Mzs3NDgsOSBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZXJzcGFuX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0Z290byBmcmVlX3NrYjtcbiBcdH1cbiBcbi1cdF9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4tXHRfX2dyZV94bWl0KHNrYiwgZGV2LCBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMuaXBoLCBwcm90byk7XG4mIzQzO1x0X19jbGVhcl9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncyk7XG4mIzQzO1x0X19jbGVhcl9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIGZsYWdzKTtcbiYjNDM7XHRfX2dyZV94bWl0KHNrYiwgZGV2LCBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMuaXBoLCBwcm90bywgZmxhZ3MpO1xuIFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbiBcbiBmcmVlX3NrYjpcbkBAIC03NjAsNiAmIzQzOzc2Myw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBncmVfdGFwX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0c3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhmbGFncyk7XG4gXG4gXHRpZiAoIXBza2JfaW5ldF9tYXlfcHVsbChza2IpKVxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuQEAgLTc2OSwxNCAmIzQzOzc3MywxNSBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZ3JlX3RhcF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHJldHVybiBORVRERVZfVFhfT0s7XG4gXHR9XG4gXG4tXHRpZiAoZ3JlX2hhbmRsZV9vZmZsb2Fkcyhza2IsIHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCxcbi1cdFx0XHRcdFx0ICAgICAgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpKSlcbiYjNDM7XHRpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRpZiAoZ3JlX2hhbmRsZV9vZmZsb2Fkcyhza2IsIHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgZmxhZ3MpKSlcbiBcdFx0Z290byBmcmVlX3NrYjtcbiBcbiBcdGlmIChza2JfY293X2hlYWQoc2tiLCBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tKSlcbiBcdFx0Z290byBmcmVlX3NrYjtcbiBcbi1cdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFx1MDAyNnR1bm5lbC1cdTAwM2VwYXJtcy5pcGgsIGh0b25zKEVUSF9QX1RFQikpO1xuJiM0MztcdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFx1MDAyNnR1bm5lbC1cdTAwM2VwYXJtcy5pcGgsIGh0b25zKEVUSF9QX1RFQiksIGZsYWdzKTtcbiBcdHJldHVybiBORVRERVZfVFhfT0s7XG4gXG4gZnJlZV9za2I6XG5AQCAtMTU2MCwxMiAmIzQzOzE1NjUsMTUgQEAgc3RhdGljIHNpemVfdCBpcGdyZV9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIHN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCA9IFx1MDAyNnQtXHUwMDNlcGFybXM7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAgPSBcdTAwMjZ0LVx1MDAzZXBhcm1zO1xuIFx0SVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1Mob19mbGFncyk7XG4gXG4gXHRpcF90dW5uZWxfZmxhZ3NfY29weShvX2ZsYWdzLCBwLVx1MDAzZW9fZmxhZ3MpO1xuIFxuJiM0MztcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgIT0gMCBcdTAwMjZcdTAwMjYgIXQtXHUwMDNlY29sbGVjdF9tZClcbiYjNDM7XHRcdF9fc2V0X2JpdChJUF9UVU5ORUxfS0VZX0JJVCwgb19mbGFncyk7XG4mIzQzO1xuIFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9HUkVfTElOSywgcC1cdTAwM2VsaW5rKSB8fFxuIFx0ICAgIG5sYV9wdXRfYmUxNihza2IsIElGTEFfR1JFX0lGTEFHUyxcbiBcdFx0XHQgZ3JlX3RubF9mbGFnc190b19ncmVfZmxhZ3MocC1cdTAwM2VpX2ZsYWdzKSkgfHxcbkBAIC0xNjA4LDEyICYjNDM7MTYxNiw5IEBAIHN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gc3RhdGljIGludCBlcnNwYW5fZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4gXG4gXHRpZiAodC1cdTAwM2VlcnNwYW5fdmVyIFx1MDAzYz0gMikge1xuLVx0XHRpZiAodC1cdTAwM2VlcnNwYW5fdmVyICE9IDAgXHUwMDI2XHUwMDI2ICF0LVx1MDAzZWNvbGxlY3RfbWQpXG4tXHRcdFx0X19zZXRfYml0KElQX1RVTk5FTF9LRVlfQklULCB0LVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xuLVxuIFx0XHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9WRVIsIHQtXHUwMDNlZXJzcGFuX3ZlcikpXG4gXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2dyZS5jIGIvbmV0L2lwdjYvaXA2X2dyZS5jXG5pbmRleCA3YzA5YTI2OWIzNTIxNi4uOWU2OGFmZWM5ZGNlNDEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfZ3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9ncmUuY1xuQEAgLTc3Nyw3ICYjNDM7Nzc3LDcgQEAgc3RhdGljIG5ldGRldl90eF90IF9fZ3JlNl94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRcdGlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4gXG4tXHRcdGdyZV9idWlsZF9oZWFkZXIoc2tiLCB0dW5uZWwtXHUwMDNldHVuX2hsZW4sIGZsYWdzLFxuJiM0MztcdFx0Z3JlX2J1aWxkX2hlYWRlcihza2IsIGdyZV9jYWxjX2hsZW4oZmxhZ3MpLCBmbGFncyxcbiBcdFx0XHRcdCBwcm90b2NvbCwgdHVubmVsLVx1MDAzZXBhcm1zLm9fa2V5LFxuIFx0XHRcdFx0IHRlc3RfYml0KElQX1RVTk5FTF9TRVFfQklULCBmbGFncykgP1xuIFx0XHRcdFx0IGh0b25sKGF0b21pY19mZXRjaF9pbmMoXHUwMDI2dHVubmVsLVx1MDAzZW9fc2Vxbm8pKSA6XG5AQCAtOTY0LDcgJiM0Mzs5NjQsNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXA2ZXJzcGFuX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA/OiB0LVx1MDAzZWhsZW4pKVxuIFx0XHRnb3RvIHR4X2VycjtcbiBcbi1cdF9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCB0LVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xuIFx0SVBDQihza2IpLVx1MDAzZWZsYWdzID0gMDtcbiBcbiBcdC8qIEZvciBjb2xsZWN0X21kIG1vZGUsIGRlcml2ZSBmbDYgZnJvbSB0aGUgdHVubmVsIGtleSxcbkBAIC0yMTE1LDggJiM0MzsyMTE0LDggQEAgc3RhdGljIHNpemVfdCBpcDZncmVfZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBzdGF0aWMgaW50IGlwNmdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4tXHRzdHJ1Y3QgaXA2X3RubCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRzdHJ1Y3QgX19pcDZfdG5sX3Bhcm0gKnAgPSBcdTAwMjZ0LVx1MDAzZXBhcm1zO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBpcDZfdG5sICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgX19pcDZfdG5sX3Bhcm0gKnAgPSBcdTAwMjZ0LVx1MDAzZXBhcm1zO1xuIFx0SVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1Mob19mbGFncyk7XG4gXG4gXHRpcF90dW5uZWxfZmxhZ3NfY29weShvX2ZsYWdzLCBwLVx1MDAzZW9fZmxhZ3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7SVBWNl9HUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2dyZV94bWl0JiMzNDssCiAgICAmIzM0O2lwZ3JlX3htaXQmIzM0OywKICAgICYjMzQ7ZXJzcGFuX3htaXQmIzM0OywKICAgICYjMzQ7Z3JlX3RhcF94bWl0JiMzNDssCiAgICAmIzM0O2lwZ3JlX2ZpbGxfaW5mbyYjMzQ7LAogICAgJiMzNDtlcnNwYW5fZmlsbF9pbmZvJiMzNDssCiAgICAmIzM0O19fZ3JlNl94bWl0JiMzNDssCiAgICAmIzM0O2lwNmVyc3Bhbl90dW5uZWxfeG1pdCYjMzQ7LAogICAgJiMzNDtpcDZncmVfZmlsbF9pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFnc2Agd2FzIG1vZGlmaWVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGFuZCBuZXRsaW5rIGluZm8gZHVtcGluZywgd2hpY2ggY291bGQgY2F1c2UgcmFjZSBjb25kaXRpb25zIG9yIHVuaW50ZW5kZWQgc3RhdGUgY2hhbmdlcyBmb3IgR1JFIGFuZCBFUlNQQU4gdHVubmVscy4gSXQgaW50cm9kdWNlcyBhIGxvY2FsIGBmbGFnc2AgdmFyaWFibGUgdG8gaG9sZCB0aGUgZmxhZ3MgZHVyaW5nIHRyYW5zbWlzc2lvbiBhbmQgY29ycmVjdGx5IHNldHMgdGhlIGBJUF9UVU5ORUxfS0VZX0JJVGAgaW4gYGlwZ3JlX2ZpbGxfaW5mb2AgaW5zdGVhZCBvZiBtb2RpZnlpbmcgdGhlIHR1bm5lbCBwYXJhbWV0ZXJzIGluIGBlcnNwYW5fZmlsbF9pbmZvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEdSRS9FUlNQQU4gdHVubmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgYnVncyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODRlNWU1MTQ4OTNhMGExY2E2MTgyODU2YWMxZTBlYWRmNDQ4NmNhMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDIwIDE4OjQ2OjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZ3JlLmMgYi9uZXQvaXB2NC9pcF9ncmUuYwppbmRleCAzZWZkZmI0ZmZhMjExMi4uNDQyYTJjOTUxM2U4NGUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwX2dyZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX2dyZS5jCkBAIC00NzUsMTUgJiM0Mzs0NzUsMTIgQEAgc3RhdGljIGludCBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IpCiAKIHN0YXRpYyB2b2lkIF9fZ3JlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJICAgICAgIGNvbnN0IHN0cnVjdCBpcGhkciAqdG5sX3BhcmFtcywKLQkJICAgICAgIF9fYmUxNiBwcm90bykKJiM0MzsJCSAgICAgICBfX2JlMTYgcHJvdG8sIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmZsYWdzKQogewogCXN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7Ci0JSVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1MoZmxhZ3MpOwotCi0JaXBfdHVubmVsX2ZsYWdzX2NvcHkoZmxhZ3MsIHR1bm5lbC0mZ3Q7cGFybXMub19mbGFncyk7CiAKIAkvKiBQdXNoIEdSRSBoZWFkZXIuICovCi0JZ3JlX2J1aWxkX2hlYWRlcihza2IsIHR1bm5lbC0mZ3Q7dHVuX2hsZW4sCiYjNDM7CWdyZV9idWlsZF9oZWFkZXIoc2tiLCBncmVfY2FsY19obGVuKGZsYWdzKSwKIAkJCSBmbGFncywgcHJvdG8sIHR1bm5lbC0mZ3Q7cGFybXMub19rZXksCiAJCQkgdGVzdF9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKSA/CiAJCQkgaHRvbmwoYXRvbWljX2ZldGNoX2luYygmYW1wO3R1bm5lbC0mZ3Q7b19zZXFubykpIDogMCk7CkBAIC02NTQsNiAmIzQzOzY1MSw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBpcGdyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiB7CiAJc3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAljb25zdCBzdHJ1Y3QgaXBoZHIgKnRubF9wYXJhbXM7CiYjNDM7CUlQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTsKIAogCWlmICghcHNrYl9pbmV0X21heV9wdWxsKHNrYikpCiAJCWdvdG8gZnJlZV9za2I7CkBAIC02NjMsNiAmIzQzOzY2MSw4IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBpcGdyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJCXJldHVybiBORVRERVZfVFhfT0s7CiAJfQogCiYjNDM7CWlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtJmd0O3Bhcm1zLm9fZmxhZ3MpOwomIzQzOwogCWlmIChkZXYtJmd0O2hlYWRlcl9vcHMpIHsKIAkJaW50IHB1bGxfbGVuID0gdHVubmVsLSZndDtobGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpOwogCkBAIC02ODgsMTEgJiM0Mzs2ODgsMTAgQEAgc3RhdGljIG5ldGRldl90eF90IGlwZ3JlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJdG5sX3BhcmFtcyA9ICZhbXA7dHVubmVsLSZndDtwYXJtcy5pcGg7CiAJfQogCi0JaWYgKGdyZV9oYW5kbGVfb2ZmbG9hZHMoc2tiLCB0ZXN0X2JpdChJUF9UVU5ORUxfQ1NVTV9CSVQsCi0JCQkJCSAgICAgIHR1bm5lbC0mZ3Q7cGFybXMub19mbGFncykpKQomIzQzOwlpZiAoZ3JlX2hhbmRsZV9vZmZsb2Fkcyhza2IsIHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgZmxhZ3MpKSkKIAkJZ290byBmcmVlX3NrYjsKIAotCV9fZ3JlX3htaXQoc2tiLCBkZXYsIHRubF9wYXJhbXMsIHNrYi0mZ3Q7cHJvdG9jb2wpOwomIzQzOwlfX2dyZV94bWl0KHNrYiwgZGV2LCB0bmxfcGFyYW1zLCBza2ItJmd0O3Byb3RvY29sLCBmbGFncyk7CiAJcmV0dXJuIE5FVERFVl9UWF9PSzsKIAogZnJlZV9za2I6CkBAIC03MDUsNiAmIzQzOzcwNCw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBlcnNwYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJSVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1MoZmxhZ3MpOwogCWJvb2wgdHJ1bmNhdGUgPSBmYWxzZTsKIAlfX2JlMTYgcHJvdG87CiAKQEAgLTcyOCwxMCAmIzQzOzcyOCwxMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZXJzcGFuX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJdHJ1bmNhdGUgPSB0cnVlOwogCX0KIAomIzQzOwlpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLSZndDtwYXJtcy5vX2ZsYWdzKTsKJiM0MzsKIAkvKiBQdXNoIEVSU1BBTiBoZWFkZXIgKi8KIAlpZiAodHVubmVsLSZndDtlcnNwYW5fdmVyID09IDApIHsKIAkJcHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pOwotCQlfX2NsZWFyX2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLSZndDtwYXJtcy5vX2ZsYWdzKTsKJiM0MzsJCV9fY2xlYXJfYml0KElQX1RVTk5FTF9TRVFfQklULCBmbGFncyk7CiAJfSBlbHNlIGlmICh0dW5uZWwtJmd0O2Vyc3Bhbl92ZXIgPT0gMSkgewogCQllcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsLSZndDtwYXJtcy5vX2tleSksCiAJCQkJICAgIHR1bm5lbC0mZ3Q7aW5kZXgsCkBAIC03NDYsOCAmIzQzOzc0OCw5IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBlcnNwYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlnb3RvIGZyZWVfc2tiOwogCX0KIAotCV9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCB0dW5uZWwtJmd0O3Bhcm1zLm9fZmxhZ3MpOwotCV9fZ3JlX3htaXQoc2tiLCBkZXYsICZhbXA7dHVubmVsLSZndDtwYXJtcy5pcGgsIHByb3RvKTsKJiM0MzsJX19jbGVhcl9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncyk7CiYjNDM7CV9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCBmbGFncyk7CiYjNDM7CV9fZ3JlX3htaXQoc2tiLCBkZXYsICZhbXA7dHVubmVsLSZndDtwYXJtcy5pcGgsIHByb3RvLCBmbGFncyk7CiAJcmV0dXJuIE5FVERFVl9UWF9PSzsKIAogZnJlZV9za2I6CkBAIC03NjAsNiAmIzQzOzc2Myw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBncmVfdGFwX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7CiYjNDM7CUlQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTsKIAogCWlmICghcHNrYl9pbmV0X21heV9wdWxsKHNrYikpCiAJCWdvdG8gZnJlZV9za2I7CkBAIC03NjksMTQgJiM0Mzs3NzMsMTUgQEAgc3RhdGljIG5ldGRldl90eF90IGdyZV90YXBfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlyZXR1cm4gTkVUREVWX1RYX09LOwogCX0KIAotCWlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULAotCQkJCQkgICAgICB0dW5uZWwtJmd0O3Bhcm1zLm9fZmxhZ3MpKSkKJiM0MzsJaXBfdHVubmVsX2ZsYWdzX2NvcHkoZmxhZ3MsIHR1bm5lbC0mZ3Q7cGFybXMub19mbGFncyk7CiYjNDM7CiYjNDM7CWlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncykpKQogCQlnb3RvIGZyZWVfc2tiOwogCiAJaWYgKHNrYl9jb3dfaGVhZChza2IsIGRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tKSkKIAkJZ290byBmcmVlX3NrYjsKIAotCV9fZ3JlX3htaXQoc2tiLCBkZXYsICZhbXA7dHVubmVsLSZndDtwYXJtcy5pcGgsIGh0b25zKEVUSF9QX1RFQikpOwomIzQzOwlfX2dyZV94bWl0KHNrYiwgZGV2LCAmYW1wO3R1bm5lbC0mZ3Q7cGFybXMuaXBoLCBodG9ucyhFVEhfUF9URUIpLCBmbGFncyk7CiAJcmV0dXJuIE5FVERFVl9UWF9PSzsKIAogZnJlZV9za2I6CkBAIC0xNTYwLDEyICYjNDM7MTU2NSwxNSBAQCBzdGF0aWMgc2l6ZV90IGlwZ3JlX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIHN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0Jc3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7Ci0Jc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAgPSAmYW1wO3QtJmd0O3Bhcm1zOwomIzQzOwljb25zdCBzdHJ1Y3QgaXBfdHVubmVsICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJY29uc3Qgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAgPSAmYW1wO3QtJmd0O3Bhcm1zOwogCUlQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKG9fZmxhZ3MpOwogCiAJaXBfdHVubmVsX2ZsYWdzX2NvcHkob19mbGFncywgcC0mZ3Q7b19mbGFncyk7CiAKJiM0MzsJaWYgKHQtJmd0O2Vyc3Bhbl92ZXIgIT0gMCAmYW1wOyZhbXA7ICF0LSZndDtjb2xsZWN0X21kKQomIzQzOwkJX19zZXRfYml0KElQX1RVTk5FTF9LRVlfQklULCBvX2ZsYWdzKTsKJiM0MzsKIAlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0dSRV9MSU5LLCBwLSZndDtsaW5rKSB8fAogCSAgICBubGFfcHV0X2JlMTYoc2tiLCBJRkxBX0dSRV9JRkxBR1MsCiAJCQkgZ3JlX3RubF9mbGFnc190b19ncmVfZmxhZ3MocC0mZ3Q7aV9mbGFncykpIHx8CkBAIC0xNjA4LDEyICYjNDM7MTYxNiw5IEBAIHN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIHN0YXRpYyBpbnQgZXJzcGFuX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewotCXN0cnVjdCBpcF90dW5uZWwgKnQgPSBuZXRkZXZfcHJpdihkZXYpOwomIzQzOwljb25zdCBzdHJ1Y3QgaXBfdHVubmVsICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAogCWlmICh0LSZndDtlcnNwYW5fdmVyICZsdDs9IDIpIHsKLQkJaWYgKHQtJmd0O2Vyc3Bhbl92ZXIgIT0gMCAmYW1wOyZhbXA7ICF0LSZndDtjb2xsZWN0X21kKQotCQkJX19zZXRfYml0KElQX1RVTk5FTF9LRVlfQklULCB0LSZndDtwYXJtcy5vX2ZsYWdzKTsKLQogCQlpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9WRVIsIHQtJmd0O2Vyc3Bhbl92ZXIpKQogCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9ncmUuYyBiL25ldC9pcHY2L2lwNl9ncmUuYwppbmRleCA3YzA5YTI2OWIzNTIxNi4uOWU2OGFmZWM5ZGNlNDEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2lwNl9ncmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9pcDZfZ3JlLmMKQEAgLTc3Nyw3ICYjNDM7Nzc3LDcgQEAgc3RhdGljIG5ldGRldl90eF90IF9fZ3JlNl94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAKIAkJaXBfdHVubmVsX2ZsYWdzX2NvcHkoZmxhZ3MsIHR1bm5lbC0mZ3Q7cGFybXMub19mbGFncyk7CiAKLQkJZ3JlX2J1aWxkX2hlYWRlcihza2IsIHR1bm5lbC0mZ3Q7dHVuX2hsZW4sIGZsYWdzLAomIzQzOwkJZ3JlX2J1aWxkX2hlYWRlcihza2IsIGdyZV9jYWxjX2hsZW4oZmxhZ3MpLCBmbGFncywKIAkJCQkgcHJvdG9jb2wsIHR1bm5lbC0mZ3Q7cGFybXMub19rZXksCiAJCQkJIHRlc3RfYml0KElQX1RVTk5FTF9TRVFfQklULCBmbGFncykgPwogCQkJCSBodG9ubChhdG9taWNfZmV0Y2hfaW5jKCZhbXA7dHVubmVsLSZndDtvX3NlcW5vKSkgOgpAQCAtOTY0LDcgJiM0Mzs5NjQsNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXA2ZXJzcGFuX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJaWYgKHNrYl9jb3dfaGVhZChza2IsIGRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tID86IHQtJmd0O2hsZW4pKQogCQlnb3RvIHR4X2VycjsKIAotCV9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCB0LSZndDtwYXJtcy5vX2ZsYWdzKTsKIAlJUENCKHNrYiktJmd0O2ZsYWdzID0gMDsKIAogCS8qIEZvciBjb2xsZWN0X21kIG1vZGUsIGRlcml2ZSBmbDYgZnJvbSB0aGUgdHVubmVsIGtleSwKQEAgLTIxMTUsOCAmIzQzOzIxMTQsOCBAQCBzdGF0aWMgc2l6ZV90IGlwNmdyZV9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCiBzdGF0aWMgaW50IGlwNmdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3QgaXA2X3RubCAqdCA9IG5ldGRldl9wcml2KGRldik7Ci0Jc3RydWN0IF9faXA2X3RubF9wYXJtICpwID0gJmFtcDt0LSZndDtwYXJtczsKJiM0MzsJY29uc3Qgc3RydWN0IGlwNl90bmwgKnQgPSBuZXRkZXZfcHJpdihkZXYpOwomIzQzOwljb25zdCBzdHJ1Y3QgX19pcDZfdG5sX3Bhcm0gKnAgPSAmYW1wO3QtJmd0O3Bhcm1zOwogCUlQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKG9fZmxhZ3MpOwogCiAJaXBfdHVubmVsX2ZsYWdzX2NvcHkob19mbGFncywgcC0mZ3Q7b19mbGFncyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NjIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA0NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHUkUvRVJTUEFOIFR1bm5lbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBob3cgZmxhZ3MgYXJlIGhhbmRsZWQgaW4gdGhlIGtlcm5lbCYjMzk7cyBHUkUgYW5kIEVSU1BBTiB0dW5uZWwgY29kZSwgc3BlY2lmaWNhbGx5IGluIGBuZXQvaXB2NC9pcF9ncmUuY2AgYW5kIGBuZXQvaXB2Ni9pcDZfZ3JlLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGEgcHJvYmxlbSB3aGVyZSB0aGUgYHR1bm5lbC0mZ3Q7cGFybXMub19mbGFnc2AgbWVtYmVyLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSB0dW5uZWwgY29uZmlndXJhdGlvbiwgd2FzIGJlaW5nIG1vZGlmaWVkICpkdXJpbmcgdHJhbnNtaXNzaW9uKi4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgcmVjaXBlIGZvciByYWNlIGNvbmRpdGlvbnMgYW5kIG90aGVyIG5hc3RpZXMsIGFuZCBmcmFua2x5LCBhIGRlc2lnbiBmbGF3LgoKVGhlIGZpeD8gSW5zdGVhZCBvZiBkaXJlY3RseSBtdWNraW5nIHdpdGggYHR1bm5lbC0mZ3Q7cGFybXMub19mbGFnc2AsIHRoZSBwYXRjaCBjb3BpZXMgaXQgdG8gYSBsb2NhbCBgZmxhZ3NgIHZhcmlhYmxlIHdpdGhpbiB0aGUgdHJhbnNtaXNzaW9uIGZ1bmN0aW9uIGFuZCB0aGVuIG1vZGlmaWVzIHRoYXQuIFNtYXJ0LiBTYWZlLiBXZSB3YW50IHRvIGF2b2lkIGFueSBwb3NzaWJpbGl0eSBvZiBjaGFuZ2VzIGR1cmluZyBhIHRyYW5zbWlzc2lvbi4gVGhpcyBkZWZpbml0ZWx5IGNsZWFucyB1cCBhIGJpdCBvZiBhIHNwYWdoZXR0aSBzY2VuYXJpby4KCkl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGFsc28gY29ycmVjdHMgdGhlIGZ1bmN0aW9uIGBpcGdyZV9maWxsX2luZm9gIHRvIGFwcHJvcHJpYXRlbHkgc2V0IHRoZSBgSVBfVFVOTkVMX0tFWV9CSVRgIG9uIGBvX2ZsYWdzYCBpbnN0ZWFkIG9mIG1vZGlmeWluZyBgdC0mZ3Q7cGFybXMub19mbGFnc2AgZGlyZWN0bHkgd2l0aGluIGBlcnNwYW5fZmlsbF9pbmZvYC4gV2FpdCwgd2FzIGBlcnNwYW5fZmlsbF9pbmZvYCBtb2RpZnlpbmcgYHQtJmd0O3Bhcm1zLm9fZmxhZ3NgPyBZZXMsIHRoZXJlIHdhcyBhIGBfX3NldF9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIHQtJmd0O3Bhcm1zLm9fZmxhZ3MpO2AgY2FsbCBpbiBgZXJzcGFuX2ZpbGxfaW5mb2AsIHdoaWNoIGlzIGEgYnVnIHNpbmNlIHRob3NlIGZpbGxfaW5mbyBmdW5jdGlvbnMgYXJlIGZvciBkdW1waW5nIHR1bm5lbCBpbmZvLCBub3QgY2hhbmdpbmcgY29uZmlndXJhdGlvbi4gVGhhdCYjMzk7cyBhIHN1YnRsZSBidXQgc2lnbmlmaWNhbnQgY29ycmVjdGlvbi4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB0byBob3cgdGhlc2UgdHVubmVscyBvcGVyYXRlLiBJdCYjMzk7cyBhIHNlY3VyaXR5IGFuZCByZWxpYWJpbGl0eSBpbXByb3ZlbWVudC4gRGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBuZWVkcyBmdXp6ZWQuCgpTbywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgZnV6emluZzogYGlwZ3JlX3htaXRgLCBgZXJzcGFuX3htaXRgLCBgZ3JlX3RhcF94bWl0YCwgYGlwZ3JlX2ZpbGxfaW5mb2AsIGBlcnNwYW5fZmlsbF9pbmZvYCwgYF9fZ3JlNl94bWl0YCwgYGlwNmVyc3Bhbl90dW5uZWxfeG1pdGAsIGFuZCBgaXA2Z3JlX2ZpbGxfaW5mb2AuIFRoYXQmIzM5O3MgdGhlIGNvcmUgc2V0IHRvIHN0YXJ0IHdpdGguCgpJIHNob3VsZCBhbHNvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyB0byBlbnN1cmUgdGhlc2UgZmVhdHVyZXMgYXJlIGVuYWJsZWQgZHVyaW5nIGZ1enppbmcuIEZvciB0aGUgSVB2NCBHUkUgY29kZSwgaXQmIzM5O3MgYENPTkZJR19ORVRfSVBHUkVgLCBhbmQgZm9yIHRoZSBJUHY2IEdSRSBjb2RlLCBpdCYjMzk7cyBgQ09ORklHX0lQVjZfR1JFYC4gVGltZSB0byBjb25maXJtIHdpdGggYGdyZXBwZXJgIGFuZCBtYWtlIHN1cmUgbXkgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2V0IGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTkVUX0lQR1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTI4PW9iai0kKENPTkZJR19ORVRfRk9VKSAmIzQzOz0gZm91Lm9cbm5ldC9pcHY0L01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19ORVRfSVBHUkVfREVNVVgpICYjNDM7PSBncmUub1xubmV0L2lwdjQvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgJiM0Mzs9IGlwX2dyZS5vXG5uZXQvaXB2NC9NYWtlZmlsZS0zMS11ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTQ0MD1zdGF0aWMgaW50IGdyZV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy00NDUtXG5uZXQvaXB2NC9pcF9ncmUuYzo0NDY6I2lmZGVmIENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUXG5uZXQvaXB2NC9pcF9ncmUuYy00NDctXHRpZiAoaXB2NF9pc19tdWx0aWNhc3QoaXBfaGRyKHNrYiktXHUwMDNlZGFkZHIpKSB7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9OTM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGVhZGVyX29wcyBpcGdyZV9oZWFkZXJfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTk0MC1cbm5ldC9pcHY0L2lwX2dyZS5jOjk0MTojaWZkZWYgQ09ORklHX05FVF9JUEdSRV9CUk9BRENBU1Rcbm5ldC9pcHY0L2lwX2dyZS5jLTk0Mi1zdGF0aWMgaW50IGlwZ3JlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz05ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcGdyZV9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTk4Ny1cdC5uZG9fdW5pbml0XHRcdD0gaXBfdHVubmVsX3VuaW5pdCxcbm5ldC9pcHY0L2lwX2dyZS5jOjk4ODojaWZkZWYgQ09ORklHX05FVF9JUEdSRV9CUk9BRENBU1Rcbm5ldC9pcHY0L2lwX2dyZS5jLTk4OS1cdC5uZG9fb3Blblx0XHQ9IGlwZ3JlX29wZW4sXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTA0MT1zdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTA1NS1cdGlmIChpcGgtXHUwMDNlZGFkZHIgXHUwMDI2XHUwMDI2ICF0dW5uZWwtXHUwMDNlY29sbGVjdF9tZCkge1xubmV0L2lwdjQvaXBfZ3JlLmM6MTA1NjojaWZkZWYgQ09ORklHX05FVF9JUEdSRV9CUk9BRENBU1Rcbm5ldC9pcHY0L2lwX2dyZS5jLTEwNTctXHRcdGlmIChpcHY0X2lzX211bHRpY2FzdChpcGgtXHUwMDNlZGFkZHIpKSB7XG4tLVxubmV0L2lwdjQvaXBfdHVubmVsLmM9Mzc3PWludCBpcF90dW5uZWxfcmN2KHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC9pcF90dW5uZWwuYy0zODMtXG5uZXQvaXB2NC9pcF90dW5uZWwuYzozODQ6I2lmZGVmIENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUXG5uZXQvaXB2NC9pcF90dW5uZWwuYy0zODUtXHRpZiAoaXB2NF9pc19tdWx0aWNhc3QoaXBoLVx1MDAzZWRhZGRyKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMDAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOgoKKipJUHY2IEdSRTogQ29uc2lkZXJhdGlvbnMgYW5kIEltcGxpY2F0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IElQdjYgR1JFLCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBpbmhlcmVudCBjb21wbGV4aXRpZXMsIGFuZCwgZnJhbmtseSwgdGhlIHBvdGVudGlhbCBhZHZhbnRhZ2VzLiBXZSBrbm93IHRoYXQgR2VuZXJpYyBSb3V0aW5nIEVuY2Fwc3VsYXRpb24gKEdSRSkgcHJvdmlkZXMgYSB3YXkgdG8gZW5jYXBzdWxhdGUgbmV0d29yayBsYXllciBwcm90b2NvbHMgaW5zaWRlIG9mIGEgdmlydHVhbCBwb2ludC10by1wb2ludCBsaW5rLiBJbiB0aGUgSVB2NCB3b3JsZCwgd2UmIzM5O3JlIGFsbCBmYW1pbGlhciB3aXRoIGhvdyB0aGlzIHdvcmtzLiBCdXQgSVB2Ni4uLiBpdCBhZGRzIGEgd2hvbGUgbmV3IGxheWVyIG9mIG51YW5jZS4KCk15IGltbWVkaWF0ZSBjb25zaWRlcmF0aW9ucyBhcmUgZm9jdXNlZCBvbiB0aGUgcHJhY3RpY2FsaXRpZXMuIEZpcnN0LCB0aGUgaW1wYWN0IG9uIHRoZSBNVFUsIHRoZSBNYXhpbXVtIFRyYW5zbWlzc2lvbiBVbml0LiBJUHY2IGhlYWRlcnMgYXJlIGFscmVhZHkgbGFyZ2VyIHRoYW4gSVB2NC4gQWRkIGEgR1JFIGhlYWRlciBvbiB0b3Agb2YgdGhhdCwgYW5kIHdlJiMzOTtyZSAqZGVmaW5pdGVseSogZ29pbmcgdG8gYmUgYnVtcGluZyBpbnRvIGZyYWdtZW50YXRpb24gaXNzdWVzIGlmIHdlJiMzOTtyZSBub3QgY2FyZWZ1bC4gSSBuZWVkIHRvIGJlIHRoaW5raW5nIGFib3V0IHBhdGggTVRVIGRpc2NvdmVyeSwgYW5kIGhvdyB0byBlZmZlY3RpdmVseSBtYW5hZ2UgdGhhdCBhY3Jvc3MgcG90ZW50aWFsbHkgZGlzcGFyYXRlIG5ldHdvcmtzLgoKVGhlbiB0aGVyZSBhcmUgdGhlIHJvdXRpbmcgaW1wbGljYXRpb25zLiBIb3cgZG8gd2UgZW5zdXJlIHByb3BlciByb3V0aW5nIHdpdGhpbiB0aGUgR1JFIHR1bm5lbD8gSVB2NiYjMzk7cyBhdXRvLWNvbmZpZ3VyYXRpb24gYW5kIGFkZHJlc3MgYWxsb2NhdGlvbiBhcmUgZGlmZmVyZW50LCBhbmQgSSBjYW4mIzM5O3QganVzdCBhc3N1bWUgdGhlIHNhbWUgbWV0aG9kb2xvZ2llcyB3aWxsIHNlYW1sZXNzbHkgdHJhbnNsYXRlLiBJIG5lZWQgdG8gZGVzaWduIHRoZSBhZGRyZXNzaW5nIHNjaGVtZSBjYXJlZnVsbHkgZm9yIHRoZSB0dW5uZWxlZCB0cmFmZmljLiBUaGUgZm9jdXMgaXMgYWx3YXlzIG9uIGVuc3VyaW5nIHRoZSB0dW5uZWwgaW50ZXJmYWNlcyBhcmUgY29uZmlndXJlZCBwcm9wZXJseSBhbmQgdGhhdCB0aGUgYXBwcm9wcmlhdGUgcm91dGluZyBwcm90b2NvbHMgYXJlIGVuYWJsZWQsIGFuZCBjb3JyZWN0bHkgY29uZmlndXJlZCwgd2l0aGluIHRoZSB0dW5uZWwgaXRzZWxmLgoKU2VjdXJpdHkuIE9mIGNvdXJzZS4gSnVzdCBsaWtlIHdpdGggSVB2NCBHUkUsIGl0JiMzOTtzIGluaGVyZW50bHkgKm5vdCogc2VjdXJlLiBFbmNhcHN1bGF0aW9uIGFsb25lIGRvZXNuJiMzOTt0IGVuY3J5cHQgdGhlIHRyYWZmaWMuIEkgbmVlZCB0byBiZSB0aGlua2luZyBhYm91dCBpbnRlZ3JhdGluZyB0aGlzIHdpdGggSVBzZWMgdG8gcHJvdmlkZSB0aGF0IG5lY2Vzc2FyeSBjb25maWRlbnRpYWxpdHkgYW5kIGludGVncml0eS4gSWYgSSYjMzk7bSBjb25zaWRlcmluZyB1c2luZyBHUkUsIEkgYW0gKnJlcXVpcmVkKiB0byB0aGluayBhYm91dCB0aGUgb3ZlcmhlYWQsIGFuZCBwZXJmb3JtYW5jZSBwZW5hbHR5LiBXaGF0JiMzOTtzIHRoZSB0cmFkZS1vZmYgYmV0d2VlbiB0aGUgZmxleGliaWxpdHkgb2YgR1JFIGFuZCB0aGUgYWRkZWQgbGF5ZXIgb2Ygc2VjdXJpdHk/CgpJJiMzOTttIGFsc28gY29uc2lkZXJpbmcgdGhlIG9wZXJhdGlvbmFsIGFzcGVjdHMuIEhvdyBlYXN5IHdpbGwgaXQgYmUgdG8gdHJvdWJsZXNob290PyBBcmUgbXkgbW9uaXRvcmluZyB0b29scyB1cCB0byB0aGUgdGFzayBvZiBkaXNzZWN0aW5nIElQdjYgR1JFIGVuY2Fwc3VsYXRlZCBwYWNrZXRzPyBJIGFsc28gbmVlZCB0byBiZSBhd2FyZSBvZiBhbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGZpcmV3YWxscyBhbG9uZyB0aGUgcGF0aC4gVGhlc2UgbmVlZCB0byBiZSBjb25maWd1cmVkIHRvIGFsbG93IHRoZSBlbmNhcHN1bGF0ZWQgdHJhZmZpYywgb3IgaXQmIzM5O3MgZ2FtZSBvdmVyLgoKSXQgYWxsIGJvaWxzIGRvd24gdG8gY2FyZWZ1bCBwbGFubmluZywgbWV0aWN1bG91cyBjb25maWd1cmF0aW9uLCBhbmQgdGhvcm91Z2ggdGVzdGluZy4gSSB3aWxsIG1ha2Ugc3VyZSBJIGFwcHJvYWNoIGl0IHdpdGggYSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgYm90aCBJUHY2IGFuZCBHUkUmIzM5O3MgaW50cmljYWNpZXMuIEkgd2FudCBhIHJvYnVzdCBhbmQgZWZmZWN0aXZlIHNvbHV0aW9uIHRoYXQgd29ya3Mgc2VhbWxlc3NseSwgbm90IHNvbWV0aGluZyB0aGF0IGJyZWFrcyBkb3duIHVuZGVyIHByZXNzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19JUFY2X0dSRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9NYWtlZmlsZT00Mj1vYmotJChDT05GSUdfSVBWNl9UVU5ORUwpICYjNDM7PSBpcDZfdHVubmVsLm9cbm5ldC9pcHY2L01ha2VmaWxlOjQzOm9iai0kKENPTkZJR19JUFY2X0dSRSkgJiM0Mzs9IGlwNl9ncmUub1xubmV0L2lwdjYvTWFrZWZpbGUtNDQtb2JqLSQoQ09ORklHX0lQVjZfRk9VKSAmIzQzOz0gZm91Ni5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg1NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIEdSRSBUdW5uZWwgQ29uZmlndXJhdGlvbiBpbiB0aGUgTGludXggS2VybmVsKioKClJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIEdSRSB0dW5uZWxzIGhlcmUsIHNwZWNpZmljYWxseSB0aGUgY29uZmlndXJhdGlvbnMgYE5FVF9JUEdSRWAgYW5kIGBJUFY2X0dSRWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgdGhlc2UgdGhlIG9ubHkgb25lcyBJIG5lZWQgdG8gd29ycnkgYWJvdXQ/IFByb2JhYmx5IG5vdC4gSSYjMzk7dmUgZ290IHRvIGVuc3VyZSBJIGNvdmVyIGV2ZXJ5dGhpbmcuCgpJIHJlY2FsbCB0aGF0IEVSU1BBTiwgYSBjb21tb24gdHVubmVsaW5nIG1ldGhvZCwgaXMgZXNzZW50aWFsbHkgaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBHUkUgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSBleGFjdGx5IGhvdyBpdCYjMzk7cyBoYW5kbGVkLiBJJiMzOTtsbCB0YWtlIGEgbG9vayBhdCBgbmV0L2lwdjQvaXBfZ3JlLmNgIGFuZCBzZWUgaWYgdGhlIEVSU1BBTiBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQgYW5kIGhvdyBpdCBpcyBpbXBsZW1lbnRlZCB3aXRoaW4gdGhpcyBjb250ZXh0LiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Vyc3BhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jLTQ2LSNpbmNsdWRlIFx1MDAzY25ldC9kc3RfbWV0YWRhdGEuaFx1MDAzZVxubmV0L2lwdjQvaXBfZ3JlLmM6NDc6I2luY2x1ZGUgXHUwMDNjbmV0L2Vyc3Bhbi5oXHUwMDNlXG5uZXQvaXB2NC9pcF9ncmUuYy00OC1cbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMTM9c3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbm5ldC9pcHY0L2lwX2dyZS5jOjExNDpzdGF0aWMgdm9pZCBlcnNwYW5fYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2NC9pcF9ncmUuYy0xMTUtXHRcdFx0XHR1MzIgaWQsIHUzMiBpbmRleCxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMTk9c3RhdGljIHVuc2lnbmVkIGludCBncmVfdGFwX25ldF9pZCBfX3JlYWRfbW9zdGx5O1xubmV0L2lwdjQvaXBfZ3JlLmM6MTIwOnN0YXRpYyB1bnNpZ25lZCBpbnQgZXJzcGFuX25ldF9pZCBfX3JlYWRfbW9zdGx5O1xubmV0L2lwdjQvaXBfZ3JlLmMtMTIxLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTIyPXN0YXRpYyBpbnQgaXBncmVfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE0OS1cdFx0IHRwaS1cdTAwM2Vwcm90byA9PSBodG9ucyhFVEhfUF9FUlNQQU4yKSlcbm5ldC9pcHY0L2lwX2dyZS5jOjE1MDpcdFx0aXRuID0gbmV0X2dlbmVyaWMobmV0LCBlcnNwYW5fbmV0X2lkKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE1MS1cdGVsc2Vcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0yMTk9c3RhdGljIHZvaWQgZ3JlX2VycihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbylcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0yNTctXG5uZXQvaXB2NC9pcF9ncmUuYzoyNTg6c3RhdGljIGJvb2wgaXNfZXJzcGFuX3R5cGUxKGludCBncmVfaGRyX2xlbilcbm5ldC9pcHY0L2lwX2dyZS5jLTI1OS17XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMjY2LVxubmV0L2lwdjQvaXBfZ3JlLmM6MjY3OnN0YXRpYyBpbnQgZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdG5sX3B0a19pbmZvICp0cGksXG5uZXQvaXB2NC9pcF9ncmUuYy0yNjgtXHRcdCAgICAgIGludCBncmVfaGRyX2xlbilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzEtXHRzdHJ1Y3QgbWV0YWRhdGFfZHN0ICp0dW5fZHN0ID0gTlVMTDtcbm5ldC9pcHY0L2lwX2dyZS5jOjI3MjpcdHN0cnVjdCBlcnNwYW5fYmFzZV9oZHIgKmVyc2hkcjtcbm5ldC9pcHY0L2lwX2dyZS5jLTI3My1cdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzYtXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDtcbm5ldC9pcHY0L2lwX2dyZS5jOjI3NzpcdHN0cnVjdCBlcnNwYW5fbWQyICptZDI7XG5uZXQvaXB2NC9pcF9ncmUuYy0yNzgtXHRpbnQgdmVyO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTI4Mi1cbm5ldC9pcHY0L2lwX2dyZS5jOjI4MzpcdGl0biA9IG5ldF9nZW5lcmljKG5ldCwgZXJzcGFuX25ldF9pZCk7XG5uZXQvaXB2NC9pcF9ncmUuYy0yODQtXHRpcGggPSBpcF9oZHIoc2tiKTtcbm5ldC9pcHY0L2lwX2dyZS5jOjI4NTpcdGlmIChpc19lcnNwYW5fdHlwZTEoZ3JlX2hkcl9sZW4pKSB7XG5uZXQvaXB2NC9pcF9ncmUuYy0yODYtXHRcdHZlciA9IDA7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMjk0LVxubmV0L2lwdjQvaXBfZ3JlLmM6Mjk1Olx0XHRlcnNoZHIgPSAoc3RydWN0IGVyc3Bhbl9iYXNlX2hkciAqKShza2ItXHUwMDNlZGF0YSAmIzQzOyBncmVfaGRyX2xlbik7XG5uZXQvaXB2NC9pcF9ncmUuYy0yOTYtXHRcdHZlciA9IGVyc2hkci1cdTAwM2V2ZXI7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzAzLVx0aWYgKHR1bm5lbCkge1xubmV0L2lwdjQvaXBfZ3JlLmM6MzA0Olx0XHRpZiAoaXNfZXJzcGFuX3R5cGUxKGdyZV9oZHJfbGVuKSlcbm5ldC9pcHY0L2lwX2dyZS5jLTMwNS1cdFx0XHRsZW4gPSBncmVfaGRyX2xlbjtcbm5ldC9pcHY0L2lwX2dyZS5jLTMwNi1cdFx0ZWxzZVxubmV0L2lwdjQvaXBfZ3JlLmM6MzA3Olx0XHRcdGxlbiA9IGdyZV9oZHJfbGVuICYjNDM7IGVyc3Bhbl9oZHJfbGVuKHZlcik7XG5uZXQvaXB2NC9pcF9ncmUuYy0zMDgtXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzE4LVx0XHRpZiAodHVubmVsLVx1MDAzZWNvbGxlY3RfbWQpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjMxOTpcdFx0XHRzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICpwa3RfbWQsICptZDtcbm5ldC9pcHY0L2lwX2dyZS5jLTMyMC1cdFx0XHRzdHJ1Y3QgaXBfdHVubmVsX2luZm8gKmluZm87XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzQyLVx0XHRcdCAgICAgc2tiX25ldHdvcmtfaGVhZGVyX2xlbihza2IpO1xubmV0L2lwdjQvaXBfZ3JlLmM6MzQzOlx0XHRcdHBrdF9tZCA9IChzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICopKGdoICYjNDM7IGdyZV9oZHJfbGVuICYjNDM7XG5uZXQvaXB2NC9pcF9ncmUuYy0zNDQtXHRcdFx0XHRcdFx0XHQgICAgc2l6ZW9mKCplcnNoZHIpKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz00NDA9c3RhdGljIGludCBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNDU5LVx0XHQgICAgIHRwaS5wcm90byA9PSBodG9ucyhFVEhfUF9FUlNQQU4yKSkpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjQ2MDpcdFx0aWYgKGVyc3Bhbl9yY3Yoc2tiLCBcdTAwMjZ0cGksIGhkcl9sZW4pID09IFBBQ0tFVF9SQ1ZEKVxubmV0L2lwdjQvaXBfZ3JlLmMtNDYxLVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTQ5Nj1zdGF0aWMgdm9pZCBncmVfZmJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTUzOS1cbm5ldC9pcHY0L2lwX2dyZS5jOjU0MDpzdGF0aWMgdm9pZCBlcnNwYW5fZmJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvaXBfZ3JlLmMtNTQxLXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy01NDUtXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2tleSAqa2V5O1xubmV0L2lwdjQvaXBfZ3JlLmM6NTQ2Olx0c3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqbWQ7XG5uZXQvaXB2NC9pcF9ncmUuYy01NDctXHRib29sIHRydW5jYXRlID0gZmFsc2U7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNTY2LVx0dmVyc2lvbiA9IG1kLVx1MDAzZXZlcnNpb247XG5uZXQvaXB2NC9pcF9ncmUuYzo1Njc6XHR0dW5uZWxfaGxlbiA9IDggJiM0MzsgZXJzcGFuX2hkcl9sZW4odmVyc2lvbik7XG5uZXQvaXB2NC9pcF9ncmUuYy01NjgtXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNTk3LVx0aWYgKHZlcnNpb24gPT0gMSkge1xubmV0L2lwdjQvaXBfZ3JlLmM6NTk4Olx0XHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsX2lkX3RvX2tleTMyKGtleS1cdTAwM2V0dW5faWQpKSxcbm5ldC9pcHY0L2lwX2dyZS5jLTU5OS1cdFx0XHRcdCAgICBudG9obChtZC1cdTAwM2V1LmluZGV4KSwgdHJ1bmNhdGUsIHRydWUpO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTYwMS1cdH0gZWxzZSBpZiAodmVyc2lvbiA9PSAyKSB7XG5uZXQvaXB2NC9pcF9ncmUuYzo2MDI6XHRcdGVyc3Bhbl9idWlsZF9oZWFkZXJfdjIoc2tiLFxubmV0L2lwdjQvaXBfZ3JlLmMtNjAzLVx0XHRcdFx0ICAgICAgIG50b2hsKHR1bm5lbF9pZF90b19rZXkzMihrZXktXHUwMDNldHVuX2lkKSksXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9NjQ5PXN0YXRpYyBuZXRkZXZfdHhfdCBpcGdyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNzAyLVxubmV0L2lwdjQvaXBfZ3JlLmM6NzAzOnN0YXRpYyBuZXRkZXZfdHhfdCBlcnNwYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjQvaXBfZ3JlLmMtNzA0LVx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTcxNC1cdGlmICh0dW5uZWwtXHUwMDNlY29sbGVjdF9tZCkge1xubmV0L2lwdjQvaXBfZ3JlLmM6NzE1Olx0XHRlcnNwYW5fZmJfeG1pdChza2IsIGRldik7XG5uZXQvaXB2NC9pcF9ncmUuYy03MTYtXHRcdHJldHVybiBORVRERVZfVFhfT0s7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNzMzLVx0LyogUHVzaCBFUlNQQU4gaGVhZGVyICovXG5uZXQvaXB2NC9pcF9ncmUuYzo3MzQ6XHRpZiAodHVubmVsLVx1MDAzZWVyc3Bhbl92ZXIgPT0gMCkge1xubmV0L2lwdjQvaXBfZ3JlLmMtNzM1LVx0XHRwcm90byA9IGh0b25zKEVUSF9QX0VSU1BBTik7XG5uZXQvaXB2NC9pcF9ncmUuYy03MzYtXHRcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9TRVFfQklULCBmbGFncyk7XG5uZXQvaXB2NC9pcF9ncmUuYzo3Mzc6XHR9IGVsc2UgaWYgKHR1bm5lbC1cdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjczODpcdFx0ZXJzcGFuX2J1aWxkX2hlYWRlcihza2IsIG50b2hsKHR1bm5lbC1cdTAwM2VwYXJtcy5vX2tleSksXG5uZXQvaXB2NC9pcF9ncmUuYy03MzktXHRcdFx0XHQgICAgdHVubmVsLVx1MDAzZWluZGV4LFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTc0MS1cdFx0cHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pO1xubmV0L2lwdjQvaXBfZ3JlLmM6NzQyOlx0fSBlbHNlIGlmICh0dW5uZWwtXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XG5uZXQvaXB2NC9pcF9ncmUuYzo3NDM6XHRcdGVyc3Bhbl9idWlsZF9oZWFkZXJfdjIoc2tiLCBudG9obCh0dW5uZWwtXHUwMDNlcGFybXMub19rZXkpLFxubmV0L2lwdjQvaXBfZ3JlLmMtNzQ0LVx0XHRcdFx0ICAgICAgIHR1bm5lbC1cdTAwM2VkaXIsIHR1bm5lbC1cdTAwM2Vod2lkLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTgyMj1zdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy04NTUtXG5uZXQvaXB2NC9pcF9ncmUuYzo4NTY6XHRcdGlmIChzdHJjbXAoZGV2LVx1MDAzZXJ0bmxfbGlua19vcHMtXHUwMDNla2luZCwgXCYjMzQ7ZXJzcGFuXCYjMzQ7KSlcbm5ldC9pcHY0L2lwX2dyZS5jLTg1Ny1cdFx0XHRpcGdyZV9saW5rX3VwZGF0ZShkZXYsIHRydWUpO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTExMjI9c3RhdGljIGludCBpcGdyZV90YXBfdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTExNDYtXG5uZXQvaXB2NC9pcF9ncmUuYzoxMTQ3OnN0YXRpYyBpbnQgZXJzcGFuX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbm5ldC9pcHY0L2lwX2dyZS5jLTExNDgtXHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTExODc9c3RhdGljIGludCBpcGdyZV9uZXRsaW5rX3Bhcm1zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTI1NS1cbm5ldC9pcHY0L2lwX2dyZS5jOjEyNTY6c3RhdGljIGludCBlcnNwYW5fbmV0bGlua19wYXJtcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI1Ny1cdFx0XHRcdHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjcxLVx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX1ZFUl0pIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjEyNzI6XHRcdHQtXHUwMDNlZXJzcGFuX3ZlciA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xMjczLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTI3NDpcdFx0aWYgKHQtXHUwMDNlZXJzcGFuX3ZlciBcdTAwM2UgMilcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNzUtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTI3Ny1cbm5ldC9pcHY0L2lwX2dyZS5jOjEyNzg6XHRpZiAodC1cdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNzktXHRcdGlmIChkYXRhW0lGTEFfR1JFX0VSU1BBTl9JTkRFWF0pIHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjgzLVx0XHR9XG5uZXQvaXB2NC9pcF9ncmUuYzoxMjg0Olx0fSBlbHNlIGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgPT0gMikge1xubmV0L2lwdjQvaXBfZ3JlLmMtMTI4NS1cdFx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0RJUl0pIHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTEzNTQtXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzU1OnN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzU2LXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzU4LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTM1OTpcdGlmICh0dW5uZWwtXHUwMDNlZXJzcGFuX3ZlciA9PSAwKVxubmV0L2lwdjQvaXBfZ3JlLmMtMTM2MC1cdFx0dHVubmVsLVx1MDAzZXR1bl9obGVuID0gNDsgLyogNC1ieXRlIEdSRSBoZHIuICovXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTM2NS1cdHR1bm5lbC1cdTAwM2VobGVuID0gdHVubmVsLVx1MDAzZXR1bl9obGVuICYjNDM7IHR1bm5lbC1cdTAwM2VlbmNhcF9obGVuICYjNDM7XG5uZXQvaXB2NC9pcF9ncmUuYzoxMzY2Olx0XHQgICAgICAgZXJzcGFuX2hkcl9sZW4odHVubmVsLVx1MDAzZWVyc3Bhbl92ZXIpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTM2Ny1cbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzc1LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTM3NjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVyc3Bhbl9uZXRkZXZfb3BzID0ge1xubmV0L2lwdjQvaXBfZ3JlLmM6MTM3NzpcdC5uZG9faW5pdFx0XHQ9IGVyc3Bhbl90dW5uZWxfaW5pdCxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNzgtXHQubmRvX3VuaW5pdFx0XHQ9IGlwX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzc5Olx0Lm5kb19zdGFydF94bWl0XHRcdD0gZXJzcGFuX3htaXQsXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzgwLVx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gZXRoX21hY19hZGRyLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE0MTQ9c3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQzNC1cbm5ldC9pcHY0L2lwX2dyZS5jOjE0MzU6c3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQzNi1cdFx0XHQgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ0OC1cbm5ldC9pcHY0L2lwX2dyZS5jOjE0NDk6XHRlcnIgPSBlcnNwYW5fbmV0bGlua19wYXJtcyhkZXYsIGRhdGEsIHRiLCBcdTAwMjZwLCBcdTAwMjZmd21hcmspO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTQ1MC1cdGlmIChlcnIpXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTQ1Nj1zdGF0aWMgaW50IGlwZ3JlX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDg3LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTQ4ODpzdGF0aWMgaW50IGVyc3Bhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDg5LVx0XHRcdCAgICAgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE1MDMtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNTA0Olx0ZXJyID0gZXJzcGFuX25ldGxpbmtfcGFybXMoZGV2LCBkYXRhLCB0YiwgXHUwMDI2cCwgXHUwMDI2ZndtYXJrKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE1MDUtXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE1NjY9c3RhdGljIGludCBpcGdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNTczLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTU3NDpcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgIT0gMCBcdTAwMjZcdTAwMjYgIXQtXHUwMDNlY29sbGVjdF9tZClcbm5ldC9pcHY0L2lwX2dyZS5jLTE1NzUtXHRcdF9fc2V0X2JpdChJUF9UVU5ORUxfS0VZX0JJVCwgb19mbGFncyk7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTYxNi1cbm5ldC9pcHY0L2lwX2dyZS5jOjE2MTc6c3RhdGljIGludCBlcnNwYW5fZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjE4LXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjIwLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTYyMTpcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgXHUwMDNjPSAyKSB7XG5uZXQvaXB2NC9pcF9ncmUuYzoxNjIyOlx0XHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9WRVIsIHQtXHUwMDNlZXJzcGFuX3ZlcikpXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjIzLVx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTYyNC1cbm5ldC9pcHY0L2lwX2dyZS5jOjE2MjU6XHRcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xubmV0L2lwdjQvaXBfZ3JlLmMtMTYyNi1cdFx0XHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0dSRV9FUlNQQU5fSU5ERVgsIHQtXHUwMDNlaW5kZXgpKVxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyNy1cdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xubmV0L2lwdjQvaXBfZ3JlLmM6MTYyODpcdFx0fSBlbHNlIGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgPT0gMikge1xubmV0L2lwdjQvaXBfZ3JlLmMtMTYyOS1cdFx0XHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9ESVIsIHQtXHUwMDNlZGlyKSlcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjQxLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTY0MjpzdGF0aWMgdm9pZCBlcnNwYW5fc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L2lwX2dyZS5jLTE2NDMte1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE2NDctXHRkZXYtXHUwMDNlbWF4X210dSA9IDA7XG5uZXQvaXB2NC9pcF9ncmUuYzoxNjQ4Olx0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZlcnNwYW5fbmV0ZGV2X29wcztcbm5ldC9pcHY0L2lwX2dyZS5jLTE2NDktXHRkZXYtXHUwMDNlcHJpdl9mbGFncyBcdTAwMjY9IH5JRkZfVFhfU0tCX1NIQVJJTkc7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNjUwLVx0ZGV2LVx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0xJVkVfQUREUl9DSEFOR0U7XG5uZXQvaXB2NC9pcF9ncmUuYzoxNjUxOlx0aXBfdHVubmVsX3NldHVwKGRldiwgZXJzcGFuX25ldF9pZCk7XG5uZXQvaXB2NC9pcF9ncmUuYzoxNjUyOlx0dC1cdTAwM2VlcnNwYW5fdmVyID0gMTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE2NTMtfVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE2OTQ9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGlwZ3JlX3RhcF9vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzA4LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTcwOTpzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgZXJzcGFuX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvaXB2NC9pcF9ncmUuYzoxNzEwOlx0LmtpbmRcdFx0PSBcJiMzNDtlcnNwYW5cJiMzNDssXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzExLVx0Lm1heHR5cGVcdD0gSUZMQV9HUkVfTUFYLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTMtXHQucHJpdl9zaXplXHQ9IHNpemVvZihzdHJ1Y3QgaXBfdHVubmVsKSxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTQ6XHQuc2V0dXBcdFx0PSBlcnNwYW5fc2V0dXAsXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzE1Olx0LnZhbGlkYXRlXHQ9IGVyc3Bhbl92YWxpZGF0ZSxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTY6XHQubmV3bGlua1x0PSBlcnNwYW5fbmV3bGluayxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTc6XHQuY2hhbmdlbGlua1x0PSBlcnNwYW5fY2hhbmdlbGluayxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTgtXHQuZGVsbGlua1x0PSBpcF90dW5uZWxfZGVsbGluayxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTktXHQuZ2V0X3NpemVcdD0gaXBncmVfZ2V0X3NpemUsXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzIwOlx0LmZpbGxfaW5mb1x0PSBlcnNwYW5fZmlsbF9pbmZvLFxubmV0L2lwdjQvaXBfZ3JlLmMtMTcyMS1cdC5nZXRfbGlua19uZXRcdD0gaXBfdHVubmVsX2dldF9saW5rX25ldCxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xNzgyPXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgaXBncmVfdGFwX25ldF9vcHMgPSB7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTc4OC1cbm5ldC9pcHY0L2lwX2dyZS5jOjE3ODk6c3RhdGljIGludCBfX25ldF9pbml0IGVyc3Bhbl9pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzkwLXtcbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTE6XHRyZXR1cm4gaXBfdHVubmVsX2luaXRfbmV0KG5ldCwgZXJzcGFuX25ldF9pZCxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTI6XHRcdFx0XHQgIFx1MDAyNmVyc3Bhbl9saW5rX29wcywgXCYjMzQ7ZXJzcGFuMFwmIzM0Oyk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNzkzLX1cbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTQtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzk1OnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZXJzcGFuX2V4aXRfcnRubChzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzk2LVx0XHRcdFx0XHRzdHJ1Y3QgbGlzdF9oZWFkICpkZXZfdG9fa2lsbClcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTcte1xubmV0L2lwdjQvaXBfZ3JlLmM6MTc5ODpcdGlwX3R1bm5lbF9kZWxldGVfbmV0KG5ldCwgZXJzcGFuX25ldF9pZCwgXHUwMDI2ZXJzcGFuX2xpbmtfb3BzLCBkZXZfdG9fa2lsbCk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNzk5LX1cbm5ldC9pcHY0L2lwX2dyZS5jLTE4MDAtXG5uZXQvaXB2NC9pcF9ncmUuYzoxODAxOnN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgZXJzcGFuX25ldF9vcHMgPSB7XG5uZXQvaXB2NC9pcF9ncmUuYzoxODAyOlx0LmluaXQgPSBlcnNwYW5faW5pdF9uZXQsXG5uZXQvaXB2NC9pcF9ncmUuYzoxODAzOlx0LmV4aXRfcnRubCA9IGVyc3Bhbl9leGl0X3J0bmwsXG5uZXQvaXB2NC9pcF9ncmUuYzoxODA0Olx0LmlkICAgPSBcdTAwMjZlcnNwYW5fbmV0X2lkLFxubmV0L2lwdjQvaXBfZ3JlLmMtMTgwNS1cdC5zaXplID0gc2l6ZW9mKHN0cnVjdCBpcF90dW5uZWxfbmV0KSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xODA4PXN0YXRpYyBpbnQgX19pbml0IGlwZ3JlX2luaXQodm9pZClcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xODIxLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTgyMjpcdGVyciA9IHJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXHUwMDI2ZXJzcGFuX25ldF9vcHMpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTgyMy1cdGlmIChlcnIgXHUwMDNjIDApXG5uZXQvaXB2NC9pcF9ncmUuYzoxODI0Olx0XHRnb3RvIHBuZXRfZXJzcGFuX2ZhaWxlZDtcbm5ldC9pcHY0L2lwX2dyZS5jLTE4MjUtXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTgzOS1cbm5ldC9pcHY0L2lwX2dyZS5jOjE4NDA6XHRlcnIgPSBydG5sX2xpbmtfcmVnaXN0ZXIoXHUwMDI2ZXJzcGFuX2xpbmtfb3BzKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDEtXHRpZiAoZXJyIFx1MDAzYyAwKVxubmV0L2lwdjQvaXBfZ3JlLmM6MTg0MjpcdFx0Z290byBlcnNwYW5fbGlua19mYWlsZWQ7XG5uZXQvaXB2NC9pcF9ncmUuYy0xODQzLVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDUtXG5uZXQvaXB2NC9pcF9ncmUuYzoxODQ2OmVyc3Bhbl9saW5rX2ZhaWxlZDpcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDctXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZpcGdyZV90YXBfb3BzKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xODUyLWFkZF9wcm90b19mYWlsZWQ6XG5uZXQvaXB2NC9pcF9ncmUuYzoxODUzOlx0dW5yZWdpc3Rlcl9wZXJuZXRfZGV2aWNlKFx1MDAyNmVyc3Bhbl9uZXRfb3BzKTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NTQ6cG5ldF9lcnNwYW5fZmFpbGVkOlxubmV0L2lwdjQvaXBfZ3JlLmMtMTg1NS1cdHVucmVnaXN0ZXJfcGVybmV0X2RldmljZShcdTAwMjZpcGdyZV90YXBfbmV0X29wcyk7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTg2MT1zdGF0aWMgdm9pZCBfX2V4aXQgaXBncmVfZmluaSh2b2lkKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE4NjQtXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZpcGdyZV9saW5rX29wcyk7XG5uZXQvaXB2NC9pcF9ncmUuYzoxODY1Olx0cnRubF9saW5rX3VucmVnaXN0ZXIoXHUwMDI2ZXJzcGFuX2xpbmtfb3BzKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NjYtXHRncmVfZGVsX3Byb3RvY29sKFx1MDAyNmlwZ3JlX3Byb3RvY29sLCBHUkVQUk9UT19DSVNDTyk7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2OC1cdHVucmVnaXN0ZXJfcGVybmV0X2RldmljZShcdTAwMjZpcGdyZV9uZXRfb3BzKTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE4Njk6XHR1bnJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXHUwMDI2ZXJzcGFuX25ldF9vcHMpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTg3MC19XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTg3Nz1NT0RVTEVfQUxJQVNfUlROTF9MSU5LKFwmIzM0O2dyZXRhcFwmIzM0Oyk7XG5uZXQvaXB2NC9pcF9ncmUuYzoxODc4Ok1PRFVMRV9BTElBU19SVE5MX0xJTksoXCYjMzQ7ZXJzcGFuXCYjMzQ7KTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NzktTU9EVUxFX0FMSUFTX05FVERFVihcJiMzNDtncmUwXCYjMzQ7KTtcbm5ldC9pcHY0L2lwX2dyZS5jPTE4ODA9TU9EVUxFX0FMSUFTX05FVERFVihcJiMzNDtncmV0YXAwXCYjMzQ7KTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE4ODE6TU9EVUxFX0FMSUFTX05FVERFVihcJiMzNDtlcnNwYW4wXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzY1NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkVSU1BBTiBEZWVwIERpdmUgaW4gS2VybmVsIFNvdXJjZSoqCgpBbHJpZ2h0LCBzbyBFUlNQQU4uLi4gcmlnaHQsIGl0JiMzOTtzIGJha2VkIGludG8gdGhlIGBDT05GSUdfTkVUX0lQR1JFYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTWFrZXMgc2Vuc2UuIE5vdywgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHRoZSBwcmltYXJ5IGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBoYW5naW5nIG91dCBzb21ld2hlcmUgaW4gdGhlIElQdjYgR1JFIGNvZGUsIHByb2JhYmx5IHNoYXJpbmcgYSBsb3Qgb2YgaW5mcmFzdHJ1Y3R1cmUgd2l0aCBzdGFuZGFyZCBHUkUuIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gY2hlY2sgb3V0IGBuZXQvaXB2Ni9pcDZfZ3JlLmNgLiBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgc3BvdCB0byBmaW5kIHRoZSBndXRzIG9mIHRoZSBFUlNQQU4gZnVuY3Rpb25hbGl0eSwgbWF5YmUgc29tZSBvZiB0aGUgcGFja2V0IHBhcnNpbmcgbG9naWMsIGNvbnRyb2wgcGF0aCwgYW5kIHBlcmhhcHMgdGhlIHR1bm5lbCBlbmNhcC9kZWNhcCByb3V0aW5lcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNjYW4gdGhhdCBmaWxlIGFuZCBzZWUgaG93IHRoZSBFUlNQQU4gYml0cyBoYXZlIGJlZW4gaW50ZWdyYXRlZCwgd2hhdCBtYWNyb3MgYXJlIHVzZWQsIGFuZCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQuIEhvcGVmdWxseSwgdGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcnNwYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZ3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X2dyZS5jLTUzLSNpbmNsdWRlIFx1MDAzY25ldC9ncmUuaFx1MDAzZVxubmV0L2lwdjYvaXA2X2dyZS5jOjU0OiNpbmNsdWRlIFx1MDAzY25ldC9lcnNwYW4uaFx1MDAzZVxubmV0L2lwdjYvaXA2X2dyZS5jLTU1LSNpbmNsdWRlIFx1MDAzY25ldC9kc3RfbWV0YWRhdGEuaFx1MDAzZVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYz02Nj1zdHJ1Y3QgaXA2Z3JlX25ldCB7XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTY5LVx0c3RydWN0IGlwNl90bmwgX19yY3UgKmNvbGxlY3RfbWRfdHVuO1xubmV0L2lwdjYvaXA2X2dyZS5jOjcwOlx0c3RydWN0IGlwNl90bmwgX19yY3UgKmNvbGxlY3RfbWRfdHVuX2Vyc3Bhbjtcbm5ldC9pcHY2L2lwNl9ncmUuYy03MS1cdHN0cnVjdCBuZXRfZGV2aWNlICpmYl90dW5uZWxfZGV2O1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYz03NT1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXA2Z3JlX3RhcF9vcHMgX19yZWFkX21vc3RseTtcbm5ldC9pcHY2L2lwNl9ncmUuYzo3NjpzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXA2ZXJzcGFuX3RhcF9vcHMgX19yZWFkX21vc3RseTtcbm5ldC9pcHY2L2lwNl9ncmUuYy03Ny1zdGF0aWMgaW50IGlwNmdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9ODA9c3RhdGljIHZvaWQgaXA2Z3JlX3RubF9saW5rX2NvbmZpZyhzdHJ1Y3QgaXA2X3RubCAqdCwgaW50IHNldF9tdHUpO1xubmV0L2lwdjYvaXA2X2dyZS5jOjgxOnN0YXRpYyB2b2lkIGlwNmVyc3Bhbl90bmxfbGlua19jb25maWcoc3RydWN0IGlwNl90bmwgKnQsIGludCBzZXRfbXR1KTtcbm5ldC9pcHY2L2lwNl9ncmUuYy04Mi1cbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTQwPXN0YXRpYyBzdHJ1Y3QgaXA2X3RubCAqaXA2Z3JlX3R1bm5lbF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjAzLVx0ICAgIGdyZV9wcm90byA9PSBodG9ucyhFVEhfUF9FUlNQQU4yKSlcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMDQ6XHRcdHQgPSByY3VfZGVyZWZlcmVuY2UoaWduLVx1MDAzZWNvbGxlY3RfbWRfdHVuX2Vyc3Bhbik7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjA1LVx0ZWxzZVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYz0yMzY9c3RhdGljIHZvaWQgaXA2Z3JlX3R1bm5lbF9saW5rX21kKHN0cnVjdCBpcDZncmVfbmV0ICppZ24sIHN0cnVjdCBpcDZfdG5sICp0KVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yNDEtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjQyOnN0YXRpYyB2b2lkIGlwNmVyc3Bhbl90dW5uZWxfbGlua19tZChzdHJ1Y3QgaXA2Z3JlX25ldCAqaWduLCBzdHJ1Y3QgaXA2X3RubCAqdClcbm5ldC9pcHY2L2lwNl9ncmUuYy0yNDMte1xubmV0L2lwdjYvaXA2X2dyZS5jLTI0NC1cdGlmICh0LVx1MDAzZXBhcm1zLmNvbGxlY3RfbWQpXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjQ1Olx0XHRyY3VfYXNzaWduX3BvaW50ZXIoaWduLVx1MDAzZWNvbGxlY3RfbWRfdHVuX2Vyc3BhbiwgdCk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjQ2LX1cbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MjQ4PXN0YXRpYyB2b2lkIGlwNmdyZV90dW5uZWxfdW5saW5rX21kKHN0cnVjdCBpcDZncmVfbmV0ICppZ24sIHN0cnVjdCBpcDZfdG5sICp0KVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yNTMtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjU0OnN0YXRpYyB2b2lkIGlwNmVyc3Bhbl90dW5uZWxfdW5saW5rX21kKHN0cnVjdCBpcDZncmVfbmV0ICppZ24sXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjU1LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBpcDZfdG5sICp0KVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yNTctXHRpZiAodC1cdTAwM2VwYXJtcy5jb2xsZWN0X21kKVxubmV0L2lwdjYvaXA2X2dyZS5jOjI1ODpcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGlnbi1cdTAwM2Vjb2xsZWN0X21kX3R1bl9lcnNwYW4sIE5VTEwpO1xubmV0L2lwdjYvaXA2X2dyZS5jLTI1OS19XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTMxNT1zdGF0aWMgc3RydWN0IGlwNl90bmwgKmlwNmdyZV90dW5uZWxfbG9jYXRlKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMzYxLVxubmV0L2lwdjYvaXA2X2dyZS5jOjM2MjpzdGF0aWMgdm9pZCBpcDZlcnNwYW5fdHVubmVsX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjYvaXA2X2dyZS5jLTM2My17XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTM2Ni1cbm5ldC9pcHY2L2lwNl9ncmUuYzozNjc6XHRpcDZlcnNwYW5fdHVubmVsX3VubGlua19tZChpZ24sIHQpO1xubmV0L2lwdjYvaXA2X2dyZS5jLTM2OC1cdGlwNmdyZV90dW5uZWxfdW5saW5rKGlnbiwgdCk7XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTQ1Nz1zdGF0aWMgaW50IGlwNmdyZV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRubF9wdGtfaW5mbyAqdHBpKVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy00ODktXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NDkwOnN0YXRpYyBpbnQgaXA2ZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjYvaXA2X2dyZS5jLTQ5MS1cdFx0XHQgc3RydWN0IHRubF9wdGtfaW5mbyAqdHBpLFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy00OTMte1xubmV0L2lwdjYvaXA2X2dyZS5jOjQ5NDpcdHN0cnVjdCBlcnNwYW5fYmFzZV9oZHIgKmVyc2hkcjtcbm5ldC9pcHY2L2lwNl9ncmUuYy00OTUtXHRjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXB2Nmg7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NDk2Olx0c3RydWN0IGVyc3Bhbl9tZDIgKm1kMjtcbm5ldC9pcHY2L2lwNl9ncmUuYy00OTctXHRzdHJ1Y3QgaXA2X3RubCAqdHVubmVsO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy01MDMtXHRpcHY2aCA9IGlwdjZfaGRyKHNrYik7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTA0Olx0ZXJzaGRyID0gKHN0cnVjdCBlcnNwYW5fYmFzZV9oZHIgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9pcHY2L2lwNl9ncmUuYy01MDUtXHR2ZXIgPSBlcnNoZHItXHUwMDNldmVyO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy01MTAtXHRpZiAodHVubmVsKSB7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTExOlx0XHRpbnQgbGVuID0gZXJzcGFuX2hkcl9sZW4odmVyKTtcbm5ldC9pcHY2L2lwNl9ncmUuYy01MTItXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTUyMS1cdFx0aWYgKHR1bm5lbC1cdTAwM2VwYXJtcy5jb2xsZWN0X21kKSB7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTIyOlx0XHRcdHN0cnVjdCBlcnNwYW5fbWV0YWRhdGEgKnBrdF9tZCwgKm1kO1xubmV0L2lwdjYvaXA2X2dyZS5jLTUyMy1cdFx0XHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhmbGFncyk7XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTU0Ny1cdFx0XHQgICAgIHNrYl9uZXR3b3JrX2hlYWRlcl9sZW4oc2tiKTtcbm5ldC9pcHY2L2lwNl9ncmUuYzo1NDg6XHRcdFx0cGt0X21kID0gKHN0cnVjdCBlcnNwYW5fbWV0YWRhdGEgKikoZ2ggJiM0MzsgZ3JlX2hkcl9sZW4gJiM0Mztcbm5ldC9pcHY2L2lwNl9ncmUuYy01NDktXHRcdFx0XHRcdFx0XHQgICAgc2l6ZW9mKCplcnNoZHIpKTtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9NTcwPXN0YXRpYyBpbnQgZ3JlX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy01ODQtXHRcdCAgICAgdHBpLnByb3RvID09IGh0b25zKEVUSF9QX0VSU1BBTjIpKSkge1xubmV0L2lwdjYvaXA2X2dyZS5jOjU4NTpcdFx0aWYgKGlwNmVyc3Bhbl9yY3Yoc2tiLCBcdTAwMjZ0cGksIGhkcl9sZW4pID09IFBBQ0tFVF9SQ1ZEKVxubmV0L2lwdjYvaXA2X2dyZS5jLTU4Ni1cdFx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9ODc4PXN0YXRpYyBuZXRkZXZfdHhfdCBpcDZncmVfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtOTE2LVxubmV0L2lwdjYvaXA2X2dyZS5jOjkxNzpzdGF0aWMgbmV0ZGV2X3R4X3QgaXA2ZXJzcGFuX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtOTE4LVx0XHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtOTczLVx0XHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2tleSAqa2V5O1xubmV0L2lwdjYvaXA2X2dyZS5jOjk3NDpcdFx0c3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqbWQ7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtOTc1LVx0XHRfX2JlMzIgdHVuX2lkO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy05OTktXHRcdGlmIChtZC1cdTAwM2V2ZXJzaW9uID09IDEpIHtcbm5ldC9pcHY2L2lwNl9ncmUuYzoxMDAwOlx0XHRcdGVyc3Bhbl9idWlsZF9oZWFkZXIoc2tiLFxubmV0L2lwdjYvaXA2X2dyZS5jLTEwMDEtXHRcdFx0XHRcdCAgICBudG9obCh0dW5faWQpLFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0xMDA1LVx0XHR9IGVsc2UgaWYgKG1kLVx1MDAzZXZlcnNpb24gPT0gMikge1xubmV0L2lwdjYvaXA2X2dyZS5jOjEwMDY6XHRcdFx0ZXJzcGFuX2J1aWxkX2hlYWRlcl92Mihza2IsXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTAwNy1cdFx0XHRcdFx0ICAgICAgIG50b2hsKHR1bl9pZCksXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTEwMzMtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTAzNDpcdFx0aWYgKHQtXHUwMDNlcGFybXMuZXJzcGFuX3ZlciA9PSAxKSB7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTAzNTpcdFx0XHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodC1cdTAwM2VwYXJtcy5vX2tleSksXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTAzNi1cdFx0XHRcdFx0ICAgIHQtXHUwMDNlcGFybXMuaW5kZXgsXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTEwMzgtXHRcdFx0cHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pO1xubmV0L2lwdjYvaXA2X2dyZS5jOjEwMzk6XHRcdH0gZWxzZSBpZiAodC1cdTAwM2VwYXJtcy5lcnNwYW5fdmVyID09IDIpIHtcbm5ldC9pcHY2L2lwNl9ncmUuYzoxMDQwOlx0XHRcdGVyc3Bhbl9idWlsZF9oZWFkZXJfdjIoc2tiLCBudG9obCh0LVx1MDAzZXBhcm1zLm9fa2V5KSxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xMDQxLVx0XHRcdFx0XHQgICAgICAgdC1cdTAwM2VwYXJtcy5kaXIsXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTExODc9c3RhdGljIHZvaWQgaXA2Z3JlX3RubF9jb3B5X3RubF9wYXJtKHN0cnVjdCBpcDZfdG5sICp0LFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0xMjAyLVx0dC1cdTAwM2VwYXJtcy5md21hcmsgPSBwLVx1MDAzZWZ3bWFyaztcbm5ldC9pcHY2L2lwNl9ncmUuYzoxMjAzOlx0dC1cdTAwM2VwYXJtcy5lcnNwYW5fdmVyID0gcC1cdTAwM2VlcnNwYW5fdmVyO1xubmV0L2lwdjYvaXA2X2dyZS5jLTEyMDQtXHR0LVx1MDAzZXBhcm1zLmluZGV4ID0gcC1cdTAwM2VpbmRleDtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTU1Mj1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGlwNmdyZV9leGl0X3J0bmxfbmV0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTU2MC1cdFx0ICAgIGRldi1cdTAwM2VydG5sX2xpbmtfb3BzID09IFx1MDAyNmlwNmdyZV90YXBfb3BzIHx8XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTU2MTpcdFx0ICAgIGRldi1cdTAwM2VydG5sX2xpbmtfb3BzID09IFx1MDAyNmlwNmVyc3Bhbl90YXBfb3BzKVxubmV0L2lwdjYvaXA2X2dyZS5jLTE1NjItXHRcdFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTY0OD1zdGF0aWMgaW50IGlwNmdyZV90YXBfdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0xNjcyLVxubmV0L2lwdjYvaXA2X2dyZS5jOjE2NzM6c3RhdGljIGludCBpcDZlcnNwYW5fdGFwX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNjc0LVx0XHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTE3MzctXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTczODpzdGF0aWMgdm9pZCBpcDZlcnNwYW5fc2V0X3ZlcnNpb24oc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxubmV0L2lwdjYvaXA2X2dyZS5jLTE3MzktXHRcdFx0XHQgIHN0cnVjdCBfX2lwNl90bmxfcGFybSAqcGFybXMpXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTE3NDMtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTc0NDpcdHBhcm1zLVx1MDAzZWVyc3Bhbl92ZXIgPSAxO1xubmV0L2lwdjYvaXA2X2dyZS5jLTE3NDUtXHRpZiAoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSlcbm5ldC9pcHY2L2lwNl9ncmUuYzoxNzQ2Olx0XHRwYXJtcy1cdTAwM2VlcnNwYW5fdmVyID0gbmxhX2dldF91OChkYXRhW0lGTEFfR1JFX0VSU1BBTl9WRVJdKTtcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNzQ3LVxubmV0L2lwdjYvaXA2X2dyZS5jOjE3NDg6XHRpZiAocGFybXMtXHUwMDNlZXJzcGFuX3ZlciA9PSAxKSB7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTc0OS1cdFx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0lOREVYXSlcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNzUwLVx0XHRcdHBhcm1zLVx1MDAzZWluZGV4ID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX0dSRV9FUlNQQU5fSU5ERVhdKTtcbm5ldC9pcHY2L2lwNl9ncmUuYzoxNzUxOlx0fSBlbHNlIGlmIChwYXJtcy1cdTAwM2VlcnNwYW5fdmVyID09IDIpIHtcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNzUyLVx0XHRpZiAoZGF0YVtJRkxBX0dSRV9FUlNQQU5fRElSXSlcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTgyMj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlwNmdyZV90YXBfbmV0ZGV2X29wcyA9IHtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTgzMS1cbm5ldC9pcHY2L2lwNl9ncmUuYzoxODMyOnN0YXRpYyBpbnQgaXA2ZXJzcGFuX2NhbGNfaGxlbihzdHJ1Y3QgaXA2X3RubCAqdHVubmVsKVxubmV0L2lwdjYvaXA2X2dyZS5jLTE4MzMte1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0xODM3LVx0dHVubmVsLVx1MDAzZWhsZW4gPSB0dW5uZWwtXHUwMDNldHVuX2hsZW4gJiM0MzsgdHVubmVsLVx1MDAzZWVuY2FwX2hsZW4gJiM0Mztcbm5ldC9pcHY2L2lwNl9ncmUuYzoxODM4Olx0XHQgICAgICAgZXJzcGFuX2hkcl9sZW4odHVubmVsLVx1MDAzZXBhcm1zLmVyc3Bhbl92ZXIpO1xubmV0L2lwdjYvaXA2X2dyZS5jLTE4MzktXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTE4NDQtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg0NTpzdGF0aWMgaW50IGlwNmVyc3Bhbl90YXBfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjYvaXA2X2dyZS5jLTE4NDYte1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0xODYzLVxubmV0L2lwdjYvaXA2X2dyZS5jOjE4NjQ6XHR0X2hsZW4gPSBpcDZlcnNwYW5fY2FsY19obGVuKHR1bm5lbCk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg2NS1cdGRldi1cdTAwM2VtdHUgPSBFVEhfREFUQV9MRU4gLSB0X2hsZW47XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTE4NzEtXHRkZXYtXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcbm5ldC9pcHY2L2lwNl9ncmUuYzoxODcyOlx0aXA2ZXJzcGFuX3RubF9saW5rX2NvbmZpZyh0dW5uZWwsIDEpO1xubmV0L2lwdjYvaXA2X2dyZS5jLTE4NzMtXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTE4ODItXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg4MzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlwNmVyc3Bhbl9uZXRkZXZfb3BzID0ge1xubmV0L2lwdjYvaXA2X2dyZS5jOjE4ODQ6XHQubmRvX2luaXQgPVx0XHRpcDZlcnNwYW5fdGFwX2luaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg4NTpcdC5uZG9fdW5pbml0ID1cdFx0aXA2ZXJzcGFuX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg4NjpcdC5uZG9fc3RhcnRfeG1pdCA9XHRpcDZlcnNwYW5fdHVubmVsX3htaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg4Ny1cdC5uZG9fc2V0X21hY19hZGRyZXNzID1cdGV0aF9tYWNfYWRkcixcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MjExNT1zdGF0aWMgaW50IGlwNmdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjEyMi1cbm5ldC9pcHY2L2lwNl9ncmUuYzoyMTIzOlx0aWYgKHAtXHUwMDNlZXJzcGFuX3ZlciA9PSAxIHx8IHAtXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjEyNC1cdFx0aWYgKCFwLVx1MDAzZWNvbGxlY3RfbWQpXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTIxMjYtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjEyNzpcdFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0dSRV9FUlNQQU5fVkVSLCBwLVx1MDAzZWVyc3Bhbl92ZXIpKVxubmV0L2lwdjYvaXA2X2dyZS5jLTIxMjgtXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjEyOS1cbm5ldC9pcHY2L2lwNl9ncmUuYzoyMTMwOlx0XHRpZiAocC1cdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMTMxLVx0XHRcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfR1JFX0VSU1BBTl9JTkRFWCwgcC1cdTAwM2VpbmRleCkpXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTIxNzg9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGlwNmdyZV9wb2xpY3lbSUZMQV9HUkVfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjAxLVxubmV0L2lwdjYvaXA2X2dyZS5jOjIyMDI6c3RhdGljIHZvaWQgaXA2ZXJzcGFuX3RhcF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjYvaXA2X2dyZS5jLTIyMDMte1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjA2LVx0ZGV2LVx1MDAzZW1heF9tdHUgPSAwO1xubmV0L2lwdjYvaXA2X2dyZS5jOjIyMDc6XHRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmlwNmVyc3Bhbl9uZXRkZXZfb3BzO1xubmV0L2lwdjYvaXA2X2dyZS5jLTIyMDgtXHRkZXYtXHUwMDNlbmVlZHNfZnJlZV9uZXRkZXYgPSB0cnVlO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjE2LVxubmV0L2lwdjYvaXA2X2dyZS5jOjIyMTc6c3RhdGljIGludCBpcDZlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyMTgtXHRcdFx0ICAgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjI4LVx0aXA2Z3JlX25ldGxpbmtfcGFybXMoZGF0YSwgXHUwMDI2bnQtXHUwMDNlcGFybXMpO1xubmV0L2lwdjYvaXA2X2dyZS5jOjIyMjk6XHRpcDZlcnNwYW5fc2V0X3ZlcnNpb24oZGF0YSwgXHUwMDI2bnQtXHUwMDNlcGFybXMpO1xubmV0L2lwdjYvaXA2X2dyZS5jLTIyMzAtXHRpZ24gPSBuZXRfZ2VuZXJpYyhuZXQsIGlwNmdyZV9uZXRfaWQpO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjMyLVx0aWYgKG50LVx1MDAzZXBhcm1zLmNvbGxlY3RfbWQpIHtcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjMzOlx0XHRpZiAocnRubF9kZXJlZmVyZW5jZShpZ24tXHUwMDNlY29sbGVjdF9tZF90dW5fZXJzcGFuKSlcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjM0LVx0XHRcdHJldHVybiAtRUVYSVNUO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjQxLVx0aWYgKCFlcnIpIHtcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjQyOlx0XHRpcDZlcnNwYW5fdG5sX2xpbmtfY29uZmlnKG50LCAhdGJbSUZMQV9NVFVdKTtcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjQzOlx0XHRpcDZlcnNwYW5fdHVubmVsX2xpbmtfbWQoaWduLCBudCk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI0NC1cdFx0aXA2Z3JlX3R1bm5lbF9saW5rKG5ldF9nZW5lcmljKG5ldCwgaXA2Z3JlX25ldF9pZCksIG50KTtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI0OC1cbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjQ5OnN0YXRpYyB2b2lkIGlwNmVyc3Bhbl90bmxfbGlua19jb25maWcoc3RydWN0IGlwNl90bmwgKnQsIGludCBzZXRfbXR1KVxubmV0L2lwdjYvaXA2X2dyZS5jLTIyNTAte1xubmV0L2lwdjYvaXA2X2dyZS5jLTIyNTEtXHRpcDZncmVfdG5sX2xpbmtfY29uZmlnX2NvbW1vbih0KTtcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjUyOlx0aXA2Z3JlX3RubF9saW5rX2NvbmZpZ19yb3V0ZSh0LCBzZXRfbXR1LCBpcDZlcnNwYW5fY2FsY19obGVuKHQpKTtcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjUzLX1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjU0LVxubmV0L2lwdjYvaXA2X2dyZS5jOjIyNTU6c3RhdGljIGludCBpcDZlcnNwYW5fdG5sX2NoYW5nZShzdHJ1Y3QgaXA2X3RubCAqdCxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjU2LVx0XHRcdFx0Y29uc3Qgc3RydWN0IF9faXA2X3RubF9wYXJtICpwLCBpbnQgc2V0X210dSlcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI1OC1cdGlwNmdyZV90bmxfY29weV90bmxfcGFybSh0LCBwKTtcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjU5Olx0aXA2ZXJzcGFuX3RubF9saW5rX2NvbmZpZyh0LCBzZXRfbXR1KTtcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjYwLVx0cmV0dXJuIDA7XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTIyNjItXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI2MzpzdGF0aWMgaW50IGlwNmVyc3Bhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI2NC1cdFx0XHRcdHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI3OC1cbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjc5Olx0aXA2ZXJzcGFuX3NldF92ZXJzaW9uKGRhdGEsIFx1MDAyNnApO1xubmV0L2lwdjYvaXA2X2dyZS5jLTIyODAtXHRpcDZncmVfdHVubmVsX3VubGlua19tZChpZ24sIHQpO1xubmV0L2lwdjYvaXA2X2dyZS5jLTIyODEtXHRpcDZncmVfdHVubmVsX3VubGluayhpZ24sIHQpO1xubmV0L2lwdjYvaXA2X2dyZS5jOjIyODI6XHRpcDZlcnNwYW5fdG5sX2NoYW5nZSh0LCBcdTAwMjZwLCAhdGJbSUZMQV9NVFVdKTtcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjgzOlx0aXA2ZXJzcGFuX3R1bm5lbF9saW5rX21kKGlnbiwgdCk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI4NC1cdGlwNmdyZV90dW5uZWxfbGluayhpZ24sIHQpO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYz0yMzAzPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcDZncmVfdGFwX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMzE2LVxubmV0L2lwdjYvaXA2X2dyZS5jOjIzMTc6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGlwNmVyc3Bhbl90YXBfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjMxODpcdC5raW5kXHRcdD0gXCYjMzQ7aXA2ZXJzcGFuXCYjMzQ7LFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzMTktXHQubWF4dHlwZVx0PSBJRkxBX0dSRV9NQVgsXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTIzMjEtXHQucHJpdl9zaXplXHQ9IHNpemVvZihzdHJ1Y3QgaXA2X3RubCksXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjMyMjpcdC5zZXR1cFx0XHQ9IGlwNmVyc3Bhbl90YXBfc2V0dXAsXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjMyMzpcdC52YWxpZGF0ZVx0PSBpcDZlcnNwYW5fdGFwX3ZhbGlkYXRlLFxubmV0L2lwdjYvaXA2X2dyZS5jOjIzMjQ6XHQubmV3bGlua1x0PSBpcDZlcnNwYW5fbmV3bGluayxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMzI1Olx0LmNoYW5nZWxpbmtcdD0gaXA2ZXJzcGFuX2NoYW5nZWxpbmssXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjMyNi1cdC5nZXRfc2l6ZVx0PSBpcDZncmVfZ2V0X3NpemUsXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTIzMzU9c3RhdGljIGludCBfX2luaXQgaXA2Z3JlX2luaXQodm9pZClcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjM1OC1cbm5ldC9pcHY2L2lwNl9ncmUuYzoyMzU5Olx0ZXJyID0gcnRubF9saW5rX3JlZ2lzdGVyKFx1MDAyNmlwNmVyc3Bhbl90YXBfb3BzKTtcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMzYwLVx0aWYgKGVyciBcdTAwM2MgMClcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMzYxOlx0XHRnb3RvIGVyc3Bhbl9saW5rX2ZhaWxlZDtcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMzYyLVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMzY1LVxubmV0L2lwdjYvaXA2X2dyZS5jOjIzNjY6ZXJzcGFuX2xpbmtfZmFpbGVkOlxubmV0L2lwdjYvaXA2X2dyZS5jLTIzNjctXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZpcDZncmVfdGFwX29wcyk7XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTIzNzc9c3RhdGljIHZvaWQgX19leGl0IGlwNmdyZV9maW5pKHZvaWQpXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTIzODAtXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZpcDZncmVfbGlua19vcHMpO1xubmV0L2lwdjYvaXA2X2dyZS5jOjIzODE6XHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZpcDZlcnNwYW5fdGFwX29wcyk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjM4Mi1cdGluZXQ2X2RlbF9wcm90b2NvbChcdTAwMjZpcDZncmVfcHJvdG9jb2wsIElQUFJPVE9fR1JFKTtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MjM5Mj1NT0RVTEVfQUxJQVNfUlROTF9MSU5LKFwmIzM0O2lwNmdyZXRhcFwmIzM0Oyk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjM5MzpNT0RVTEVfQUxJQVNfUlROTF9MSU5LKFwmIzM0O2lwNmVyc3BhblwmIzM0Oyk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjM5NC1NT0RVTEVfQUxJQVNfTkVUREVWKFwmIzM0O2lwNmdyZTBcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDUzNwoJCQkJCQkJb3V0cHV0OiAyNTAKCQkJCQkJCXRob3VnaHRzOiA4MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHUkUvRVJTUEFOIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lIGRlYWxpbmcgd2l0aCBHUkUgYW5kIEVSU1BBTiBmdW5jdGlvbmFsaXR5LCBhbmQgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgY29kZSYjMzk7cyBkZXBlbmRlbmNpZXMuIEVSU1BBTiBpcyBpbmRlZWQgYnVpbHQgb24gdG9wIG9mIGBDT05GSUdfSVBWNl9HUkVgIGFuZCBgQ09ORklHX05FVF9JUEdSRWAsIHRoYXQmIzM5O3Mgc29saWQuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNvcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGJlaW5nIHRvdWNoZWQuIEkmIzM5O3ZlIGlkZW50aWZpZWQ6IGBpcGdyZV94bWl0YCwgYGVyc3Bhbl94bWl0YCwgYGdyZV90YXBfeG1pdGAsIGBpcGdyZV9maWxsX2luZm9gLCBgZXJzcGFuX2ZpbGxfaW5mb2AsIGBfX2dyZTZfeG1pdGAsIGBpcDZlcnNwYW5fdHVubmVsX3htaXRgLCBhbmQgYGlwNmdyZV9maWxsX2luZm9gLiBTaW5jZSBgX19ncmVfeG1pdGAgaXMgc3RhdGljLCBteSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgaXQgbWlnaHQgYmUgaW5saW5lZC4gR2l2ZW4gdGhhdCB0aGUgcGF0Y2ggdG91Y2hlcyBpdCBkaXJlY3RseSwgYW5kIGluY2x1ZGVzIGl0cyBjYWxsZXJzLCBpdCYjMzk7cyB3aXNlIHRvIGluY2x1ZGUgYF9fZ3JlX3htaXRgIGFzIGEgc3ltYm9sLgoKTG9va2luZyBhZ2FpbiBhdCB3aGF0IGlzIGJlaW5nIG1vZGlmaWVkLCBJIHNob3VsZCBiZSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczoKYF9fZ3JlX3htaXRgCmBpcGdyZV94bWl0YApgZXJzcGFuX3htaXRgCmBncmVfdGFwX3htaXRgCmBpcGdyZV9maWxsX2luZm9gCmBlcnNwYW5fZmlsbF9pbmZvYApgX19ncmU2X3htaXRgCmBpcDZlcnNwYW5fdHVubmVsX3htaXRgCmBpcDZncmVfZmlsbF9pbmZvYAoKWWVwLCB0aGVzZSBuZWVkIHRvIGJlIGxpc3RlZCBpbiBgRm9jdXNTeW1ib2xzYC4KCkEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBgX19ncmU2X3htaXRgICppcyogc3RhdGljLCBhbmQgdGhlIG5hbWUgaXMgY29ycmVjdC4gSSBmb3VuZCBpdCBpbiBgbmV0L2lwdjYvaXA2X2dyZS5jYC4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSBhbnkgY29uZmlnIGRlcGVuZGVuY2llcy4gSSYjMzk7dmUgZ290IGBDT05GSUdfTkVUX0lQR1JFYCBhbmQgYENPTkZJR19JUFY2X0dSRWAuIE5vIG5lZWQgdG8gY29uc2lkZXIgYENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUYCwgdGhlIGNoYW5nZXMgYXJlbiYjMzk7dCB1bmRlciB0aGF0IGAjaWZkZWZgLiBgQ09ORklHX0lQVjZgIGlzIGltcGxpY2l0bHkgZW5hYmxlZCBieSBgQ09ORklHX0lQVjZfR1JFYCwgc28gdGhhdCBpcyBhbHJlYWR5IGhhbmRsZWQuCgpTbywgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlICp3aHkqIG9mIHRoaXMgcGF0Y2guIEl0JiMzOTtzIGFib3V0IGZpeGluZyBhIGJ1ZyB3aGVyZSBgdHVubmVsLSZndDtwYXJtcy5vX2ZsYWdzYCB3YXMgZ2V0dGluZyB0cmFzaGVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGFuZCBuZXRsaW5rIGluZm8gZHVtcGluZy4gVGhpcyBjb3VsZCBsZWFkIHRvIHJhY2UgY29uZGl0aW9ucyBvciBiYWQgc3RhdGUgZm9yIEdSRS9FUlNQQU4gdHVubmVscy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBsb2NhbCBgZmxhZ3NgIHZhcmlhYmxlIGZvciB0aGUgdHJhbnNtaXNzaW9uIGFuZCBtb3ZlcyB0aGUgYElQX1RVTk5FTF9LRVlfQklUYCBzZXR0aW5nIHRvIGBpcGdyZV9maWxsX2luZm9gIGluc3RlYWQgb2YgbXVuZ2luZyB0aGUgdHVubmVsIHBhcmFtZXRlcnMgaW4gYGVyc3Bhbl9maWxsX2luZm9gLiBUaGUgZnVuY3Rpb25hbCBpbXBhY3QgaGVyZSBpcyBhYm91dCBwcm90ZWN0aW5nIHRoZSB0dW5uZWwgZGF0YSBmcm9tIGNvcnJ1cHRpb24uIFdlIG5lZWQgdG8gYmUgYWJsZSB0byBmdXp6eSBpdCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IGlzc3VlcyBoYXZlIGJlZW4gaW50cm9kdWNlZC4KCk15IGN1cnJlbnQgZm9jdXMgc3ltYm9scyBhcmUgdGhlc2U6CmBfX2dyZV94bWl0YApgaXBncmVfeG1pdGAKYGVyc3Bhbl94bWl0YApgZ3JlX3RhcF94bWl0YApgaXBncmVfZmlsbF9pbmZvYApgZXJzcGFuX2ZpbGxfaW5mb2AKYF9fZ3JlNl94bWl0YApgaXA2ZXJzcGFuX3R1bm5lbF94bWl0YApgaXA2Z3JlX2ZpbGxfaW5mb2AKCkkmIzM5O2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYGVyc3Bhbl9maWxsX2luZm9gIGlzIHN0aWxsIHByZXNlbnQgYWZ0ZXIgdGhlIGNoYW5nZXMgLSB5ZXAsIGl0JiMzOTtzIHRoZXJlLiBUaGUgcGF0Y2gganVzdCByZW1vdmVkIHRoZSBtb2RpZmljYXRpb24gb2YgYHQtJmd0O3Bhcm1zLm9fZmxhZ3NgLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0lQR1JFJiMzNDssCiAgICAmIzM0O0lQVjZfR1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19ncmVfeG1pdCYjMzQ7LAogICAgJiMzNDtpcGdyZV94bWl0JiMzNDssCiAgICAmIzM0O2Vyc3Bhbl94bWl0JiMzNDssCiAgICAmIzM0O2dyZV90YXBfeG1pdCYjMzQ7LAogICAgJiMzNDtpcGdyZV9maWxsX2luZm8mIzM0OywKICAgICYjMzQ7ZXJzcGFuX2ZpbGxfaW5mbyYjMzQ7LAogICAgJiMzNDtfX2dyZTZfeG1pdCYjMzQ7LAogICAgJiMzNDtpcDZlcnNwYW5fdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXA2Z3JlX2ZpbGxfaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3NgIHdhcyBtb2RpZmllZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbmV0bGluayBpbmZvIGR1bXBpbmcsIHdoaWNoIGNvdWxkIGNhdXNlIHJhY2UgY29uZGl0aW9ucyBvciB1bmludGVuZGVkIHN0YXRlIGNoYW5nZXMgZm9yIEdSRSBhbmQgRVJTUEFOIHR1bm5lbHMuIEl0IGludHJvZHVjZXMgYSBsb2NhbCBgZmxhZ3NgIHZhcmlhYmxlIHRvIGhvbGQgdGhlIGZsYWdzIGR1cmluZyB0cmFuc21pc3Npb24gYW5kIGNvcnJlY3RseSBzZXRzIHRoZSBgSVBfVFVOTkVMX0tFWV9CSVRgIGluIGBpcGdyZV9maWxsX2luZm9gIGluc3RlYWQgb2YgbW9kaWZ5aW5nIHRoZSB0dW5uZWwgcGFyYW1ldGVycyBpbiBgZXJzcGFuX2ZpbGxfaW5mb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBHUkUvRVJTUEFOIHR1bm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IGJ1Z3MgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtJUFY2X0dSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3htaXQmIzM0OywKICAgICYjMzQ7aXBncmVfeG1pdCYjMzQ7LAogICAgJiMzNDtlcnNwYW5feG1pdCYjMzQ7LAogICAgJiMzNDtncmVfdGFwX3htaXQmIzM0OywKICAgICYjMzQ7aXBncmVfZmlsbF9pbmZvJiMzNDssCiAgICAmIzM0O2Vyc3Bhbl9maWxsX2luZm8mIzM0OywKICAgICYjMzQ7X19ncmU2X3htaXQmIzM0OywKICAgICYjMzQ7aXA2ZXJzcGFuX3R1bm5lbF94bWl0JiMzNDssCiAgICAmIzM0O2lwNmdyZV9maWxsX2luZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzYCB3YXMgbW9kaWZpZWQgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIG5ldGxpbmsgaW5mbyBkdW1waW5nLCB3aGljaCBjb3VsZCBjYXVzZSByYWNlIGNvbmRpdGlvbnMgb3IgdW5pbnRlbmRlZCBzdGF0ZSBjaGFuZ2VzIGZvciBHUkUgYW5kIEVSU1BBTiB0dW5uZWxzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYGZsYWdzYCB2YXJpYWJsZSB0byBob2xkIHRoZSBmbGFncyBkdXJpbmcgdHJhbnNtaXNzaW9uIGFuZCBjb3JyZWN0bHkgc2V0cyB0aGUgYElQX1RVTk5FTF9LRVlfQklUYCBpbiBgaXBncmVfZmlsbF9pbmZvYCBpbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgdHVubmVsIHBhcmFtZXRlcnMgaW4gYGVyc3Bhbl9maWxsX2luZm9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgR1JFL0VSU1BBTiB0dW5uZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBidWdzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjBUMTg6NDY6MDYuMzQ3MDcxNTcyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ2ODk0NzU1OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJJUFY2X0dSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZ3JlX3htaXRcIixcbiAgICBcImlwZ3JlX3htaXRcIixcbiAgICBcImVyc3Bhbl94bWl0XCIsXG4gICAgXCJncmVfdGFwX3htaXRcIixcbiAgICBcImlwZ3JlX2ZpbGxfaW5mb1wiLFxuICAgIFwiZXJzcGFuX2ZpbGxfaW5mb1wiLFxuICAgIFwiX19ncmU2X3htaXRcIixcbiAgICBcImlwNmVyc3Bhbl90dW5uZWxfeG1pdFwiLFxuICAgIFwiaXA2Z3JlX2ZpbGxfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3NgIHdhcyBtb2RpZmllZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbmV0bGluayBpbmZvIGR1bXBpbmcsIHdoaWNoIGNvdWxkIGNhdXNlIHJhY2UgY29uZGl0aW9ucyBvciB1bmludGVuZGVkIHN0YXRlIGNoYW5nZXMgZm9yIEdSRSBhbmQgRVJTUEFOIHR1bm5lbHMuIEl0IGludHJvZHVjZXMgYSBsb2NhbCBgZmxhZ3NgIHZhcmlhYmxlIHRvIGhvbGQgdGhlIGZsYWdzIGR1cmluZyB0cmFuc21pc3Npb24gYW5kIGNvcnJlY3RseSBzZXRzIHRoZSBgSVBfVFVOTkVMX0tFWV9CSVRgIGluIGBpcGdyZV9maWxsX2luZm9gIGluc3RlYWQgb2YgbW9kaWZ5aW5nIHRoZSB0dW5uZWwgcGFyYW1ldGVycyBpbiBgZXJzcGFuX2ZpbGxfaW5mb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBHUkUvRVJTUEFOIHR1bm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IGJ1Z3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE4OjQ2OjA2LjM0NzA4MDYxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM0NjUxMDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODRlNWU1MTQ4OTNhMGExY2E2MTgyODU2YWMxZTBlYWRmNDQ4NmNhMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyMCAxODo0NjowNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXFxuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjQ0MmEyYzk1MTNlODRlIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXFxuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcXG5AQCAtNDc1LDE1ICs0NzUsMTIgQEAgc3RhdGljIGludCBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcbiBzdGF0aWMgdm9pZCBfX2dyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgaXBoZHIgKnRubF9wYXJhbXMsXFxuLVxcdFxcdCAgICAgICBfX2JlMTYgcHJvdG8pXFxuK1xcdFxcdCAgICAgICBfX2JlMTYgcHJvdG8sIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmZsYWdzKVxcbiB7XFxuIFxcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuLVxcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcXG4tXFxuLVxcdGlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xcbiBcXG4gXFx0LyogUHVzaCBHUkUgaGVhZGVyLiAqL1xcbi1cXHRncmVfYnVpbGRfaGVhZGVyKHNrYiwgdHVubmVsLVxcdTAwM2V0dW5faGxlbixcXG4rXFx0Z3JlX2J1aWxkX2hlYWRlcihza2IsIGdyZV9jYWxjX2hsZW4oZmxhZ3MpLFxcbiBcXHRcXHRcXHQgZmxhZ3MsIHByb3RvLCB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fa2V5LFxcbiBcXHRcXHRcXHQgdGVzdF9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKSA/XFxuIFxcdFxcdFxcdCBodG9ubChhdG9taWNfZmV0Y2hfaW5jKFxcdTAwMjZ0dW5uZWwtXFx1MDAzZW9fc2Vxbm8pKSA6IDApO1xcbkBAIC02NTQsNiArNjUxLDcgQEAgc3RhdGljIG5ldGRldl90eF90IGlwZ3JlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4ge1xcbiBcXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKnRubF9wYXJhbXM7XFxuK1xcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcXG4gXFxuIFxcdGlmICghcHNrYl9pbmV0X21heV9wdWxsKHNrYikpXFxuIFxcdFxcdGdvdG8gZnJlZV9za2I7XFxuQEAgLTY2Myw2ICs2NjEsOCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbiBcXHR9XFxuIFxcbitcXHRpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG4rXFxuIFxcdGlmIChkZXYtXFx1MDAzZWhlYWRlcl9vcHMpIHtcXG4gXFx0XFx0aW50IHB1bGxfbGVuID0gdHVubmVsLVxcdTAwM2VobGVuICsgc2l6ZW9mKHN0cnVjdCBpcGhkcik7XFxuIFxcbkBAIC02ODgsMTEgKzY4OCwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHR0bmxfcGFyYW1zID0gXFx1MDAyNnR1bm5lbC1cXHUwMDNlcGFybXMuaXBoO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZ3JlX2hhbmRsZV9vZmZsb2Fkcyhza2IsIHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICAgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKSkpXFxuK1xcdGlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncykpKVxcbiBcXHRcXHRnb3RvIGZyZWVfc2tiO1xcbiBcXG4tXFx0X19ncmVfeG1pdChza2IsIGRldiwgdG5sX3BhcmFtcywgc2tiLVxcdTAwM2Vwcm90b2NvbCk7XFxuK1xcdF9fZ3JlX3htaXQoc2tiLCBkZXYsIHRubF9wYXJhbXMsIHNrYi1cXHUwMDNlcHJvdG9jb2wsIGZsYWdzKTtcXG4gXFx0cmV0dXJuIE5FVERFVl9UWF9PSztcXG4gXFxuIGZyZWVfc2tiOlxcbkBAIC03MDUsNiArNzA0LDcgQEAgc3RhdGljIG5ldGRldl90eF90IGVyc3Bhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcXG4gXFx0Ym9vbCB0cnVuY2F0ZSA9IGZhbHNlO1xcbiBcXHRfX2JlMTYgcHJvdG87XFxuIFxcbkBAIC03MjgsMTAgKzcyOCwxMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZXJzcGFuX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0dHJ1bmNhdGUgPSB0cnVlO1xcbiBcXHR9XFxuIFxcbitcXHRpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG4rXFxuIFxcdC8qIFB1c2ggRVJTUEFOIGhlYWRlciAqL1xcbiBcXHRpZiAodHVubmVsLVxcdTAwM2VlcnNwYW5fdmVyID09IDApIHtcXG4gXFx0XFx0cHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pO1xcbi1cXHRcXHRfX2NsZWFyX2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG4rXFx0XFx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKTtcXG4gXFx0fSBlbHNlIGlmICh0dW5uZWwtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xcbiBcXHRcXHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsLVxcdTAwM2VwYXJtcy5vX2tleSksXFxuIFxcdFxcdFxcdFxcdCAgICB0dW5uZWwtXFx1MDAzZWluZGV4LFxcbkBAIC03NDYsOCArNzQ4LDkgQEAgc3RhdGljIG5ldGRldl90eF90IGVyc3Bhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGdvdG8gZnJlZV9za2I7XFxuIFxcdH1cXG4gXFxuLVxcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xcbi1cXHRfX2dyZV94bWl0KHNrYiwgZGV2LCBcXHUwMDI2dHVubmVsLVxcdTAwM2VwYXJtcy5pcGgsIHByb3RvKTtcXG4rXFx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncyk7XFxuK1xcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCBmbGFncyk7XFxuK1xcdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFxcdTAwMjZ0dW5uZWwtXFx1MDAzZXBhcm1zLmlwaCwgcHJvdG8sIGZsYWdzKTtcXG4gXFx0cmV0dXJuIE5FVERFVl9UWF9PSztcXG4gXFxuIGZyZWVfc2tiOlxcbkBAIC03NjAsNiArNzYzLDcgQEAgc3RhdGljIG5ldGRldl90eF90IGdyZV90YXBfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcXG4gXFxuIFxcdGlmICghcHNrYl9pbmV0X21heV9wdWxsKHNrYikpXFxuIFxcdFxcdGdvdG8gZnJlZV9za2I7XFxuQEAgLTc2OSwxNCArNzczLDE1IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBncmVfdGFwX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0cmV0dXJuIE5FVERFVl9UWF9PSztcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGdyZV9oYW5kbGVfb2ZmbG9hZHMoc2tiLCB0ZXN0X2JpdChJUF9UVU5ORUxfQ1NVTV9CSVQsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIHR1bm5lbC1cXHUwMDNlcGFybXMub19mbGFncykpKVxcbitcXHRpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG4rXFxuK1xcdGlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncykpKVxcbiBcXHRcXHRnb3RvIGZyZWVfc2tiO1xcbiBcXG4gXFx0aWYgKHNrYl9jb3dfaGVhZChza2IsIGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tKSlcXG4gXFx0XFx0Z290byBmcmVlX3NrYjtcXG4gXFxuLVxcdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFxcdTAwMjZ0dW5uZWwtXFx1MDAzZXBhcm1zLmlwaCwgaHRvbnMoRVRIX1BfVEVCKSk7XFxuK1xcdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFxcdTAwMjZ0dW5uZWwtXFx1MDAzZXBhcm1zLmlwaCwgaHRvbnMoRVRIX1BfVEVCKSwgZmxhZ3MpO1xcbiBcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbiBcXG4gZnJlZV9za2I6XFxuQEAgLTE1NjAsMTIgKzE1NjUsMTUgQEAgc3RhdGljIHNpemVfdCBpcGdyZV9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXG4gc3RhdGljIGludCBpcGdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgaXBfdHVubmVsICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4tXFx0c3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAgPSBcXHUwMDI2dC1cXHUwMDNlcGFybXM7XFxuK1xcdGNvbnN0IHN0cnVjdCBpcF90dW5uZWwgKnQgPSBuZXRkZXZfcHJpdihkZXYpO1xcbitcXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCA9IFxcdTAwMjZ0LVxcdTAwM2VwYXJtcztcXG4gXFx0SVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1Mob19mbGFncyk7XFxuIFxcbiBcXHRpcF90dW5uZWxfZmxhZ3NfY29weShvX2ZsYWdzLCBwLVxcdTAwM2VvX2ZsYWdzKTtcXG4gXFxuK1xcdGlmICh0LVxcdTAwM2VlcnNwYW5fdmVyICE9IDAgXFx1MDAyNlxcdTAwMjYgIXQtXFx1MDAzZWNvbGxlY3RfbWQpXFxuK1xcdFxcdF9fc2V0X2JpdChJUF9UVU5ORUxfS0VZX0JJVCwgb19mbGFncyk7XFxuK1xcbiBcXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0dSRV9MSU5LLCBwLVxcdTAwM2VsaW5rKSB8fFxcbiBcXHQgICAgbmxhX3B1dF9iZTE2KHNrYiwgSUZMQV9HUkVfSUZMQUdTLFxcbiBcXHRcXHRcXHQgZ3JlX3RubF9mbGFnc190b19ncmVfZmxhZ3MocC1cXHUwMDNlaV9mbGFncykpIHx8XFxuQEAgLTE2MDgsMTIgKzE2MTYsOSBAQCBzdGF0aWMgaW50IGlwZ3JlX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXG4gc3RhdGljIGludCBlcnNwYW5fZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0c3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdGNvbnN0IHN0cnVjdCBpcF90dW5uZWwgKnQgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXG4gXFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgXFx1MDAzYz0gMikge1xcbi1cXHRcXHRpZiAodC1cXHUwMDNlZXJzcGFuX3ZlciAhPSAwIFxcdTAwMjZcXHUwMDI2ICF0LVxcdTAwM2Vjb2xsZWN0X21kKVxcbi1cXHRcXHRcXHRfX3NldF9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIHQtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xcbi1cXG4gXFx0XFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0dSRV9FUlNQQU5fVkVSLCB0LVxcdTAwM2VlcnNwYW5fdmVyKSlcXG4gXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZ3JlLmMgYi9uZXQvaXB2Ni9pcDZfZ3JlLmNcXG5pbmRleCA3YzA5YTI2OWIzNTIxNi4uOWU2OGFmZWM5ZGNlNDEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvaXA2X2dyZS5jXFxuKysrIGIvbmV0L2lwdjYvaXA2X2dyZS5jXFxuQEAgLTc3Nyw3ICs3NzcsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgX19ncmU2X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdFxcdGlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xcbiBcXG4tXFx0XFx0Z3JlX2J1aWxkX2hlYWRlcihza2IsIHR1bm5lbC1cXHUwMDNldHVuX2hsZW4sIGZsYWdzLFxcbitcXHRcXHRncmVfYnVpbGRfaGVhZGVyKHNrYiwgZ3JlX2NhbGNfaGxlbihmbGFncyksIGZsYWdzLFxcbiBcXHRcXHRcXHRcXHQgcHJvdG9jb2wsIHR1bm5lbC1cXHUwMDNlcGFybXMub19rZXksXFxuIFxcdFxcdFxcdFxcdCB0ZXN0X2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgZmxhZ3MpID9cXG4gXFx0XFx0XFx0XFx0IGh0b25sKGF0b21pY19mZXRjaF9pbmMoXFx1MDAyNnR1bm5lbC1cXHUwMDNlb19zZXFubykpIDpcXG5AQCAtOTY0LDcgKzk2NCw2IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBpcDZlcnNwYW5fdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0aWYgKHNrYl9jb3dfaGVhZChza2IsIGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tID86IHQtXFx1MDAzZWhsZW4pKVxcbiBcXHRcXHRnb3RvIHR4X2VycjtcXG4gXFxuLVxcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCB0LVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG4gXFx0SVBDQihza2IpLVxcdTAwM2VmbGFncyA9IDA7XFxuIFxcbiBcXHQvKiBGb3IgY29sbGVjdF9tZCBtb2RlLCBkZXJpdmUgZmw2IGZyb20gdGhlIHR1bm5lbCBrZXksXFxuQEAgLTIxMTUsOCArMjExNCw4IEBAIHN0YXRpYyBzaXplX3QgaXA2Z3JlX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBzdGF0aWMgaW50IGlwNmdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgaXA2X3RubCAqdCA9IG5ldGRldl9wcml2KGRldik7XFxuLVxcdHN0cnVjdCBfX2lwNl90bmxfcGFybSAqcCA9IFxcdTAwMjZ0LVxcdTAwM2VwYXJtcztcXG4rXFx0Y29uc3Qgc3RydWN0IGlwNl90bmwgKnQgPSBuZXRkZXZfcHJpdihkZXYpO1xcbitcXHRjb25zdCBzdHJ1Y3QgX19pcDZfdG5sX3Bhcm0gKnAgPSBcXHUwMDI2dC1cXHUwMDNlcGFybXM7XFxuIFxcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKG9fZmxhZ3MpO1xcbiBcXG4gXFx0aXBfdHVubmVsX2ZsYWdzX2NvcHkob19mbGFncywgcC1cXHUwMDNlb19mbGFncyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE4OjQ2OjA3LjA4Mzg3MzA5NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMzOTUyNjU5Mjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2dyZV94bWl0XCIsXG4gICAgXCJpcGdyZV94bWl0XCIsXG4gICAgXCJlcnNwYW5feG1pdFwiLFxuICAgIFwiZ3JlX3RhcF94bWl0XCIsXG4gICAgXCJpcGdyZV9maWxsX2luZm9cIixcbiAgICBcImVyc3Bhbl9maWxsX2luZm9cIixcbiAgICBcIl9fZ3JlNl94bWl0XCIsXG4gICAgXCJpcDZlcnNwYW5fdHVubmVsX3htaXRcIixcbiAgICBcImlwNmdyZV9maWxsX2luZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzYCB3YXMgbW9kaWZpZWQgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIG5ldGxpbmsgaW5mbyBkdW1waW5nLCB3aGljaCBjb3VsZCBjYXVzZSByYWNlIGNvbmRpdGlvbnMgb3IgdW5pbnRlbmRlZCBzdGF0ZSBjaGFuZ2VzIGZvciBHUkUgYW5kIEVSU1BBTiB0dW5uZWxzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYGZsYWdzYCB2YXJpYWJsZSB0byBob2xkIHRoZSBmbGFncyBkdXJpbmcgdHJhbnNtaXNzaW9uIGFuZCBjb3JyZWN0bHkgc2V0cyB0aGUgYElQX1RVTk5FTF9LRVlfQklUYCBpbiBgaXBncmVfZmlsbF9pbmZvYCBpbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgdHVubmVsIHBhcmFtZXRlcnMgaW4gYGVyc3Bhbl9maWxsX2luZm9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgR1JFL0VSU1BBTiB0dW5uZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBidWdzIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg0ZTVlNTE0ODkzYTBhMWNhNjE4Mjg1NmFjMWUwZWFkZjQ0ODZjYTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyMCAxODo0NjowNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmNcbmluZGV4IDNlZmRmYjRmZmEyMTEyLi40NDJhMmM5NTEzZTg0ZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXG4rKysgYi9uZXQvaXB2NC9pcF9ncmUuY1xuQEAgLTQ3NSwxNSArNDc1LDEyIEBAIHN0YXRpYyBpbnQgZ3JlX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIHN0YXRpYyB2b2lkIF9fZ3JlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpcGhkciAqdG5sX3BhcmFtcyxcbi1cdFx0ICAgICAgIF9fYmUxNiBwcm90bylcbitcdFx0ICAgICAgIF9fYmUxNiBwcm90bywgY29uc3QgdW5zaWduZWQgbG9uZyAqZmxhZ3MpXG4ge1xuIFx0c3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcbi1cdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcbi1cbi1cdGlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4gXG4gXHQvKiBQdXNoIEdSRSBoZWFkZXIuICovXG4tXHRncmVfYnVpbGRfaGVhZGVyKHNrYiwgdHVubmVsLVx1MDAzZXR1bl9obGVuLFxuK1x0Z3JlX2J1aWxkX2hlYWRlcihza2IsIGdyZV9jYWxjX2hsZW4oZmxhZ3MpLFxuIFx0XHRcdCBmbGFncywgcHJvdG8sIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2tleSxcbiBcdFx0XHQgdGVzdF9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKSA/XG4gXHRcdFx0IGh0b25sKGF0b21pY19mZXRjaF9pbmMoXHUwMDI2dHVubmVsLVx1MDAzZW9fc2Vxbm8pKSA6IDApO1xuQEAgLTY1NCw2ICs2NTEsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIHtcbiBcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4gXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKnRubF9wYXJhbXM7XG4rXHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhmbGFncyk7XG4gXG4gXHRpZiAoIXBza2JfaW5ldF9tYXlfcHVsbChza2IpKVxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuQEAgLTY2Myw2ICs2NjEsOCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIFx0fVxuIFxuK1x0aXBfdHVubmVsX2ZsYWdzX2NvcHkoZmxhZ3MsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKTtcbitcbiBcdGlmIChkZXYtXHUwMDNlaGVhZGVyX29wcykge1xuIFx0XHRpbnQgcHVsbF9sZW4gPSB0dW5uZWwtXHUwMDNlaGxlbiArIHNpemVvZihzdHJ1Y3QgaXBoZHIpO1xuIFxuQEAgLTY4OCwxMSArNjg4LDEwIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBpcGdyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHRubF9wYXJhbXMgPSBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMuaXBoO1xuIFx0fVxuIFxuLVx0aWYgKGdyZV9oYW5kbGVfb2ZmbG9hZHMoc2tiLCB0ZXN0X2JpdChJUF9UVU5ORUxfQ1NVTV9CSVQsXG4tXHRcdFx0XHRcdCAgICAgIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKSkpXG4rXHRpZiAoZ3JlX2hhbmRsZV9vZmZsb2Fkcyhza2IsIHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgZmxhZ3MpKSlcbiBcdFx0Z290byBmcmVlX3NrYjtcbiBcbi1cdF9fZ3JlX3htaXQoc2tiLCBkZXYsIHRubF9wYXJhbXMsIHNrYi1cdTAwM2Vwcm90b2NvbCk7XG4rXHRfX2dyZV94bWl0KHNrYiwgZGV2LCB0bmxfcGFyYW1zLCBza2ItXHUwMDNlcHJvdG9jb2wsIGZsYWdzKTtcbiBcdHJldHVybiBORVRERVZfVFhfT0s7XG4gXG4gZnJlZV9za2I6XG5AQCAtNzA1LDYgKzcwNCw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBlcnNwYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4rXHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhmbGFncyk7XG4gXHRib29sIHRydW5jYXRlID0gZmFsc2U7XG4gXHRfX2JlMTYgcHJvdG87XG4gXG5AQCAtNzI4LDEwICs3MjgsMTIgQEAgc3RhdGljIG5ldGRldl90eF90IGVyc3Bhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHRydW5jYXRlID0gdHJ1ZTtcbiBcdH1cbiBcbitcdGlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4rXG4gXHQvKiBQdXNoIEVSU1BBTiBoZWFkZXIgKi9cbiBcdGlmICh0dW5uZWwtXHUwMDNlZXJzcGFuX3ZlciA9PSAwKSB7XG4gXHRcdHByb3RvID0gaHRvbnMoRVRIX1BfRVJTUEFOKTtcbi1cdFx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKTtcbitcdFx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKTtcbiBcdH0gZWxzZSBpZiAodHVubmVsLVx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xuIFx0XHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsLVx1MDAzZXBhcm1zLm9fa2V5KSxcbiBcdFx0XHRcdCAgICB0dW5uZWwtXHUwMDNlaW5kZXgsXG5AQCAtNzQ2LDggKzc0OCw5IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBlcnNwYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuIFx0fVxuIFxuLVx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKTtcbi1cdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFx1MDAyNnR1bm5lbC1cdTAwM2VwYXJtcy5pcGgsIHByb3RvKTtcbitcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgZmxhZ3MpO1xuK1x0X19jbGVhcl9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIGZsYWdzKTtcbitcdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFx1MDAyNnR1bm5lbC1cdTAwM2VwYXJtcy5pcGgsIHByb3RvLCBmbGFncyk7XG4gXHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIFxuIGZyZWVfc2tiOlxuQEAgLTc2MCw2ICs3NjMsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZ3JlX3RhcF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4rXHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhmbGFncyk7XG4gXG4gXHRpZiAoIXBza2JfaW5ldF9tYXlfcHVsbChza2IpKVxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuQEAgLTc2OSwxNCArNzczLDE1IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBncmVfdGFwX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbiBcdH1cbiBcbi1cdGlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULFxuLVx0XHRcdFx0XHQgICAgICB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncykpKVxuK1x0aXBfdHVubmVsX2ZsYWdzX2NvcHkoZmxhZ3MsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKTtcbitcbitcdGlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncykpKVxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuIFxuIFx0aWYgKHNrYl9jb3dfaGVhZChza2IsIGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20pKVxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuIFxuLVx0X19ncmVfeG1pdChza2IsIGRldiwgXHUwMDI2dHVubmVsLVx1MDAzZXBhcm1zLmlwaCwgaHRvbnMoRVRIX1BfVEVCKSk7XG4rXHRfX2dyZV94bWl0KHNrYiwgZGV2LCBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMuaXBoLCBodG9ucyhFVEhfUF9URUIpLCBmbGFncyk7XG4gXHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIFxuIGZyZWVfc2tiOlxuQEAgLTE1NjAsMTIgKzE1NjUsMTUgQEAgc3RhdGljIHNpemVfdCBpcGdyZV9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIHN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCA9IFx1MDAyNnQtXHUwMDNlcGFybXM7XG4rXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcdGNvbnN0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwID0gXHUwMDI2dC1cdTAwM2VwYXJtcztcbiBcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKG9fZmxhZ3MpO1xuIFxuIFx0aXBfdHVubmVsX2ZsYWdzX2NvcHkob19mbGFncywgcC1cdTAwM2VvX2ZsYWdzKTtcbiBcbitcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgIT0gMCBcdTAwMjZcdTAwMjYgIXQtXHUwMDNlY29sbGVjdF9tZClcbitcdFx0X19zZXRfYml0KElQX1RVTk5FTF9LRVlfQklULCBvX2ZsYWdzKTtcbitcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfR1JFX0xJTkssIHAtXHUwMDNlbGluaykgfHxcbiBcdCAgICBubGFfcHV0X2JlMTYoc2tiLCBJRkxBX0dSRV9JRkxBR1MsXG4gXHRcdFx0IGdyZV90bmxfZmxhZ3NfdG9fZ3JlX2ZsYWdzKHAtXHUwMDNlaV9mbGFncykpIHx8XG5AQCAtMTYwOCwxMiArMTYxNiw5IEBAIHN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gc3RhdGljIGludCBlcnNwYW5fZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4rXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbiBcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgXHUwMDNjPSAyKSB7XG4tXHRcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgIT0gMCBcdTAwMjZcdTAwMjYgIXQtXHUwMDNlY29sbGVjdF9tZClcbi1cdFx0XHRfX3NldF9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIHQtXHUwMDNlcGFybXMub19mbGFncyk7XG4tXG4gXHRcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9HUkVfRVJTUEFOX1ZFUiwgdC1cdTAwM2VlcnNwYW5fdmVyKSlcbiBcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZ3JlLmMgYi9uZXQvaXB2Ni9pcDZfZ3JlLmNcbmluZGV4IDdjMDlhMjY5YjM1MjE2Li45ZTY4YWZlYzlkY2U0MSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwNl9ncmUuY1xuKysrIGIvbmV0L2lwdjYvaXA2X2dyZS5jXG5AQCAtNzc3LDcgKzc3Nyw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBfX2dyZTZfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0XHRpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xuIFxuLVx0XHRncmVfYnVpbGRfaGVhZGVyKHNrYiwgdHVubmVsLVx1MDAzZXR1bl9obGVuLCBmbGFncyxcbitcdFx0Z3JlX2J1aWxkX2hlYWRlcihza2IsIGdyZV9jYWxjX2hsZW4oZmxhZ3MpLCBmbGFncyxcbiBcdFx0XHRcdCBwcm90b2NvbCwgdHVubmVsLVx1MDAzZXBhcm1zLm9fa2V5LFxuIFx0XHRcdFx0IHRlc3RfYml0KElQX1RVTk5FTF9TRVFfQklULCBmbGFncykgP1xuIFx0XHRcdFx0IGh0b25sKGF0b21pY19mZXRjaF9pbmMoXHUwMDI2dHVubmVsLVx1MDAzZW9fc2Vxbm8pKSA6XG5AQCAtOTY0LDcgKzk2NCw2IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBpcDZlcnNwYW5fdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmIChza2JfY293X2hlYWQoc2tiLCBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID86IHQtXHUwMDNlaGxlbikpXG4gXHRcdGdvdG8gdHhfZXJyO1xuIFxuLVx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIHQtXHUwMDNlcGFybXMub19mbGFncyk7XG4gXHRJUENCKHNrYiktXHUwMDNlZmxhZ3MgPSAwO1xuIFxuIFx0LyogRm9yIGNvbGxlY3RfbWQgbW9kZSwgZGVyaXZlIGZsNiBmcm9tIHRoZSB0dW5uZWwga2V5LFxuQEAgLTIxMTUsOCArMjExNCw4IEBAIHN0YXRpYyBzaXplX3QgaXA2Z3JlX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gc3RhdGljIGludCBpcDZncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IGlwNl90bmwgKnQgPSBuZXRkZXZfcHJpdihkZXYpO1xuLVx0c3RydWN0IF9faXA2X3RubF9wYXJtICpwID0gXHUwMDI2dC1cdTAwM2VwYXJtcztcbitcdGNvbnN0IHN0cnVjdCBpcDZfdG5sICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcdGNvbnN0IHN0cnVjdCBfX2lwNl90bmxfcGFybSAqcCA9IFx1MDAyNnQtXHUwMDNlcGFybXM7XG4gXHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhvX2ZsYWdzKTtcbiBcbiBcdGlwX3R1bm5lbF9mbGFnc19jb3B5KG9fZmxhZ3MsIHAtXHUwMDNlb19mbGFncyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxODo0NjowNy4wODM4NzU1MTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjE0NDQyNzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgR1JFL0VSU1BBTiBUdW5uZWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGhvdyBmbGFncyBhcmUgaGFuZGxlZCBpbiB0aGUga2VybmVsJ3MgR1JFIGFuZCBFUlNQQU4gdHVubmVsIGNvZGUsIHNwZWNpZmljYWxseSBpbiBgbmV0L2lwdjQvaXBfZ3JlLmNgIGFuZCBgbmV0L2lwdjYvaXA2X2dyZS5jYC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBhIHByb2JsZW0gd2hlcmUgdGhlIGB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFnc2AgbWVtYmVyLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSB0dW5uZWwgY29uZmlndXJhdGlvbiwgd2FzIGJlaW5nIG1vZGlmaWVkICpkdXJpbmcgdHJhbnNtaXNzaW9uKi4gVGhhdCdzIGEgY2xhc3NpYyByZWNpcGUgZm9yIHJhY2UgY29uZGl0aW9ucyBhbmQgb3RoZXIgbmFzdGllcywgYW5kIGZyYW5rbHksIGEgZGVzaWduIGZsYXcuXG5cblRoZSBmaXg/IEluc3RlYWQgb2YgZGlyZWN0bHkgbXVja2luZyB3aXRoIGB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFnc2AsIHRoZSBwYXRjaCBjb3BpZXMgaXQgdG8gYSBsb2NhbCBgZmxhZ3NgIHZhcmlhYmxlIHdpdGhpbiB0aGUgdHJhbnNtaXNzaW9uIGZ1bmN0aW9uIGFuZCB0aGVuIG1vZGlmaWVzIHRoYXQuIFNtYXJ0LiBTYWZlLiBXZSB3YW50IHRvIGF2b2lkIGFueSBwb3NzaWJpbGl0eSBvZiBjaGFuZ2VzIGR1cmluZyBhIHRyYW5zbWlzc2lvbi4gVGhpcyBkZWZpbml0ZWx5IGNsZWFucyB1cCBhIGJpdCBvZiBhIHNwYWdoZXR0aSBzY2VuYXJpby5cblxuSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggYWxzbyBjb3JyZWN0cyB0aGUgZnVuY3Rpb24gYGlwZ3JlX2ZpbGxfaW5mb2AgdG8gYXBwcm9wcmlhdGVseSBzZXQgdGhlIGBJUF9UVU5ORUxfS0VZX0JJVGAgb24gYG9fZmxhZ3NgIGluc3RlYWQgb2YgbW9kaWZ5aW5nIGB0LVx1MDAzZXBhcm1zLm9fZmxhZ3NgIGRpcmVjdGx5IHdpdGhpbiBgZXJzcGFuX2ZpbGxfaW5mb2AuIFdhaXQsIHdhcyBgZXJzcGFuX2ZpbGxfaW5mb2AgbW9kaWZ5aW5nIGB0LVx1MDAzZXBhcm1zLm9fZmxhZ3NgPyBZZXMsIHRoZXJlIHdhcyBhIGBfX3NldF9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIHQtXHUwMDNlcGFybXMub19mbGFncyk7YCBjYWxsIGluIGBlcnNwYW5fZmlsbF9pbmZvYCwgd2hpY2ggaXMgYSBidWcgc2luY2UgdGhvc2UgZmlsbF9pbmZvIGZ1bmN0aW9ucyBhcmUgZm9yIGR1bXBpbmcgdHVubmVsIGluZm8sIG5vdCBjaGFuZ2luZyBjb25maWd1cmF0aW9uLiBUaGF0J3MgYSBzdWJ0bGUgYnV0IHNpZ25pZmljYW50IGNvcnJlY3Rpb24uXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB0byBob3cgdGhlc2UgdHVubmVscyBvcGVyYXRlLiBJdCdzIGEgc2VjdXJpdHkgYW5kIHJlbGlhYmlsaXR5IGltcHJvdmVtZW50LiBEZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IG5lZWRzIGZ1enplZC5cblxuU28sIGxldCdzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgZnV6emluZzogYGlwZ3JlX3htaXRgLCBgZXJzcGFuX3htaXRgLCBgZ3JlX3RhcF94bWl0YCwgYGlwZ3JlX2ZpbGxfaW5mb2AsIGBlcnNwYW5fZmlsbF9pbmZvYCwgYF9fZ3JlNl94bWl0YCwgYGlwNmVyc3Bhbl90dW5uZWxfeG1pdGAsIGFuZCBgaXA2Z3JlX2ZpbGxfaW5mb2AuIFRoYXQncyB0aGUgY29yZSBzZXQgdG8gc3RhcnQgd2l0aC5cblxuSSBzaG91bGQgYWxzbyBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgdG8gZW5zdXJlIHRoZXNlIGZlYXR1cmVzIGFyZSBlbmFibGVkIGR1cmluZyBmdXp6aW5nLiBGb3IgdGhlIElQdjQgR1JFIGNvZGUsIGl0J3MgYENPTkZJR19ORVRfSVBHUkVgLCBhbmQgZm9yIHRoZSBJUHY2IEdSRSBjb2RlLCBpdCdzIGBDT05GSUdfSVBWNl9HUkVgLiBUaW1lIHRvIGNvbmZpcm0gd2l0aCBgZ3JlcHBlcmAgYW5kIG1ha2Ugc3VyZSBteSBidWlsZCBlbnZpcm9ubWVudCBpcyBzZXQgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDYyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTg6NDY6MTQuNjk4MzIwOTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxMjg4MDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19ORVRfSVBHUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTI4PW9iai0kKENPTkZJR19ORVRfRk9VKSArPSBmb3Uub1xcbm5ldC9pcHY0L01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19ORVRfSVBHUkVfREVNVVgpICs9IGdyZS5vXFxubmV0L2lwdjQvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgKz0gaXBfZ3JlLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0zMS11ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9NDQwPXN0YXRpYyBpbnQgZ3JlX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNDQ1LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjQ0NjojaWZkZWYgQ09ORklHX05FVF9JUEdSRV9CUk9BRENBU1RcXG5uZXQvaXB2NC9pcF9ncmUuYy00NDctXFx0aWYgKGlwdjRfaXNfbXVsdGljYXN0KGlwX2hkcihza2IpLVxcdTAwM2VkYWRkcikpIHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTkzNj1zdGF0aWMgY29uc3Qgc3RydWN0IGhlYWRlcl9vcHMgaXBncmVfaGVhZGVyX29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTk0MC1cXG5uZXQvaXB2NC9pcF9ncmUuYzo5NDE6I2lmZGVmIENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUXFxubmV0L2lwdjQvaXBfZ3JlLmMtOTQyLXN0YXRpYyBpbnQgaXBncmVfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9OTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXBncmVfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTk4Ny1cXHQubmRvX3VuaW5pdFxcdFxcdD0gaXBfdHVubmVsX3VuaW5pdCxcXG5uZXQvaXB2NC9pcF9ncmUuYzo5ODg6I2lmZGVmIENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUXFxubmV0L2lwdjQvaXBfZ3JlLmMtOTg5LVxcdC5uZG9fb3BlblxcdFxcdD0gaXBncmVfb3BlbixcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTEwNDE9c3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTA1NS1cXHRpZiAoaXBoLVxcdTAwM2VkYWRkciBcXHUwMDI2XFx1MDAyNiAhdHVubmVsLVxcdTAwM2Vjb2xsZWN0X21kKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTA1NjojaWZkZWYgQ09ORklHX05FVF9JUEdSRV9CUk9BRENBU1RcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMDU3LVxcdFxcdGlmIChpcHY0X2lzX211bHRpY2FzdChpcGgtXFx1MDAzZWRhZGRyKSkge1xcbi0tXFxubmV0L2lwdjQvaXBfdHVubmVsLmM9Mzc3PWludCBpcF90dW5uZWxfcmN2KHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTM4My1cXG5uZXQvaXB2NC9pcF90dW5uZWwuYzozODQ6I2lmZGVmIENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUXFxubmV0L2lwdjQvaXBfdHVubmVsLmMtMzg1LVxcdGlmIChpcHY0X2lzX211bHRpY2FzdChpcGgtXFx1MDAzZWRhZGRyKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxODo0NjoxNS4zMjk2MTQ0NTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTA5NTEzMTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSVB2NiBHUkU6IENvbnNpZGVyYXRpb25zIGFuZCBJbXBsaWNhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdoZW4gd2UncmUgdGFsa2luZyBhYm91dCBJUHY2IEdSRSwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgaW5oZXJlbnQgY29tcGxleGl0aWVzLCBhbmQsIGZyYW5rbHksIHRoZSBwb3RlbnRpYWwgYWR2YW50YWdlcy4gV2Uga25vdyB0aGF0IEdlbmVyaWMgUm91dGluZyBFbmNhcHN1bGF0aW9uIChHUkUpIHByb3ZpZGVzIGEgd2F5IHRvIGVuY2Fwc3VsYXRlIG5ldHdvcmsgbGF5ZXIgcHJvdG9jb2xzIGluc2lkZSBvZiBhIHZpcnR1YWwgcG9pbnQtdG8tcG9pbnQgbGluay4gSW4gdGhlIElQdjQgd29ybGQsIHdlJ3JlIGFsbCBmYW1pbGlhciB3aXRoIGhvdyB0aGlzIHdvcmtzLiBCdXQgSVB2Ni4uLiBpdCBhZGRzIGEgd2hvbGUgbmV3IGxheWVyIG9mIG51YW5jZS5cblxuTXkgaW1tZWRpYXRlIGNvbnNpZGVyYXRpb25zIGFyZSBmb2N1c2VkIG9uIHRoZSBwcmFjdGljYWxpdGllcy4gRmlyc3QsIHRoZSBpbXBhY3Qgb24gdGhlIE1UVSwgdGhlIE1heGltdW0gVHJhbnNtaXNzaW9uIFVuaXQuIElQdjYgaGVhZGVycyBhcmUgYWxyZWFkeSBsYXJnZXIgdGhhbiBJUHY0LiBBZGQgYSBHUkUgaGVhZGVyIG9uIHRvcCBvZiB0aGF0LCBhbmQgd2UncmUgKmRlZmluaXRlbHkqIGdvaW5nIHRvIGJlIGJ1bXBpbmcgaW50byBmcmFnbWVudGF0aW9uIGlzc3VlcyBpZiB3ZSdyZSBub3QgY2FyZWZ1bC4gSSBuZWVkIHRvIGJlIHRoaW5raW5nIGFib3V0IHBhdGggTVRVIGRpc2NvdmVyeSwgYW5kIGhvdyB0byBlZmZlY3RpdmVseSBtYW5hZ2UgdGhhdCBhY3Jvc3MgcG90ZW50aWFsbHkgZGlzcGFyYXRlIG5ldHdvcmtzLlxuXG5UaGVuIHRoZXJlIGFyZSB0aGUgcm91dGluZyBpbXBsaWNhdGlvbnMuIEhvdyBkbyB3ZSBlbnN1cmUgcHJvcGVyIHJvdXRpbmcgd2l0aGluIHRoZSBHUkUgdHVubmVsPyBJUHY2J3MgYXV0by1jb25maWd1cmF0aW9uIGFuZCBhZGRyZXNzIGFsbG9jYXRpb24gYXJlIGRpZmZlcmVudCwgYW5kIEkgY2FuJ3QganVzdCBhc3N1bWUgdGhlIHNhbWUgbWV0aG9kb2xvZ2llcyB3aWxsIHNlYW1sZXNzbHkgdHJhbnNsYXRlLiBJIG5lZWQgdG8gZGVzaWduIHRoZSBhZGRyZXNzaW5nIHNjaGVtZSBjYXJlZnVsbHkgZm9yIHRoZSB0dW5uZWxlZCB0cmFmZmljLiBUaGUgZm9jdXMgaXMgYWx3YXlzIG9uIGVuc3VyaW5nIHRoZSB0dW5uZWwgaW50ZXJmYWNlcyBhcmUgY29uZmlndXJlZCBwcm9wZXJseSBhbmQgdGhhdCB0aGUgYXBwcm9wcmlhdGUgcm91dGluZyBwcm90b2NvbHMgYXJlIGVuYWJsZWQsIGFuZCBjb3JyZWN0bHkgY29uZmlndXJlZCwgd2l0aGluIHRoZSB0dW5uZWwgaXRzZWxmLlxuXG5TZWN1cml0eS4gT2YgY291cnNlLiBKdXN0IGxpa2Ugd2l0aCBJUHY0IEdSRSwgaXQncyBpbmhlcmVudGx5ICpub3QqIHNlY3VyZS4gRW5jYXBzdWxhdGlvbiBhbG9uZSBkb2Vzbid0IGVuY3J5cHQgdGhlIHRyYWZmaWMuIEkgbmVlZCB0byBiZSB0aGlua2luZyBhYm91dCBpbnRlZ3JhdGluZyB0aGlzIHdpdGggSVBzZWMgdG8gcHJvdmlkZSB0aGF0IG5lY2Vzc2FyeSBjb25maWRlbnRpYWxpdHkgYW5kIGludGVncml0eS4gSWYgSSdtIGNvbnNpZGVyaW5nIHVzaW5nIEdSRSwgSSBhbSAqcmVxdWlyZWQqIHRvIHRoaW5rIGFib3V0IHRoZSBvdmVyaGVhZCwgYW5kIHBlcmZvcm1hbmNlIHBlbmFsdHkuIFdoYXQncyB0aGUgdHJhZGUtb2ZmIGJldHdlZW4gdGhlIGZsZXhpYmlsaXR5IG9mIEdSRSBhbmQgdGhlIGFkZGVkIGxheWVyIG9mIHNlY3VyaXR5P1xuXG5JJ20gYWxzbyBjb25zaWRlcmluZyB0aGUgb3BlcmF0aW9uYWwgYXNwZWN0cy4gSG93IGVhc3kgd2lsbCBpdCBiZSB0byB0cm91Ymxlc2hvb3Q/IEFyZSBteSBtb25pdG9yaW5nIHRvb2xzIHVwIHRvIHRoZSB0YXNrIG9mIGRpc3NlY3RpbmcgSVB2NiBHUkUgZW5jYXBzdWxhdGVkIHBhY2tldHM/IEkgYWxzbyBuZWVkIHRvIGJlIGF3YXJlIG9mIGFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggZmlyZXdhbGxzIGFsb25nIHRoZSBwYXRoLiBUaGVzZSBuZWVkIHRvIGJlIGNvbmZpZ3VyZWQgdG8gYWxsb3cgdGhlIGVuY2Fwc3VsYXRlZCB0cmFmZmljLCBvciBpdCdzIGdhbWUgb3Zlci5cblxuSXQgYWxsIGJvaWxzIGRvd24gdG8gY2FyZWZ1bCBwbGFubmluZywgbWV0aWN1bG91cyBjb25maWd1cmF0aW9uLCBhbmQgdGhvcm91Z2ggdGVzdGluZy4gSSB3aWxsIG1ha2Ugc3VyZSBJIGFwcHJvYWNoIGl0IHdpdGggYSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgYm90aCBJUHY2IGFuZCBHUkUncyBpbnRyaWNhY2llcy4gSSB3YW50IGEgcm9idXN0IGFuZCBlZmZlY3RpdmUgc29sdXRpb24gdGhhdCB3b3JrcyBzZWFtbGVzc2x5LCBub3Qgc29tZXRoaW5nIHRoYXQgYnJlYWtzIGRvd24gdW5kZXIgcHJlc3N1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMDAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE4OjQ2OjIwLjQzOTEzMDc0NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk2MzA0MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0lQVjZfR1JFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT00Mj1vYmotJChDT05GSUdfSVBWNl9UVU5ORUwpICs9IGlwNl90dW5uZWwub1xcbm5ldC9pcHY2L01ha2VmaWxlOjQzOm9iai0kKENPTkZJR19JUFY2X0dSRSkgKz0gaXA2X2dyZS5vXFxubmV0L2lwdjYvTWFrZWZpbGUtNDQtb2JqLSQoQ09ORklHX0lQVjZfRk9VKSArPSBmb3U2Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTg6NDY6MjAuNTg4NzcwMDUxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzNDg2MjExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgR1JFIFR1bm5lbCBDb25maWd1cmF0aW9uIGluIHRoZSBMaW51eCBLZXJuZWwqKlxuXG5SaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIEdSRSB0dW5uZWxzIGhlcmUsIHNwZWNpZmljYWxseSB0aGUgY29uZmlndXJhdGlvbnMgYE5FVF9JUEdSRWAgYW5kIGBJUFY2X0dSRWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgdGhlc2UgdGhlIG9ubHkgb25lcyBJIG5lZWQgdG8gd29ycnkgYWJvdXQ/IFByb2JhYmx5IG5vdC4gSSd2ZSBnb3QgdG8gZW5zdXJlIEkgY292ZXIgZXZlcnl0aGluZy5cblxuSSByZWNhbGwgdGhhdCBFUlNQQU4sIGEgY29tbW9uIHR1bm5lbGluZyBtZXRob2QsIGlzIGVzc2VudGlhbGx5IGltcGxlbWVudGVkIGFzIHBhcnQgb2YgR1JFIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGV4YWN0bHkgaG93IGl0J3MgaGFuZGxlZC4gSSdsbCB0YWtlIGEgbG9vayBhdCBgbmV0L2lwdjQvaXBfZ3JlLmNgIGFuZCBzZWUgaWYgdGhlIEVSU1BBTiBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQgYW5kIGhvdyBpdCBpcyBpbXBsZW1lbnRlZCB3aXRoaW4gdGhpcyBjb250ZXh0LiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxODo0NjoyNC4yMjM2MzQ3NTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4OTc4NDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVyc3BhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9pcF9ncmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pcF9ncmUuYy00Ni0jaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXFx1MDAzZVxcbm5ldC9pcHY0L2lwX2dyZS5jOjQ3OiNpbmNsdWRlIFxcdTAwM2NuZXQvZXJzcGFuLmhcXHUwMDNlXFxubmV0L2lwdjQvaXBfZ3JlLmMtNDgtXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMTM9c3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxMTQ6c3RhdGljIHZvaWQgZXJzcGFuX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTExNS1cXHRcXHRcXHRcXHR1MzIgaWQsIHUzMiBpbmRleCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTExOT1zdGF0aWMgdW5zaWduZWQgaW50IGdyZV90YXBfbmV0X2lkIF9fcmVhZF9tb3N0bHk7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTIwOnN0YXRpYyB1bnNpZ25lZCBpbnQgZXJzcGFuX25ldF9pZCBfX3JlYWRfbW9zdGx5O1xcbm5ldC9pcHY0L2lwX2dyZS5jLTEyMS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMjI9c3RhdGljIGludCBpcGdyZV9lcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm8sXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDktXFx0XFx0IHRwaS1cXHUwMDNlcHJvdG8gPT0gaHRvbnMoRVRIX1BfRVJTUEFOMikpXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTUwOlxcdFxcdGl0biA9IG5ldF9nZW5lcmljKG5ldCwgZXJzcGFuX25ldF9pZCk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTUxLVxcdGVsc2VcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTIxOT1zdGF0aWMgdm9pZCBncmVfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMjU3LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjI1ODpzdGF0aWMgYm9vbCBpc19lcnNwYW5fdHlwZTEoaW50IGdyZV9oZHJfbGVuKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTI1OS17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0yNjYtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MjY3OnN0YXRpYyBpbnQgZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdG5sX3B0a19pbmZvICp0cGksXFxubmV0L2lwdjQvaXBfZ3JlLmMtMjY4LVxcdFxcdCAgICAgIGludCBncmVfaGRyX2xlbilcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTI3MS1cXHRzdHJ1Y3QgbWV0YWRhdGFfZHN0ICp0dW5fZHN0ID0gTlVMTDtcXG5uZXQvaXB2NC9pcF9ncmUuYzoyNzI6XFx0c3RydWN0IGVyc3Bhbl9iYXNlX2hkciAqZXJzaGRyO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTI3My1cXHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhmbGFncyk7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzYtXFx0Y29uc3Qgc3RydWN0IGlwaGRyICppcGg7XFxubmV0L2lwdjQvaXBfZ3JlLmM6Mjc3OlxcdHN0cnVjdCBlcnNwYW5fbWQyICptZDI7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMjc4LVxcdGludCB2ZXI7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0yODItXFxubmV0L2lwdjQvaXBfZ3JlLmM6MjgzOlxcdGl0biA9IG5ldF9nZW5lcmljKG5ldCwgZXJzcGFuX25ldF9pZCk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMjg0LVxcdGlwaCA9IGlwX2hkcihza2IpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjI4NTpcXHRpZiAoaXNfZXJzcGFuX3R5cGUxKGdyZV9oZHJfbGVuKSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jLTI4Ni1cXHRcXHR2ZXIgPSAwO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMjk0LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjI5NTpcXHRcXHRlcnNoZHIgPSAoc3RydWN0IGVyc3Bhbl9iYXNlX2hkciAqKShza2ItXFx1MDAzZWRhdGEgKyBncmVfaGRyX2xlbik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMjk2LVxcdFxcdHZlciA9IGVyc2hkci1cXHUwMDNldmVyO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMzAzLVxcdGlmICh0dW5uZWwpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzozMDQ6XFx0XFx0aWYgKGlzX2Vyc3Bhbl90eXBlMShncmVfaGRyX2xlbikpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMzA1LVxcdFxcdFxcdGxlbiA9IGdyZV9oZHJfbGVuO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTMwNi1cXHRcXHRlbHNlXFxubmV0L2lwdjQvaXBfZ3JlLmM6MzA3OlxcdFxcdFxcdGxlbiA9IGdyZV9oZHJfbGVuICsgZXJzcGFuX2hkcl9sZW4odmVyKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0zMDgtXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0zMTgtXFx0XFx0aWYgKHR1bm5lbC1cXHUwMDNlY29sbGVjdF9tZCkge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjMxOTpcXHRcXHRcXHRzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICpwa3RfbWQsICptZDtcXG5uZXQvaXB2NC9pcF9ncmUuYy0zMjAtXFx0XFx0XFx0c3RydWN0IGlwX3R1bm5lbF9pbmZvICppbmZvO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMzQyLVxcdFxcdFxcdCAgICAgc2tiX25ldHdvcmtfaGVhZGVyX2xlbihza2IpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjM0MzpcXHRcXHRcXHRwa3RfbWQgPSAoc3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqKShnaCArIGdyZV9oZHJfbGVuICtcXG5uZXQvaXB2NC9pcF9ncmUuYy0zNDQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHNpemVvZigqZXJzaGRyKSk7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz00NDA9c3RhdGljIGludCBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy00NTktXFx0XFx0ICAgICB0cGkucHJvdG8gPT0gaHRvbnMoRVRIX1BfRVJTUEFOMikpKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6NDYwOlxcdFxcdGlmIChlcnNwYW5fcmN2KHNrYiwgXFx1MDAyNnRwaSwgaGRyX2xlbikgPT0gUEFDS0VUX1JDVkQpXFxubmV0L2lwdjQvaXBfZ3JlLmMtNDYxLVxcdFxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9NDk2PXN0YXRpYyB2b2lkIGdyZV9mYl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy01MzktXFxubmV0L2lwdjQvaXBfZ3JlLmM6NTQwOnN0YXRpYyB2b2lkIGVyc3Bhbl9mYl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvaXBfZ3JlLmMtNTQxLXtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTU0NS1cXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2tleSAqa2V5O1xcbm5ldC9pcHY0L2lwX2dyZS5jOjU0NjpcXHRzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICptZDtcXG5uZXQvaXB2NC9pcF9ncmUuYy01NDctXFx0Ym9vbCB0cnVuY2F0ZSA9IGZhbHNlO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNTY2LVxcdHZlcnNpb24gPSBtZC1cXHUwMDNldmVyc2lvbjtcXG5uZXQvaXB2NC9pcF9ncmUuYzo1Njc6XFx0dHVubmVsX2hsZW4gPSA4ICsgZXJzcGFuX2hkcl9sZW4odmVyc2lvbik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtNTY4LVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNTk3LVxcdGlmICh2ZXJzaW9uID09IDEpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzo1OTg6XFx0XFx0ZXJzcGFuX2J1aWxkX2hlYWRlcihza2IsIG50b2hsKHR1bm5lbF9pZF90b19rZXkzMihrZXktXFx1MDAzZXR1bl9pZCkpLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTU5OS1cXHRcXHRcXHRcXHQgICAgbnRvaGwobWQtXFx1MDAzZXUuaW5kZXgpLCB0cnVuY2F0ZSwgdHJ1ZSk7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy02MDEtXFx0fSBlbHNlIGlmICh2ZXJzaW9uID09IDIpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzo2MDI6XFx0XFx0ZXJzcGFuX2J1aWxkX2hlYWRlcl92Mihza2IsXFxubmV0L2lwdjQvaXBfZ3JlLmMtNjAzLVxcdFxcdFxcdFxcdCAgICAgICBudG9obCh0dW5uZWxfaWRfdG9fa2V5MzIoa2V5LVxcdTAwM2V0dW5faWQpKSxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTY0OT1zdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzAyLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjcwMzpzdGF0aWMgbmV0ZGV2X3R4X3QgZXJzcGFuX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2NC9pcF9ncmUuYy03MDQtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy03MTQtXFx0aWYgKHR1bm5lbC1cXHUwMDNlY29sbGVjdF9tZCkge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjcxNTpcXHRcXHRlcnNwYW5fZmJfeG1pdChza2IsIGRldik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtNzE2LVxcdFxcdHJldHVybiBORVRERVZfVFhfT0s7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy03MzMtXFx0LyogUHVzaCBFUlNQQU4gaGVhZGVyICovXFxubmV0L2lwdjQvaXBfZ3JlLmM6NzM0OlxcdGlmICh0dW5uZWwtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMCkge1xcbm5ldC9pcHY0L2lwX2dyZS5jLTczNS1cXHRcXHRwcm90byA9IGh0b25zKEVUSF9QX0VSU1BBTik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtNzM2LVxcdFxcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9TRVFfQklULCBmbGFncyk7XFxubmV0L2lwdjQvaXBfZ3JlLmM6NzM3OlxcdH0gZWxzZSBpZiAodHVubmVsLVxcdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzo3Mzg6XFx0XFx0ZXJzcGFuX2J1aWxkX2hlYWRlcihza2IsIG50b2hsKHR1bm5lbC1cXHUwMDNlcGFybXMub19rZXkpLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTczOS1cXHRcXHRcXHRcXHQgICAgdHVubmVsLVxcdTAwM2VpbmRleCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTc0MS1cXHRcXHRwcm90byA9IGh0b25zKEVUSF9QX0VSU1BBTik7XFxubmV0L2lwdjQvaXBfZ3JlLmM6NzQyOlxcdH0gZWxzZSBpZiAodHVubmVsLVxcdTAwM2VlcnNwYW5fdmVyID09IDIpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzo3NDM6XFx0XFx0ZXJzcGFuX2J1aWxkX2hlYWRlcl92Mihza2IsIG50b2hsKHR1bm5lbC1cXHUwMDNlcGFybXMub19rZXkpLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTc0NC1cXHRcXHRcXHRcXHQgICAgICAgdHVubmVsLVxcdTAwM2VkaXIsIHR1bm5lbC1cXHUwMDNlaHdpZCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTgyMj1zdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTg1NS1cXG5uZXQvaXB2NC9pcF9ncmUuYzo4NTY6XFx0XFx0aWYgKHN0cmNtcChkZXYtXFx1MDAzZXJ0bmxfbGlua19vcHMtXFx1MDAzZWtpbmQsIFxcXCJlcnNwYW5cXFwiKSlcXG5uZXQvaXB2NC9pcF9ncmUuYy04NTctXFx0XFx0XFx0aXBncmVfbGlua191cGRhdGUoZGV2LCB0cnVlKTtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTExMjI9c3RhdGljIGludCBpcGdyZV90YXBfdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTE0Ni1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxMTQ3OnN0YXRpYyBpbnQgZXJzcGFuX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMTQ4LVxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTExODc9c3RhdGljIGludCBpcGdyZV9uZXRsaW5rX3Bhcm1zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjU1LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEyNTY6c3RhdGljIGludCBlcnNwYW5fbmV0bGlua19wYXJtcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNTctXFx0XFx0XFx0XFx0c3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI3MS1cXHRpZiAoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjEyNzI6XFx0XFx0dC1cXHUwMDNlZXJzcGFuX3ZlciA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI3My1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxMjc0OlxcdFxcdGlmICh0LVxcdTAwM2VlcnNwYW5fdmVyIFxcdTAwM2UgMilcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjc1LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI3Ny1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxMjc4OlxcdGlmICh0LVxcdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjc5LVxcdFxcdGlmIChkYXRhW0lGTEFfR1JFX0VSU1BBTl9JTkRFWF0pIHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEyODMtXFx0XFx0fVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEyODQ6XFx0fSBlbHNlIGlmICh0LVxcdTAwM2VlcnNwYW5fdmVyID09IDIpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjg1LVxcdFxcdGlmIChkYXRhW0lGTEFfR1JFX0VSU1BBTl9ESVJdKSB7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM1NC1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzU1OnN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM1Ni17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzU4LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEzNTk6XFx0aWYgKHR1bm5lbC1cXHUwMDNlZXJzcGFuX3ZlciA9PSAwKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNjAtXFx0XFx0dHVubmVsLVxcdTAwM2V0dW5faGxlbiA9IDQ7IC8qIDQtYnl0ZSBHUkUgaGRyLiAqL1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM2NS1cXHR0dW5uZWwtXFx1MDAzZWhsZW4gPSB0dW5uZWwtXFx1MDAzZXR1bl9obGVuICsgdHVubmVsLVxcdTAwM2VlbmNhcF9obGVuICtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzY2OlxcdFxcdCAgICAgICBlcnNwYW5faGRyX2xlbih0dW5uZWwtXFx1MDAzZWVyc3Bhbl92ZXIpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNjctXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzc1LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEzNzY6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlcnNwYW5fbmV0ZGV2X29wcyA9IHtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzc3OlxcdC5uZG9faW5pdFxcdFxcdD0gZXJzcGFuX3R1bm5lbF9pbml0LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNzgtXFx0Lm5kb191bmluaXRcXHRcXHQ9IGlwX3R1bm5lbF91bmluaXQsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTM3OTpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IGVyc3Bhbl94bWl0LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzODAtXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcXHQ9IGV0aF9tYWNfYWRkcixcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTE0MTQ9c3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDM0LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE0MzU6c3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE0MzYtXFx0XFx0XFx0ICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ0OC1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNDQ5OlxcdGVyciA9IGVyc3Bhbl9uZXRsaW5rX3Bhcm1zKGRldiwgZGF0YSwgdGIsIFxcdTAwMjZwLCBcXHUwMDI2ZndtYXJrKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDUwLVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDU2PXN0YXRpYyBpbnQgaXBncmVfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ4Ny1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNDg4OnN0YXRpYyBpbnQgZXJzcGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDg5LVxcdFxcdFxcdCAgICAgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTUwMy1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNTA0OlxcdGVyciA9IGVyc3Bhbl9uZXRsaW5rX3Bhcm1zKGRldiwgZGF0YSwgdGIsIFxcdTAwMjZwLCBcXHUwMDI2ZndtYXJrKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNTA1LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTU2Nj1zdGF0aWMgaW50IGlwZ3JlX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTU3My1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNTc0OlxcdGlmICh0LVxcdTAwM2VlcnNwYW5fdmVyICE9IDAgXFx1MDAyNlxcdTAwMjYgIXQtXFx1MDAzZWNvbGxlY3RfbWQpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTU3NS1cXHRcXHRfX3NldF9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIG9fZmxhZ3MpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYxNi1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjE3OnN0YXRpYyBpbnQgZXJzcGFuX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE2MTgte1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyMC1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjIxOlxcdGlmICh0LVxcdTAwM2VlcnNwYW5fdmVyIFxcdTAwM2M9IDIpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjIyOlxcdFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9HUkVfRVJTUEFOX1ZFUiwgdC1cXHUwMDNlZXJzcGFuX3ZlcikpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyMy1cXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjI0LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2MjU6XFx0XFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE2MjYtXFx0XFx0XFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9HUkVfRVJTUEFOX0lOREVYLCB0LVxcdTAwM2VpbmRleCkpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyNy1cXHRcXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjI4OlxcdFxcdH0gZWxzZSBpZiAodC1cXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyOS1cXHRcXHRcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9ESVIsIHQtXFx1MDAzZWRpcikpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjQxLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2NDI6c3RhdGljIHZvaWQgZXJzcGFuX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY0My17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjQ3LVxcdGRldi1cXHUwMDNlbWF4X210dSA9IDA7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTY0ODpcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2ZXJzcGFuX25ldGRldl9vcHM7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY0OS1cXHRkZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNj0gfklGRl9UWF9TS0JfU0hBUklORztcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjUwLVxcdGRldi1cXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjUxOlxcdGlwX3R1bm5lbF9zZXR1cChkZXYsIGVyc3Bhbl9uZXRfaWQpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE2NTI6XFx0dC1cXHUwMDNlZXJzcGFuX3ZlciA9IDE7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY1My19XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNjk0PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcGdyZV90YXBfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzA4LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MDk6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGVyc3Bhbl9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTA6XFx0LmtpbmRcXHRcXHQ9IFxcXCJlcnNwYW5cXFwiLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTEtXFx0Lm1heHR5cGVcXHQ9IElGTEFfR1JFX01BWCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTMtXFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBpcF90dW5uZWwpLFxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTQ6XFx0LnNldHVwXFx0XFx0PSBlcnNwYW5fc2V0dXAsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcxNTpcXHQudmFsaWRhdGVcXHQ9IGVyc3Bhbl92YWxpZGF0ZSxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzE2OlxcdC5uZXdsaW5rXFx0PSBlcnNwYW5fbmV3bGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzE3OlxcdC5jaGFuZ2VsaW5rXFx0PSBlcnNwYW5fY2hhbmdlbGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzE4LVxcdC5kZWxsaW5rXFx0PSBpcF90dW5uZWxfZGVsbGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzE5LVxcdC5nZXRfc2l6ZVxcdD0gaXBncmVfZ2V0X3NpemUsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcyMDpcXHQuZmlsbF9pbmZvXFx0PSBlcnNwYW5fZmlsbF9pbmZvLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MjEtXFx0LmdldF9saW5rX25ldFxcdD0gaXBfdHVubmVsX2dldF9saW5rX25ldCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTE3ODI9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcGdyZV90YXBfbmV0X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3ODgtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc4OTpzdGF0aWMgaW50IF9fbmV0X2luaXQgZXJzcGFuX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzkwLXtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzkxOlxcdHJldHVybiBpcF90dW5uZWxfaW5pdF9uZXQobmV0LCBlcnNwYW5fbmV0X2lkLFxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTI6XFx0XFx0XFx0XFx0ICBcXHUwMDI2ZXJzcGFuX2xpbmtfb3BzLCBcXFwiZXJzcGFuMFxcXCIpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTMtfVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTQtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc5NTpzdGF0aWMgdm9pZCBfX25ldF9leGl0IGVyc3Bhbl9leGl0X3J0bmwoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTYtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGxpc3RfaGVhZCAqZGV2X3RvX2tpbGwpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTc5Ny17XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc5ODpcXHRpcF90dW5uZWxfZGVsZXRlX25ldChuZXQsIGVyc3Bhbl9uZXRfaWQsIFxcdTAwMjZlcnNwYW5fbGlua19vcHMsIGRldl90b19raWxsKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzk5LX1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xODAwLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MDE6c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBlcnNwYW5fbmV0X29wcyA9IHtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxODAyOlxcdC5pbml0ID0gZXJzcGFuX2luaXRfbmV0LFxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MDM6XFx0LmV4aXRfcnRubCA9IGVyc3Bhbl9leGl0X3J0bmwsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTgwNDpcXHQuaWQgICA9IFxcdTAwMjZlcnNwYW5fbmV0X2lkLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE4MDUtXFx0LnNpemUgPSBzaXplb2Yoc3RydWN0IGlwX3R1bm5lbF9uZXQpLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTgwOD1zdGF0aWMgaW50IF9faW5pdCBpcGdyZV9pbml0KHZvaWQpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xODIxLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MjI6XFx0ZXJyID0gcmVnaXN0ZXJfcGVybmV0X2RldmljZShcXHUwMDI2ZXJzcGFuX25ldF9vcHMpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE4MjMtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTgyNDpcXHRcXHRnb3RvIHBuZXRfZXJzcGFuX2ZhaWxlZDtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xODI1LVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTgzOS1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxODQwOlxcdGVyciA9IHJ0bmxfbGlua19yZWdpc3RlcihcXHUwMDI2ZXJzcGFuX2xpbmtfb3BzKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xODQxLVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NDI6XFx0XFx0Z290byBlcnNwYW5fbGlua19mYWlsZWQ7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg0My1cXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDUtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTg0NjplcnNwYW5fbGlua19mYWlsZWQ6XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg0Ny1cXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcXHUwMDI2aXBncmVfdGFwX29wcyk7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xODUyLWFkZF9wcm90b19mYWlsZWQ6XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTg1MzpcXHR1bnJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXFx1MDAyNmVyc3Bhbl9uZXRfb3BzKTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxODU0OnBuZXRfZXJzcGFuX2ZhaWxlZDpcXG5uZXQvaXB2NC9pcF9ncmUuYy0xODU1LVxcdHVucmVnaXN0ZXJfcGVybmV0X2RldmljZShcXHUwMDI2aXBncmVfdGFwX25ldF9vcHMpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTg2MT1zdGF0aWMgdm9pZCBfX2V4aXQgaXBncmVfZmluaSh2b2lkKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2NC1cXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcXHUwMDI2aXBncmVfbGlua19vcHMpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NjU6XFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNmVyc3Bhbl9saW5rX29wcyk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2Ni1cXHRncmVfZGVsX3Byb3RvY29sKFxcdTAwMjZpcGdyZV9wcm90b2NvbCwgR1JFUFJPVE9fQ0lTQ08pO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2OC1cXHR1bnJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXFx1MDAyNmlwZ3JlX25ldF9vcHMpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE4Njk6XFx0dW5yZWdpc3Rlcl9wZXJuZXRfZGV2aWNlKFxcdTAwMjZlcnNwYW5fbmV0X29wcyk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg3MC19XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xODc3PU1PRFVMRV9BTElBU19SVE5MX0xJTksoXFxcImdyZXRhcFxcXCIpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE4Nzg6TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcXFwiZXJzcGFuXFxcIik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg3OS1NT0RVTEVfQUxJQVNfTkVUREVWKFxcXCJncmUwXFxcIik7XFxubmV0L2lwdjQvaXBfZ3JlLmM9MTg4MD1NT0RVTEVfQUxJQVNfTkVUREVWKFxcXCJncmV0YXAwXFxcIik7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTg4MTpNT0RVTEVfQUxJQVNfTkVUREVWKFxcXCJlcnNwYW4wXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE4OjQ2OjI0LjM1MjYxNzkxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3MDcyOTgyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRVJTUEFOIERlZXAgRGl2ZSBpbiBLZXJuZWwgU291cmNlKipcblxuQWxyaWdodCwgc28gRVJTUEFOLi4uIHJpZ2h0LCBpdCdzIGJha2VkIGludG8gdGhlIGBDT05GSUdfTkVUX0lQR1JFYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTWFrZXMgc2Vuc2UuIE5vdywgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHRoZSBwcmltYXJ5IGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBoYW5naW5nIG91dCBzb21ld2hlcmUgaW4gdGhlIElQdjYgR1JFIGNvZGUsIHByb2JhYmx5IHNoYXJpbmcgYSBsb3Qgb2YgaW5mcmFzdHJ1Y3R1cmUgd2l0aCBzdGFuZGFyZCBHUkUuIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gY2hlY2sgb3V0IGBuZXQvaXB2Ni9pcDZfZ3JlLmNgLiBUaGF0J3MgdGhlIGxpa2VseSBzcG90IHRvIGZpbmQgdGhlIGd1dHMgb2YgdGhlIEVSU1BBTiBmdW5jdGlvbmFsaXR5LCBtYXliZSBzb21lIG9mIHRoZSBwYWNrZXQgcGFyc2luZyBsb2dpYywgY29udHJvbCBwYXRoLCBhbmQgcGVyaGFwcyB0aGUgdHVubmVsIGVuY2FwL2RlY2FwIHJvdXRpbmVzLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIHRoYXQgZmlsZSBhbmQgc2VlIGhvdyB0aGUgRVJTUEFOIGJpdHMgaGF2ZSBiZWVuIGludGVncmF0ZWQsIHdoYXQgbWFjcm9zIGFyZSB1c2VkLCBhbmQgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLiBIb3BlZnVsbHksIHRoaXMgZmlsZSBwcm92aWRlcyB0aGUgY29tcGxldGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2NTUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxODo0NjoyNy45MjMzNTAwNzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5Mzg4NjA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlcnNwYW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvaXA2X2dyZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9ncmUuYy01My0jaW5jbHVkZSBcXHUwMDNjbmV0L2dyZS5oXFx1MDAzZVxcbm5ldC9pcHY2L2lwNl9ncmUuYzo1NDojaW5jbHVkZSBcXHUwMDNjbmV0L2Vyc3Bhbi5oXFx1MDAzZVxcbm5ldC9pcHY2L2lwNl9ncmUuYy01NS0jaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXFx1MDAzZVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTY2PXN0cnVjdCBpcDZncmVfbmV0IHtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy02OS1cXHRzdHJ1Y3QgaXA2X3RubCBfX3JjdSAqY29sbGVjdF9tZF90dW47XFxubmV0L2lwdjYvaXA2X2dyZS5jOjcwOlxcdHN0cnVjdCBpcDZfdG5sIF9fcmN1ICpjb2xsZWN0X21kX3R1bl9lcnNwYW47XFxubmV0L2lwdjYvaXA2X2dyZS5jLTcxLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpmYl90dW5uZWxfZGV2O1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTc1PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcDZncmVfdGFwX29wcyBfX3JlYWRfbW9zdGx5O1xcbm5ldC9pcHY2L2lwNl9ncmUuYzo3NjpzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXA2ZXJzcGFuX3RhcF9vcHMgX19yZWFkX21vc3RseTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNzctc3RhdGljIGludCBpcDZncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9ODA9c3RhdGljIHZvaWQgaXA2Z3JlX3RubF9saW5rX2NvbmZpZyhzdHJ1Y3QgaXA2X3RubCAqdCwgaW50IHNldF9tdHUpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYzo4MTpzdGF0aWMgdm9pZCBpcDZlcnNwYW5fdG5sX2xpbmtfY29uZmlnKHN0cnVjdCBpcDZfdG5sICp0LCBpbnQgc2V0X210dSk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTgyLVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTE0MD1zdGF0aWMgc3RydWN0IGlwNl90bmwgKmlwNmdyZV90dW5uZWxfbG9va3VwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjAzLVxcdCAgICBncmVfcHJvdG8gPT0gaHRvbnMoRVRIX1BfRVJTUEFOMikpXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIwNDpcXHRcXHR0ID0gcmN1X2RlcmVmZXJlbmNlKGlnbi1cXHUwMDNlY29sbGVjdF9tZF90dW5fZXJzcGFuKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjA1LVxcdGVsc2VcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0yMzY9c3RhdGljIHZvaWQgaXA2Z3JlX3R1bm5lbF9saW5rX21kKHN0cnVjdCBpcDZncmVfbmV0ICppZ24sIHN0cnVjdCBpcDZfdG5sICp0KVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTI0MS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjQyOnN0YXRpYyB2b2lkIGlwNmVyc3Bhbl90dW5uZWxfbGlua19tZChzdHJ1Y3QgaXA2Z3JlX25ldCAqaWduLCBzdHJ1Y3QgaXA2X3RubCAqdClcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjQzLXtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjQ0LVxcdGlmICh0LVxcdTAwM2VwYXJtcy5jb2xsZWN0X21kKVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyNDU6XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGlnbi1cXHUwMDNlY29sbGVjdF9tZF90dW5fZXJzcGFuLCB0KTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjQ2LX1cXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0yNDg9c3RhdGljIHZvaWQgaXA2Z3JlX3R1bm5lbF91bmxpbmtfbWQoc3RydWN0IGlwNmdyZV9uZXQgKmlnbiwgc3RydWN0IGlwNl90bmwgKnQpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjUzLVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyNTQ6c3RhdGljIHZvaWQgaXA2ZXJzcGFuX3R1bm5lbF91bmxpbmtfbWQoc3RydWN0IGlwNmdyZV9uZXQgKmlnbixcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjU1LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaXA2X3RubCAqdClcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yNTctXFx0aWYgKHQtXFx1MDAzZXBhcm1zLmNvbGxlY3RfbWQpXFxubmV0L2lwdjYvaXA2X2dyZS5jOjI1ODpcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoaWduLVxcdTAwM2Vjb2xsZWN0X21kX3R1bl9lcnNwYW4sIE5VTEwpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0yNTktfVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTMxNT1zdGF0aWMgc3RydWN0IGlwNl90bmwgKmlwNmdyZV90dW5uZWxfbG9jYXRlKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0zNjEtXFxubmV0L2lwdjYvaXA2X2dyZS5jOjM2MjpzdGF0aWMgdm9pZCBpcDZlcnNwYW5fdHVubmVsX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0zNjMte1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTM2Ni1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MzY3OlxcdGlwNmVyc3Bhbl90dW5uZWxfdW5saW5rX21kKGlnbiwgdCk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTM2OC1cXHRpcDZncmVfdHVubmVsX3VubGluayhpZ24sIHQpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTQ1Nz1zdGF0aWMgaW50IGlwNmdyZV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRubF9wdGtfaW5mbyAqdHBpKVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTQ4OS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NDkwOnN0YXRpYyBpbnQgaXA2ZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY2L2lwNl9ncmUuYy00OTEtXFx0XFx0XFx0IHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSxcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy00OTMte1xcbm5ldC9pcHY2L2lwNl9ncmUuYzo0OTQ6XFx0c3RydWN0IGVyc3Bhbl9iYXNlX2hkciAqZXJzaGRyO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy00OTUtXFx0Y29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwdjZoO1xcbm5ldC9pcHY2L2lwNl9ncmUuYzo0OTY6XFx0c3RydWN0IGVyc3Bhbl9tZDIgKm1kMjtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNDk3LVxcdHN0cnVjdCBpcDZfdG5sICp0dW5uZWw7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNTAzLVxcdGlwdjZoID0gaXB2Nl9oZHIoc2tiKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTA0OlxcdGVyc2hkciA9IChzdHJ1Y3QgZXJzcGFuX2Jhc2VfaGRyICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy01MDUtXFx0dmVyID0gZXJzaGRyLVxcdTAwM2V2ZXI7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNTEwLVxcdGlmICh0dW5uZWwpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTExOlxcdFxcdGludCBsZW4gPSBlcnNwYW5faGRyX2xlbih2ZXIpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy01MTItXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNTIxLVxcdFxcdGlmICh0dW5uZWwtXFx1MDAzZXBhcm1zLmNvbGxlY3RfbWQpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTIyOlxcdFxcdFxcdHN0cnVjdCBlcnNwYW5fbWV0YWRhdGEgKnBrdF9tZCwgKm1kO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy01MjMtXFx0XFx0XFx0SVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1MoZmxhZ3MpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTU0Ny1cXHRcXHRcXHQgICAgIHNrYl9uZXR3b3JrX2hlYWRlcl9sZW4oc2tiKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTQ4OlxcdFxcdFxcdHBrdF9tZCA9IChzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICopKGdoICsgZ3JlX2hkcl9sZW4gK1xcbm5ldC9pcHY2L2lwNl9ncmUuYy01NDktXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHNpemVvZigqZXJzaGRyKSk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9NTcwPXN0YXRpYyBpbnQgZ3JlX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTU4NC1cXHRcXHQgICAgIHRwaS5wcm90byA9PSBodG9ucyhFVEhfUF9FUlNQQU4yKSkpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTg1OlxcdFxcdGlmIChpcDZlcnNwYW5fcmN2KHNrYiwgXFx1MDAyNnRwaSwgaGRyX2xlbikgPT0gUEFDS0VUX1JDVkQpXFxubmV0L2lwdjYvaXA2X2dyZS5jLTU4Ni1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz04Nzg9c3RhdGljIG5ldGRldl90eF90IGlwNmdyZV90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTkxNi1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6OTE3OnN0YXRpYyBuZXRkZXZfdHhfdCBpcDZlcnNwYW5fdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtOTE4LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTk3My1cXHRcXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2tleSAqa2V5O1xcbm5ldC9pcHY2L2lwNl9ncmUuYzo5NzQ6XFx0XFx0c3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqbWQ7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTk3NS1cXHRcXHRfX2JlMzIgdHVuX2lkO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTk5OS1cXHRcXHRpZiAobWQtXFx1MDAzZXZlcnNpb24gPT0gMSkge1xcbm5ldC9pcHY2L2lwNl9ncmUuYzoxMDAwOlxcdFxcdFxcdGVyc3Bhbl9idWlsZF9oZWFkZXIoc2tiLFxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xMDAxLVxcdFxcdFxcdFxcdFxcdCAgICBudG9obCh0dW5faWQpLFxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTEwMDUtXFx0XFx0fSBlbHNlIGlmIChtZC1cXHUwMDNldmVyc2lvbiA9PSAyKSB7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjEwMDY6XFx0XFx0XFx0ZXJzcGFuX2J1aWxkX2hlYWRlcl92Mihza2IsXFxubmV0L2lwdjYvaXA2X2dyZS5jLTEwMDctXFx0XFx0XFx0XFx0XFx0ICAgICAgIG50b2hsKHR1bl9pZCksXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTAzMy1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTAzNDpcXHRcXHRpZiAodC1cXHUwMDNlcGFybXMuZXJzcGFuX3ZlciA9PSAxKSB7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjEwMzU6XFx0XFx0XFx0ZXJzcGFuX2J1aWxkX2hlYWRlcihza2IsIG50b2hsKHQtXFx1MDAzZXBhcm1zLm9fa2V5KSxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTAzNi1cXHRcXHRcXHRcXHRcXHQgICAgdC1cXHUwMDNlcGFybXMuaW5kZXgsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTAzOC1cXHRcXHRcXHRwcm90byA9IGh0b25zKEVUSF9QX0VSU1BBTik7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjEwMzk6XFx0XFx0fSBlbHNlIGlmICh0LVxcdTAwM2VwYXJtcy5lcnNwYW5fdmVyID09IDIpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTA0MDpcXHRcXHRcXHRlcnNwYW5fYnVpbGRfaGVhZGVyX3YyKHNrYiwgbnRvaGwodC1cXHUwMDNlcGFybXMub19rZXkpLFxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xMDQxLVxcdFxcdFxcdFxcdFxcdCAgICAgICB0LVxcdTAwM2VwYXJtcy5kaXIsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTE4Nz1zdGF0aWMgdm9pZCBpcDZncmVfdG5sX2NvcHlfdG5sX3Bhcm0oc3RydWN0IGlwNl90bmwgKnQsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTIwMi1cXHR0LVxcdTAwM2VwYXJtcy5md21hcmsgPSBwLVxcdTAwM2Vmd21hcms7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjEyMDM6XFx0dC1cXHUwMDNlcGFybXMuZXJzcGFuX3ZlciA9IHAtXFx1MDAzZWVyc3Bhbl92ZXI7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTEyMDQtXFx0dC1cXHUwMDNlcGFybXMuaW5kZXggPSBwLVxcdTAwM2VpbmRleDtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0xNTUyPXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaXA2Z3JlX2V4aXRfcnRubF9uZXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTE1NjAtXFx0XFx0ICAgIGRldi1cXHUwMDNlcnRubF9saW5rX29wcyA9PSBcXHUwMDI2aXA2Z3JlX3RhcF9vcHMgfHxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTU2MTpcXHRcXHQgICAgZGV2LVxcdTAwM2VydG5sX2xpbmtfb3BzID09IFxcdTAwMjZpcDZlcnNwYW5fdGFwX29wcylcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTU2Mi1cXHRcXHRcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTE2NDg9c3RhdGljIGludCBpcDZncmVfdGFwX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNjcyLVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoxNjczOnN0YXRpYyBpbnQgaXA2ZXJzcGFuX3RhcF92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxubmV0L2lwdjYvaXA2X2dyZS5jLTE2NzQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTczNy1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTczODpzdGF0aWMgdm9pZCBpcDZlcnNwYW5fc2V0X3ZlcnNpb24oc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNzM5LVxcdFxcdFxcdFxcdCAgc3RydWN0IF9faXA2X3RubF9wYXJtICpwYXJtcylcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNzQzLVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoxNzQ0OlxcdHBhcm1zLVxcdTAwM2VlcnNwYW5fdmVyID0gMTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTc0NS1cXHRpZiAoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSlcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTc0NjpcXHRcXHRwYXJtcy1cXHUwMDNlZXJzcGFuX3ZlciA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTE3NDctXFxubmV0L2lwdjYvaXA2X2dyZS5jOjE3NDg6XFx0aWYgKHBhcm1zLVxcdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTc0OS1cXHRcXHRpZiAoZGF0YVtJRkxBX0dSRV9FUlNQQU5fSU5ERVhdKVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNzUwLVxcdFxcdFxcdHBhcm1zLVxcdTAwM2VpbmRleCA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0lOREVYXSk7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjE3NTE6XFx0fSBlbHNlIGlmIChwYXJtcy1cXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTE3NTItXFx0XFx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0RJUl0pXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTgyMj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlwNmdyZV90YXBfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xODMxLVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoxODMyOnN0YXRpYyBpbnQgaXA2ZXJzcGFuX2NhbGNfaGxlbihzdHJ1Y3QgaXA2X3RubCAqdHVubmVsKVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xODMzLXtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xODM3LVxcdHR1bm5lbC1cXHUwMDNlaGxlbiA9IHR1bm5lbC1cXHUwMDNldHVuX2hsZW4gKyB0dW5uZWwtXFx1MDAzZWVuY2FwX2hsZW4gK1xcbm5ldC9pcHY2L2lwNl9ncmUuYzoxODM4OlxcdFxcdCAgICAgICBlcnNwYW5faGRyX2xlbih0dW5uZWwtXFx1MDAzZXBhcm1zLmVyc3Bhbl92ZXIpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0xODM5LVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTE4NDQtXFxubmV0L2lwdjYvaXA2X2dyZS5jOjE4NDU6c3RhdGljIGludCBpcDZlcnNwYW5fdGFwX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg0Ni17XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg2My1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg2NDpcXHR0X2hsZW4gPSBpcDZlcnNwYW5fY2FsY19obGVuKHR1bm5lbCk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTE4NjUtXFx0ZGV2LVxcdTAwM2VtdHUgPSBFVEhfREFUQV9MRU4gLSB0X2hsZW47XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg3MS1cXHRkZXYtXFx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0xJVkVfQUREUl9DSEFOR0U7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjE4NzI6XFx0aXA2ZXJzcGFuX3RubF9saW5rX2NvbmZpZyh0dW5uZWwsIDEpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0xODczLVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTE4ODItXFxubmV0L2lwdjYvaXA2X2dyZS5jOjE4ODM6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcDZlcnNwYW5fbmV0ZGV2X29wcyA9IHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg4NDpcXHQubmRvX2luaXQgPVxcdFxcdGlwNmVyc3Bhbl90YXBfaW5pdCxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg4NTpcXHQubmRvX3VuaW5pdCA9XFx0XFx0aXA2ZXJzcGFuX3R1bm5lbF91bmluaXQsXFxubmV0L2lwdjYvaXA2X2dyZS5jOjE4ODY6XFx0Lm5kb19zdGFydF94bWl0ID1cXHRpcDZlcnNwYW5fdHVubmVsX3htaXQsXFxubmV0L2lwdjYvaXA2X2dyZS5jLTE4ODctXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgPVxcdGV0aF9tYWNfYWRkcixcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0yMTE1PXN0YXRpYyBpbnQgaXA2Z3JlX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIxMjItXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIxMjM6XFx0aWYgKHAtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMSB8fCBwLVxcdTAwM2VlcnNwYW5fdmVyID09IDIpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjEyNC1cXHRcXHRpZiAoIXAtXFx1MDAzZWNvbGxlY3RfbWQpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjEyNi1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjEyNzpcXHRcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9WRVIsIHAtXFx1MDAzZWVyc3Bhbl92ZXIpKVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMTI4LVxcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMTI5LVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMTMwOlxcdFxcdGlmIChwLVxcdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjEzMS1cXHRcXHRcXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0dSRV9FUlNQQU5fSU5ERVgsIHAtXFx1MDAzZWluZGV4KSlcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0yMTc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBpcDZncmVfcG9saWN5W0lGTEFfR1JFX01BWCArIDFdID0ge1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyMDEtXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIyMDI6c3RhdGljIHZvaWQgaXA2ZXJzcGFuX3RhcF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjAzLXtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjA2LVxcdGRldi1cXHUwMDNlbWF4X210dSA9IDA7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjIyMDc6XFx0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNmlwNmVyc3Bhbl9uZXRkZXZfb3BzO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjA4LVxcdGRldi1cXHUwMDNlbmVlZHNfZnJlZV9uZXRkZXYgPSB0cnVlO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyMTYtXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIyMTc6c3RhdGljIGludCBpcDZlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjE4LVxcdFxcdFxcdCAgICAgc3RydWN0IHJ0bmxfbmV3bGlua19wYXJhbXMgKnBhcmFtcyxcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjI4LVxcdGlwNmdyZV9uZXRsaW5rX3Bhcm1zKGRhdGEsIFxcdTAwMjZudC1cXHUwMDNlcGFybXMpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjI5OlxcdGlwNmVyc3Bhbl9zZXRfdmVyc2lvbihkYXRhLCBcXHUwMDI2bnQtXFx1MDAzZXBhcm1zKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjIzMC1cXHRpZ24gPSBuZXRfZ2VuZXJpYyhuZXQsIGlwNmdyZV9uZXRfaWQpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyMzItXFx0aWYgKG50LVxcdTAwM2VwYXJtcy5jb2xsZWN0X21kKSB7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjIyMzM6XFx0XFx0aWYgKHJ0bmxfZGVyZWZlcmVuY2UoaWduLVxcdTAwM2Vjb2xsZWN0X21kX3R1bl9lcnNwYW4pKVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjM0LVxcdFxcdFxcdHJldHVybiAtRUVYSVNUO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyNDEtXFx0aWYgKCFlcnIpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI0MjpcXHRcXHRpcDZlcnNwYW5fdG5sX2xpbmtfY29uZmlnKG50LCAhdGJbSUZMQV9NVFVdKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI0MzpcXHRcXHRpcDZlcnNwYW5fdHVubmVsX2xpbmtfbWQoaWduLCBudCk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyNDQtXFx0XFx0aXA2Z3JlX3R1bm5lbF9saW5rKG5ldF9nZW5lcmljKG5ldCwgaXA2Z3JlX25ldF9pZCksIG50KTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjQ4LVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjQ5OnN0YXRpYyB2b2lkIGlwNmVyc3Bhbl90bmxfbGlua19jb25maWcoc3RydWN0IGlwNl90bmwgKnQsIGludCBzZXRfbXR1KVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjUwLXtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI1MS1cXHRpcDZncmVfdG5sX2xpbmtfY29uZmlnX2NvbW1vbih0KTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI1MjpcXHRpcDZncmVfdG5sX2xpbmtfY29uZmlnX3JvdXRlKHQsIHNldF9tdHUsIGlwNmVyc3Bhbl9jYWxjX2hsZW4odCkpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjUzLX1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI1NC1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI1NTpzdGF0aWMgaW50IGlwNmVyc3Bhbl90bmxfY2hhbmdlKHN0cnVjdCBpcDZfdG5sICp0LFxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjU2LVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBfX2lwNl90bmxfcGFybSAqcCwgaW50IHNldF9tdHUpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI1OC1cXHRpcDZncmVfdG5sX2NvcHlfdG5sX3Bhcm0odCwgcCk7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjIyNTk6XFx0aXA2ZXJzcGFuX3RubF9saW5rX2NvbmZpZyh0LCBzZXRfbXR1KTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI2MC1cXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjYyLVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjYzOnN0YXRpYyBpbnQgaXA2ZXJzcGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI2NC1cXHRcXHRcXHRcXHRzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI3OC1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI3OTpcXHRpcDZlcnNwYW5fc2V0X3ZlcnNpb24oZGF0YSwgXFx1MDAyNnApO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjgwLVxcdGlwNmdyZV90dW5uZWxfdW5saW5rX21kKGlnbiwgdCk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyODEtXFx0aXA2Z3JlX3R1bm5lbF91bmxpbmsoaWduLCB0KTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI4MjpcXHRpcDZlcnNwYW5fdG5sX2NoYW5nZSh0LCBcXHUwMDI2cCwgIXRiW0lGTEFfTVRVXSk7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjIyODM6XFx0aXA2ZXJzcGFuX3R1bm5lbF9saW5rX21kKGlnbiwgdCk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyODQtXFx0aXA2Z3JlX3R1bm5lbF9saW5rKGlnbiwgdCk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MjMwMz1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXA2Z3JlX3RhcF9vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMzE2LVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMzE3OnN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcDZlcnNwYW5fdGFwX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMzE4OlxcdC5raW5kXFx0XFx0PSBcXFwiaXA2ZXJzcGFuXFxcIixcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjMxOS1cXHQubWF4dHlwZVxcdD0gSUZMQV9HUkVfTUFYLFxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzMjEtXFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBpcDZfdG5sKSxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjMyMjpcXHQuc2V0dXBcXHRcXHQ9IGlwNmVyc3Bhbl90YXBfc2V0dXAsXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIzMjM6XFx0LnZhbGlkYXRlXFx0PSBpcDZlcnNwYW5fdGFwX3ZhbGlkYXRlLFxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMzI0OlxcdC5uZXdsaW5rXFx0PSBpcDZlcnNwYW5fbmV3bGluayxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjMyNTpcXHQuY2hhbmdlbGlua1xcdD0gaXA2ZXJzcGFuX2NoYW5nZWxpbmssXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzMjYtXFx0LmdldF9zaXplXFx0PSBpcDZncmVfZ2V0X3NpemUsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MjMzNT1zdGF0aWMgaW50IF9faW5pdCBpcDZncmVfaW5pdCh2b2lkKVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzNTgtXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIzNTk6XFx0ZXJyID0gcnRubF9saW5rX3JlZ2lzdGVyKFxcdTAwMjZpcDZlcnNwYW5fdGFwX29wcyk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzNjAtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIzNjE6XFx0XFx0Z290byBlcnNwYW5fbGlua19mYWlsZWQ7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzNjItXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjM2NS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjM2NjplcnNwYW5fbGlua19mYWlsZWQ6XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzNjctXFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNmlwNmdyZV90YXBfb3BzKTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0yMzc3PXN0YXRpYyB2b2lkIF9fZXhpdCBpcDZncmVfZmluaSh2b2lkKVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzODAtXFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNmlwNmdyZV9saW5rX29wcyk7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjIzODE6XFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNmlwNmVyc3Bhbl90YXBfb3BzKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjM4Mi1cXHRpbmV0Nl9kZWxfcHJvdG9jb2woXFx1MDAyNmlwNmdyZV9wcm90b2NvbCwgSVBQUk9UT19HUkUpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTIzOTI9TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcXFwiaXA2Z3JldGFwXFxcIik7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjIzOTM6TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcXFwiaXA2ZXJzcGFuXFxcIik7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzOTQtTU9EVUxFX0FMSUFTX05FVERFVihcXFwiaXA2Z3JlMFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxODo0NjoyOC42MTcyNDE4NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjE4NDAyMjA2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdSRS9FUlNQQU4gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lIGRlYWxpbmcgd2l0aCBHUkUgYW5kIEVSU1BBTiBmdW5jdGlvbmFsaXR5LCBhbmQgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgY29kZSdzIGRlcGVuZGVuY2llcy4gRVJTUEFOIGlzIGluZGVlZCBidWlsdCBvbiB0b3Agb2YgYENPTkZJR19JUFY2X0dSRWAgYW5kIGBDT05GSUdfTkVUX0lQR1JFYCwgdGhhdCdzIHNvbGlkLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgY29yZSBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgdG91Y2hlZC4gSSd2ZSBpZGVudGlmaWVkOiBgaXBncmVfeG1pdGAsIGBlcnNwYW5feG1pdGAsIGBncmVfdGFwX3htaXRgLCBgaXBncmVfZmlsbF9pbmZvYCwgYGVyc3Bhbl9maWxsX2luZm9gLCBgX19ncmU2X3htaXRgLCBgaXA2ZXJzcGFuX3R1bm5lbF94bWl0YCwgYW5kIGBpcDZncmVfZmlsbF9pbmZvYC4gU2luY2UgYF9fZ3JlX3htaXRgIGlzIHN0YXRpYywgbXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGl0IG1pZ2h0IGJlIGlubGluZWQuIEdpdmVuIHRoYXQgdGhlIHBhdGNoIHRvdWNoZXMgaXQgZGlyZWN0bHksIGFuZCBpbmNsdWRlcyBpdHMgY2FsbGVycywgaXQncyB3aXNlIHRvIGluY2x1ZGUgYF9fZ3JlX3htaXRgIGFzIGEgc3ltYm9sLlxuXG5Mb29raW5nIGFnYWluIGF0IHdoYXQgaXMgYmVpbmcgbW9kaWZpZWQsIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zOlxuYF9fZ3JlX3htaXRgXG5gaXBncmVfeG1pdGBcbmBlcnNwYW5feG1pdGBcbmBncmVfdGFwX3htaXRgXG5gaXBncmVfZmlsbF9pbmZvYFxuYGVyc3Bhbl9maWxsX2luZm9gXG5gX19ncmU2X3htaXRgXG5gaXA2ZXJzcGFuX3R1bm5lbF94bWl0YFxuYGlwNmdyZV9maWxsX2luZm9gXG5cblllcCwgdGhlc2UgbmVlZCB0byBiZSBsaXN0ZWQgaW4gYEZvY3VzU3ltYm9sc2AuXG5cbkEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBgX19ncmU2X3htaXRgICppcyogc3RhdGljLCBhbmQgdGhlIG5hbWUgaXMgY29ycmVjdC4gSSBmb3VuZCBpdCBpbiBgbmV0L2lwdjYvaXA2X2dyZS5jYC5cblxuTm93LCBsZXQncyB2ZXJpZnkgYW55IGNvbmZpZyBkZXBlbmRlbmNpZXMuIEkndmUgZ290IGBDT05GSUdfTkVUX0lQR1JFYCBhbmQgYENPTkZJR19JUFY2X0dSRWAuIE5vIG5lZWQgdG8gY29uc2lkZXIgYENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUYCwgdGhlIGNoYW5nZXMgYXJlbid0IHVuZGVyIHRoYXQgYCNpZmRlZmAuIGBDT05GSUdfSVBWNmAgaXMgaW1wbGljaXRseSBlbmFibGVkIGJ5IGBDT05GSUdfSVBWNl9HUkVgLCBzbyB0aGF0IGlzIGFscmVhZHkgaGFuZGxlZC5cblxuU28sIGxldCdzIGJyZWFrIGRvd24gdGhlICp3aHkqIG9mIHRoaXMgcGF0Y2guIEl0J3MgYWJvdXQgZml4aW5nIGEgYnVnIHdoZXJlIGB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFnc2Agd2FzIGdldHRpbmcgdHJhc2hlZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbmV0bGluayBpbmZvIGR1bXBpbmcuIFRoaXMgY291bGQgbGVhZCB0byByYWNlIGNvbmRpdGlvbnMgb3IgYmFkIHN0YXRlIGZvciBHUkUvRVJTUEFOIHR1bm5lbHMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbG9jYWwgYGZsYWdzYCB2YXJpYWJsZSBmb3IgdGhlIHRyYW5zbWlzc2lvbiBhbmQgbW92ZXMgdGhlIGBJUF9UVU5ORUxfS0VZX0JJVGAgc2V0dGluZyB0byBgaXBncmVfZmlsbF9pbmZvYCBpbnN0ZWFkIG9mIG11bmdpbmcgdGhlIHR1bm5lbCBwYXJhbWV0ZXJzIGluIGBlcnNwYW5fZmlsbF9pbmZvYC4gVGhlIGZ1bmN0aW9uYWwgaW1wYWN0IGhlcmUgaXMgYWJvdXQgcHJvdGVjdGluZyB0aGUgdHVubmVsIGRhdGEgZnJvbSBjb3JydXB0aW9uLiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gZnV6enkgaXQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpc3N1ZXMgaGF2ZSBiZWVuIGludHJvZHVjZWQuXG5cbk15IGN1cnJlbnQgZm9jdXMgc3ltYm9scyBhcmUgdGhlc2U6XG5gX19ncmVfeG1pdGBcbmBpcGdyZV94bWl0YFxuYGVyc3Bhbl94bWl0YFxuYGdyZV90YXBfeG1pdGBcbmBpcGdyZV9maWxsX2luZm9gXG5gZXJzcGFuX2ZpbGxfaW5mb2BcbmBfX2dyZTZfeG1pdGBcbmBpcDZlcnNwYW5fdHVubmVsX3htaXRgXG5gaXA2Z3JlX2ZpbGxfaW5mb2BcblxuSSdsbCBxdWlja2x5IHZlcmlmeSB0aGF0IGBlcnNwYW5fZmlsbF9pbmZvYCBpcyBzdGlsbCBwcmVzZW50IGFmdGVyIHRoZSBjaGFuZ2VzIC0geWVwLCBpdCdzIHRoZXJlLiBUaGUgcGF0Y2gganVzdCByZW1vdmVkIHRoZSBtb2RpZmljYXRpb24gb2YgYHQtXHUwMDNlcGFybXMub19mbGFnc2AuXG5cbkFscmlnaHQsIEknbSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDUzNywiT3V0cHV0VG9rZW5zIjoyNTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTg6NDY6NDAuODAxMjY4NDk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1MjU5Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIixcbiAgICBcIklQVjZfR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ncmVfeG1pdFwiLFxuICAgIFwiaXBncmVfeG1pdFwiLFxuICAgIFwiZXJzcGFuX3htaXRcIixcbiAgICBcImdyZV90YXBfeG1pdFwiLFxuICAgIFwiaXBncmVfZmlsbF9pbmZvXCIsXG4gICAgXCJlcnNwYW5fZmlsbF9pbmZvXCIsXG4gICAgXCJfX2dyZTZfeG1pdFwiLFxuICAgIFwiaXA2ZXJzcGFuX3R1bm5lbF94bWl0XCIsXG4gICAgXCJpcDZncmVfZmlsbF9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYHR1bm5lbC1cXHUwMDNlcGFybXMub19mbGFnc2Agd2FzIG1vZGlmaWVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGFuZCBuZXRsaW5rIGluZm8gZHVtcGluZywgd2hpY2ggY291bGQgY2F1c2UgcmFjZSBjb25kaXRpb25zIG9yIHVuaW50ZW5kZWQgc3RhdGUgY2hhbmdlcyBmb3IgR1JFIGFuZCBFUlNQQU4gdHVubmVscy4gSXQgaW50cm9kdWNlcyBhIGxvY2FsIGBmbGFnc2AgdmFyaWFibGUgdG8gaG9sZCB0aGUgZmxhZ3MgZHVyaW5nIHRyYW5zbWlzc2lvbiBhbmQgY29ycmVjdGx5IHNldHMgdGhlIGBJUF9UVU5ORUxfS0VZX0JJVGAgaW4gYGlwZ3JlX2ZpbGxfaW5mb2AgaW5zdGVhZCBvZiBtb2RpZnlpbmcgdGhlIHR1bm5lbCBwYXJhbWV0ZXJzIGluIGBlcnNwYW5fZmlsbF9pbmZvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEdSRS9FUlNQQU4gdHVubmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgYnVncyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIixcbiAgICBcIklQVjZfR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ncmVfeG1pdFwiLFxuICAgIFwiaXBncmVfeG1pdFwiLFxuICAgIFwiZXJzcGFuX3htaXRcIixcbiAgICBcImdyZV90YXBfeG1pdFwiLFxuICAgIFwiaXBncmVfZmlsbF9pbmZvXCIsXG4gICAgXCJlcnNwYW5fZmlsbF9pbmZvXCIsXG4gICAgXCJfX2dyZTZfeG1pdFwiLFxuICAgIFwiaXA2ZXJzcGFuX3R1bm5lbF94bWl0XCIsXG4gICAgXCJpcDZncmVfZmlsbF9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYHR1bm5lbC1cXHUwMDNlcGFybXMub19mbGFnc2Agd2FzIG1vZGlmaWVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGFuZCBuZXRsaW5rIGluZm8gZHVtcGluZywgd2hpY2ggY291bGQgY2F1c2UgcmFjZSBjb25kaXRpb25zIG9yIHVuaW50ZW5kZWQgc3RhdGUgY2hhbmdlcyBmb3IgR1JFIGFuZCBFUlNQQU4gdHVubmVscy4gSXQgaW50cm9kdWNlcyBhIGxvY2FsIGBmbGFnc2AgdmFyaWFibGUgdG8gaG9sZCB0aGUgZmxhZ3MgZHVyaW5nIHRyYW5zbWlzc2lvbiBhbmQgY29ycmVjdGx5IHNldHMgdGhlIGBJUF9UVU5ORUxfS0VZX0JJVGAgaW4gYGlwZ3JlX2ZpbGxfaW5mb2AgaW5zdGVhZCBvZiBtb2RpZnlpbmcgdGhlIHR1bm5lbCBwYXJhbWV0ZXJzIGluIGBlcnNwYW5fZmlsbF9pbmZvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEdSRS9FUlNQQU4gdHVubmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgYnVncyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5s67[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-20 18:26:20 +0000 UTC FinishedAt: 2026-07-20 18:46:42 +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": "e13caf1c26587434f0b768193100440939c0fb91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE", "IPV6_GRE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "e13caf1c26587434f0b768193100440939c0fb91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE", "IPV6_GRE" ], "series_id": "d3610706-76de-4534-a8fd-5a53db5cbcf2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__gre_xmit", "ipgre_xmit", "erspan_xmit", "gre_tap_xmit", "ipgre_fill_info", "erspan_fill_info", "__gre6_xmit", "ip6erspan_tunnel_xmit", "ip6gre_fill_info" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtJUFY2X0dSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3htaXQmIzM0OywKICAgICYjMzQ7aXBncmVfeG1pdCYjMzQ7LAogICAgJiMzNDtlcnNwYW5feG1pdCYjMzQ7LAogICAgJiMzNDtncmVfdGFwX3htaXQmIzM0OywKICAgICYjMzQ7aXBncmVfZmlsbF9pbmZvJiMzNDssCiAgICAmIzM0O2Vyc3Bhbl9maWxsX2luZm8mIzM0OywKICAgICYjMzQ7X19ncmU2X3htaXQmIzM0OywKICAgICYjMzQ7aXA2ZXJzcGFuX3R1bm5lbF94bWl0JiMzNDssCiAgICAmIzM0O2lwNmdyZV9maWxsX2luZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzYCB3YXMgbW9kaWZpZWQgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIG5ldGxpbmsgaW5mbyBkdW1waW5nLCB3aGljaCBjb3VsZCBjYXVzZSByYWNlIGNvbmRpdGlvbnMgb3IgdW5pbnRlbmRlZCBzdGF0ZSBjaGFuZ2VzIGZvciBHUkUgYW5kIEVSU1BBTiB0dW5uZWxzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYGZsYWdzYCB2YXJpYWJsZSB0byBob2xkIHRoZSBmbGFncyBkdXJpbmcgdHJhbnNtaXNzaW9uIGFuZCBjb3JyZWN0bHkgc2V0cyB0aGUgYElQX1RVTk5FTF9LRVlfQklUYCBpbiBgaXBncmVfZmlsbF9pbmZvYCBpbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgdHVubmVsIHBhcmFtZXRlcnMgaW4gYGVyc3Bhbl9maWxsX2luZm9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgR1JFL0VSU1BBTiB0dW5uZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBidWdzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODRlNWU1MTQ4OTNhMGExY2E2MTgyODU2YWMxZTBlYWRmNDQ4NmNhMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDIwIDE4OjQ2OjA0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmNcbmluZGV4IDNlZmRmYjRmZmEyMTEyLi40NDJhMmM5NTEzZTg0ZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF9ncmUuY1xuQEAgLTQ3NSwxNSAmIzQzOzQ3NSwxMiBAQCBzdGF0aWMgaW50IGdyZV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcbiBzdGF0aWMgdm9pZCBfX2dyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaXBoZHIgKnRubF9wYXJhbXMsXG4tXHRcdCAgICAgICBfX2JlMTYgcHJvdG8pXG4mIzQzO1x0XHQgICAgICAgX19iZTE2IHByb3RvLCBjb25zdCB1bnNpZ25lZCBsb25nICpmbGFncylcbiB7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xuLVx0SVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1MoZmxhZ3MpO1xuLVxuLVx0aXBfdHVubmVsX2ZsYWdzX2NvcHkoZmxhZ3MsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKTtcbiBcbiBcdC8qIFB1c2ggR1JFIGhlYWRlci4gKi9cbi1cdGdyZV9idWlsZF9oZWFkZXIoc2tiLCB0dW5uZWwtXHUwMDNldHVuX2hsZW4sXG4mIzQzO1x0Z3JlX2J1aWxkX2hlYWRlcihza2IsIGdyZV9jYWxjX2hsZW4oZmxhZ3MpLFxuIFx0XHRcdCBmbGFncywgcHJvdG8sIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2tleSxcbiBcdFx0XHQgdGVzdF9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKSA/XG4gXHRcdFx0IGh0b25sKGF0b21pY19mZXRjaF9pbmMoXHUwMDI2dHVubmVsLVx1MDAzZW9fc2Vxbm8pKSA6IDApO1xuQEAgLTY1NCw2ICYjNDM7NjUxLDcgQEAgc3RhdGljIG5ldGRldl90eF90IGlwZ3JlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiB7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0Y29uc3Qgc3RydWN0IGlwaGRyICp0bmxfcGFyYW1zO1xuJiM0MztcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcbiBcbiBcdGlmICghcHNrYl9pbmV0X21heV9wdWxsKHNrYikpXG4gXHRcdGdvdG8gZnJlZV9za2I7XG5AQCAtNjYzLDYgJiM0Mzs2NjEsOCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIFx0fVxuIFxuJiM0MztcdGlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4mIzQzO1xuIFx0aWYgKGRldi1cdTAwM2VoZWFkZXJfb3BzKSB7XG4gXHRcdGludCBwdWxsX2xlbiA9IHR1bm5lbC1cdTAwM2VobGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpO1xuIFxuQEAgLTY4OCwxMSAmIzQzOzY4OCwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR0bmxfcGFyYW1zID0gXHUwMDI2dHVubmVsLVx1MDAzZXBhcm1zLmlwaDtcbiBcdH1cbiBcbi1cdGlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULFxuLVx0XHRcdFx0XHQgICAgICB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncykpKVxuJiM0MztcdGlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncykpKVxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuIFxuLVx0X19ncmVfeG1pdChza2IsIGRldiwgdG5sX3BhcmFtcywgc2tiLVx1MDAzZXByb3RvY29sKTtcbiYjNDM7XHRfX2dyZV94bWl0KHNrYiwgZGV2LCB0bmxfcGFyYW1zLCBza2ItXHUwMDNlcHJvdG9jb2wsIGZsYWdzKTtcbiBcdHJldHVybiBORVRERVZfVFhfT0s7XG4gXG4gZnJlZV9za2I6XG5AQCAtNzA1LDYgJiM0Mzs3MDQsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZXJzcGFuX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xuJiM0MztcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcbiBcdGJvb2wgdHJ1bmNhdGUgPSBmYWxzZTtcbiBcdF9fYmUxNiBwcm90bztcbiBcbkBAIC03MjgsMTAgJiM0Mzs3MjgsMTIgQEAgc3RhdGljIG5ldGRldl90eF90IGVyc3Bhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHRydW5jYXRlID0gdHJ1ZTtcbiBcdH1cbiBcbiYjNDM7XHRpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xuJiM0MztcbiBcdC8qIFB1c2ggRVJTUEFOIGhlYWRlciAqL1xuIFx0aWYgKHR1bm5lbC1cdTAwM2VlcnNwYW5fdmVyID09IDApIHtcbiBcdFx0cHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pO1xuLVx0XHRfX2NsZWFyX2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xuJiM0MztcdFx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKTtcbiBcdH0gZWxzZSBpZiAodHVubmVsLVx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xuIFx0XHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsLVx1MDAzZXBhcm1zLm9fa2V5KSxcbiBcdFx0XHRcdCAgICB0dW5uZWwtXHUwMDNlaW5kZXgsXG5AQCAtNzQ2LDggJiM0Mzs3NDgsOSBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZXJzcGFuX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0Z290byBmcmVlX3NrYjtcbiBcdH1cbiBcbi1cdF9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4tXHRfX2dyZV94bWl0KHNrYiwgZGV2LCBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMuaXBoLCBwcm90byk7XG4mIzQzO1x0X19jbGVhcl9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncyk7XG4mIzQzO1x0X19jbGVhcl9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIGZsYWdzKTtcbiYjNDM7XHRfX2dyZV94bWl0KHNrYiwgZGV2LCBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMuaXBoLCBwcm90bywgZmxhZ3MpO1xuIFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbiBcbiBmcmVlX3NrYjpcbkBAIC03NjAsNiAmIzQzOzc2Myw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBncmVfdGFwX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0c3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhmbGFncyk7XG4gXG4gXHRpZiAoIXBza2JfaW5ldF9tYXlfcHVsbChza2IpKVxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuQEAgLTc2OSwxNCAmIzQzOzc3MywxNSBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZ3JlX3RhcF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHJldHVybiBORVRERVZfVFhfT0s7XG4gXHR9XG4gXG4tXHRpZiAoZ3JlX2hhbmRsZV9vZmZsb2Fkcyhza2IsIHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCxcbi1cdFx0XHRcdFx0ICAgICAgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpKSlcbiYjNDM7XHRpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRpZiAoZ3JlX2hhbmRsZV9vZmZsb2Fkcyhza2IsIHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgZmxhZ3MpKSlcbiBcdFx0Z290byBmcmVlX3NrYjtcbiBcbiBcdGlmIChza2JfY293X2hlYWQoc2tiLCBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tKSlcbiBcdFx0Z290byBmcmVlX3NrYjtcbiBcbi1cdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFx1MDAyNnR1bm5lbC1cdTAwM2VwYXJtcy5pcGgsIGh0b25zKEVUSF9QX1RFQikpO1xuJiM0MztcdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFx1MDAyNnR1bm5lbC1cdTAwM2VwYXJtcy5pcGgsIGh0b25zKEVUSF9QX1RFQiksIGZsYWdzKTtcbiBcdHJldHVybiBORVRERVZfVFhfT0s7XG4gXG4gZnJlZV9za2I6XG5AQCAtMTU2MCwxMiAmIzQzOzE1NjUsMTUgQEAgc3RhdGljIHNpemVfdCBpcGdyZV9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIHN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCA9IFx1MDAyNnQtXHUwMDNlcGFybXM7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAgPSBcdTAwMjZ0LVx1MDAzZXBhcm1zO1xuIFx0SVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1Mob19mbGFncyk7XG4gXG4gXHRpcF90dW5uZWxfZmxhZ3NfY29weShvX2ZsYWdzLCBwLVx1MDAzZW9fZmxhZ3MpO1xuIFxuJiM0MztcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgIT0gMCBcdTAwMjZcdTAwMjYgIXQtXHUwMDNlY29sbGVjdF9tZClcbiYjNDM7XHRcdF9fc2V0X2JpdChJUF9UVU5ORUxfS0VZX0JJVCwgb19mbGFncyk7XG4mIzQzO1xuIFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9HUkVfTElOSywgcC1cdTAwM2VsaW5rKSB8fFxuIFx0ICAgIG5sYV9wdXRfYmUxNihza2IsIElGTEFfR1JFX0lGTEFHUyxcbiBcdFx0XHQgZ3JlX3RubF9mbGFnc190b19ncmVfZmxhZ3MocC1cdTAwM2VpX2ZsYWdzKSkgfHxcbkBAIC0xNjA4LDEyICYjNDM7MTYxNiw5IEBAIHN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gc3RhdGljIGludCBlcnNwYW5fZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4gXG4gXHRpZiAodC1cdTAwM2VlcnNwYW5fdmVyIFx1MDAzYz0gMikge1xuLVx0XHRpZiAodC1cdTAwM2VlcnNwYW5fdmVyICE9IDAgXHUwMDI2XHUwMDI2ICF0LVx1MDAzZWNvbGxlY3RfbWQpXG4tXHRcdFx0X19zZXRfYml0KElQX1RVTk5FTF9LRVlfQklULCB0LVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xuLVxuIFx0XHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9WRVIsIHQtXHUwMDNlZXJzcGFuX3ZlcikpXG4gXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2dyZS5jIGIvbmV0L2lwdjYvaXA2X2dyZS5jXG5pbmRleCA3YzA5YTI2OWIzNTIxNi4uOWU2OGFmZWM5ZGNlNDEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfZ3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9ncmUuY1xuQEAgLTc3Nyw3ICYjNDM7Nzc3LDcgQEAgc3RhdGljIG5ldGRldl90eF90IF9fZ3JlNl94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXG4gXHRcdGlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4gXG4tXHRcdGdyZV9idWlsZF9oZWFkZXIoc2tiLCB0dW5uZWwtXHUwMDNldHVuX2hsZW4sIGZsYWdzLFxuJiM0MztcdFx0Z3JlX2J1aWxkX2hlYWRlcihza2IsIGdyZV9jYWxjX2hsZW4oZmxhZ3MpLCBmbGFncyxcbiBcdFx0XHRcdCBwcm90b2NvbCwgdHVubmVsLVx1MDAzZXBhcm1zLm9fa2V5LFxuIFx0XHRcdFx0IHRlc3RfYml0KElQX1RVTk5FTF9TRVFfQklULCBmbGFncykgP1xuIFx0XHRcdFx0IGh0b25sKGF0b21pY19mZXRjaF9pbmMoXHUwMDI2dHVubmVsLVx1MDAzZW9fc2Vxbm8pKSA6XG5AQCAtOTY0LDcgJiM0Mzs5NjQsNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXA2ZXJzcGFuX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA/OiB0LVx1MDAzZWhsZW4pKVxuIFx0XHRnb3RvIHR4X2VycjtcbiBcbi1cdF9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCB0LVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xuIFx0SVBDQihza2IpLVx1MDAzZWZsYWdzID0gMDtcbiBcbiBcdC8qIEZvciBjb2xsZWN0X21kIG1vZGUsIGRlcml2ZSBmbDYgZnJvbSB0aGUgdHVubmVsIGtleSxcbkBAIC0yMTE1LDggJiM0MzsyMTE0LDggQEAgc3RhdGljIHNpemVfdCBpcDZncmVfZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBzdGF0aWMgaW50IGlwNmdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4tXHRzdHJ1Y3QgaXA2X3RubCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRzdHJ1Y3QgX19pcDZfdG5sX3Bhcm0gKnAgPSBcdTAwMjZ0LVx1MDAzZXBhcm1zO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBpcDZfdG5sICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgX19pcDZfdG5sX3Bhcm0gKnAgPSBcdTAwMjZ0LVx1MDAzZXBhcm1zO1xuIFx0SVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1Mob19mbGFncyk7XG4gXG4gXHRpcF90dW5uZWxfZmxhZ3NfY29weShvX2ZsYWdzLCBwLVx1MDAzZW9fZmxhZ3MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7SVBWNl9HUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2dyZV94bWl0JiMzNDssCiAgICAmIzM0O2lwZ3JlX3htaXQmIzM0OywKICAgICYjMzQ7ZXJzcGFuX3htaXQmIzM0OywKICAgICYjMzQ7Z3JlX3RhcF94bWl0JiMzNDssCiAgICAmIzM0O2lwZ3JlX2ZpbGxfaW5mbyYjMzQ7LAogICAgJiMzNDtlcnNwYW5fZmlsbF9pbmZvJiMzNDssCiAgICAmIzM0O19fZ3JlNl94bWl0JiMzNDssCiAgICAmIzM0O2lwNmVyc3Bhbl90dW5uZWxfeG1pdCYjMzQ7LAogICAgJiMzNDtpcDZncmVfZmlsbF9pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFnc2Agd2FzIG1vZGlmaWVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGFuZCBuZXRsaW5rIGluZm8gZHVtcGluZywgd2hpY2ggY291bGQgY2F1c2UgcmFjZSBjb25kaXRpb25zIG9yIHVuaW50ZW5kZWQgc3RhdGUgY2hhbmdlcyBmb3IgR1JFIGFuZCBFUlNQQU4gdHVubmVscy4gSXQgaW50cm9kdWNlcyBhIGxvY2FsIGBmbGFnc2AgdmFyaWFibGUgdG8gaG9sZCB0aGUgZmxhZ3MgZHVyaW5nIHRyYW5zbWlzc2lvbiBhbmQgY29ycmVjdGx5IHNldHMgdGhlIGBJUF9UVU5ORUxfS0VZX0JJVGAgaW4gYGlwZ3JlX2ZpbGxfaW5mb2AgaW5zdGVhZCBvZiBtb2RpZnlpbmcgdGhlIHR1bm5lbCBwYXJhbWV0ZXJzIGluIGBlcnNwYW5fZmlsbF9pbmZvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEdSRS9FUlNQQU4gdHVubmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgYnVncyBhcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODRlNWU1MTQ4OTNhMGExY2E2MTgyODU2YWMxZTBlYWRmNDQ4NmNhMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDIwIDE4OjQ2OjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZ3JlLmMgYi9uZXQvaXB2NC9pcF9ncmUuYwppbmRleCAzZWZkZmI0ZmZhMjExMi4uNDQyYTJjOTUxM2U4NGUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwX2dyZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX2dyZS5jCkBAIC00NzUsMTUgJiM0Mzs0NzUsMTIgQEAgc3RhdGljIGludCBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IpCiAKIHN0YXRpYyB2b2lkIF9fZ3JlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJICAgICAgIGNvbnN0IHN0cnVjdCBpcGhkciAqdG5sX3BhcmFtcywKLQkJICAgICAgIF9fYmUxNiBwcm90bykKJiM0MzsJCSAgICAgICBfX2JlMTYgcHJvdG8sIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmZsYWdzKQogewogCXN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7Ci0JSVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1MoZmxhZ3MpOwotCi0JaXBfdHVubmVsX2ZsYWdzX2NvcHkoZmxhZ3MsIHR1bm5lbC0mZ3Q7cGFybXMub19mbGFncyk7CiAKIAkvKiBQdXNoIEdSRSBoZWFkZXIuICovCi0JZ3JlX2J1aWxkX2hlYWRlcihza2IsIHR1bm5lbC0mZ3Q7dHVuX2hsZW4sCiYjNDM7CWdyZV9idWlsZF9oZWFkZXIoc2tiLCBncmVfY2FsY19obGVuKGZsYWdzKSwKIAkJCSBmbGFncywgcHJvdG8sIHR1bm5lbC0mZ3Q7cGFybXMub19rZXksCiAJCQkgdGVzdF9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKSA/CiAJCQkgaHRvbmwoYXRvbWljX2ZldGNoX2luYygmYW1wO3R1bm5lbC0mZ3Q7b19zZXFubykpIDogMCk7CkBAIC02NTQsNiAmIzQzOzY1MSw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBpcGdyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiB7CiAJc3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAljb25zdCBzdHJ1Y3QgaXBoZHIgKnRubF9wYXJhbXM7CiYjNDM7CUlQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTsKIAogCWlmICghcHNrYl9pbmV0X21heV9wdWxsKHNrYikpCiAJCWdvdG8gZnJlZV9za2I7CkBAIC02NjMsNiAmIzQzOzY2MSw4IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBpcGdyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJCXJldHVybiBORVRERVZfVFhfT0s7CiAJfQogCiYjNDM7CWlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtJmd0O3Bhcm1zLm9fZmxhZ3MpOwomIzQzOwogCWlmIChkZXYtJmd0O2hlYWRlcl9vcHMpIHsKIAkJaW50IHB1bGxfbGVuID0gdHVubmVsLSZndDtobGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpOwogCkBAIC02ODgsMTEgJiM0Mzs2ODgsMTAgQEAgc3RhdGljIG5ldGRldl90eF90IGlwZ3JlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJdG5sX3BhcmFtcyA9ICZhbXA7dHVubmVsLSZndDtwYXJtcy5pcGg7CiAJfQogCi0JaWYgKGdyZV9oYW5kbGVfb2ZmbG9hZHMoc2tiLCB0ZXN0X2JpdChJUF9UVU5ORUxfQ1NVTV9CSVQsCi0JCQkJCSAgICAgIHR1bm5lbC0mZ3Q7cGFybXMub19mbGFncykpKQomIzQzOwlpZiAoZ3JlX2hhbmRsZV9vZmZsb2Fkcyhza2IsIHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgZmxhZ3MpKSkKIAkJZ290byBmcmVlX3NrYjsKIAotCV9fZ3JlX3htaXQoc2tiLCBkZXYsIHRubF9wYXJhbXMsIHNrYi0mZ3Q7cHJvdG9jb2wpOwomIzQzOwlfX2dyZV94bWl0KHNrYiwgZGV2LCB0bmxfcGFyYW1zLCBza2ItJmd0O3Byb3RvY29sLCBmbGFncyk7CiAJcmV0dXJuIE5FVERFVl9UWF9PSzsKIAogZnJlZV9za2I6CkBAIC03MDUsNiAmIzQzOzcwNCw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBlcnNwYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJSVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1MoZmxhZ3MpOwogCWJvb2wgdHJ1bmNhdGUgPSBmYWxzZTsKIAlfX2JlMTYgcHJvdG87CiAKQEAgLTcyOCwxMCAmIzQzOzcyOCwxMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZXJzcGFuX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJdHJ1bmNhdGUgPSB0cnVlOwogCX0KIAomIzQzOwlpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLSZndDtwYXJtcy5vX2ZsYWdzKTsKJiM0MzsKIAkvKiBQdXNoIEVSU1BBTiBoZWFkZXIgKi8KIAlpZiAodHVubmVsLSZndDtlcnNwYW5fdmVyID09IDApIHsKIAkJcHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pOwotCQlfX2NsZWFyX2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLSZndDtwYXJtcy5vX2ZsYWdzKTsKJiM0MzsJCV9fY2xlYXJfYml0KElQX1RVTk5FTF9TRVFfQklULCBmbGFncyk7CiAJfSBlbHNlIGlmICh0dW5uZWwtJmd0O2Vyc3Bhbl92ZXIgPT0gMSkgewogCQllcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsLSZndDtwYXJtcy5vX2tleSksCiAJCQkJICAgIHR1bm5lbC0mZ3Q7aW5kZXgsCkBAIC03NDYsOCAmIzQzOzc0OCw5IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBlcnNwYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlnb3RvIGZyZWVfc2tiOwogCX0KIAotCV9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCB0dW5uZWwtJmd0O3Bhcm1zLm9fZmxhZ3MpOwotCV9fZ3JlX3htaXQoc2tiLCBkZXYsICZhbXA7dHVubmVsLSZndDtwYXJtcy5pcGgsIHByb3RvKTsKJiM0MzsJX19jbGVhcl9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncyk7CiYjNDM7CV9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCBmbGFncyk7CiYjNDM7CV9fZ3JlX3htaXQoc2tiLCBkZXYsICZhbXA7dHVubmVsLSZndDtwYXJtcy5pcGgsIHByb3RvLCBmbGFncyk7CiAJcmV0dXJuIE5FVERFVl9UWF9PSzsKIAogZnJlZV9za2I6CkBAIC03NjAsNiAmIzQzOzc2Myw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBncmVfdGFwX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7CiYjNDM7CUlQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTsKIAogCWlmICghcHNrYl9pbmV0X21heV9wdWxsKHNrYikpCiAJCWdvdG8gZnJlZV9za2I7CkBAIC03NjksMTQgJiM0Mzs3NzMsMTUgQEAgc3RhdGljIG5ldGRldl90eF90IGdyZV90YXBfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlyZXR1cm4gTkVUREVWX1RYX09LOwogCX0KIAotCWlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULAotCQkJCQkgICAgICB0dW5uZWwtJmd0O3Bhcm1zLm9fZmxhZ3MpKSkKJiM0MzsJaXBfdHVubmVsX2ZsYWdzX2NvcHkoZmxhZ3MsIHR1bm5lbC0mZ3Q7cGFybXMub19mbGFncyk7CiYjNDM7CiYjNDM7CWlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncykpKQogCQlnb3RvIGZyZWVfc2tiOwogCiAJaWYgKHNrYl9jb3dfaGVhZChza2IsIGRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tKSkKIAkJZ290byBmcmVlX3NrYjsKIAotCV9fZ3JlX3htaXQoc2tiLCBkZXYsICZhbXA7dHVubmVsLSZndDtwYXJtcy5pcGgsIGh0b25zKEVUSF9QX1RFQikpOwomIzQzOwlfX2dyZV94bWl0KHNrYiwgZGV2LCAmYW1wO3R1bm5lbC0mZ3Q7cGFybXMuaXBoLCBodG9ucyhFVEhfUF9URUIpLCBmbGFncyk7CiAJcmV0dXJuIE5FVERFVl9UWF9PSzsKIAogZnJlZV9za2I6CkBAIC0xNTYwLDEyICYjNDM7MTU2NSwxNSBAQCBzdGF0aWMgc2l6ZV90IGlwZ3JlX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIHN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0Jc3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7Ci0Jc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAgPSAmYW1wO3QtJmd0O3Bhcm1zOwomIzQzOwljb25zdCBzdHJ1Y3QgaXBfdHVubmVsICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJY29uc3Qgc3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAgPSAmYW1wO3QtJmd0O3Bhcm1zOwogCUlQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKG9fZmxhZ3MpOwogCiAJaXBfdHVubmVsX2ZsYWdzX2NvcHkob19mbGFncywgcC0mZ3Q7b19mbGFncyk7CiAKJiM0MzsJaWYgKHQtJmd0O2Vyc3Bhbl92ZXIgIT0gMCAmYW1wOyZhbXA7ICF0LSZndDtjb2xsZWN0X21kKQomIzQzOwkJX19zZXRfYml0KElQX1RVTk5FTF9LRVlfQklULCBvX2ZsYWdzKTsKJiM0MzsKIAlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0dSRV9MSU5LLCBwLSZndDtsaW5rKSB8fAogCSAgICBubGFfcHV0X2JlMTYoc2tiLCBJRkxBX0dSRV9JRkxBR1MsCiAJCQkgZ3JlX3RubF9mbGFnc190b19ncmVfZmxhZ3MocC0mZ3Q7aV9mbGFncykpIHx8CkBAIC0xNjA4LDEyICYjNDM7MTYxNiw5IEBAIHN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIHN0YXRpYyBpbnQgZXJzcGFuX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewotCXN0cnVjdCBpcF90dW5uZWwgKnQgPSBuZXRkZXZfcHJpdihkZXYpOwomIzQzOwljb25zdCBzdHJ1Y3QgaXBfdHVubmVsICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAogCWlmICh0LSZndDtlcnNwYW5fdmVyICZsdDs9IDIpIHsKLQkJaWYgKHQtJmd0O2Vyc3Bhbl92ZXIgIT0gMCAmYW1wOyZhbXA7ICF0LSZndDtjb2xsZWN0X21kKQotCQkJX19zZXRfYml0KElQX1RVTk5FTF9LRVlfQklULCB0LSZndDtwYXJtcy5vX2ZsYWdzKTsKLQogCQlpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9WRVIsIHQtJmd0O2Vyc3Bhbl92ZXIpKQogCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9ncmUuYyBiL25ldC9pcHY2L2lwNl9ncmUuYwppbmRleCA3YzA5YTI2OWIzNTIxNi4uOWU2OGFmZWM5ZGNlNDEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2lwNl9ncmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9pcDZfZ3JlLmMKQEAgLTc3Nyw3ICYjNDM7Nzc3LDcgQEAgc3RhdGljIG5ldGRldl90eF90IF9fZ3JlNl94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAKIAkJaXBfdHVubmVsX2ZsYWdzX2NvcHkoZmxhZ3MsIHR1bm5lbC0mZ3Q7cGFybXMub19mbGFncyk7CiAKLQkJZ3JlX2J1aWxkX2hlYWRlcihza2IsIHR1bm5lbC0mZ3Q7dHVuX2hsZW4sIGZsYWdzLAomIzQzOwkJZ3JlX2J1aWxkX2hlYWRlcihza2IsIGdyZV9jYWxjX2hsZW4oZmxhZ3MpLCBmbGFncywKIAkJCQkgcHJvdG9jb2wsIHR1bm5lbC0mZ3Q7cGFybXMub19rZXksCiAJCQkJIHRlc3RfYml0KElQX1RVTk5FTF9TRVFfQklULCBmbGFncykgPwogCQkJCSBodG9ubChhdG9taWNfZmV0Y2hfaW5jKCZhbXA7dHVubmVsLSZndDtvX3NlcW5vKSkgOgpAQCAtOTY0LDcgJiM0Mzs5NjQsNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXA2ZXJzcGFuX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJaWYgKHNrYl9jb3dfaGVhZChza2IsIGRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tID86IHQtJmd0O2hsZW4pKQogCQlnb3RvIHR4X2VycjsKIAotCV9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCB0LSZndDtwYXJtcy5vX2ZsYWdzKTsKIAlJUENCKHNrYiktJmd0O2ZsYWdzID0gMDsKIAogCS8qIEZvciBjb2xsZWN0X21kIG1vZGUsIGRlcml2ZSBmbDYgZnJvbSB0aGUgdHVubmVsIGtleSwKQEAgLTIxMTUsOCAmIzQzOzIxMTQsOCBAQCBzdGF0aWMgc2l6ZV90IGlwNmdyZV9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCiBzdGF0aWMgaW50IGlwNmdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3QgaXA2X3RubCAqdCA9IG5ldGRldl9wcml2KGRldik7Ci0Jc3RydWN0IF9faXA2X3RubF9wYXJtICpwID0gJmFtcDt0LSZndDtwYXJtczsKJiM0MzsJY29uc3Qgc3RydWN0IGlwNl90bmwgKnQgPSBuZXRkZXZfcHJpdihkZXYpOwomIzQzOwljb25zdCBzdHJ1Y3QgX19pcDZfdG5sX3Bhcm0gKnAgPSAmYW1wO3QtJmd0O3Bhcm1zOwogCUlQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKG9fZmxhZ3MpOwogCiAJaXBfdHVubmVsX2ZsYWdzX2NvcHkob19mbGFncywgcC0mZ3Q7b19mbGFncyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NjIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA0NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHUkUvRVJTUEFOIFR1bm5lbCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBob3cgZmxhZ3MgYXJlIGhhbmRsZWQgaW4gdGhlIGtlcm5lbCYjMzk7cyBHUkUgYW5kIEVSU1BBTiB0dW5uZWwgY29kZSwgc3BlY2lmaWNhbGx5IGluIGBuZXQvaXB2NC9pcF9ncmUuY2AgYW5kIGBuZXQvaXB2Ni9pcDZfZ3JlLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRyZXNzaW5nIGEgcHJvYmxlbSB3aGVyZSB0aGUgYHR1bm5lbC0mZ3Q7cGFybXMub19mbGFnc2AgbWVtYmVyLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSB0dW5uZWwgY29uZmlndXJhdGlvbiwgd2FzIGJlaW5nIG1vZGlmaWVkICpkdXJpbmcgdHJhbnNtaXNzaW9uKi4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgcmVjaXBlIGZvciByYWNlIGNvbmRpdGlvbnMgYW5kIG90aGVyIG5hc3RpZXMsIGFuZCBmcmFua2x5LCBhIGRlc2lnbiBmbGF3LgoKVGhlIGZpeD8gSW5zdGVhZCBvZiBkaXJlY3RseSBtdWNraW5nIHdpdGggYHR1bm5lbC0mZ3Q7cGFybXMub19mbGFnc2AsIHRoZSBwYXRjaCBjb3BpZXMgaXQgdG8gYSBsb2NhbCBgZmxhZ3NgIHZhcmlhYmxlIHdpdGhpbiB0aGUgdHJhbnNtaXNzaW9uIGZ1bmN0aW9uIGFuZCB0aGVuIG1vZGlmaWVzIHRoYXQuIFNtYXJ0LiBTYWZlLiBXZSB3YW50IHRvIGF2b2lkIGFueSBwb3NzaWJpbGl0eSBvZiBjaGFuZ2VzIGR1cmluZyBhIHRyYW5zbWlzc2lvbi4gVGhpcyBkZWZpbml0ZWx5IGNsZWFucyB1cCBhIGJpdCBvZiBhIHNwYWdoZXR0aSBzY2VuYXJpby4KCkl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGFsc28gY29ycmVjdHMgdGhlIGZ1bmN0aW9uIGBpcGdyZV9maWxsX2luZm9gIHRvIGFwcHJvcHJpYXRlbHkgc2V0IHRoZSBgSVBfVFVOTkVMX0tFWV9CSVRgIG9uIGBvX2ZsYWdzYCBpbnN0ZWFkIG9mIG1vZGlmeWluZyBgdC0mZ3Q7cGFybXMub19mbGFnc2AgZGlyZWN0bHkgd2l0aGluIGBlcnNwYW5fZmlsbF9pbmZvYC4gV2FpdCwgd2FzIGBlcnNwYW5fZmlsbF9pbmZvYCBtb2RpZnlpbmcgYHQtJmd0O3Bhcm1zLm9fZmxhZ3NgPyBZZXMsIHRoZXJlIHdhcyBhIGBfX3NldF9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIHQtJmd0O3Bhcm1zLm9fZmxhZ3MpO2AgY2FsbCBpbiBgZXJzcGFuX2ZpbGxfaW5mb2AsIHdoaWNoIGlzIGEgYnVnIHNpbmNlIHRob3NlIGZpbGxfaW5mbyBmdW5jdGlvbnMgYXJlIGZvciBkdW1waW5nIHR1bm5lbCBpbmZvLCBub3QgY2hhbmdpbmcgY29uZmlndXJhdGlvbi4gVGhhdCYjMzk7cyBhIHN1YnRsZSBidXQgc2lnbmlmaWNhbnQgY29ycmVjdGlvbi4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB0byBob3cgdGhlc2UgdHVubmVscyBvcGVyYXRlLiBJdCYjMzk7cyBhIHNlY3VyaXR5IGFuZCByZWxpYWJpbGl0eSBpbXByb3ZlbWVudC4gRGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBuZWVkcyBmdXp6ZWQuCgpTbywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgZnV6emluZzogYGlwZ3JlX3htaXRgLCBgZXJzcGFuX3htaXRgLCBgZ3JlX3RhcF94bWl0YCwgYGlwZ3JlX2ZpbGxfaW5mb2AsIGBlcnNwYW5fZmlsbF9pbmZvYCwgYF9fZ3JlNl94bWl0YCwgYGlwNmVyc3Bhbl90dW5uZWxfeG1pdGAsIGFuZCBgaXA2Z3JlX2ZpbGxfaW5mb2AuIFRoYXQmIzM5O3MgdGhlIGNvcmUgc2V0IHRvIHN0YXJ0IHdpdGguCgpJIHNob3VsZCBhbHNvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyB0byBlbnN1cmUgdGhlc2UgZmVhdHVyZXMgYXJlIGVuYWJsZWQgZHVyaW5nIGZ1enppbmcuIEZvciB0aGUgSVB2NCBHUkUgY29kZSwgaXQmIzM5O3MgYENPTkZJR19ORVRfSVBHUkVgLCBhbmQgZm9yIHRoZSBJUHY2IEdSRSBjb2RlLCBpdCYjMzk7cyBgQ09ORklHX0lQVjZfR1JFYC4gVGltZSB0byBjb25maXJtIHdpdGggYGdyZXBwZXJgIGFuZCBtYWtlIHN1cmUgbXkgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2V0IGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTkVUX0lQR1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTI4PW9iai0kKENPTkZJR19ORVRfRk9VKSAmIzQzOz0gZm91Lm9cbm5ldC9pcHY0L01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19ORVRfSVBHUkVfREVNVVgpICYjNDM7PSBncmUub1xubmV0L2lwdjQvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgJiM0Mzs9IGlwX2dyZS5vXG5uZXQvaXB2NC9NYWtlZmlsZS0zMS11ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTQ0MD1zdGF0aWMgaW50IGdyZV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy00NDUtXG5uZXQvaXB2NC9pcF9ncmUuYzo0NDY6I2lmZGVmIENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUXG5uZXQvaXB2NC9pcF9ncmUuYy00NDctXHRpZiAoaXB2NF9pc19tdWx0aWNhc3QoaXBfaGRyKHNrYiktXHUwMDNlZGFkZHIpKSB7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9OTM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaGVhZGVyX29wcyBpcGdyZV9oZWFkZXJfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTk0MC1cbm5ldC9pcHY0L2lwX2dyZS5jOjk0MTojaWZkZWYgQ09ORklHX05FVF9JUEdSRV9CUk9BRENBU1Rcbm5ldC9pcHY0L2lwX2dyZS5jLTk0Mi1zdGF0aWMgaW50IGlwZ3JlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz05ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcGdyZV9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTk4Ny1cdC5uZG9fdW5pbml0XHRcdD0gaXBfdHVubmVsX3VuaW5pdCxcbm5ldC9pcHY0L2lwX2dyZS5jOjk4ODojaWZkZWYgQ09ORklHX05FVF9JUEdSRV9CUk9BRENBU1Rcbm5ldC9pcHY0L2lwX2dyZS5jLTk4OS1cdC5uZG9fb3Blblx0XHQ9IGlwZ3JlX29wZW4sXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTA0MT1zdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTA1NS1cdGlmIChpcGgtXHUwMDNlZGFkZHIgXHUwMDI2XHUwMDI2ICF0dW5uZWwtXHUwMDNlY29sbGVjdF9tZCkge1xubmV0L2lwdjQvaXBfZ3JlLmM6MTA1NjojaWZkZWYgQ09ORklHX05FVF9JUEdSRV9CUk9BRENBU1Rcbm5ldC9pcHY0L2lwX2dyZS5jLTEwNTctXHRcdGlmIChpcHY0X2lzX211bHRpY2FzdChpcGgtXHUwMDNlZGFkZHIpKSB7XG4tLVxubmV0L2lwdjQvaXBfdHVubmVsLmM9Mzc3PWludCBpcF90dW5uZWxfcmN2KHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC9pcF90dW5uZWwuYy0zODMtXG5uZXQvaXB2NC9pcF90dW5uZWwuYzozODQ6I2lmZGVmIENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUXG5uZXQvaXB2NC9pcF90dW5uZWwuYy0zODUtXHRpZiAoaXB2NF9pc19tdWx0aWNhc3QoaXBoLVx1MDAzZWRhZGRyKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMDAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOgoKKipJUHY2IEdSRTogQ29uc2lkZXJhdGlvbnMgYW5kIEltcGxpY2F0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IElQdjYgR1JFLCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBpbmhlcmVudCBjb21wbGV4aXRpZXMsIGFuZCwgZnJhbmtseSwgdGhlIHBvdGVudGlhbCBhZHZhbnRhZ2VzLiBXZSBrbm93IHRoYXQgR2VuZXJpYyBSb3V0aW5nIEVuY2Fwc3VsYXRpb24gKEdSRSkgcHJvdmlkZXMgYSB3YXkgdG8gZW5jYXBzdWxhdGUgbmV0d29yayBsYXllciBwcm90b2NvbHMgaW5zaWRlIG9mIGEgdmlydHVhbCBwb2ludC10by1wb2ludCBsaW5rLiBJbiB0aGUgSVB2NCB3b3JsZCwgd2UmIzM5O3JlIGFsbCBmYW1pbGlhciB3aXRoIGhvdyB0aGlzIHdvcmtzLiBCdXQgSVB2Ni4uLiBpdCBhZGRzIGEgd2hvbGUgbmV3IGxheWVyIG9mIG51YW5jZS4KCk15IGltbWVkaWF0ZSBjb25zaWRlcmF0aW9ucyBhcmUgZm9jdXNlZCBvbiB0aGUgcHJhY3RpY2FsaXRpZXMuIEZpcnN0LCB0aGUgaW1wYWN0IG9uIHRoZSBNVFUsIHRoZSBNYXhpbXVtIFRyYW5zbWlzc2lvbiBVbml0LiBJUHY2IGhlYWRlcnMgYXJlIGFscmVhZHkgbGFyZ2VyIHRoYW4gSVB2NC4gQWRkIGEgR1JFIGhlYWRlciBvbiB0b3Agb2YgdGhhdCwgYW5kIHdlJiMzOTtyZSAqZGVmaW5pdGVseSogZ29pbmcgdG8gYmUgYnVtcGluZyBpbnRvIGZyYWdtZW50YXRpb24gaXNzdWVzIGlmIHdlJiMzOTtyZSBub3QgY2FyZWZ1bC4gSSBuZWVkIHRvIGJlIHRoaW5raW5nIGFib3V0IHBhdGggTVRVIGRpc2NvdmVyeSwgYW5kIGhvdyB0byBlZmZlY3RpdmVseSBtYW5hZ2UgdGhhdCBhY3Jvc3MgcG90ZW50aWFsbHkgZGlzcGFyYXRlIG5ldHdvcmtzLgoKVGhlbiB0aGVyZSBhcmUgdGhlIHJvdXRpbmcgaW1wbGljYXRpb25zLiBIb3cgZG8gd2UgZW5zdXJlIHByb3BlciByb3V0aW5nIHdpdGhpbiB0aGUgR1JFIHR1bm5lbD8gSVB2NiYjMzk7cyBhdXRvLWNvbmZpZ3VyYXRpb24gYW5kIGFkZHJlc3MgYWxsb2NhdGlvbiBhcmUgZGlmZmVyZW50LCBhbmQgSSBjYW4mIzM5O3QganVzdCBhc3N1bWUgdGhlIHNhbWUgbWV0aG9kb2xvZ2llcyB3aWxsIHNlYW1sZXNzbHkgdHJhbnNsYXRlLiBJIG5lZWQgdG8gZGVzaWduIHRoZSBhZGRyZXNzaW5nIHNjaGVtZSBjYXJlZnVsbHkgZm9yIHRoZSB0dW5uZWxlZCB0cmFmZmljLiBUaGUgZm9jdXMgaXMgYWx3YXlzIG9uIGVuc3VyaW5nIHRoZSB0dW5uZWwgaW50ZXJmYWNlcyBhcmUgY29uZmlndXJlZCBwcm9wZXJseSBhbmQgdGhhdCB0aGUgYXBwcm9wcmlhdGUgcm91dGluZyBwcm90b2NvbHMgYXJlIGVuYWJsZWQsIGFuZCBjb3JyZWN0bHkgY29uZmlndXJlZCwgd2l0aGluIHRoZSB0dW5uZWwgaXRzZWxmLgoKU2VjdXJpdHkuIE9mIGNvdXJzZS4gSnVzdCBsaWtlIHdpdGggSVB2NCBHUkUsIGl0JiMzOTtzIGluaGVyZW50bHkgKm5vdCogc2VjdXJlLiBFbmNhcHN1bGF0aW9uIGFsb25lIGRvZXNuJiMzOTt0IGVuY3J5cHQgdGhlIHRyYWZmaWMuIEkgbmVlZCB0byBiZSB0aGlua2luZyBhYm91dCBpbnRlZ3JhdGluZyB0aGlzIHdpdGggSVBzZWMgdG8gcHJvdmlkZSB0aGF0IG5lY2Vzc2FyeSBjb25maWRlbnRpYWxpdHkgYW5kIGludGVncml0eS4gSWYgSSYjMzk7bSBjb25zaWRlcmluZyB1c2luZyBHUkUsIEkgYW0gKnJlcXVpcmVkKiB0byB0aGluayBhYm91dCB0aGUgb3ZlcmhlYWQsIGFuZCBwZXJmb3JtYW5jZSBwZW5hbHR5LiBXaGF0JiMzOTtzIHRoZSB0cmFkZS1vZmYgYmV0d2VlbiB0aGUgZmxleGliaWxpdHkgb2YgR1JFIGFuZCB0aGUgYWRkZWQgbGF5ZXIgb2Ygc2VjdXJpdHk/CgpJJiMzOTttIGFsc28gY29uc2lkZXJpbmcgdGhlIG9wZXJhdGlvbmFsIGFzcGVjdHMuIEhvdyBlYXN5IHdpbGwgaXQgYmUgdG8gdHJvdWJsZXNob290PyBBcmUgbXkgbW9uaXRvcmluZyB0b29scyB1cCB0byB0aGUgdGFzayBvZiBkaXNzZWN0aW5nIElQdjYgR1JFIGVuY2Fwc3VsYXRlZCBwYWNrZXRzPyBJIGFsc28gbmVlZCB0byBiZSBhd2FyZSBvZiBhbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGZpcmV3YWxscyBhbG9uZyB0aGUgcGF0aC4gVGhlc2UgbmVlZCB0byBiZSBjb25maWd1cmVkIHRvIGFsbG93IHRoZSBlbmNhcHN1bGF0ZWQgdHJhZmZpYywgb3IgaXQmIzM5O3MgZ2FtZSBvdmVyLgoKSXQgYWxsIGJvaWxzIGRvd24gdG8gY2FyZWZ1bCBwbGFubmluZywgbWV0aWN1bG91cyBjb25maWd1cmF0aW9uLCBhbmQgdGhvcm91Z2ggdGVzdGluZy4gSSB3aWxsIG1ha2Ugc3VyZSBJIGFwcHJvYWNoIGl0IHdpdGggYSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgYm90aCBJUHY2IGFuZCBHUkUmIzM5O3MgaW50cmljYWNpZXMuIEkgd2FudCBhIHJvYnVzdCBhbmQgZWZmZWN0aXZlIHNvbHV0aW9uIHRoYXQgd29ya3Mgc2VhbWxlc3NseSwgbm90IHNvbWV0aGluZyB0aGF0IGJyZWFrcyBkb3duIHVuZGVyIHByZXNzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19JUFY2X0dSRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9NYWtlZmlsZT00Mj1vYmotJChDT05GSUdfSVBWNl9UVU5ORUwpICYjNDM7PSBpcDZfdHVubmVsLm9cbm5ldC9pcHY2L01ha2VmaWxlOjQzOm9iai0kKENPTkZJR19JUFY2X0dSRSkgJiM0Mzs9IGlwNl9ncmUub1xubmV0L2lwdjYvTWFrZWZpbGUtNDQtb2JqLSQoQ09ORklHX0lQVjZfRk9VKSAmIzQzOz0gZm91Ni5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg1NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIEdSRSBUdW5uZWwgQ29uZmlndXJhdGlvbiBpbiB0aGUgTGludXggS2VybmVsKioKClJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIEdSRSB0dW5uZWxzIGhlcmUsIHNwZWNpZmljYWxseSB0aGUgY29uZmlndXJhdGlvbnMgYE5FVF9JUEdSRWAgYW5kIGBJUFY2X0dSRWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgdGhlc2UgdGhlIG9ubHkgb25lcyBJIG5lZWQgdG8gd29ycnkgYWJvdXQ/IFByb2JhYmx5IG5vdC4gSSYjMzk7dmUgZ290IHRvIGVuc3VyZSBJIGNvdmVyIGV2ZXJ5dGhpbmcuCgpJIHJlY2FsbCB0aGF0IEVSU1BBTiwgYSBjb21tb24gdHVubmVsaW5nIG1ldGhvZCwgaXMgZXNzZW50aWFsbHkgaW1wbGVtZW50ZWQgYXMgcGFydCBvZiBHUkUgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSBleGFjdGx5IGhvdyBpdCYjMzk7cyBoYW5kbGVkLiBJJiMzOTtsbCB0YWtlIGEgbG9vayBhdCBgbmV0L2lwdjQvaXBfZ3JlLmNgIGFuZCBzZWUgaWYgdGhlIEVSU1BBTiBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQgYW5kIGhvdyBpdCBpcyBpbXBsZW1lbnRlZCB3aXRoaW4gdGhpcyBjb250ZXh0LiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Vyc3BhbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jLTQ2LSNpbmNsdWRlIFx1MDAzY25ldC9kc3RfbWV0YWRhdGEuaFx1MDAzZVxubmV0L2lwdjQvaXBfZ3JlLmM6NDc6I2luY2x1ZGUgXHUwMDNjbmV0L2Vyc3Bhbi5oXHUwMDNlXG5uZXQvaXB2NC9pcF9ncmUuYy00OC1cbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMTM9c3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbm5ldC9pcHY0L2lwX2dyZS5jOjExNDpzdGF0aWMgdm9pZCBlcnNwYW5fYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2NC9pcF9ncmUuYy0xMTUtXHRcdFx0XHR1MzIgaWQsIHUzMiBpbmRleCxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMTk9c3RhdGljIHVuc2lnbmVkIGludCBncmVfdGFwX25ldF9pZCBfX3JlYWRfbW9zdGx5O1xubmV0L2lwdjQvaXBfZ3JlLmM6MTIwOnN0YXRpYyB1bnNpZ25lZCBpbnQgZXJzcGFuX25ldF9pZCBfX3JlYWRfbW9zdGx5O1xubmV0L2lwdjQvaXBfZ3JlLmMtMTIxLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTIyPXN0YXRpYyBpbnQgaXBncmVfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE0OS1cdFx0IHRwaS1cdTAwM2Vwcm90byA9PSBodG9ucyhFVEhfUF9FUlNQQU4yKSlcbm5ldC9pcHY0L2lwX2dyZS5jOjE1MDpcdFx0aXRuID0gbmV0X2dlbmVyaWMobmV0LCBlcnNwYW5fbmV0X2lkKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE1MS1cdGVsc2Vcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0yMTk9c3RhdGljIHZvaWQgZ3JlX2VycihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbylcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0yNTctXG5uZXQvaXB2NC9pcF9ncmUuYzoyNTg6c3RhdGljIGJvb2wgaXNfZXJzcGFuX3R5cGUxKGludCBncmVfaGRyX2xlbilcbm5ldC9pcHY0L2lwX2dyZS5jLTI1OS17XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMjY2LVxubmV0L2lwdjQvaXBfZ3JlLmM6MjY3OnN0YXRpYyBpbnQgZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdG5sX3B0a19pbmZvICp0cGksXG5uZXQvaXB2NC9pcF9ncmUuYy0yNjgtXHRcdCAgICAgIGludCBncmVfaGRyX2xlbilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzEtXHRzdHJ1Y3QgbWV0YWRhdGFfZHN0ICp0dW5fZHN0ID0gTlVMTDtcbm5ldC9pcHY0L2lwX2dyZS5jOjI3MjpcdHN0cnVjdCBlcnNwYW5fYmFzZV9oZHIgKmVyc2hkcjtcbm5ldC9pcHY0L2lwX2dyZS5jLTI3My1cdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzYtXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKmlwaDtcbm5ldC9pcHY0L2lwX2dyZS5jOjI3NzpcdHN0cnVjdCBlcnNwYW5fbWQyICptZDI7XG5uZXQvaXB2NC9pcF9ncmUuYy0yNzgtXHRpbnQgdmVyO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTI4Mi1cbm5ldC9pcHY0L2lwX2dyZS5jOjI4MzpcdGl0biA9IG5ldF9nZW5lcmljKG5ldCwgZXJzcGFuX25ldF9pZCk7XG5uZXQvaXB2NC9pcF9ncmUuYy0yODQtXHRpcGggPSBpcF9oZHIoc2tiKTtcbm5ldC9pcHY0L2lwX2dyZS5jOjI4NTpcdGlmIChpc19lcnNwYW5fdHlwZTEoZ3JlX2hkcl9sZW4pKSB7XG5uZXQvaXB2NC9pcF9ncmUuYy0yODYtXHRcdHZlciA9IDA7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMjk0LVxubmV0L2lwdjQvaXBfZ3JlLmM6Mjk1Olx0XHRlcnNoZHIgPSAoc3RydWN0IGVyc3Bhbl9iYXNlX2hkciAqKShza2ItXHUwMDNlZGF0YSAmIzQzOyBncmVfaGRyX2xlbik7XG5uZXQvaXB2NC9pcF9ncmUuYy0yOTYtXHRcdHZlciA9IGVyc2hkci1cdTAwM2V2ZXI7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzAzLVx0aWYgKHR1bm5lbCkge1xubmV0L2lwdjQvaXBfZ3JlLmM6MzA0Olx0XHRpZiAoaXNfZXJzcGFuX3R5cGUxKGdyZV9oZHJfbGVuKSlcbm5ldC9pcHY0L2lwX2dyZS5jLTMwNS1cdFx0XHRsZW4gPSBncmVfaGRyX2xlbjtcbm5ldC9pcHY0L2lwX2dyZS5jLTMwNi1cdFx0ZWxzZVxubmV0L2lwdjQvaXBfZ3JlLmM6MzA3Olx0XHRcdGxlbiA9IGdyZV9oZHJfbGVuICYjNDM7IGVyc3Bhbl9oZHJfbGVuKHZlcik7XG5uZXQvaXB2NC9pcF9ncmUuYy0zMDgtXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzE4LVx0XHRpZiAodHVubmVsLVx1MDAzZWNvbGxlY3RfbWQpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjMxOTpcdFx0XHRzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICpwa3RfbWQsICptZDtcbm5ldC9pcHY0L2lwX2dyZS5jLTMyMC1cdFx0XHRzdHJ1Y3QgaXBfdHVubmVsX2luZm8gKmluZm87XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzQyLVx0XHRcdCAgICAgc2tiX25ldHdvcmtfaGVhZGVyX2xlbihza2IpO1xubmV0L2lwdjQvaXBfZ3JlLmM6MzQzOlx0XHRcdHBrdF9tZCA9IChzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICopKGdoICYjNDM7IGdyZV9oZHJfbGVuICYjNDM7XG5uZXQvaXB2NC9pcF9ncmUuYy0zNDQtXHRcdFx0XHRcdFx0XHQgICAgc2l6ZW9mKCplcnNoZHIpKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz00NDA9c3RhdGljIGludCBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNDU5LVx0XHQgICAgIHRwaS5wcm90byA9PSBodG9ucyhFVEhfUF9FUlNQQU4yKSkpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjQ2MDpcdFx0aWYgKGVyc3Bhbl9yY3Yoc2tiLCBcdTAwMjZ0cGksIGhkcl9sZW4pID09IFBBQ0tFVF9SQ1ZEKVxubmV0L2lwdjQvaXBfZ3JlLmMtNDYxLVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTQ5Nj1zdGF0aWMgdm9pZCBncmVfZmJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTUzOS1cbm5ldC9pcHY0L2lwX2dyZS5jOjU0MDpzdGF0aWMgdm9pZCBlcnNwYW5fZmJfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvaXBfZ3JlLmMtNTQxLXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy01NDUtXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2tleSAqa2V5O1xubmV0L2lwdjQvaXBfZ3JlLmM6NTQ2Olx0c3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqbWQ7XG5uZXQvaXB2NC9pcF9ncmUuYy01NDctXHRib29sIHRydW5jYXRlID0gZmFsc2U7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNTY2LVx0dmVyc2lvbiA9IG1kLVx1MDAzZXZlcnNpb247XG5uZXQvaXB2NC9pcF9ncmUuYzo1Njc6XHR0dW5uZWxfaGxlbiA9IDggJiM0MzsgZXJzcGFuX2hkcl9sZW4odmVyc2lvbik7XG5uZXQvaXB2NC9pcF9ncmUuYy01NjgtXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNTk3LVx0aWYgKHZlcnNpb24gPT0gMSkge1xubmV0L2lwdjQvaXBfZ3JlLmM6NTk4Olx0XHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsX2lkX3RvX2tleTMyKGtleS1cdTAwM2V0dW5faWQpKSxcbm5ldC9pcHY0L2lwX2dyZS5jLTU5OS1cdFx0XHRcdCAgICBudG9obChtZC1cdTAwM2V1LmluZGV4KSwgdHJ1bmNhdGUsIHRydWUpO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTYwMS1cdH0gZWxzZSBpZiAodmVyc2lvbiA9PSAyKSB7XG5uZXQvaXB2NC9pcF9ncmUuYzo2MDI6XHRcdGVyc3Bhbl9idWlsZF9oZWFkZXJfdjIoc2tiLFxubmV0L2lwdjQvaXBfZ3JlLmMtNjAzLVx0XHRcdFx0ICAgICAgIG50b2hsKHR1bm5lbF9pZF90b19rZXkzMihrZXktXHUwMDNldHVuX2lkKSksXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9NjQ5PXN0YXRpYyBuZXRkZXZfdHhfdCBpcGdyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNzAyLVxubmV0L2lwdjQvaXBfZ3JlLmM6NzAzOnN0YXRpYyBuZXRkZXZfdHhfdCBlcnNwYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjQvaXBfZ3JlLmMtNzA0LVx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTcxNC1cdGlmICh0dW5uZWwtXHUwMDNlY29sbGVjdF9tZCkge1xubmV0L2lwdjQvaXBfZ3JlLmM6NzE1Olx0XHRlcnNwYW5fZmJfeG1pdChza2IsIGRldik7XG5uZXQvaXB2NC9pcF9ncmUuYy03MTYtXHRcdHJldHVybiBORVRERVZfVFhfT0s7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtNzMzLVx0LyogUHVzaCBFUlNQQU4gaGVhZGVyICovXG5uZXQvaXB2NC9pcF9ncmUuYzo3MzQ6XHRpZiAodHVubmVsLVx1MDAzZWVyc3Bhbl92ZXIgPT0gMCkge1xubmV0L2lwdjQvaXBfZ3JlLmMtNzM1LVx0XHRwcm90byA9IGh0b25zKEVUSF9QX0VSU1BBTik7XG5uZXQvaXB2NC9pcF9ncmUuYy03MzYtXHRcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9TRVFfQklULCBmbGFncyk7XG5uZXQvaXB2NC9pcF9ncmUuYzo3Mzc6XHR9IGVsc2UgaWYgKHR1bm5lbC1cdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjczODpcdFx0ZXJzcGFuX2J1aWxkX2hlYWRlcihza2IsIG50b2hsKHR1bm5lbC1cdTAwM2VwYXJtcy5vX2tleSksXG5uZXQvaXB2NC9pcF9ncmUuYy03MzktXHRcdFx0XHQgICAgdHVubmVsLVx1MDAzZWluZGV4LFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTc0MS1cdFx0cHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pO1xubmV0L2lwdjQvaXBfZ3JlLmM6NzQyOlx0fSBlbHNlIGlmICh0dW5uZWwtXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XG5uZXQvaXB2NC9pcF9ncmUuYzo3NDM6XHRcdGVyc3Bhbl9idWlsZF9oZWFkZXJfdjIoc2tiLCBudG9obCh0dW5uZWwtXHUwMDNlcGFybXMub19rZXkpLFxubmV0L2lwdjQvaXBfZ3JlLmMtNzQ0LVx0XHRcdFx0ICAgICAgIHR1bm5lbC1cdTAwM2VkaXIsIHR1bm5lbC1cdTAwM2Vod2lkLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTgyMj1zdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy04NTUtXG5uZXQvaXB2NC9pcF9ncmUuYzo4NTY6XHRcdGlmIChzdHJjbXAoZGV2LVx1MDAzZXJ0bmxfbGlua19vcHMtXHUwMDNla2luZCwgXCYjMzQ7ZXJzcGFuXCYjMzQ7KSlcbm5ldC9pcHY0L2lwX2dyZS5jLTg1Ny1cdFx0XHRpcGdyZV9saW5rX3VwZGF0ZShkZXYsIHRydWUpO1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTExMjI9c3RhdGljIGludCBpcGdyZV90YXBfdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTExNDYtXG5uZXQvaXB2NC9pcF9ncmUuYzoxMTQ3OnN0YXRpYyBpbnQgZXJzcGFuX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbm5ldC9pcHY0L2lwX2dyZS5jLTExNDgtXHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTExODc9c3RhdGljIGludCBpcGdyZV9uZXRsaW5rX3Bhcm1zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTI1NS1cbm5ldC9pcHY0L2lwX2dyZS5jOjEyNTY6c3RhdGljIGludCBlcnNwYW5fbmV0bGlua19wYXJtcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI1Ny1cdFx0XHRcdHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjcxLVx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX1ZFUl0pIHtcbm5ldC9pcHY0L2lwX2dyZS5jOjEyNzI6XHRcdHQtXHUwMDNlZXJzcGFuX3ZlciA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xMjczLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTI3NDpcdFx0aWYgKHQtXHUwMDNlZXJzcGFuX3ZlciBcdTAwM2UgMilcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNzUtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTI3Ny1cbm5ldC9pcHY0L2lwX2dyZS5jOjEyNzg6XHRpZiAodC1cdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNzktXHRcdGlmIChkYXRhW0lGTEFfR1JFX0VSU1BBTl9JTkRFWF0pIHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjgzLVx0XHR9XG5uZXQvaXB2NC9pcF9ncmUuYzoxMjg0Olx0fSBlbHNlIGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgPT0gMikge1xubmV0L2lwdjQvaXBfZ3JlLmMtMTI4NS1cdFx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0RJUl0pIHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTEzNTQtXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzU1OnN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzU2LXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzU4LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTM1OTpcdGlmICh0dW5uZWwtXHUwMDNlZXJzcGFuX3ZlciA9PSAwKVxubmV0L2lwdjQvaXBfZ3JlLmMtMTM2MC1cdFx0dHVubmVsLVx1MDAzZXR1bl9obGVuID0gNDsgLyogNC1ieXRlIEdSRSBoZHIuICovXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTM2NS1cdHR1bm5lbC1cdTAwM2VobGVuID0gdHVubmVsLVx1MDAzZXR1bl9obGVuICYjNDM7IHR1bm5lbC1cdTAwM2VlbmNhcF9obGVuICYjNDM7XG5uZXQvaXB2NC9pcF9ncmUuYzoxMzY2Olx0XHQgICAgICAgZXJzcGFuX2hkcl9sZW4odHVubmVsLVx1MDAzZWVyc3Bhbl92ZXIpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTM2Ny1cbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzc1LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTM3NjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVyc3Bhbl9uZXRkZXZfb3BzID0ge1xubmV0L2lwdjQvaXBfZ3JlLmM6MTM3NzpcdC5uZG9faW5pdFx0XHQ9IGVyc3Bhbl90dW5uZWxfaW5pdCxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNzgtXHQubmRvX3VuaW5pdFx0XHQ9IGlwX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzc5Olx0Lm5kb19zdGFydF94bWl0XHRcdD0gZXJzcGFuX3htaXQsXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzgwLVx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gZXRoX21hY19hZGRyLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE0MTQ9c3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQzNC1cbm5ldC9pcHY0L2lwX2dyZS5jOjE0MzU6c3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQzNi1cdFx0XHQgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ0OC1cbm5ldC9pcHY0L2lwX2dyZS5jOjE0NDk6XHRlcnIgPSBlcnNwYW5fbmV0bGlua19wYXJtcyhkZXYsIGRhdGEsIHRiLCBcdTAwMjZwLCBcdTAwMjZmd21hcmspO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTQ1MC1cdGlmIChlcnIpXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTQ1Nj1zdGF0aWMgaW50IGlwZ3JlX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDg3LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTQ4ODpzdGF0aWMgaW50IGVyc3Bhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDg5LVx0XHRcdCAgICAgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE1MDMtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNTA0Olx0ZXJyID0gZXJzcGFuX25ldGxpbmtfcGFybXMoZGV2LCBkYXRhLCB0YiwgXHUwMDI2cCwgXHUwMDI2ZndtYXJrKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE1MDUtXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE1NjY9c3RhdGljIGludCBpcGdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNTczLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTU3NDpcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgIT0gMCBcdTAwMjZcdTAwMjYgIXQtXHUwMDNlY29sbGVjdF9tZClcbm5ldC9pcHY0L2lwX2dyZS5jLTE1NzUtXHRcdF9fc2V0X2JpdChJUF9UVU5ORUxfS0VZX0JJVCwgb19mbGFncyk7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTYxNi1cbm5ldC9pcHY0L2lwX2dyZS5jOjE2MTc6c3RhdGljIGludCBlcnNwYW5fZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjE4LXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjIwLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTYyMTpcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgXHUwMDNjPSAyKSB7XG5uZXQvaXB2NC9pcF9ncmUuYzoxNjIyOlx0XHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9WRVIsIHQtXHUwMDNlZXJzcGFuX3ZlcikpXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjIzLVx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTYyNC1cbm5ldC9pcHY0L2lwX2dyZS5jOjE2MjU6XHRcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xubmV0L2lwdjQvaXBfZ3JlLmMtMTYyNi1cdFx0XHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0dSRV9FUlNQQU5fSU5ERVgsIHQtXHUwMDNlaW5kZXgpKVxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyNy1cdFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xubmV0L2lwdjQvaXBfZ3JlLmM6MTYyODpcdFx0fSBlbHNlIGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgPT0gMikge1xubmV0L2lwdjQvaXBfZ3JlLmMtMTYyOS1cdFx0XHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9ESVIsIHQtXHUwMDNlZGlyKSlcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjQxLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTY0MjpzdGF0aWMgdm9pZCBlcnNwYW5fc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L2lwX2dyZS5jLTE2NDMte1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE2NDctXHRkZXYtXHUwMDNlbWF4X210dSA9IDA7XG5uZXQvaXB2NC9pcF9ncmUuYzoxNjQ4Olx0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZlcnNwYW5fbmV0ZGV2X29wcztcbm5ldC9pcHY0L2lwX2dyZS5jLTE2NDktXHRkZXYtXHUwMDNlcHJpdl9mbGFncyBcdTAwMjY9IH5JRkZfVFhfU0tCX1NIQVJJTkc7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNjUwLVx0ZGV2LVx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0xJVkVfQUREUl9DSEFOR0U7XG5uZXQvaXB2NC9pcF9ncmUuYzoxNjUxOlx0aXBfdHVubmVsX3NldHVwKGRldiwgZXJzcGFuX25ldF9pZCk7XG5uZXQvaXB2NC9pcF9ncmUuYzoxNjUyOlx0dC1cdTAwM2VlcnNwYW5fdmVyID0gMTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE2NTMtfVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE2OTQ9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGlwZ3JlX3RhcF9vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzA4LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTcwOTpzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgZXJzcGFuX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvaXB2NC9pcF9ncmUuYzoxNzEwOlx0LmtpbmRcdFx0PSBcJiMzNDtlcnNwYW5cJiMzNDssXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzExLVx0Lm1heHR5cGVcdD0gSUZMQV9HUkVfTUFYLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTMtXHQucHJpdl9zaXplXHQ9IHNpemVvZihzdHJ1Y3QgaXBfdHVubmVsKSxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTQ6XHQuc2V0dXBcdFx0PSBlcnNwYW5fc2V0dXAsXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzE1Olx0LnZhbGlkYXRlXHQ9IGVyc3Bhbl92YWxpZGF0ZSxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTY6XHQubmV3bGlua1x0PSBlcnNwYW5fbmV3bGluayxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTc6XHQuY2hhbmdlbGlua1x0PSBlcnNwYW5fY2hhbmdlbGluayxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTgtXHQuZGVsbGlua1x0PSBpcF90dW5uZWxfZGVsbGluayxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTktXHQuZ2V0X3NpemVcdD0gaXBncmVfZ2V0X3NpemUsXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzIwOlx0LmZpbGxfaW5mb1x0PSBlcnNwYW5fZmlsbF9pbmZvLFxubmV0L2lwdjQvaXBfZ3JlLmMtMTcyMS1cdC5nZXRfbGlua19uZXRcdD0gaXBfdHVubmVsX2dldF9saW5rX25ldCxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xNzgyPXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgaXBncmVfdGFwX25ldF9vcHMgPSB7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTc4OC1cbm5ldC9pcHY0L2lwX2dyZS5jOjE3ODk6c3RhdGljIGludCBfX25ldF9pbml0IGVyc3Bhbl9pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzkwLXtcbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTE6XHRyZXR1cm4gaXBfdHVubmVsX2luaXRfbmV0KG5ldCwgZXJzcGFuX25ldF9pZCxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTI6XHRcdFx0XHQgIFx1MDAyNmVyc3Bhbl9saW5rX29wcywgXCYjMzQ7ZXJzcGFuMFwmIzM0Oyk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNzkzLX1cbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTQtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzk1OnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgZXJzcGFuX2V4aXRfcnRubChzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzk2LVx0XHRcdFx0XHRzdHJ1Y3QgbGlzdF9oZWFkICpkZXZfdG9fa2lsbClcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTcte1xubmV0L2lwdjQvaXBfZ3JlLmM6MTc5ODpcdGlwX3R1bm5lbF9kZWxldGVfbmV0KG5ldCwgZXJzcGFuX25ldF9pZCwgXHUwMDI2ZXJzcGFuX2xpbmtfb3BzLCBkZXZfdG9fa2lsbCk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNzk5LX1cbm5ldC9pcHY0L2lwX2dyZS5jLTE4MDAtXG5uZXQvaXB2NC9pcF9ncmUuYzoxODAxOnN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgZXJzcGFuX25ldF9vcHMgPSB7XG5uZXQvaXB2NC9pcF9ncmUuYzoxODAyOlx0LmluaXQgPSBlcnNwYW5faW5pdF9uZXQsXG5uZXQvaXB2NC9pcF9ncmUuYzoxODAzOlx0LmV4aXRfcnRubCA9IGVyc3Bhbl9leGl0X3J0bmwsXG5uZXQvaXB2NC9pcF9ncmUuYzoxODA0Olx0LmlkICAgPSBcdTAwMjZlcnNwYW5fbmV0X2lkLFxubmV0L2lwdjQvaXBfZ3JlLmMtMTgwNS1cdC5zaXplID0gc2l6ZW9mKHN0cnVjdCBpcF90dW5uZWxfbmV0KSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xODA4PXN0YXRpYyBpbnQgX19pbml0IGlwZ3JlX2luaXQodm9pZClcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xODIxLVxubmV0L2lwdjQvaXBfZ3JlLmM6MTgyMjpcdGVyciA9IHJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXHUwMDI2ZXJzcGFuX25ldF9vcHMpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTgyMy1cdGlmIChlcnIgXHUwMDNjIDApXG5uZXQvaXB2NC9pcF9ncmUuYzoxODI0Olx0XHRnb3RvIHBuZXRfZXJzcGFuX2ZhaWxlZDtcbm5ldC9pcHY0L2lwX2dyZS5jLTE4MjUtXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTgzOS1cbm5ldC9pcHY0L2lwX2dyZS5jOjE4NDA6XHRlcnIgPSBydG5sX2xpbmtfcmVnaXN0ZXIoXHUwMDI2ZXJzcGFuX2xpbmtfb3BzKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDEtXHRpZiAoZXJyIFx1MDAzYyAwKVxubmV0L2lwdjQvaXBfZ3JlLmM6MTg0MjpcdFx0Z290byBlcnNwYW5fbGlua19mYWlsZWQ7XG5uZXQvaXB2NC9pcF9ncmUuYy0xODQzLVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDUtXG5uZXQvaXB2NC9pcF9ncmUuYzoxODQ2OmVyc3Bhbl9saW5rX2ZhaWxlZDpcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDctXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZpcGdyZV90YXBfb3BzKTtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xODUyLWFkZF9wcm90b19mYWlsZWQ6XG5uZXQvaXB2NC9pcF9ncmUuYzoxODUzOlx0dW5yZWdpc3Rlcl9wZXJuZXRfZGV2aWNlKFx1MDAyNmVyc3Bhbl9uZXRfb3BzKTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NTQ6cG5ldF9lcnNwYW5fZmFpbGVkOlxubmV0L2lwdjQvaXBfZ3JlLmMtMTg1NS1cdHVucmVnaXN0ZXJfcGVybmV0X2RldmljZShcdTAwMjZpcGdyZV90YXBfbmV0X29wcyk7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTg2MT1zdGF0aWMgdm9pZCBfX2V4aXQgaXBncmVfZmluaSh2b2lkKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE4NjQtXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZpcGdyZV9saW5rX29wcyk7XG5uZXQvaXB2NC9pcF9ncmUuYzoxODY1Olx0cnRubF9saW5rX3VucmVnaXN0ZXIoXHUwMDI2ZXJzcGFuX2xpbmtfb3BzKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NjYtXHRncmVfZGVsX3Byb3RvY29sKFx1MDAyNmlwZ3JlX3Byb3RvY29sLCBHUkVQUk9UT19DSVNDTyk7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2OC1cdHVucmVnaXN0ZXJfcGVybmV0X2RldmljZShcdTAwMjZpcGdyZV9uZXRfb3BzKTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE4Njk6XHR1bnJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXHUwMDI2ZXJzcGFuX25ldF9vcHMpO1xubmV0L2lwdjQvaXBfZ3JlLmMtMTg3MC19XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTg3Nz1NT0RVTEVfQUxJQVNfUlROTF9MSU5LKFwmIzM0O2dyZXRhcFwmIzM0Oyk7XG5uZXQvaXB2NC9pcF9ncmUuYzoxODc4Ok1PRFVMRV9BTElBU19SVE5MX0xJTksoXCYjMzQ7ZXJzcGFuXCYjMzQ7KTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NzktTU9EVUxFX0FMSUFTX05FVERFVihcJiMzNDtncmUwXCYjMzQ7KTtcbm5ldC9pcHY0L2lwX2dyZS5jPTE4ODA9TU9EVUxFX0FMSUFTX05FVERFVihcJiMzNDtncmV0YXAwXCYjMzQ7KTtcbm5ldC9pcHY0L2lwX2dyZS5jOjE4ODE6TU9EVUxFX0FMSUFTX05FVERFVihcJiMzNDtlcnNwYW4wXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzY1NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkVSU1BBTiBEZWVwIERpdmUgaW4gS2VybmVsIFNvdXJjZSoqCgpBbHJpZ2h0LCBzbyBFUlNQQU4uLi4gcmlnaHQsIGl0JiMzOTtzIGJha2VkIGludG8gdGhlIGBDT05GSUdfTkVUX0lQR1JFYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTWFrZXMgc2Vuc2UuIE5vdywgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHRoZSBwcmltYXJ5IGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBoYW5naW5nIG91dCBzb21ld2hlcmUgaW4gdGhlIElQdjYgR1JFIGNvZGUsIHByb2JhYmx5IHNoYXJpbmcgYSBsb3Qgb2YgaW5mcmFzdHJ1Y3R1cmUgd2l0aCBzdGFuZGFyZCBHUkUuIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gY2hlY2sgb3V0IGBuZXQvaXB2Ni9pcDZfZ3JlLmNgLiBUaGF0JiMzOTtzIHRoZSBsaWtlbHkgc3BvdCB0byBmaW5kIHRoZSBndXRzIG9mIHRoZSBFUlNQQU4gZnVuY3Rpb25hbGl0eSwgbWF5YmUgc29tZSBvZiB0aGUgcGFja2V0IHBhcnNpbmcgbG9naWMsIGNvbnRyb2wgcGF0aCwgYW5kIHBlcmhhcHMgdGhlIHR1bm5lbCBlbmNhcC9kZWNhcCByb3V0aW5lcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNjYW4gdGhhdCBmaWxlIGFuZCBzZWUgaG93IHRoZSBFUlNQQU4gYml0cyBoYXZlIGJlZW4gaW50ZWdyYXRlZCwgd2hhdCBtYWNyb3MgYXJlIHVzZWQsIGFuZCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQuIEhvcGVmdWxseSwgdGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcnNwYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZ3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X2dyZS5jLTUzLSNpbmNsdWRlIFx1MDAzY25ldC9ncmUuaFx1MDAzZVxubmV0L2lwdjYvaXA2X2dyZS5jOjU0OiNpbmNsdWRlIFx1MDAzY25ldC9lcnNwYW4uaFx1MDAzZVxubmV0L2lwdjYvaXA2X2dyZS5jLTU1LSNpbmNsdWRlIFx1MDAzY25ldC9kc3RfbWV0YWRhdGEuaFx1MDAzZVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYz02Nj1zdHJ1Y3QgaXA2Z3JlX25ldCB7XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTY5LVx0c3RydWN0IGlwNl90bmwgX19yY3UgKmNvbGxlY3RfbWRfdHVuO1xubmV0L2lwdjYvaXA2X2dyZS5jOjcwOlx0c3RydWN0IGlwNl90bmwgX19yY3UgKmNvbGxlY3RfbWRfdHVuX2Vyc3Bhbjtcbm5ldC9pcHY2L2lwNl9ncmUuYy03MS1cdHN0cnVjdCBuZXRfZGV2aWNlICpmYl90dW5uZWxfZGV2O1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYz03NT1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXA2Z3JlX3RhcF9vcHMgX19yZWFkX21vc3RseTtcbm5ldC9pcHY2L2lwNl9ncmUuYzo3NjpzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXA2ZXJzcGFuX3RhcF9vcHMgX19yZWFkX21vc3RseTtcbm5ldC9pcHY2L2lwNl9ncmUuYy03Ny1zdGF0aWMgaW50IGlwNmdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9ODA9c3RhdGljIHZvaWQgaXA2Z3JlX3RubF9saW5rX2NvbmZpZyhzdHJ1Y3QgaXA2X3RubCAqdCwgaW50IHNldF9tdHUpO1xubmV0L2lwdjYvaXA2X2dyZS5jOjgxOnN0YXRpYyB2b2lkIGlwNmVyc3Bhbl90bmxfbGlua19jb25maWcoc3RydWN0IGlwNl90bmwgKnQsIGludCBzZXRfbXR1KTtcbm5ldC9pcHY2L2lwNl9ncmUuYy04Mi1cbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTQwPXN0YXRpYyBzdHJ1Y3QgaXA2X3RubCAqaXA2Z3JlX3R1bm5lbF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjAzLVx0ICAgIGdyZV9wcm90byA9PSBodG9ucyhFVEhfUF9FUlNQQU4yKSlcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMDQ6XHRcdHQgPSByY3VfZGVyZWZlcmVuY2UoaWduLVx1MDAzZWNvbGxlY3RfbWRfdHVuX2Vyc3Bhbik7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjA1LVx0ZWxzZVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYz0yMzY9c3RhdGljIHZvaWQgaXA2Z3JlX3R1bm5lbF9saW5rX21kKHN0cnVjdCBpcDZncmVfbmV0ICppZ24sIHN0cnVjdCBpcDZfdG5sICp0KVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yNDEtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjQyOnN0YXRpYyB2b2lkIGlwNmVyc3Bhbl90dW5uZWxfbGlua19tZChzdHJ1Y3QgaXA2Z3JlX25ldCAqaWduLCBzdHJ1Y3QgaXA2X3RubCAqdClcbm5ldC9pcHY2L2lwNl9ncmUuYy0yNDMte1xubmV0L2lwdjYvaXA2X2dyZS5jLTI0NC1cdGlmICh0LVx1MDAzZXBhcm1zLmNvbGxlY3RfbWQpXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjQ1Olx0XHRyY3VfYXNzaWduX3BvaW50ZXIoaWduLVx1MDAzZWNvbGxlY3RfbWRfdHVuX2Vyc3BhbiwgdCk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjQ2LX1cbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MjQ4PXN0YXRpYyB2b2lkIGlwNmdyZV90dW5uZWxfdW5saW5rX21kKHN0cnVjdCBpcDZncmVfbmV0ICppZ24sIHN0cnVjdCBpcDZfdG5sICp0KVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yNTMtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjU0OnN0YXRpYyB2b2lkIGlwNmVyc3Bhbl90dW5uZWxfdW5saW5rX21kKHN0cnVjdCBpcDZncmVfbmV0ICppZ24sXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjU1LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBpcDZfdG5sICp0KVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yNTctXHRpZiAodC1cdTAwM2VwYXJtcy5jb2xsZWN0X21kKVxubmV0L2lwdjYvaXA2X2dyZS5jOjI1ODpcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKGlnbi1cdTAwM2Vjb2xsZWN0X21kX3R1bl9lcnNwYW4sIE5VTEwpO1xubmV0L2lwdjYvaXA2X2dyZS5jLTI1OS19XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTMxNT1zdGF0aWMgc3RydWN0IGlwNl90bmwgKmlwNmdyZV90dW5uZWxfbG9jYXRlKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMzYxLVxubmV0L2lwdjYvaXA2X2dyZS5jOjM2MjpzdGF0aWMgdm9pZCBpcDZlcnNwYW5fdHVubmVsX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjYvaXA2X2dyZS5jLTM2My17XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTM2Ni1cbm5ldC9pcHY2L2lwNl9ncmUuYzozNjc6XHRpcDZlcnNwYW5fdHVubmVsX3VubGlua19tZChpZ24sIHQpO1xubmV0L2lwdjYvaXA2X2dyZS5jLTM2OC1cdGlwNmdyZV90dW5uZWxfdW5saW5rKGlnbiwgdCk7XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTQ1Nz1zdGF0aWMgaW50IGlwNmdyZV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRubF9wdGtfaW5mbyAqdHBpKVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy00ODktXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NDkwOnN0YXRpYyBpbnQgaXA2ZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L2lwdjYvaXA2X2dyZS5jLTQ5MS1cdFx0XHQgc3RydWN0IHRubF9wdGtfaW5mbyAqdHBpLFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy00OTMte1xubmV0L2lwdjYvaXA2X2dyZS5jOjQ5NDpcdHN0cnVjdCBlcnNwYW5fYmFzZV9oZHIgKmVyc2hkcjtcbm5ldC9pcHY2L2lwNl9ncmUuYy00OTUtXHRjb25zdCBzdHJ1Y3QgaXB2NmhkciAqaXB2Nmg7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NDk2Olx0c3RydWN0IGVyc3Bhbl9tZDIgKm1kMjtcbm5ldC9pcHY2L2lwNl9ncmUuYy00OTctXHRzdHJ1Y3QgaXA2X3RubCAqdHVubmVsO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy01MDMtXHRpcHY2aCA9IGlwdjZfaGRyKHNrYik7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTA0Olx0ZXJzaGRyID0gKHN0cnVjdCBlcnNwYW5fYmFzZV9oZHIgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9pcHY2L2lwNl9ncmUuYy01MDUtXHR2ZXIgPSBlcnNoZHItXHUwMDNldmVyO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy01MTAtXHRpZiAodHVubmVsKSB7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTExOlx0XHRpbnQgbGVuID0gZXJzcGFuX2hkcl9sZW4odmVyKTtcbm5ldC9pcHY2L2lwNl9ncmUuYy01MTItXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTUyMS1cdFx0aWYgKHR1bm5lbC1cdTAwM2VwYXJtcy5jb2xsZWN0X21kKSB7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTIyOlx0XHRcdHN0cnVjdCBlcnNwYW5fbWV0YWRhdGEgKnBrdF9tZCwgKm1kO1xubmV0L2lwdjYvaXA2X2dyZS5jLTUyMy1cdFx0XHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhmbGFncyk7XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTU0Ny1cdFx0XHQgICAgIHNrYl9uZXR3b3JrX2hlYWRlcl9sZW4oc2tiKTtcbm5ldC9pcHY2L2lwNl9ncmUuYzo1NDg6XHRcdFx0cGt0X21kID0gKHN0cnVjdCBlcnNwYW5fbWV0YWRhdGEgKikoZ2ggJiM0MzsgZ3JlX2hkcl9sZW4gJiM0Mztcbm5ldC9pcHY2L2lwNl9ncmUuYy01NDktXHRcdFx0XHRcdFx0XHQgICAgc2l6ZW9mKCplcnNoZHIpKTtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9NTcwPXN0YXRpYyBpbnQgZ3JlX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy01ODQtXHRcdCAgICAgdHBpLnByb3RvID09IGh0b25zKEVUSF9QX0VSU1BBTjIpKSkge1xubmV0L2lwdjYvaXA2X2dyZS5jOjU4NTpcdFx0aWYgKGlwNmVyc3Bhbl9yY3Yoc2tiLCBcdTAwMjZ0cGksIGhkcl9sZW4pID09IFBBQ0tFVF9SQ1ZEKVxubmV0L2lwdjYvaXA2X2dyZS5jLTU4Ni1cdFx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9ODc4PXN0YXRpYyBuZXRkZXZfdHhfdCBpcDZncmVfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtOTE2LVxubmV0L2lwdjYvaXA2X2dyZS5jOjkxNzpzdGF0aWMgbmV0ZGV2X3R4X3QgaXA2ZXJzcGFuX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtOTE4LVx0XHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtOTczLVx0XHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2tleSAqa2V5O1xubmV0L2lwdjYvaXA2X2dyZS5jOjk3NDpcdFx0c3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqbWQ7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtOTc1LVx0XHRfX2JlMzIgdHVuX2lkO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy05OTktXHRcdGlmIChtZC1cdTAwM2V2ZXJzaW9uID09IDEpIHtcbm5ldC9pcHY2L2lwNl9ncmUuYzoxMDAwOlx0XHRcdGVyc3Bhbl9idWlsZF9oZWFkZXIoc2tiLFxubmV0L2lwdjYvaXA2X2dyZS5jLTEwMDEtXHRcdFx0XHRcdCAgICBudG9obCh0dW5faWQpLFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0xMDA1LVx0XHR9IGVsc2UgaWYgKG1kLVx1MDAzZXZlcnNpb24gPT0gMikge1xubmV0L2lwdjYvaXA2X2dyZS5jOjEwMDY6XHRcdFx0ZXJzcGFuX2J1aWxkX2hlYWRlcl92Mihza2IsXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTAwNy1cdFx0XHRcdFx0ICAgICAgIG50b2hsKHR1bl9pZCksXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTEwMzMtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTAzNDpcdFx0aWYgKHQtXHUwMDNlcGFybXMuZXJzcGFuX3ZlciA9PSAxKSB7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTAzNTpcdFx0XHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodC1cdTAwM2VwYXJtcy5vX2tleSksXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTAzNi1cdFx0XHRcdFx0ICAgIHQtXHUwMDNlcGFybXMuaW5kZXgsXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTEwMzgtXHRcdFx0cHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pO1xubmV0L2lwdjYvaXA2X2dyZS5jOjEwMzk6XHRcdH0gZWxzZSBpZiAodC1cdTAwM2VwYXJtcy5lcnNwYW5fdmVyID09IDIpIHtcbm5ldC9pcHY2L2lwNl9ncmUuYzoxMDQwOlx0XHRcdGVyc3Bhbl9idWlsZF9oZWFkZXJfdjIoc2tiLCBudG9obCh0LVx1MDAzZXBhcm1zLm9fa2V5KSxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xMDQxLVx0XHRcdFx0XHQgICAgICAgdC1cdTAwM2VwYXJtcy5kaXIsXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTExODc9c3RhdGljIHZvaWQgaXA2Z3JlX3RubF9jb3B5X3RubF9wYXJtKHN0cnVjdCBpcDZfdG5sICp0LFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0xMjAyLVx0dC1cdTAwM2VwYXJtcy5md21hcmsgPSBwLVx1MDAzZWZ3bWFyaztcbm5ldC9pcHY2L2lwNl9ncmUuYzoxMjAzOlx0dC1cdTAwM2VwYXJtcy5lcnNwYW5fdmVyID0gcC1cdTAwM2VlcnNwYW5fdmVyO1xubmV0L2lwdjYvaXA2X2dyZS5jLTEyMDQtXHR0LVx1MDAzZXBhcm1zLmluZGV4ID0gcC1cdTAwM2VpbmRleDtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTU1Mj1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGlwNmdyZV9leGl0X3J0bmxfbmV0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTU2MC1cdFx0ICAgIGRldi1cdTAwM2VydG5sX2xpbmtfb3BzID09IFx1MDAyNmlwNmdyZV90YXBfb3BzIHx8XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTU2MTpcdFx0ICAgIGRldi1cdTAwM2VydG5sX2xpbmtfb3BzID09IFx1MDAyNmlwNmVyc3Bhbl90YXBfb3BzKVxubmV0L2lwdjYvaXA2X2dyZS5jLTE1NjItXHRcdFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTY0OD1zdGF0aWMgaW50IGlwNmdyZV90YXBfdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0xNjcyLVxubmV0L2lwdjYvaXA2X2dyZS5jOjE2NzM6c3RhdGljIGludCBpcDZlcnNwYW5fdGFwX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNjc0LVx0XHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTE3MzctXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTczODpzdGF0aWMgdm9pZCBpcDZlcnNwYW5fc2V0X3ZlcnNpb24oc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxubmV0L2lwdjYvaXA2X2dyZS5jLTE3MzktXHRcdFx0XHQgIHN0cnVjdCBfX2lwNl90bmxfcGFybSAqcGFybXMpXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTE3NDMtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTc0NDpcdHBhcm1zLVx1MDAzZWVyc3Bhbl92ZXIgPSAxO1xubmV0L2lwdjYvaXA2X2dyZS5jLTE3NDUtXHRpZiAoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSlcbm5ldC9pcHY2L2lwNl9ncmUuYzoxNzQ2Olx0XHRwYXJtcy1cdTAwM2VlcnNwYW5fdmVyID0gbmxhX2dldF91OChkYXRhW0lGTEFfR1JFX0VSU1BBTl9WRVJdKTtcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNzQ3LVxubmV0L2lwdjYvaXA2X2dyZS5jOjE3NDg6XHRpZiAocGFybXMtXHUwMDNlZXJzcGFuX3ZlciA9PSAxKSB7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTc0OS1cdFx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0lOREVYXSlcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNzUwLVx0XHRcdHBhcm1zLVx1MDAzZWluZGV4ID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX0dSRV9FUlNQQU5fSU5ERVhdKTtcbm5ldC9pcHY2L2lwNl9ncmUuYzoxNzUxOlx0fSBlbHNlIGlmIChwYXJtcy1cdTAwM2VlcnNwYW5fdmVyID09IDIpIHtcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNzUyLVx0XHRpZiAoZGF0YVtJRkxBX0dSRV9FUlNQQU5fRElSXSlcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTgyMj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlwNmdyZV90YXBfbmV0ZGV2X29wcyA9IHtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTgzMS1cbm5ldC9pcHY2L2lwNl9ncmUuYzoxODMyOnN0YXRpYyBpbnQgaXA2ZXJzcGFuX2NhbGNfaGxlbihzdHJ1Y3QgaXA2X3RubCAqdHVubmVsKVxubmV0L2lwdjYvaXA2X2dyZS5jLTE4MzMte1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0xODM3LVx0dHVubmVsLVx1MDAzZWhsZW4gPSB0dW5uZWwtXHUwMDNldHVuX2hsZW4gJiM0MzsgdHVubmVsLVx1MDAzZWVuY2FwX2hsZW4gJiM0Mztcbm5ldC9pcHY2L2lwNl9ncmUuYzoxODM4Olx0XHQgICAgICAgZXJzcGFuX2hkcl9sZW4odHVubmVsLVx1MDAzZXBhcm1zLmVyc3Bhbl92ZXIpO1xubmV0L2lwdjYvaXA2X2dyZS5jLTE4MzktXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTE4NDQtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg0NTpzdGF0aWMgaW50IGlwNmVyc3Bhbl90YXBfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjYvaXA2X2dyZS5jLTE4NDYte1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0xODYzLVxubmV0L2lwdjYvaXA2X2dyZS5jOjE4NjQ6XHR0X2hsZW4gPSBpcDZlcnNwYW5fY2FsY19obGVuKHR1bm5lbCk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg2NS1cdGRldi1cdTAwM2VtdHUgPSBFVEhfREFUQV9MRU4gLSB0X2hsZW47XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTE4NzEtXHRkZXYtXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcbm5ldC9pcHY2L2lwNl9ncmUuYzoxODcyOlx0aXA2ZXJzcGFuX3RubF9saW5rX2NvbmZpZyh0dW5uZWwsIDEpO1xubmV0L2lwdjYvaXA2X2dyZS5jLTE4NzMtXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTE4ODItXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg4MzpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlwNmVyc3Bhbl9uZXRkZXZfb3BzID0ge1xubmV0L2lwdjYvaXA2X2dyZS5jOjE4ODQ6XHQubmRvX2luaXQgPVx0XHRpcDZlcnNwYW5fdGFwX2luaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg4NTpcdC5uZG9fdW5pbml0ID1cdFx0aXA2ZXJzcGFuX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg4NjpcdC5uZG9fc3RhcnRfeG1pdCA9XHRpcDZlcnNwYW5fdHVubmVsX3htaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg4Ny1cdC5uZG9fc2V0X21hY19hZGRyZXNzID1cdGV0aF9tYWNfYWRkcixcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MjExNT1zdGF0aWMgaW50IGlwNmdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjEyMi1cbm5ldC9pcHY2L2lwNl9ncmUuYzoyMTIzOlx0aWYgKHAtXHUwMDNlZXJzcGFuX3ZlciA9PSAxIHx8IHAtXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjEyNC1cdFx0aWYgKCFwLVx1MDAzZWNvbGxlY3RfbWQpXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTIxMjYtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjEyNzpcdFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0dSRV9FUlNQQU5fVkVSLCBwLVx1MDAzZWVyc3Bhbl92ZXIpKVxubmV0L2lwdjYvaXA2X2dyZS5jLTIxMjgtXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjEyOS1cbm5ldC9pcHY2L2lwNl9ncmUuYzoyMTMwOlx0XHRpZiAocC1cdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMTMxLVx0XHRcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfR1JFX0VSU1BBTl9JTkRFWCwgcC1cdTAwM2VpbmRleCkpXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTIxNzg9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGlwNmdyZV9wb2xpY3lbSUZMQV9HUkVfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjAxLVxubmV0L2lwdjYvaXA2X2dyZS5jOjIyMDI6c3RhdGljIHZvaWQgaXA2ZXJzcGFuX3RhcF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjYvaXA2X2dyZS5jLTIyMDMte1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjA2LVx0ZGV2LVx1MDAzZW1heF9tdHUgPSAwO1xubmV0L2lwdjYvaXA2X2dyZS5jOjIyMDc6XHRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNmlwNmVyc3Bhbl9uZXRkZXZfb3BzO1xubmV0L2lwdjYvaXA2X2dyZS5jLTIyMDgtXHRkZXYtXHUwMDNlbmVlZHNfZnJlZV9uZXRkZXYgPSB0cnVlO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjE2LVxubmV0L2lwdjYvaXA2X2dyZS5jOjIyMTc6c3RhdGljIGludCBpcDZlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyMTgtXHRcdFx0ICAgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjI4LVx0aXA2Z3JlX25ldGxpbmtfcGFybXMoZGF0YSwgXHUwMDI2bnQtXHUwMDNlcGFybXMpO1xubmV0L2lwdjYvaXA2X2dyZS5jOjIyMjk6XHRpcDZlcnNwYW5fc2V0X3ZlcnNpb24oZGF0YSwgXHUwMDI2bnQtXHUwMDNlcGFybXMpO1xubmV0L2lwdjYvaXA2X2dyZS5jLTIyMzAtXHRpZ24gPSBuZXRfZ2VuZXJpYyhuZXQsIGlwNmdyZV9uZXRfaWQpO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjMyLVx0aWYgKG50LVx1MDAzZXBhcm1zLmNvbGxlY3RfbWQpIHtcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjMzOlx0XHRpZiAocnRubF9kZXJlZmVyZW5jZShpZ24tXHUwMDNlY29sbGVjdF9tZF90dW5fZXJzcGFuKSlcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjM0LVx0XHRcdHJldHVybiAtRUVYSVNUO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjQxLVx0aWYgKCFlcnIpIHtcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjQyOlx0XHRpcDZlcnNwYW5fdG5sX2xpbmtfY29uZmlnKG50LCAhdGJbSUZMQV9NVFVdKTtcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjQzOlx0XHRpcDZlcnNwYW5fdHVubmVsX2xpbmtfbWQoaWduLCBudCk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI0NC1cdFx0aXA2Z3JlX3R1bm5lbF9saW5rKG5ldF9nZW5lcmljKG5ldCwgaXA2Z3JlX25ldF9pZCksIG50KTtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI0OC1cbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjQ5OnN0YXRpYyB2b2lkIGlwNmVyc3Bhbl90bmxfbGlua19jb25maWcoc3RydWN0IGlwNl90bmwgKnQsIGludCBzZXRfbXR1KVxubmV0L2lwdjYvaXA2X2dyZS5jLTIyNTAte1xubmV0L2lwdjYvaXA2X2dyZS5jLTIyNTEtXHRpcDZncmVfdG5sX2xpbmtfY29uZmlnX2NvbW1vbih0KTtcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjUyOlx0aXA2Z3JlX3RubF9saW5rX2NvbmZpZ19yb3V0ZSh0LCBzZXRfbXR1LCBpcDZlcnNwYW5fY2FsY19obGVuKHQpKTtcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjUzLX1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjU0LVxubmV0L2lwdjYvaXA2X2dyZS5jOjIyNTU6c3RhdGljIGludCBpcDZlcnNwYW5fdG5sX2NoYW5nZShzdHJ1Y3QgaXA2X3RubCAqdCxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjU2LVx0XHRcdFx0Y29uc3Qgc3RydWN0IF9faXA2X3RubF9wYXJtICpwLCBpbnQgc2V0X210dSlcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI1OC1cdGlwNmdyZV90bmxfY29weV90bmxfcGFybSh0LCBwKTtcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjU5Olx0aXA2ZXJzcGFuX3RubF9saW5rX2NvbmZpZyh0LCBzZXRfbXR1KTtcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjYwLVx0cmV0dXJuIDA7XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTIyNjItXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI2MzpzdGF0aWMgaW50IGlwNmVyc3Bhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI2NC1cdFx0XHRcdHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI3OC1cbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjc5Olx0aXA2ZXJzcGFuX3NldF92ZXJzaW9uKGRhdGEsIFx1MDAyNnApO1xubmV0L2lwdjYvaXA2X2dyZS5jLTIyODAtXHRpcDZncmVfdHVubmVsX3VubGlua19tZChpZ24sIHQpO1xubmV0L2lwdjYvaXA2X2dyZS5jLTIyODEtXHRpcDZncmVfdHVubmVsX3VubGluayhpZ24sIHQpO1xubmV0L2lwdjYvaXA2X2dyZS5jOjIyODI6XHRpcDZlcnNwYW5fdG5sX2NoYW5nZSh0LCBcdTAwMjZwLCAhdGJbSUZMQV9NVFVdKTtcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjgzOlx0aXA2ZXJzcGFuX3R1bm5lbF9saW5rX21kKGlnbiwgdCk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI4NC1cdGlwNmdyZV90dW5uZWxfbGluayhpZ24sIHQpO1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYz0yMzAzPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcDZncmVfdGFwX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMzE2LVxubmV0L2lwdjYvaXA2X2dyZS5jOjIzMTc6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGlwNmVyc3Bhbl90YXBfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjMxODpcdC5raW5kXHRcdD0gXCYjMzQ7aXA2ZXJzcGFuXCYjMzQ7LFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzMTktXHQubWF4dHlwZVx0PSBJRkxBX0dSRV9NQVgsXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTIzMjEtXHQucHJpdl9zaXplXHQ9IHNpemVvZihzdHJ1Y3QgaXA2X3RubCksXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjMyMjpcdC5zZXR1cFx0XHQ9IGlwNmVyc3Bhbl90YXBfc2V0dXAsXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjMyMzpcdC52YWxpZGF0ZVx0PSBpcDZlcnNwYW5fdGFwX3ZhbGlkYXRlLFxubmV0L2lwdjYvaXA2X2dyZS5jOjIzMjQ6XHQubmV3bGlua1x0PSBpcDZlcnNwYW5fbmV3bGluayxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMzI1Olx0LmNoYW5nZWxpbmtcdD0gaXA2ZXJzcGFuX2NoYW5nZWxpbmssXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjMyNi1cdC5nZXRfc2l6ZVx0PSBpcDZncmVfZ2V0X3NpemUsXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTIzMzU9c3RhdGljIGludCBfX2luaXQgaXA2Z3JlX2luaXQodm9pZClcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjM1OC1cbm5ldC9pcHY2L2lwNl9ncmUuYzoyMzU5Olx0ZXJyID0gcnRubF9saW5rX3JlZ2lzdGVyKFx1MDAyNmlwNmVyc3Bhbl90YXBfb3BzKTtcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMzYwLVx0aWYgKGVyciBcdTAwM2MgMClcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMzYxOlx0XHRnb3RvIGVyc3Bhbl9saW5rX2ZhaWxlZDtcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMzYyLVxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy0yMzY1LVxubmV0L2lwdjYvaXA2X2dyZS5jOjIzNjY6ZXJzcGFuX2xpbmtfZmFpbGVkOlxubmV0L2lwdjYvaXA2X2dyZS5jLTIzNjctXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZpcDZncmVfdGFwX29wcyk7XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTIzNzc9c3RhdGljIHZvaWQgX19leGl0IGlwNmdyZV9maW5pKHZvaWQpXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTIzODAtXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZpcDZncmVfbGlua19vcHMpO1xubmV0L2lwdjYvaXA2X2dyZS5jOjIzODE6XHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZpcDZlcnNwYW5fdGFwX29wcyk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjM4Mi1cdGluZXQ2X2RlbF9wcm90b2NvbChcdTAwMjZpcDZncmVfcHJvdG9jb2wsIElQUFJPVE9fR1JFKTtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MjM5Mj1NT0RVTEVfQUxJQVNfUlROTF9MSU5LKFwmIzM0O2lwNmdyZXRhcFwmIzM0Oyk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjM5MzpNT0RVTEVfQUxJQVNfUlROTF9MSU5LKFwmIzM0O2lwNmVyc3BhblwmIzM0Oyk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjM5NC1NT0RVTEVfQUxJQVNfTkVUREVWKFwmIzM0O2lwNmdyZTBcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDUzNwoJCQkJCQkJb3V0cHV0OiAyNTAKCQkJCQkJCXRob3VnaHRzOiA4MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHUkUvRVJTUEFOIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lIGRlYWxpbmcgd2l0aCBHUkUgYW5kIEVSU1BBTiBmdW5jdGlvbmFsaXR5LCBhbmQgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgY29kZSYjMzk7cyBkZXBlbmRlbmNpZXMuIEVSU1BBTiBpcyBpbmRlZWQgYnVpbHQgb24gdG9wIG9mIGBDT05GSUdfSVBWNl9HUkVgIGFuZCBgQ09ORklHX05FVF9JUEdSRWAsIHRoYXQmIzM5O3Mgc29saWQuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNvcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGJlaW5nIHRvdWNoZWQuIEkmIzM5O3ZlIGlkZW50aWZpZWQ6IGBpcGdyZV94bWl0YCwgYGVyc3Bhbl94bWl0YCwgYGdyZV90YXBfeG1pdGAsIGBpcGdyZV9maWxsX2luZm9gLCBgZXJzcGFuX2ZpbGxfaW5mb2AsIGBfX2dyZTZfeG1pdGAsIGBpcDZlcnNwYW5fdHVubmVsX3htaXRgLCBhbmQgYGlwNmdyZV9maWxsX2luZm9gLiBTaW5jZSBgX19ncmVfeG1pdGAgaXMgc3RhdGljLCBteSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgaXQgbWlnaHQgYmUgaW5saW5lZC4gR2l2ZW4gdGhhdCB0aGUgcGF0Y2ggdG91Y2hlcyBpdCBkaXJlY3RseSwgYW5kIGluY2x1ZGVzIGl0cyBjYWxsZXJzLCBpdCYjMzk7cyB3aXNlIHRvIGluY2x1ZGUgYF9fZ3JlX3htaXRgIGFzIGEgc3ltYm9sLgoKTG9va2luZyBhZ2FpbiBhdCB3aGF0IGlzIGJlaW5nIG1vZGlmaWVkLCBJIHNob3VsZCBiZSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczoKYF9fZ3JlX3htaXRgCmBpcGdyZV94bWl0YApgZXJzcGFuX3htaXRgCmBncmVfdGFwX3htaXRgCmBpcGdyZV9maWxsX2luZm9gCmBlcnNwYW5fZmlsbF9pbmZvYApgX19ncmU2X3htaXRgCmBpcDZlcnNwYW5fdHVubmVsX3htaXRgCmBpcDZncmVfZmlsbF9pbmZvYAoKWWVwLCB0aGVzZSBuZWVkIHRvIGJlIGxpc3RlZCBpbiBgRm9jdXNTeW1ib2xzYC4KCkEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBgX19ncmU2X3htaXRgICppcyogc3RhdGljLCBhbmQgdGhlIG5hbWUgaXMgY29ycmVjdC4gSSBmb3VuZCBpdCBpbiBgbmV0L2lwdjYvaXA2X2dyZS5jYC4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSBhbnkgY29uZmlnIGRlcGVuZGVuY2llcy4gSSYjMzk7dmUgZ290IGBDT05GSUdfTkVUX0lQR1JFYCBhbmQgYENPTkZJR19JUFY2X0dSRWAuIE5vIG5lZWQgdG8gY29uc2lkZXIgYENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUYCwgdGhlIGNoYW5nZXMgYXJlbiYjMzk7dCB1bmRlciB0aGF0IGAjaWZkZWZgLiBgQ09ORklHX0lQVjZgIGlzIGltcGxpY2l0bHkgZW5hYmxlZCBieSBgQ09ORklHX0lQVjZfR1JFYCwgc28gdGhhdCBpcyBhbHJlYWR5IGhhbmRsZWQuCgpTbywgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhlICp3aHkqIG9mIHRoaXMgcGF0Y2guIEl0JiMzOTtzIGFib3V0IGZpeGluZyBhIGJ1ZyB3aGVyZSBgdHVubmVsLSZndDtwYXJtcy5vX2ZsYWdzYCB3YXMgZ2V0dGluZyB0cmFzaGVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGFuZCBuZXRsaW5rIGluZm8gZHVtcGluZy4gVGhpcyBjb3VsZCBsZWFkIHRvIHJhY2UgY29uZGl0aW9ucyBvciBiYWQgc3RhdGUgZm9yIEdSRS9FUlNQQU4gdHVubmVscy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBsb2NhbCBgZmxhZ3NgIHZhcmlhYmxlIGZvciB0aGUgdHJhbnNtaXNzaW9uIGFuZCBtb3ZlcyB0aGUgYElQX1RVTk5FTF9LRVlfQklUYCBzZXR0aW5nIHRvIGBpcGdyZV9maWxsX2luZm9gIGluc3RlYWQgb2YgbXVuZ2luZyB0aGUgdHVubmVsIHBhcmFtZXRlcnMgaW4gYGVyc3Bhbl9maWxsX2luZm9gLiBUaGUgZnVuY3Rpb25hbCBpbXBhY3QgaGVyZSBpcyBhYm91dCBwcm90ZWN0aW5nIHRoZSB0dW5uZWwgZGF0YSBmcm9tIGNvcnJ1cHRpb24uIFdlIG5lZWQgdG8gYmUgYWJsZSB0byBmdXp6eSBpdCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IGlzc3VlcyBoYXZlIGJlZW4gaW50cm9kdWNlZC4KCk15IGN1cnJlbnQgZm9jdXMgc3ltYm9scyBhcmUgdGhlc2U6CmBfX2dyZV94bWl0YApgaXBncmVfeG1pdGAKYGVyc3Bhbl94bWl0YApgZ3JlX3RhcF94bWl0YApgaXBncmVfZmlsbF9pbmZvYApgZXJzcGFuX2ZpbGxfaW5mb2AKYF9fZ3JlNl94bWl0YApgaXA2ZXJzcGFuX3R1bm5lbF94bWl0YApgaXA2Z3JlX2ZpbGxfaW5mb2AKCkkmIzM5O2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYGVyc3Bhbl9maWxsX2luZm9gIGlzIHN0aWxsIHByZXNlbnQgYWZ0ZXIgdGhlIGNoYW5nZXMgLSB5ZXAsIGl0JiMzOTtzIHRoZXJlLiBUaGUgcGF0Y2gganVzdCByZW1vdmVkIHRoZSBtb2RpZmljYXRpb24gb2YgYHQtJmd0O3Bhcm1zLm9fZmxhZ3NgLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0lQR1JFJiMzNDssCiAgICAmIzM0O0lQVjZfR1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19ncmVfeG1pdCYjMzQ7LAogICAgJiMzNDtpcGdyZV94bWl0JiMzNDssCiAgICAmIzM0O2Vyc3Bhbl94bWl0JiMzNDssCiAgICAmIzM0O2dyZV90YXBfeG1pdCYjMzQ7LAogICAgJiMzNDtpcGdyZV9maWxsX2luZm8mIzM0OywKICAgICYjMzQ7ZXJzcGFuX2ZpbGxfaW5mbyYjMzQ7LAogICAgJiMzNDtfX2dyZTZfeG1pdCYjMzQ7LAogICAgJiMzNDtpcDZlcnNwYW5fdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXA2Z3JlX2ZpbGxfaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3NgIHdhcyBtb2RpZmllZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbmV0bGluayBpbmZvIGR1bXBpbmcsIHdoaWNoIGNvdWxkIGNhdXNlIHJhY2UgY29uZGl0aW9ucyBvciB1bmludGVuZGVkIHN0YXRlIGNoYW5nZXMgZm9yIEdSRSBhbmQgRVJTUEFOIHR1bm5lbHMuIEl0IGludHJvZHVjZXMgYSBsb2NhbCBgZmxhZ3NgIHZhcmlhYmxlIHRvIGhvbGQgdGhlIGZsYWdzIGR1cmluZyB0cmFuc21pc3Npb24gYW5kIGNvcnJlY3RseSBzZXRzIHRoZSBgSVBfVFVOTkVMX0tFWV9CSVRgIGluIGBpcGdyZV9maWxsX2luZm9gIGluc3RlYWQgb2YgbW9kaWZ5aW5nIHRoZSB0dW5uZWwgcGFyYW1ldGVycyBpbiBgZXJzcGFuX2ZpbGxfaW5mb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBHUkUvRVJTUEFOIHR1bm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IGJ1Z3MgYXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtJUFY2X0dSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3htaXQmIzM0OywKICAgICYjMzQ7aXBncmVfeG1pdCYjMzQ7LAogICAgJiMzNDtlcnNwYW5feG1pdCYjMzQ7LAogICAgJiMzNDtncmVfdGFwX3htaXQmIzM0OywKICAgICYjMzQ7aXBncmVfZmlsbF9pbmZvJiMzNDssCiAgICAmIzM0O2Vyc3Bhbl9maWxsX2luZm8mIzM0OywKICAgICYjMzQ7X19ncmU2X3htaXQmIzM0OywKICAgICYjMzQ7aXA2ZXJzcGFuX3R1bm5lbF94bWl0JiMzNDssCiAgICAmIzM0O2lwNmdyZV9maWxsX2luZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzYCB3YXMgbW9kaWZpZWQgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIG5ldGxpbmsgaW5mbyBkdW1waW5nLCB3aGljaCBjb3VsZCBjYXVzZSByYWNlIGNvbmRpdGlvbnMgb3IgdW5pbnRlbmRlZCBzdGF0ZSBjaGFuZ2VzIGZvciBHUkUgYW5kIEVSU1BBTiB0dW5uZWxzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYGZsYWdzYCB2YXJpYWJsZSB0byBob2xkIHRoZSBmbGFncyBkdXJpbmcgdHJhbnNtaXNzaW9uIGFuZCBjb3JyZWN0bHkgc2V0cyB0aGUgYElQX1RVTk5FTF9LRVlfQklUYCBpbiBgaXBncmVfZmlsbF9pbmZvYCBpbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgdHVubmVsIHBhcmFtZXRlcnMgaW4gYGVyc3Bhbl9maWxsX2luZm9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgR1JFL0VSU1BBTiB0dW5uZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBidWdzIGFyZSBpbnRyb2R1Y2VkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjBUMTg6NDY6MDYuMzQ3MDcxNTcyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ2ODk0NzU1OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJJUFY2X0dSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZ3JlX3htaXRcIixcbiAgICBcImlwZ3JlX3htaXRcIixcbiAgICBcImVyc3Bhbl94bWl0XCIsXG4gICAgXCJncmVfdGFwX3htaXRcIixcbiAgICBcImlwZ3JlX2ZpbGxfaW5mb1wiLFxuICAgIFwiZXJzcGFuX2ZpbGxfaW5mb1wiLFxuICAgIFwiX19ncmU2X3htaXRcIixcbiAgICBcImlwNmVyc3Bhbl90dW5uZWxfeG1pdFwiLFxuICAgIFwiaXA2Z3JlX2ZpbGxfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3NgIHdhcyBtb2RpZmllZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbmV0bGluayBpbmZvIGR1bXBpbmcsIHdoaWNoIGNvdWxkIGNhdXNlIHJhY2UgY29uZGl0aW9ucyBvciB1bmludGVuZGVkIHN0YXRlIGNoYW5nZXMgZm9yIEdSRSBhbmQgRVJTUEFOIHR1bm5lbHMuIEl0IGludHJvZHVjZXMgYSBsb2NhbCBgZmxhZ3NgIHZhcmlhYmxlIHRvIGhvbGQgdGhlIGZsYWdzIGR1cmluZyB0cmFuc21pc3Npb24gYW5kIGNvcnJlY3RseSBzZXRzIHRoZSBgSVBfVFVOTkVMX0tFWV9CSVRgIGluIGBpcGdyZV9maWxsX2luZm9gIGluc3RlYWQgb2YgbW9kaWZ5aW5nIHRoZSB0dW5uZWwgcGFyYW1ldGVycyBpbiBgZXJzcGFuX2ZpbGxfaW5mb2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBHUkUvRVJTUEFOIHR1bm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbmV3IGJ1Z3MgYXJlIGludHJvZHVjZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE4OjQ2OjA2LjM0NzA4MDYxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM0NjUxMDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODRlNWU1MTQ4OTNhMGExY2E2MTgyODU2YWMxZTBlYWRmNDQ4NmNhMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyMCAxODo0NjowNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXFxuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjQ0MmEyYzk1MTNlODRlIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXFxuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcXG5AQCAtNDc1LDE1ICs0NzUsMTIgQEAgc3RhdGljIGludCBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcbiBzdGF0aWMgdm9pZCBfX2dyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgaXBoZHIgKnRubF9wYXJhbXMsXFxuLVxcdFxcdCAgICAgICBfX2JlMTYgcHJvdG8pXFxuK1xcdFxcdCAgICAgICBfX2JlMTYgcHJvdG8sIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmZsYWdzKVxcbiB7XFxuIFxcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuLVxcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcXG4tXFxuLVxcdGlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xcbiBcXG4gXFx0LyogUHVzaCBHUkUgaGVhZGVyLiAqL1xcbi1cXHRncmVfYnVpbGRfaGVhZGVyKHNrYiwgdHVubmVsLVxcdTAwM2V0dW5faGxlbixcXG4rXFx0Z3JlX2J1aWxkX2hlYWRlcihza2IsIGdyZV9jYWxjX2hsZW4oZmxhZ3MpLFxcbiBcXHRcXHRcXHQgZmxhZ3MsIHByb3RvLCB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fa2V5LFxcbiBcXHRcXHRcXHQgdGVzdF9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKSA/XFxuIFxcdFxcdFxcdCBodG9ubChhdG9taWNfZmV0Y2hfaW5jKFxcdTAwMjZ0dW5uZWwtXFx1MDAzZW9fc2Vxbm8pKSA6IDApO1xcbkBAIC02NTQsNiArNjUxLDcgQEAgc3RhdGljIG5ldGRldl90eF90IGlwZ3JlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4ge1xcbiBcXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKnRubF9wYXJhbXM7XFxuK1xcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcXG4gXFxuIFxcdGlmICghcHNrYl9pbmV0X21heV9wdWxsKHNrYikpXFxuIFxcdFxcdGdvdG8gZnJlZV9za2I7XFxuQEAgLTY2Myw2ICs2NjEsOCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbiBcXHR9XFxuIFxcbitcXHRpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG4rXFxuIFxcdGlmIChkZXYtXFx1MDAzZWhlYWRlcl9vcHMpIHtcXG4gXFx0XFx0aW50IHB1bGxfbGVuID0gdHVubmVsLVxcdTAwM2VobGVuICsgc2l6ZW9mKHN0cnVjdCBpcGhkcik7XFxuIFxcbkBAIC02ODgsMTEgKzY4OCwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHR0bmxfcGFyYW1zID0gXFx1MDAyNnR1bm5lbC1cXHUwMDNlcGFybXMuaXBoO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZ3JlX2hhbmRsZV9vZmZsb2Fkcyhza2IsIHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICAgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKSkpXFxuK1xcdGlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncykpKVxcbiBcXHRcXHRnb3RvIGZyZWVfc2tiO1xcbiBcXG4tXFx0X19ncmVfeG1pdChza2IsIGRldiwgdG5sX3BhcmFtcywgc2tiLVxcdTAwM2Vwcm90b2NvbCk7XFxuK1xcdF9fZ3JlX3htaXQoc2tiLCBkZXYsIHRubF9wYXJhbXMsIHNrYi1cXHUwMDNlcHJvdG9jb2wsIGZsYWdzKTtcXG4gXFx0cmV0dXJuIE5FVERFVl9UWF9PSztcXG4gXFxuIGZyZWVfc2tiOlxcbkBAIC03MDUsNiArNzA0LDcgQEAgc3RhdGljIG5ldGRldl90eF90IGVyc3Bhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcXG4gXFx0Ym9vbCB0cnVuY2F0ZSA9IGZhbHNlO1xcbiBcXHRfX2JlMTYgcHJvdG87XFxuIFxcbkBAIC03MjgsMTAgKzcyOCwxMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZXJzcGFuX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0dHJ1bmNhdGUgPSB0cnVlO1xcbiBcXHR9XFxuIFxcbitcXHRpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG4rXFxuIFxcdC8qIFB1c2ggRVJTUEFOIGhlYWRlciAqL1xcbiBcXHRpZiAodHVubmVsLVxcdTAwM2VlcnNwYW5fdmVyID09IDApIHtcXG4gXFx0XFx0cHJvdG8gPSBodG9ucyhFVEhfUF9FUlNQQU4pO1xcbi1cXHRcXHRfX2NsZWFyX2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG4rXFx0XFx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKTtcXG4gXFx0fSBlbHNlIGlmICh0dW5uZWwtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xcbiBcXHRcXHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsLVxcdTAwM2VwYXJtcy5vX2tleSksXFxuIFxcdFxcdFxcdFxcdCAgICB0dW5uZWwtXFx1MDAzZWluZGV4LFxcbkBAIC03NDYsOCArNzQ4LDkgQEAgc3RhdGljIG5ldGRldl90eF90IGVyc3Bhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdGdvdG8gZnJlZV9za2I7XFxuIFxcdH1cXG4gXFxuLVxcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xcbi1cXHRfX2dyZV94bWl0KHNrYiwgZGV2LCBcXHUwMDI2dHVubmVsLVxcdTAwM2VwYXJtcy5pcGgsIHByb3RvKTtcXG4rXFx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncyk7XFxuK1xcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCBmbGFncyk7XFxuK1xcdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFxcdTAwMjZ0dW5uZWwtXFx1MDAzZXBhcm1zLmlwaCwgcHJvdG8sIGZsYWdzKTtcXG4gXFx0cmV0dXJuIE5FVERFVl9UWF9PSztcXG4gXFxuIGZyZWVfc2tiOlxcbkBAIC03NjAsNiArNzYzLDcgQEAgc3RhdGljIG5ldGRldl90eF90IGdyZV90YXBfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcXG4gXFxuIFxcdGlmICghcHNrYl9pbmV0X21heV9wdWxsKHNrYikpXFxuIFxcdFxcdGdvdG8gZnJlZV9za2I7XFxuQEAgLTc2OSwxNCArNzczLDE1IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBncmVfdGFwX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0cmV0dXJuIE5FVERFVl9UWF9PSztcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGdyZV9oYW5kbGVfb2ZmbG9hZHMoc2tiLCB0ZXN0X2JpdChJUF9UVU5ORUxfQ1NVTV9CSVQsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgIHR1bm5lbC1cXHUwMDNlcGFybXMub19mbGFncykpKVxcbitcXHRpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG4rXFxuK1xcdGlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncykpKVxcbiBcXHRcXHRnb3RvIGZyZWVfc2tiO1xcbiBcXG4gXFx0aWYgKHNrYl9jb3dfaGVhZChza2IsIGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tKSlcXG4gXFx0XFx0Z290byBmcmVlX3NrYjtcXG4gXFxuLVxcdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFxcdTAwMjZ0dW5uZWwtXFx1MDAzZXBhcm1zLmlwaCwgaHRvbnMoRVRIX1BfVEVCKSk7XFxuK1xcdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFxcdTAwMjZ0dW5uZWwtXFx1MDAzZXBhcm1zLmlwaCwgaHRvbnMoRVRIX1BfVEVCKSwgZmxhZ3MpO1xcbiBcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbiBcXG4gZnJlZV9za2I6XFxuQEAgLTE1NjAsMTIgKzE1NjUsMTUgQEAgc3RhdGljIHNpemVfdCBpcGdyZV9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXG4gc3RhdGljIGludCBpcGdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgaXBfdHVubmVsICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4tXFx0c3RydWN0IGlwX3R1bm5lbF9wYXJtX2tlcm4gKnAgPSBcXHUwMDI2dC1cXHUwMDNlcGFybXM7XFxuK1xcdGNvbnN0IHN0cnVjdCBpcF90dW5uZWwgKnQgPSBuZXRkZXZfcHJpdihkZXYpO1xcbitcXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCA9IFxcdTAwMjZ0LVxcdTAwM2VwYXJtcztcXG4gXFx0SVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1Mob19mbGFncyk7XFxuIFxcbiBcXHRpcF90dW5uZWxfZmxhZ3NfY29weShvX2ZsYWdzLCBwLVxcdTAwM2VvX2ZsYWdzKTtcXG4gXFxuK1xcdGlmICh0LVxcdTAwM2VlcnNwYW5fdmVyICE9IDAgXFx1MDAyNlxcdTAwMjYgIXQtXFx1MDAzZWNvbGxlY3RfbWQpXFxuK1xcdFxcdF9fc2V0X2JpdChJUF9UVU5ORUxfS0VZX0JJVCwgb19mbGFncyk7XFxuK1xcbiBcXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0dSRV9MSU5LLCBwLVxcdTAwM2VsaW5rKSB8fFxcbiBcXHQgICAgbmxhX3B1dF9iZTE2KHNrYiwgSUZMQV9HUkVfSUZMQUdTLFxcbiBcXHRcXHRcXHQgZ3JlX3RubF9mbGFnc190b19ncmVfZmxhZ3MocC1cXHUwMDNlaV9mbGFncykpIHx8XFxuQEAgLTE2MDgsMTIgKzE2MTYsOSBAQCBzdGF0aWMgaW50IGlwZ3JlX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXG4gc3RhdGljIGludCBlcnNwYW5fZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0c3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdGNvbnN0IHN0cnVjdCBpcF90dW5uZWwgKnQgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXG4gXFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgXFx1MDAzYz0gMikge1xcbi1cXHRcXHRpZiAodC1cXHUwMDNlZXJzcGFuX3ZlciAhPSAwIFxcdTAwMjZcXHUwMDI2ICF0LVxcdTAwM2Vjb2xsZWN0X21kKVxcbi1cXHRcXHRcXHRfX3NldF9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIHQtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xcbi1cXG4gXFx0XFx0aWYgKG5sYV9wdXRfdTgoc2tiLCBJRkxBX0dSRV9FUlNQQU5fVkVSLCB0LVxcdTAwM2VlcnNwYW5fdmVyKSlcXG4gXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZ3JlLmMgYi9uZXQvaXB2Ni9pcDZfZ3JlLmNcXG5pbmRleCA3YzA5YTI2OWIzNTIxNi4uOWU2OGFmZWM5ZGNlNDEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvaXA2X2dyZS5jXFxuKysrIGIvbmV0L2lwdjYvaXA2X2dyZS5jXFxuQEAgLTc3Nyw3ICs3NzcsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgX19ncmU2X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdFxcdGlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xcbiBcXG4tXFx0XFx0Z3JlX2J1aWxkX2hlYWRlcihza2IsIHR1bm5lbC1cXHUwMDNldHVuX2hsZW4sIGZsYWdzLFxcbitcXHRcXHRncmVfYnVpbGRfaGVhZGVyKHNrYiwgZ3JlX2NhbGNfaGxlbihmbGFncyksIGZsYWdzLFxcbiBcXHRcXHRcXHRcXHQgcHJvdG9jb2wsIHR1bm5lbC1cXHUwMDNlcGFybXMub19rZXksXFxuIFxcdFxcdFxcdFxcdCB0ZXN0X2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgZmxhZ3MpID9cXG4gXFx0XFx0XFx0XFx0IGh0b25sKGF0b21pY19mZXRjaF9pbmMoXFx1MDAyNnR1bm5lbC1cXHUwMDNlb19zZXFubykpIDpcXG5AQCAtOTY0LDcgKzk2NCw2IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBpcDZlcnNwYW5fdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0aWYgKHNrYl9jb3dfaGVhZChza2IsIGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tID86IHQtXFx1MDAzZWhsZW4pKVxcbiBcXHRcXHRnb3RvIHR4X2VycjtcXG4gXFxuLVxcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9LRVlfQklULCB0LVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG4gXFx0SVBDQihza2IpLVxcdTAwM2VmbGFncyA9IDA7XFxuIFxcbiBcXHQvKiBGb3IgY29sbGVjdF9tZCBtb2RlLCBkZXJpdmUgZmw2IGZyb20gdGhlIHR1bm5lbCBrZXksXFxuQEAgLTIxMTUsOCArMjExNCw4IEBAIHN0YXRpYyBzaXplX3QgaXA2Z3JlX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBzdGF0aWMgaW50IGlwNmdyZV9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4ge1xcbi1cXHRzdHJ1Y3QgaXA2X3RubCAqdCA9IG5ldGRldl9wcml2KGRldik7XFxuLVxcdHN0cnVjdCBfX2lwNl90bmxfcGFybSAqcCA9IFxcdTAwMjZ0LVxcdTAwM2VwYXJtcztcXG4rXFx0Y29uc3Qgc3RydWN0IGlwNl90bmwgKnQgPSBuZXRkZXZfcHJpdihkZXYpO1xcbitcXHRjb25zdCBzdHJ1Y3QgX19pcDZfdG5sX3Bhcm0gKnAgPSBcXHUwMDI2dC1cXHUwMDNlcGFybXM7XFxuIFxcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKG9fZmxhZ3MpO1xcbiBcXG4gXFx0aXBfdHVubmVsX2ZsYWdzX2NvcHkob19mbGFncywgcC1cXHUwMDNlb19mbGFncyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE4OjQ2OjA3LjA4Mzg3MzA5NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMzOTUyNjU5Mjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2dyZV94bWl0XCIsXG4gICAgXCJpcGdyZV94bWl0XCIsXG4gICAgXCJlcnNwYW5feG1pdFwiLFxuICAgIFwiZ3JlX3RhcF94bWl0XCIsXG4gICAgXCJpcGdyZV9maWxsX2luZm9cIixcbiAgICBcImVyc3Bhbl9maWxsX2luZm9cIixcbiAgICBcIl9fZ3JlNl94bWl0XCIsXG4gICAgXCJpcDZlcnNwYW5fdHVubmVsX3htaXRcIixcbiAgICBcImlwNmdyZV9maWxsX2luZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzYCB3YXMgbW9kaWZpZWQgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIG5ldGxpbmsgaW5mbyBkdW1waW5nLCB3aGljaCBjb3VsZCBjYXVzZSByYWNlIGNvbmRpdGlvbnMgb3IgdW5pbnRlbmRlZCBzdGF0ZSBjaGFuZ2VzIGZvciBHUkUgYW5kIEVSU1BBTiB0dW5uZWxzLiBJdCBpbnRyb2R1Y2VzIGEgbG9jYWwgYGZsYWdzYCB2YXJpYWJsZSB0byBob2xkIHRoZSBmbGFncyBkdXJpbmcgdHJhbnNtaXNzaW9uIGFuZCBjb3JyZWN0bHkgc2V0cyB0aGUgYElQX1RVTk5FTF9LRVlfQklUYCBpbiBgaXBncmVfZmlsbF9pbmZvYCBpbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgdHVubmVsIHBhcmFtZXRlcnMgaW4gYGVyc3Bhbl9maWxsX2luZm9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgR1JFL0VSU1BBTiB0dW5uZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBidWdzIGFyZSBpbnRyb2R1Y2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg0ZTVlNTE0ODkzYTBhMWNhNjE4Mjg1NmFjMWUwZWFkZjQ0ODZjYTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyMCAxODo0NjowNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmNcbmluZGV4IDNlZmRmYjRmZmEyMTEyLi40NDJhMmM5NTEzZTg0ZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXG4rKysgYi9uZXQvaXB2NC9pcF9ncmUuY1xuQEAgLTQ3NSwxNSArNDc1LDEyIEBAIHN0YXRpYyBpbnQgZ3JlX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIHN0YXRpYyB2b2lkIF9fZ3JlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpcGhkciAqdG5sX3BhcmFtcyxcbi1cdFx0ICAgICAgIF9fYmUxNiBwcm90bylcbitcdFx0ICAgICAgIF9fYmUxNiBwcm90bywgY29uc3QgdW5zaWduZWQgbG9uZyAqZmxhZ3MpXG4ge1xuIFx0c3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcbi1cdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKGZsYWdzKTtcbi1cbi1cdGlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4gXG4gXHQvKiBQdXNoIEdSRSBoZWFkZXIuICovXG4tXHRncmVfYnVpbGRfaGVhZGVyKHNrYiwgdHVubmVsLVx1MDAzZXR1bl9obGVuLFxuK1x0Z3JlX2J1aWxkX2hlYWRlcihza2IsIGdyZV9jYWxjX2hsZW4oZmxhZ3MpLFxuIFx0XHRcdCBmbGFncywgcHJvdG8sIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2tleSxcbiBcdFx0XHQgdGVzdF9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKSA/XG4gXHRcdFx0IGh0b25sKGF0b21pY19mZXRjaF9pbmMoXHUwMDI2dHVubmVsLVx1MDAzZW9fc2Vxbm8pKSA6IDApO1xuQEAgLTY1NCw2ICs2NTEsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIHtcbiBcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4gXHRjb25zdCBzdHJ1Y3QgaXBoZHIgKnRubF9wYXJhbXM7XG4rXHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhmbGFncyk7XG4gXG4gXHRpZiAoIXBza2JfaW5ldF9tYXlfcHVsbChza2IpKVxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuQEAgLTY2Myw2ICs2NjEsOCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIFx0fVxuIFxuK1x0aXBfdHVubmVsX2ZsYWdzX2NvcHkoZmxhZ3MsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKTtcbitcbiBcdGlmIChkZXYtXHUwMDNlaGVhZGVyX29wcykge1xuIFx0XHRpbnQgcHVsbF9sZW4gPSB0dW5uZWwtXHUwMDNlaGxlbiArIHNpemVvZihzdHJ1Y3QgaXBoZHIpO1xuIFxuQEAgLTY4OCwxMSArNjg4LDEwIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBpcGdyZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHRubF9wYXJhbXMgPSBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMuaXBoO1xuIFx0fVxuIFxuLVx0aWYgKGdyZV9oYW5kbGVfb2ZmbG9hZHMoc2tiLCB0ZXN0X2JpdChJUF9UVU5ORUxfQ1NVTV9CSVQsXG4tXHRcdFx0XHRcdCAgICAgIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKSkpXG4rXHRpZiAoZ3JlX2hhbmRsZV9vZmZsb2Fkcyhza2IsIHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgZmxhZ3MpKSlcbiBcdFx0Z290byBmcmVlX3NrYjtcbiBcbi1cdF9fZ3JlX3htaXQoc2tiLCBkZXYsIHRubF9wYXJhbXMsIHNrYi1cdTAwM2Vwcm90b2NvbCk7XG4rXHRfX2dyZV94bWl0KHNrYiwgZGV2LCB0bmxfcGFyYW1zLCBza2ItXHUwMDNlcHJvdG9jb2wsIGZsYWdzKTtcbiBcdHJldHVybiBORVRERVZfVFhfT0s7XG4gXG4gZnJlZV9za2I6XG5AQCAtNzA1LDYgKzcwNCw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBlcnNwYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4rXHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhmbGFncyk7XG4gXHRib29sIHRydW5jYXRlID0gZmFsc2U7XG4gXHRfX2JlMTYgcHJvdG87XG4gXG5AQCAtNzI4LDEwICs3MjgsMTIgQEAgc3RhdGljIG5ldGRldl90eF90IGVyc3Bhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHRydW5jYXRlID0gdHJ1ZTtcbiBcdH1cbiBcbitcdGlwX3R1bm5lbF9mbGFnc19jb3B5KGZsYWdzLCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4rXG4gXHQvKiBQdXNoIEVSU1BBTiBoZWFkZXIgKi9cbiBcdGlmICh0dW5uZWwtXHUwMDNlZXJzcGFuX3ZlciA9PSAwKSB7XG4gXHRcdHByb3RvID0gaHRvbnMoRVRIX1BfRVJTUEFOKTtcbi1cdFx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKTtcbitcdFx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX1NFUV9CSVQsIGZsYWdzKTtcbiBcdH0gZWxzZSBpZiAodHVubmVsLVx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xuIFx0XHRlcnNwYW5fYnVpbGRfaGVhZGVyKHNrYiwgbnRvaGwodHVubmVsLVx1MDAzZXBhcm1zLm9fa2V5KSxcbiBcdFx0XHRcdCAgICB0dW5uZWwtXHUwMDNlaW5kZXgsXG5AQCAtNzQ2LDggKzc0OCw5IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBlcnNwYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuIFx0fVxuIFxuLVx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKTtcbi1cdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFx1MDAyNnR1bm5lbC1cdTAwM2VwYXJtcy5pcGgsIHByb3RvKTtcbitcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgZmxhZ3MpO1xuK1x0X19jbGVhcl9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIGZsYWdzKTtcbitcdF9fZ3JlX3htaXQoc2tiLCBkZXYsIFx1MDAyNnR1bm5lbC1cdTAwM2VwYXJtcy5pcGgsIHByb3RvLCBmbGFncyk7XG4gXHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIFxuIGZyZWVfc2tiOlxuQEAgLTc2MCw2ICs3NjMsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgZ3JlX3RhcF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4rXHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhmbGFncyk7XG4gXG4gXHRpZiAoIXBza2JfaW5ldF9tYXlfcHVsbChza2IpKVxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuQEAgLTc2OSwxNCArNzczLDE1IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBncmVfdGFwX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbiBcdH1cbiBcbi1cdGlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULFxuLVx0XHRcdFx0XHQgICAgICB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncykpKVxuK1x0aXBfdHVubmVsX2ZsYWdzX2NvcHkoZmxhZ3MsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKTtcbitcbitcdGlmIChncmVfaGFuZGxlX29mZmxvYWRzKHNrYiwgdGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCBmbGFncykpKVxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuIFxuIFx0aWYgKHNrYl9jb3dfaGVhZChza2IsIGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20pKVxuIFx0XHRnb3RvIGZyZWVfc2tiO1xuIFxuLVx0X19ncmVfeG1pdChza2IsIGRldiwgXHUwMDI2dHVubmVsLVx1MDAzZXBhcm1zLmlwaCwgaHRvbnMoRVRIX1BfVEVCKSk7XG4rXHRfX2dyZV94bWl0KHNrYiwgZGV2LCBcdTAwMjZ0dW5uZWwtXHUwMDNlcGFybXMuaXBoLCBodG9ucyhFVEhfUF9URUIpLCBmbGFncyk7XG4gXHRyZXR1cm4gTkVUREVWX1RYX09LO1xuIFxuIGZyZWVfc2tiOlxuQEAgLTE1NjAsMTIgKzE1NjUsMTUgQEAgc3RhdGljIHNpemVfdCBpcGdyZV9nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIHN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4tXHRzdHJ1Y3QgaXBfdHVubmVsX3Bhcm1fa2VybiAqcCA9IFx1MDAyNnQtXHUwMDNlcGFybXM7XG4rXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcdGNvbnN0IHN0cnVjdCBpcF90dW5uZWxfcGFybV9rZXJuICpwID0gXHUwMDI2dC1cdTAwM2VwYXJtcztcbiBcdElQX1RVTk5FTF9ERUNMQVJFX0ZMQUdTKG9fZmxhZ3MpO1xuIFxuIFx0aXBfdHVubmVsX2ZsYWdzX2NvcHkob19mbGFncywgcC1cdTAwM2VvX2ZsYWdzKTtcbiBcbitcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgIT0gMCBcdTAwMjZcdTAwMjYgIXQtXHUwMDNlY29sbGVjdF9tZClcbitcdFx0X19zZXRfYml0KElQX1RVTk5FTF9LRVlfQklULCBvX2ZsYWdzKTtcbitcbiBcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfR1JFX0xJTkssIHAtXHUwMDNlbGluaykgfHxcbiBcdCAgICBubGFfcHV0X2JlMTYoc2tiLCBJRkxBX0dSRV9JRkxBR1MsXG4gXHRcdFx0IGdyZV90bmxfZmxhZ3NfdG9fZ3JlX2ZsYWdzKHAtXHUwMDNlaV9mbGFncykpIHx8XG5AQCAtMTYwOCwxMiArMTYxNiw5IEBAIHN0YXRpYyBpbnQgaXBncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gc3RhdGljIGludCBlcnNwYW5fZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IGlwX3R1bm5lbCAqdCA9IG5ldGRldl9wcml2KGRldik7XG4rXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbiBcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgXHUwMDNjPSAyKSB7XG4tXHRcdGlmICh0LVx1MDAzZWVyc3Bhbl92ZXIgIT0gMCBcdTAwMjZcdTAwMjYgIXQtXHUwMDNlY29sbGVjdF9tZClcbi1cdFx0XHRfX3NldF9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIHQtXHUwMDNlcGFybXMub19mbGFncyk7XG4tXG4gXHRcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9HUkVfRVJTUEFOX1ZFUiwgdC1cdTAwM2VlcnNwYW5fdmVyKSlcbiBcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZ3JlLmMgYi9uZXQvaXB2Ni9pcDZfZ3JlLmNcbmluZGV4IDdjMDlhMjY5YjM1MjE2Li45ZTY4YWZlYzlkY2U0MSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwNl9ncmUuY1xuKysrIGIvbmV0L2lwdjYvaXA2X2dyZS5jXG5AQCAtNzc3LDcgKzc3Nyw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBfX2dyZTZfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0XHRpcF90dW5uZWxfZmxhZ3NfY29weShmbGFncywgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xuIFxuLVx0XHRncmVfYnVpbGRfaGVhZGVyKHNrYiwgdHVubmVsLVx1MDAzZXR1bl9obGVuLCBmbGFncyxcbitcdFx0Z3JlX2J1aWxkX2hlYWRlcihza2IsIGdyZV9jYWxjX2hsZW4oZmxhZ3MpLCBmbGFncyxcbiBcdFx0XHRcdCBwcm90b2NvbCwgdHVubmVsLVx1MDAzZXBhcm1zLm9fa2V5LFxuIFx0XHRcdFx0IHRlc3RfYml0KElQX1RVTk5FTF9TRVFfQklULCBmbGFncykgP1xuIFx0XHRcdFx0IGh0b25sKGF0b21pY19mZXRjaF9pbmMoXHUwMDI2dHVubmVsLVx1MDAzZW9fc2Vxbm8pKSA6XG5AQCAtOTY0LDcgKzk2NCw2IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBpcDZlcnNwYW5fdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGlmIChza2JfY293X2hlYWQoc2tiLCBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID86IHQtXHUwMDNlaGxlbikpXG4gXHRcdGdvdG8gdHhfZXJyO1xuIFxuLVx0X19jbGVhcl9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIHQtXHUwMDNlcGFybXMub19mbGFncyk7XG4gXHRJUENCKHNrYiktXHUwMDNlZmxhZ3MgPSAwO1xuIFxuIFx0LyogRm9yIGNvbGxlY3RfbWQgbW9kZSwgZGVyaXZlIGZsNiBmcm9tIHRoZSB0dW5uZWwga2V5LFxuQEAgLTIxMTUsOCArMjExNCw4IEBAIHN0YXRpYyBzaXplX3QgaXA2Z3JlX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gc3RhdGljIGludCBpcDZncmVfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IGlwNl90bmwgKnQgPSBuZXRkZXZfcHJpdihkZXYpO1xuLVx0c3RydWN0IF9faXA2X3RubF9wYXJtICpwID0gXHUwMDI2dC1cdTAwM2VwYXJtcztcbitcdGNvbnN0IHN0cnVjdCBpcDZfdG5sICp0ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbitcdGNvbnN0IHN0cnVjdCBfX2lwNl90bmxfcGFybSAqcCA9IFx1MDAyNnQtXHUwMDNlcGFybXM7XG4gXHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhvX2ZsYWdzKTtcbiBcbiBcdGlwX3R1bm5lbF9mbGFnc19jb3B5KG9fZmxhZ3MsIHAtXHUwMDNlb19mbGFncyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxODo0NjowNy4wODM4NzU1MTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjE0NDQyNzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgR1JFL0VSU1BBTiBUdW5uZWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGhvdyBmbGFncyBhcmUgaGFuZGxlZCBpbiB0aGUga2VybmVsJ3MgR1JFIGFuZCBFUlNQQU4gdHVubmVsIGNvZGUsIHNwZWNpZmljYWxseSBpbiBgbmV0L2lwdjQvaXBfZ3JlLmNgIGFuZCBgbmV0L2lwdjYvaXA2X2dyZS5jYC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBhIHByb2JsZW0gd2hlcmUgdGhlIGB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFnc2AgbWVtYmVyLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSB0dW5uZWwgY29uZmlndXJhdGlvbiwgd2FzIGJlaW5nIG1vZGlmaWVkICpkdXJpbmcgdHJhbnNtaXNzaW9uKi4gVGhhdCdzIGEgY2xhc3NpYyByZWNpcGUgZm9yIHJhY2UgY29uZGl0aW9ucyBhbmQgb3RoZXIgbmFzdGllcywgYW5kIGZyYW5rbHksIGEgZGVzaWduIGZsYXcuXG5cblRoZSBmaXg/IEluc3RlYWQgb2YgZGlyZWN0bHkgbXVja2luZyB3aXRoIGB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFnc2AsIHRoZSBwYXRjaCBjb3BpZXMgaXQgdG8gYSBsb2NhbCBgZmxhZ3NgIHZhcmlhYmxlIHdpdGhpbiB0aGUgdHJhbnNtaXNzaW9uIGZ1bmN0aW9uIGFuZCB0aGVuIG1vZGlmaWVzIHRoYXQuIFNtYXJ0LiBTYWZlLiBXZSB3YW50IHRvIGF2b2lkIGFueSBwb3NzaWJpbGl0eSBvZiBjaGFuZ2VzIGR1cmluZyBhIHRyYW5zbWlzc2lvbi4gVGhpcyBkZWZpbml0ZWx5IGNsZWFucyB1cCBhIGJpdCBvZiBhIHNwYWdoZXR0aSBzY2VuYXJpby5cblxuSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggYWxzbyBjb3JyZWN0cyB0aGUgZnVuY3Rpb24gYGlwZ3JlX2ZpbGxfaW5mb2AgdG8gYXBwcm9wcmlhdGVseSBzZXQgdGhlIGBJUF9UVU5ORUxfS0VZX0JJVGAgb24gYG9fZmxhZ3NgIGluc3RlYWQgb2YgbW9kaWZ5aW5nIGB0LVx1MDAzZXBhcm1zLm9fZmxhZ3NgIGRpcmVjdGx5IHdpdGhpbiBgZXJzcGFuX2ZpbGxfaW5mb2AuIFdhaXQsIHdhcyBgZXJzcGFuX2ZpbGxfaW5mb2AgbW9kaWZ5aW5nIGB0LVx1MDAzZXBhcm1zLm9fZmxhZ3NgPyBZZXMsIHRoZXJlIHdhcyBhIGBfX3NldF9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIHQtXHUwMDNlcGFybXMub19mbGFncyk7YCBjYWxsIGluIGBlcnNwYW5fZmlsbF9pbmZvYCwgd2hpY2ggaXMgYSBidWcgc2luY2UgdGhvc2UgZmlsbF9pbmZvIGZ1bmN0aW9ucyBhcmUgZm9yIGR1bXBpbmcgdHVubmVsIGluZm8sIG5vdCBjaGFuZ2luZyBjb25maWd1cmF0aW9uLiBUaGF0J3MgYSBzdWJ0bGUgYnV0IHNpZ25pZmljYW50IGNvcnJlY3Rpb24uXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB0byBob3cgdGhlc2UgdHVubmVscyBvcGVyYXRlLiBJdCdzIGEgc2VjdXJpdHkgYW5kIHJlbGlhYmlsaXR5IGltcHJvdmVtZW50LiBEZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IG5lZWRzIGZ1enplZC5cblxuU28sIGxldCdzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIHRhcmdldCBmb3IgZnV6emluZzogYGlwZ3JlX3htaXRgLCBgZXJzcGFuX3htaXRgLCBgZ3JlX3RhcF94bWl0YCwgYGlwZ3JlX2ZpbGxfaW5mb2AsIGBlcnNwYW5fZmlsbF9pbmZvYCwgYF9fZ3JlNl94bWl0YCwgYGlwNmVyc3Bhbl90dW5uZWxfeG1pdGAsIGFuZCBgaXA2Z3JlX2ZpbGxfaW5mb2AuIFRoYXQncyB0aGUgY29yZSBzZXQgdG8gc3RhcnQgd2l0aC5cblxuSSBzaG91bGQgYWxzbyBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgdG8gZW5zdXJlIHRoZXNlIGZlYXR1cmVzIGFyZSBlbmFibGVkIGR1cmluZyBmdXp6aW5nLiBGb3IgdGhlIElQdjQgR1JFIGNvZGUsIGl0J3MgYENPTkZJR19ORVRfSVBHUkVgLCBhbmQgZm9yIHRoZSBJUHY2IEdSRSBjb2RlLCBpdCdzIGBDT05GSUdfSVBWNl9HUkVgLiBUaW1lIHRvIGNvbmZpcm0gd2l0aCBgZ3JlcHBlcmAgYW5kIG1ha2Ugc3VyZSBteSBidWlsZCBlbnZpcm9ubWVudCBpcyBzZXQgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDYyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTg6NDY6MTQuNjk4MzIwOTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxMjg4MDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19ORVRfSVBHUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTI4PW9iai0kKENPTkZJR19ORVRfRk9VKSArPSBmb3Uub1xcbm5ldC9pcHY0L01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19ORVRfSVBHUkVfREVNVVgpICs9IGdyZS5vXFxubmV0L2lwdjQvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgKz0gaXBfZ3JlLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0zMS11ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9NDQwPXN0YXRpYyBpbnQgZ3JlX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNDQ1LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjQ0NjojaWZkZWYgQ09ORklHX05FVF9JUEdSRV9CUk9BRENBU1RcXG5uZXQvaXB2NC9pcF9ncmUuYy00NDctXFx0aWYgKGlwdjRfaXNfbXVsdGljYXN0KGlwX2hkcihza2IpLVxcdTAwM2VkYWRkcikpIHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTkzNj1zdGF0aWMgY29uc3Qgc3RydWN0IGhlYWRlcl9vcHMgaXBncmVfaGVhZGVyX29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTk0MC1cXG5uZXQvaXB2NC9pcF9ncmUuYzo5NDE6I2lmZGVmIENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUXFxubmV0L2lwdjQvaXBfZ3JlLmMtOTQyLXN0YXRpYyBpbnQgaXBncmVfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9OTg1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXBncmVfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTk4Ny1cXHQubmRvX3VuaW5pdFxcdFxcdD0gaXBfdHVubmVsX3VuaW5pdCxcXG5uZXQvaXB2NC9pcF9ncmUuYzo5ODg6I2lmZGVmIENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUXFxubmV0L2lwdjQvaXBfZ3JlLmMtOTg5LVxcdC5uZG9fb3BlblxcdFxcdD0gaXBncmVfb3BlbixcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTEwNDE9c3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTA1NS1cXHRpZiAoaXBoLVxcdTAwM2VkYWRkciBcXHUwMDI2XFx1MDAyNiAhdHVubmVsLVxcdTAwM2Vjb2xsZWN0X21kKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTA1NjojaWZkZWYgQ09ORklHX05FVF9JUEdSRV9CUk9BRENBU1RcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMDU3LVxcdFxcdGlmIChpcHY0X2lzX211bHRpY2FzdChpcGgtXFx1MDAzZWRhZGRyKSkge1xcbi0tXFxubmV0L2lwdjQvaXBfdHVubmVsLmM9Mzc3PWludCBpcF90dW5uZWxfcmN2KHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTM4My1cXG5uZXQvaXB2NC9pcF90dW5uZWwuYzozODQ6I2lmZGVmIENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUXFxubmV0L2lwdjQvaXBfdHVubmVsLmMtMzg1LVxcdGlmIChpcHY0X2lzX211bHRpY2FzdChpcGgtXFx1MDAzZWRhZGRyKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxODo0NjoxNS4zMjk2MTQ0NTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTA5NTEzMTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSVB2NiBHUkU6IENvbnNpZGVyYXRpb25zIGFuZCBJbXBsaWNhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdoZW4gd2UncmUgdGFsa2luZyBhYm91dCBJUHY2IEdSRSwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgaW5oZXJlbnQgY29tcGxleGl0aWVzLCBhbmQsIGZyYW5rbHksIHRoZSBwb3RlbnRpYWwgYWR2YW50YWdlcy4gV2Uga25vdyB0aGF0IEdlbmVyaWMgUm91dGluZyBFbmNhcHN1bGF0aW9uIChHUkUpIHByb3ZpZGVzIGEgd2F5IHRvIGVuY2Fwc3VsYXRlIG5ldHdvcmsgbGF5ZXIgcHJvdG9jb2xzIGluc2lkZSBvZiBhIHZpcnR1YWwgcG9pbnQtdG8tcG9pbnQgbGluay4gSW4gdGhlIElQdjQgd29ybGQsIHdlJ3JlIGFsbCBmYW1pbGlhciB3aXRoIGhvdyB0aGlzIHdvcmtzLiBCdXQgSVB2Ni4uLiBpdCBhZGRzIGEgd2hvbGUgbmV3IGxheWVyIG9mIG51YW5jZS5cblxuTXkgaW1tZWRpYXRlIGNvbnNpZGVyYXRpb25zIGFyZSBmb2N1c2VkIG9uIHRoZSBwcmFjdGljYWxpdGllcy4gRmlyc3QsIHRoZSBpbXBhY3Qgb24gdGhlIE1UVSwgdGhlIE1heGltdW0gVHJhbnNtaXNzaW9uIFVuaXQuIElQdjYgaGVhZGVycyBhcmUgYWxyZWFkeSBsYXJnZXIgdGhhbiBJUHY0LiBBZGQgYSBHUkUgaGVhZGVyIG9uIHRvcCBvZiB0aGF0LCBhbmQgd2UncmUgKmRlZmluaXRlbHkqIGdvaW5nIHRvIGJlIGJ1bXBpbmcgaW50byBmcmFnbWVudGF0aW9uIGlzc3VlcyBpZiB3ZSdyZSBub3QgY2FyZWZ1bC4gSSBuZWVkIHRvIGJlIHRoaW5raW5nIGFib3V0IHBhdGggTVRVIGRpc2NvdmVyeSwgYW5kIGhvdyB0byBlZmZlY3RpdmVseSBtYW5hZ2UgdGhhdCBhY3Jvc3MgcG90ZW50aWFsbHkgZGlzcGFyYXRlIG5ldHdvcmtzLlxuXG5UaGVuIHRoZXJlIGFyZSB0aGUgcm91dGluZyBpbXBsaWNhdGlvbnMuIEhvdyBkbyB3ZSBlbnN1cmUgcHJvcGVyIHJvdXRpbmcgd2l0aGluIHRoZSBHUkUgdHVubmVsPyBJUHY2J3MgYXV0by1jb25maWd1cmF0aW9uIGFuZCBhZGRyZXNzIGFsbG9jYXRpb24gYXJlIGRpZmZlcmVudCwgYW5kIEkgY2FuJ3QganVzdCBhc3N1bWUgdGhlIHNhbWUgbWV0aG9kb2xvZ2llcyB3aWxsIHNlYW1sZXNzbHkgdHJhbnNsYXRlLiBJIG5lZWQgdG8gZGVzaWduIHRoZSBhZGRyZXNzaW5nIHNjaGVtZSBjYXJlZnVsbHkgZm9yIHRoZSB0dW5uZWxlZCB0cmFmZmljLiBUaGUgZm9jdXMgaXMgYWx3YXlzIG9uIGVuc3VyaW5nIHRoZSB0dW5uZWwgaW50ZXJmYWNlcyBhcmUgY29uZmlndXJlZCBwcm9wZXJseSBhbmQgdGhhdCB0aGUgYXBwcm9wcmlhdGUgcm91dGluZyBwcm90b2NvbHMgYXJlIGVuYWJsZWQsIGFuZCBjb3JyZWN0bHkgY29uZmlndXJlZCwgd2l0aGluIHRoZSB0dW5uZWwgaXRzZWxmLlxuXG5TZWN1cml0eS4gT2YgY291cnNlLiBKdXN0IGxpa2Ugd2l0aCBJUHY0IEdSRSwgaXQncyBpbmhlcmVudGx5ICpub3QqIHNlY3VyZS4gRW5jYXBzdWxhdGlvbiBhbG9uZSBkb2Vzbid0IGVuY3J5cHQgdGhlIHRyYWZmaWMuIEkgbmVlZCB0byBiZSB0aGlua2luZyBhYm91dCBpbnRlZ3JhdGluZyB0aGlzIHdpdGggSVBzZWMgdG8gcHJvdmlkZSB0aGF0IG5lY2Vzc2FyeSBjb25maWRlbnRpYWxpdHkgYW5kIGludGVncml0eS4gSWYgSSdtIGNvbnNpZGVyaW5nIHVzaW5nIEdSRSwgSSBhbSAqcmVxdWlyZWQqIHRvIHRoaW5rIGFib3V0IHRoZSBvdmVyaGVhZCwgYW5kIHBlcmZvcm1hbmNlIHBlbmFsdHkuIFdoYXQncyB0aGUgdHJhZGUtb2ZmIGJldHdlZW4gdGhlIGZsZXhpYmlsaXR5IG9mIEdSRSBhbmQgdGhlIGFkZGVkIGxheWVyIG9mIHNlY3VyaXR5P1xuXG5JJ20gYWxzbyBjb25zaWRlcmluZyB0aGUgb3BlcmF0aW9uYWwgYXNwZWN0cy4gSG93IGVhc3kgd2lsbCBpdCBiZSB0byB0cm91Ymxlc2hvb3Q/IEFyZSBteSBtb25pdG9yaW5nIHRvb2xzIHVwIHRvIHRoZSB0YXNrIG9mIGRpc3NlY3RpbmcgSVB2NiBHUkUgZW5jYXBzdWxhdGVkIHBhY2tldHM/IEkgYWxzbyBuZWVkIHRvIGJlIGF3YXJlIG9mIGFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggZmlyZXdhbGxzIGFsb25nIHRoZSBwYXRoLiBUaGVzZSBuZWVkIHRvIGJlIGNvbmZpZ3VyZWQgdG8gYWxsb3cgdGhlIGVuY2Fwc3VsYXRlZCB0cmFmZmljLCBvciBpdCdzIGdhbWUgb3Zlci5cblxuSXQgYWxsIGJvaWxzIGRvd24gdG8gY2FyZWZ1bCBwbGFubmluZywgbWV0aWN1bG91cyBjb25maWd1cmF0aW9uLCBhbmQgdGhvcm91Z2ggdGVzdGluZy4gSSB3aWxsIG1ha2Ugc3VyZSBJIGFwcHJvYWNoIGl0IHdpdGggYSBkZWVwIHVuZGVyc3RhbmRpbmcgb2YgYm90aCBJUHY2IGFuZCBHUkUncyBpbnRyaWNhY2llcy4gSSB3YW50IGEgcm9idXN0IGFuZCBlZmZlY3RpdmUgc29sdXRpb24gdGhhdCB3b3JrcyBzZWFtbGVzc2x5LCBub3Qgc29tZXRoaW5nIHRoYXQgYnJlYWtzIGRvd24gdW5kZXIgcHJlc3N1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMDAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE4OjQ2OjIwLjQzOTEzMDc0NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk2MzA0MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0lQVjZfR1JFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT00Mj1vYmotJChDT05GSUdfSVBWNl9UVU5ORUwpICs9IGlwNl90dW5uZWwub1xcbm5ldC9pcHY2L01ha2VmaWxlOjQzOm9iai0kKENPTkZJR19JUFY2X0dSRSkgKz0gaXA2X2dyZS5vXFxubmV0L2lwdjYvTWFrZWZpbGUtNDQtb2JqLSQoQ09ORklHX0lQVjZfRk9VKSArPSBmb3U2Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTg6NDY6MjAuNTg4NzcwMDUxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYzNDg2MjExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgR1JFIFR1bm5lbCBDb25maWd1cmF0aW9uIGluIHRoZSBMaW51eCBLZXJuZWwqKlxuXG5SaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIEdSRSB0dW5uZWxzIGhlcmUsIHNwZWNpZmljYWxseSB0aGUgY29uZmlndXJhdGlvbnMgYE5FVF9JUEdSRWAgYW5kIGBJUFY2X0dSRWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhcmUgdGhlc2UgdGhlIG9ubHkgb25lcyBJIG5lZWQgdG8gd29ycnkgYWJvdXQ/IFByb2JhYmx5IG5vdC4gSSd2ZSBnb3QgdG8gZW5zdXJlIEkgY292ZXIgZXZlcnl0aGluZy5cblxuSSByZWNhbGwgdGhhdCBFUlNQQU4sIGEgY29tbW9uIHR1bm5lbGluZyBtZXRob2QsIGlzIGVzc2VudGlhbGx5IGltcGxlbWVudGVkIGFzIHBhcnQgb2YgR1JFIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGV4YWN0bHkgaG93IGl0J3MgaGFuZGxlZC4gSSdsbCB0YWtlIGEgbG9vayBhdCBgbmV0L2lwdjQvaXBfZ3JlLmNgIGFuZCBzZWUgaWYgdGhlIEVSU1BBTiBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQgYW5kIGhvdyBpdCBpcyBpbXBsZW1lbnRlZCB3aXRoaW4gdGhpcyBjb250ZXh0LiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NTQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxODo0NjoyNC4yMjM2MzQ3NTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4OTc4NDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVyc3BhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9pcF9ncmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pcF9ncmUuYy00Ni0jaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXFx1MDAzZVxcbm5ldC9pcHY0L2lwX2dyZS5jOjQ3OiNpbmNsdWRlIFxcdTAwM2NuZXQvZXJzcGFuLmhcXHUwMDNlXFxubmV0L2lwdjQvaXBfZ3JlLmMtNDgtXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMTM9c3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxMTQ6c3RhdGljIHZvaWQgZXJzcGFuX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTExNS1cXHRcXHRcXHRcXHR1MzIgaWQsIHUzMiBpbmRleCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTExOT1zdGF0aWMgdW5zaWduZWQgaW50IGdyZV90YXBfbmV0X2lkIF9fcmVhZF9tb3N0bHk7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTIwOnN0YXRpYyB1bnNpZ25lZCBpbnQgZXJzcGFuX25ldF9pZCBfX3JlYWRfbW9zdGx5O1xcbm5ldC9pcHY0L2lwX2dyZS5jLTEyMS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMjI9c3RhdGljIGludCBpcGdyZV9lcnIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm8sXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDktXFx0XFx0IHRwaS1cXHUwMDNlcHJvdG8gPT0gaHRvbnMoRVRIX1BfRVJTUEFOMikpXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTUwOlxcdFxcdGl0biA9IG5ldF9nZW5lcmljKG5ldCwgZXJzcGFuX25ldF9pZCk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTUxLVxcdGVsc2VcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTIxOT1zdGF0aWMgdm9pZCBncmVfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMjU3LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjI1ODpzdGF0aWMgYm9vbCBpc19lcnNwYW5fdHlwZTEoaW50IGdyZV9oZHJfbGVuKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTI1OS17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0yNjYtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MjY3OnN0YXRpYyBpbnQgZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdG5sX3B0a19pbmZvICp0cGksXFxubmV0L2lwdjQvaXBfZ3JlLmMtMjY4LVxcdFxcdCAgICAgIGludCBncmVfaGRyX2xlbilcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTI3MS1cXHRzdHJ1Y3QgbWV0YWRhdGFfZHN0ICp0dW5fZHN0ID0gTlVMTDtcXG5uZXQvaXB2NC9pcF9ncmUuYzoyNzI6XFx0c3RydWN0IGVyc3Bhbl9iYXNlX2hkciAqZXJzaGRyO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTI3My1cXHRJUF9UVU5ORUxfREVDTEFSRV9GTEFHUyhmbGFncyk7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0yNzYtXFx0Y29uc3Qgc3RydWN0IGlwaGRyICppcGg7XFxubmV0L2lwdjQvaXBfZ3JlLmM6Mjc3OlxcdHN0cnVjdCBlcnNwYW5fbWQyICptZDI7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMjc4LVxcdGludCB2ZXI7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0yODItXFxubmV0L2lwdjQvaXBfZ3JlLmM6MjgzOlxcdGl0biA9IG5ldF9nZW5lcmljKG5ldCwgZXJzcGFuX25ldF9pZCk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMjg0LVxcdGlwaCA9IGlwX2hkcihza2IpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjI4NTpcXHRpZiAoaXNfZXJzcGFuX3R5cGUxKGdyZV9oZHJfbGVuKSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jLTI4Ni1cXHRcXHR2ZXIgPSAwO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMjk0LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjI5NTpcXHRcXHRlcnNoZHIgPSAoc3RydWN0IGVyc3Bhbl9iYXNlX2hkciAqKShza2ItXFx1MDAzZWRhdGEgKyBncmVfaGRyX2xlbik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMjk2LVxcdFxcdHZlciA9IGVyc2hkci1cXHUwMDNldmVyO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMzAzLVxcdGlmICh0dW5uZWwpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzozMDQ6XFx0XFx0aWYgKGlzX2Vyc3Bhbl90eXBlMShncmVfaGRyX2xlbikpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMzA1LVxcdFxcdFxcdGxlbiA9IGdyZV9oZHJfbGVuO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTMwNi1cXHRcXHRlbHNlXFxubmV0L2lwdjQvaXBfZ3JlLmM6MzA3OlxcdFxcdFxcdGxlbiA9IGdyZV9oZHJfbGVuICsgZXJzcGFuX2hkcl9sZW4odmVyKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0zMDgtXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0zMTgtXFx0XFx0aWYgKHR1bm5lbC1cXHUwMDNlY29sbGVjdF9tZCkge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjMxOTpcXHRcXHRcXHRzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICpwa3RfbWQsICptZDtcXG5uZXQvaXB2NC9pcF9ncmUuYy0zMjAtXFx0XFx0XFx0c3RydWN0IGlwX3R1bm5lbF9pbmZvICppbmZvO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMzQyLVxcdFxcdFxcdCAgICAgc2tiX25ldHdvcmtfaGVhZGVyX2xlbihza2IpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjM0MzpcXHRcXHRcXHRwa3RfbWQgPSAoc3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqKShnaCArIGdyZV9oZHJfbGVuICtcXG5uZXQvaXB2NC9pcF9ncmUuYy0zNDQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHNpemVvZigqZXJzaGRyKSk7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz00NDA9c3RhdGljIGludCBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy00NTktXFx0XFx0ICAgICB0cGkucHJvdG8gPT0gaHRvbnMoRVRIX1BfRVJTUEFOMikpKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmM6NDYwOlxcdFxcdGlmIChlcnNwYW5fcmN2KHNrYiwgXFx1MDAyNnRwaSwgaGRyX2xlbikgPT0gUEFDS0VUX1JDVkQpXFxubmV0L2lwdjQvaXBfZ3JlLmMtNDYxLVxcdFxcdFxcdHJldHVybiAwO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9NDk2PXN0YXRpYyB2b2lkIGdyZV9mYl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy01MzktXFxubmV0L2lwdjQvaXBfZ3JlLmM6NTQwOnN0YXRpYyB2b2lkIGVyc3Bhbl9mYl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvaXBfZ3JlLmMtNTQxLXtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTU0NS1cXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2tleSAqa2V5O1xcbm5ldC9pcHY0L2lwX2dyZS5jOjU0NjpcXHRzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICptZDtcXG5uZXQvaXB2NC9pcF9ncmUuYy01NDctXFx0Ym9vbCB0cnVuY2F0ZSA9IGZhbHNlO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNTY2LVxcdHZlcnNpb24gPSBtZC1cXHUwMDNldmVyc2lvbjtcXG5uZXQvaXB2NC9pcF9ncmUuYzo1Njc6XFx0dHVubmVsX2hsZW4gPSA4ICsgZXJzcGFuX2hkcl9sZW4odmVyc2lvbik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtNTY4LVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNTk3LVxcdGlmICh2ZXJzaW9uID09IDEpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzo1OTg6XFx0XFx0ZXJzcGFuX2J1aWxkX2hlYWRlcihza2IsIG50b2hsKHR1bm5lbF9pZF90b19rZXkzMihrZXktXFx1MDAzZXR1bl9pZCkpLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTU5OS1cXHRcXHRcXHRcXHQgICAgbnRvaGwobWQtXFx1MDAzZXUuaW5kZXgpLCB0cnVuY2F0ZSwgdHJ1ZSk7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy02MDEtXFx0fSBlbHNlIGlmICh2ZXJzaW9uID09IDIpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzo2MDI6XFx0XFx0ZXJzcGFuX2J1aWxkX2hlYWRlcl92Mihza2IsXFxubmV0L2lwdjQvaXBfZ3JlLmMtNjAzLVxcdFxcdFxcdFxcdCAgICAgICBudG9obCh0dW5uZWxfaWRfdG9fa2V5MzIoa2V5LVxcdTAwM2V0dW5faWQpKSxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTY0OT1zdGF0aWMgbmV0ZGV2X3R4X3QgaXBncmVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtNzAyLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjcwMzpzdGF0aWMgbmV0ZGV2X3R4X3QgZXJzcGFuX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2NC9pcF9ncmUuYy03MDQtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy03MTQtXFx0aWYgKHR1bm5lbC1cXHUwMDNlY29sbGVjdF9tZCkge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjcxNTpcXHRcXHRlcnNwYW5fZmJfeG1pdChza2IsIGRldik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtNzE2LVxcdFxcdHJldHVybiBORVRERVZfVFhfT0s7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy03MzMtXFx0LyogUHVzaCBFUlNQQU4gaGVhZGVyICovXFxubmV0L2lwdjQvaXBfZ3JlLmM6NzM0OlxcdGlmICh0dW5uZWwtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMCkge1xcbm5ldC9pcHY0L2lwX2dyZS5jLTczNS1cXHRcXHRwcm90byA9IGh0b25zKEVUSF9QX0VSU1BBTik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtNzM2LVxcdFxcdF9fY2xlYXJfYml0KElQX1RVTk5FTF9TRVFfQklULCBmbGFncyk7XFxubmV0L2lwdjQvaXBfZ3JlLmM6NzM3OlxcdH0gZWxzZSBpZiAodHVubmVsLVxcdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzo3Mzg6XFx0XFx0ZXJzcGFuX2J1aWxkX2hlYWRlcihza2IsIG50b2hsKHR1bm5lbC1cXHUwMDNlcGFybXMub19rZXkpLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTczOS1cXHRcXHRcXHRcXHQgICAgdHVubmVsLVxcdTAwM2VpbmRleCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTc0MS1cXHRcXHRwcm90byA9IGh0b25zKEVUSF9QX0VSU1BBTik7XFxubmV0L2lwdjQvaXBfZ3JlLmM6NzQyOlxcdH0gZWxzZSBpZiAodHVubmVsLVxcdTAwM2VlcnNwYW5fdmVyID09IDIpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzo3NDM6XFx0XFx0ZXJzcGFuX2J1aWxkX2hlYWRlcl92Mihza2IsIG50b2hsKHR1bm5lbC1cXHUwMDNlcGFybXMub19rZXkpLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTc0NC1cXHRcXHRcXHRcXHQgICAgICAgdHVubmVsLVxcdTAwM2VkaXIsIHR1bm5lbC1cXHUwMDNlaHdpZCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTgyMj1zdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTg1NS1cXG5uZXQvaXB2NC9pcF9ncmUuYzo4NTY6XFx0XFx0aWYgKHN0cmNtcChkZXYtXFx1MDAzZXJ0bmxfbGlua19vcHMtXFx1MDAzZWtpbmQsIFxcXCJlcnNwYW5cXFwiKSlcXG5uZXQvaXB2NC9pcF9ncmUuYy04NTctXFx0XFx0XFx0aXBncmVfbGlua191cGRhdGUoZGV2LCB0cnVlKTtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTExMjI9c3RhdGljIGludCBpcGdyZV90YXBfdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTE0Ni1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxMTQ3OnN0YXRpYyBpbnQgZXJzcGFuX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMTQ4LVxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTExODc9c3RhdGljIGludCBpcGdyZV9uZXRsaW5rX3Bhcm1zKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjU1LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEyNTY6c3RhdGljIGludCBlcnNwYW5fbmV0bGlua19wYXJtcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTEyNTctXFx0XFx0XFx0XFx0c3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI3MS1cXHRpZiAoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjEyNzI6XFx0XFx0dC1cXHUwMDNlZXJzcGFuX3ZlciA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI3My1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxMjc0OlxcdFxcdGlmICh0LVxcdTAwM2VlcnNwYW5fdmVyIFxcdTAwM2UgMilcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjc1LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTI3Ny1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxMjc4OlxcdGlmICh0LVxcdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjc5LVxcdFxcdGlmIChkYXRhW0lGTEFfR1JFX0VSU1BBTl9JTkRFWF0pIHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEyODMtXFx0XFx0fVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEyODQ6XFx0fSBlbHNlIGlmICh0LVxcdTAwM2VlcnNwYW5fdmVyID09IDIpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMjg1LVxcdFxcdGlmIChkYXRhW0lGTEFfR1JFX0VSU1BBTl9ESVJdKSB7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM1NC1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzU1OnN0YXRpYyBpbnQgZXJzcGFuX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM1Ni17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzU4LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEzNTk6XFx0aWYgKHR1bm5lbC1cXHUwMDNlZXJzcGFuX3ZlciA9PSAwKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNjAtXFx0XFx0dHVubmVsLVxcdTAwM2V0dW5faGxlbiA9IDQ7IC8qIDQtYnl0ZSBHUkUgaGRyLiAqL1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM2NS1cXHR0dW5uZWwtXFx1MDAzZWhsZW4gPSB0dW5uZWwtXFx1MDAzZXR1bl9obGVuICsgdHVubmVsLVxcdTAwM2VlbmNhcF9obGVuICtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzY2OlxcdFxcdCAgICAgICBlcnNwYW5faGRyX2xlbih0dW5uZWwtXFx1MDAzZWVyc3Bhbl92ZXIpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNjctXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzc1LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjEzNzY6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBlcnNwYW5fbmV0ZGV2X29wcyA9IHtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzc3OlxcdC5uZG9faW5pdFxcdFxcdD0gZXJzcGFuX3R1bm5lbF9pbml0LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNzgtXFx0Lm5kb191bmluaXRcXHRcXHQ9IGlwX3R1bm5lbF91bmluaXQsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTM3OTpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IGVyc3Bhbl94bWl0LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzODAtXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcXHQ9IGV0aF9tYWNfYWRkcixcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTE0MTQ9c3RhdGljIGludCBpcGdyZV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDM0LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE0MzU6c3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE0MzYtXFx0XFx0XFx0ICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ0OC1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNDQ5OlxcdGVyciA9IGVyc3Bhbl9uZXRsaW5rX3Bhcm1zKGRldiwgZGF0YSwgdGIsIFxcdTAwMjZwLCBcXHUwMDI2ZndtYXJrKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDUwLVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDU2PXN0YXRpYyBpbnQgaXBncmVfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ4Ny1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNDg4OnN0YXRpYyBpbnQgZXJzcGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDg5LVxcdFxcdFxcdCAgICAgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTUwMy1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNTA0OlxcdGVyciA9IGVyc3Bhbl9uZXRsaW5rX3Bhcm1zKGRldiwgZGF0YSwgdGIsIFxcdTAwMjZwLCBcXHUwMDI2ZndtYXJrKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNTA1LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTU2Nj1zdGF0aWMgaW50IGlwZ3JlX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTU3My1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNTc0OlxcdGlmICh0LVxcdTAwM2VlcnNwYW5fdmVyICE9IDAgXFx1MDAyNlxcdTAwMjYgIXQtXFx1MDAzZWNvbGxlY3RfbWQpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTU3NS1cXHRcXHRfX3NldF9iaXQoSVBfVFVOTkVMX0tFWV9CSVQsIG9fZmxhZ3MpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYxNi1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjE3OnN0YXRpYyBpbnQgZXJzcGFuX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE2MTgte1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyMC1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjIxOlxcdGlmICh0LVxcdTAwM2VlcnNwYW5fdmVyIFxcdTAwM2M9IDIpIHtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjIyOlxcdFxcdGlmIChubGFfcHV0X3U4KHNrYiwgSUZMQV9HUkVfRVJTUEFOX1ZFUiwgdC1cXHUwMDNlZXJzcGFuX3ZlcikpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyMy1cXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjI0LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2MjU6XFx0XFx0aWYgKHQtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMSkge1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE2MjYtXFx0XFx0XFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9HUkVfRVJTUEFOX0lOREVYLCB0LVxcdTAwM2VpbmRleCkpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyNy1cXHRcXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjI4OlxcdFxcdH0gZWxzZSBpZiAodC1cXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTYyOS1cXHRcXHRcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9ESVIsIHQtXFx1MDAzZWRpcikpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjQxLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2NDI6c3RhdGljIHZvaWQgZXJzcGFuX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY0My17XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjQ3LVxcdGRldi1cXHUwMDNlbWF4X210dSA9IDA7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTY0ODpcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2ZXJzcGFuX25ldGRldl9vcHM7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY0OS1cXHRkZXYtXFx1MDAzZXByaXZfZmxhZ3MgXFx1MDAyNj0gfklGRl9UWF9TS0JfU0hBUklORztcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjUwLVxcdGRldi1cXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjUxOlxcdGlwX3R1bm5lbF9zZXR1cChkZXYsIGVyc3Bhbl9uZXRfaWQpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE2NTI6XFx0dC1cXHUwMDNlZXJzcGFuX3ZlciA9IDE7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY1My19XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNjk0PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcGdyZV90YXBfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzA4LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MDk6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGVyc3Bhbl9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTA6XFx0LmtpbmRcXHRcXHQ9IFxcXCJlcnNwYW5cXFwiLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTEtXFx0Lm1heHR5cGVcXHQ9IElGTEFfR1JFX01BWCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MTMtXFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBpcF90dW5uZWwpLFxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3MTQ6XFx0LnNldHVwXFx0XFx0PSBlcnNwYW5fc2V0dXAsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcxNTpcXHQudmFsaWRhdGVcXHQ9IGVyc3Bhbl92YWxpZGF0ZSxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzE2OlxcdC5uZXdsaW5rXFx0PSBlcnNwYW5fbmV3bGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzE3OlxcdC5jaGFuZ2VsaW5rXFx0PSBlcnNwYW5fY2hhbmdlbGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzE4LVxcdC5kZWxsaW5rXFx0PSBpcF90dW5uZWxfZGVsbGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzE5LVxcdC5nZXRfc2l6ZVxcdD0gaXBncmVfZ2V0X3NpemUsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTcyMDpcXHQuZmlsbF9pbmZvXFx0PSBlcnNwYW5fZmlsbF9pbmZvLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3MjEtXFx0LmdldF9saW5rX25ldFxcdD0gaXBfdHVubmVsX2dldF9saW5rX25ldCxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTE3ODI9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcGdyZV90YXBfbmV0X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3ODgtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc4OTpzdGF0aWMgaW50IF9fbmV0X2luaXQgZXJzcGFuX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzkwLXtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzkxOlxcdHJldHVybiBpcF90dW5uZWxfaW5pdF9uZXQobmV0LCBlcnNwYW5fbmV0X2lkLFxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3OTI6XFx0XFx0XFx0XFx0ICBcXHUwMDI2ZXJzcGFuX2xpbmtfb3BzLCBcXFwiZXJzcGFuMFxcXCIpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTMtfVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTQtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc5NTpzdGF0aWMgdm9pZCBfX25ldF9leGl0IGVyc3Bhbl9leGl0X3J0bmwoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE3OTYtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGxpc3RfaGVhZCAqZGV2X3RvX2tpbGwpXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTc5Ny17XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTc5ODpcXHRpcF90dW5uZWxfZGVsZXRlX25ldChuZXQsIGVyc3Bhbl9uZXRfaWQsIFxcdTAwMjZlcnNwYW5fbGlua19vcHMsIGRldl90b19raWxsKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzk5LX1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xODAwLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MDE6c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBlcnNwYW5fbmV0X29wcyA9IHtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxODAyOlxcdC5pbml0ID0gZXJzcGFuX2luaXRfbmV0LFxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MDM6XFx0LmV4aXRfcnRubCA9IGVyc3Bhbl9leGl0X3J0bmwsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTgwNDpcXHQuaWQgICA9IFxcdTAwMjZlcnNwYW5fbmV0X2lkLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE4MDUtXFx0LnNpemUgPSBzaXplb2Yoc3RydWN0IGlwX3R1bm5lbF9uZXQpLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTgwOD1zdGF0aWMgaW50IF9faW5pdCBpcGdyZV9pbml0KHZvaWQpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xODIxLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4MjI6XFx0ZXJyID0gcmVnaXN0ZXJfcGVybmV0X2RldmljZShcXHUwMDI2ZXJzcGFuX25ldF9vcHMpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE4MjMtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTgyNDpcXHRcXHRnb3RvIHBuZXRfZXJzcGFuX2ZhaWxlZDtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xODI1LVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTgzOS1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxODQwOlxcdGVyciA9IHJ0bmxfbGlua19yZWdpc3RlcihcXHUwMDI2ZXJzcGFuX2xpbmtfb3BzKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xODQxLVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NDI6XFx0XFx0Z290byBlcnNwYW5fbGlua19mYWlsZWQ7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg0My1cXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE4NDUtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTg0NjplcnNwYW5fbGlua19mYWlsZWQ6XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg0Ny1cXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcXHUwMDI2aXBncmVfdGFwX29wcyk7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xODUyLWFkZF9wcm90b19mYWlsZWQ6XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTg1MzpcXHR1bnJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXFx1MDAyNmVyc3Bhbl9uZXRfb3BzKTtcXG5uZXQvaXB2NC9pcF9ncmUuYzoxODU0OnBuZXRfZXJzcGFuX2ZhaWxlZDpcXG5uZXQvaXB2NC9pcF9ncmUuYy0xODU1LVxcdHVucmVnaXN0ZXJfcGVybmV0X2RldmljZShcXHUwMDI2aXBncmVfdGFwX25ldF9vcHMpO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTg2MT1zdGF0aWMgdm9pZCBfX2V4aXQgaXBncmVfZmluaSh2b2lkKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2NC1cXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcXHUwMDI2aXBncmVfbGlua19vcHMpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE4NjU6XFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNmVyc3Bhbl9saW5rX29wcyk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2Ni1cXHRncmVfZGVsX3Byb3RvY29sKFxcdTAwMjZpcGdyZV9wcm90b2NvbCwgR1JFUFJPVE9fQ0lTQ08pO1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg2OC1cXHR1bnJlZ2lzdGVyX3Blcm5ldF9kZXZpY2UoXFx1MDAyNmlwZ3JlX25ldF9vcHMpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE4Njk6XFx0dW5yZWdpc3Rlcl9wZXJuZXRfZGV2aWNlKFxcdTAwMjZlcnNwYW5fbmV0X29wcyk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg3MC19XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xODc3PU1PRFVMRV9BTElBU19SVE5MX0xJTksoXFxcImdyZXRhcFxcXCIpO1xcbm5ldC9pcHY0L2lwX2dyZS5jOjE4Nzg6TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcXFwiZXJzcGFuXFxcIik7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTg3OS1NT0RVTEVfQUxJQVNfTkVUREVWKFxcXCJncmUwXFxcIik7XFxubmV0L2lwdjQvaXBfZ3JlLmM9MTg4MD1NT0RVTEVfQUxJQVNfTkVUREVWKFxcXCJncmV0YXAwXFxcIik7XFxubmV0L2lwdjQvaXBfZ3JlLmM6MTg4MTpNT0RVTEVfQUxJQVNfTkVUREVWKFxcXCJlcnNwYW4wXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE4OjQ2OjI0LjM1MjYxNzkxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3MDcyOTgyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRVJTUEFOIERlZXAgRGl2ZSBpbiBLZXJuZWwgU291cmNlKipcblxuQWxyaWdodCwgc28gRVJTUEFOLi4uIHJpZ2h0LCBpdCdzIGJha2VkIGludG8gdGhlIGBDT05GSUdfTkVUX0lQR1JFYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gTWFrZXMgc2Vuc2UuIE5vdywgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIHRoZSBwcmltYXJ5IGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBoYW5naW5nIG91dCBzb21ld2hlcmUgaW4gdGhlIElQdjYgR1JFIGNvZGUsIHByb2JhYmx5IHNoYXJpbmcgYSBsb3Qgb2YgaW5mcmFzdHJ1Y3R1cmUgd2l0aCBzdGFuZGFyZCBHUkUuIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gY2hlY2sgb3V0IGBuZXQvaXB2Ni9pcDZfZ3JlLmNgLiBUaGF0J3MgdGhlIGxpa2VseSBzcG90IHRvIGZpbmQgdGhlIGd1dHMgb2YgdGhlIEVSU1BBTiBmdW5jdGlvbmFsaXR5LCBtYXliZSBzb21lIG9mIHRoZSBwYWNrZXQgcGFyc2luZyBsb2dpYywgY29udHJvbCBwYXRoLCBhbmQgcGVyaGFwcyB0aGUgdHVubmVsIGVuY2FwL2RlY2FwIHJvdXRpbmVzLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIHRoYXQgZmlsZSBhbmQgc2VlIGhvdyB0aGUgRVJTUEFOIGJpdHMgaGF2ZSBiZWVuIGludGVncmF0ZWQsIHdoYXQgbWFjcm9zIGFyZSB1c2VkLCBhbmQgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLiBIb3BlZnVsbHksIHRoaXMgZmlsZSBwcm92aWRlcyB0aGUgY29tcGxldGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2NTUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxODo0NjoyNy45MjMzNTAwNzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5Mzg4NjA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlcnNwYW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvaXA2X2dyZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9ncmUuYy01My0jaW5jbHVkZSBcXHUwMDNjbmV0L2dyZS5oXFx1MDAzZVxcbm5ldC9pcHY2L2lwNl9ncmUuYzo1NDojaW5jbHVkZSBcXHUwMDNjbmV0L2Vyc3Bhbi5oXFx1MDAzZVxcbm5ldC9pcHY2L2lwNl9ncmUuYy01NS0jaW5jbHVkZSBcXHUwMDNjbmV0L2RzdF9tZXRhZGF0YS5oXFx1MDAzZVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTY2PXN0cnVjdCBpcDZncmVfbmV0IHtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy02OS1cXHRzdHJ1Y3QgaXA2X3RubCBfX3JjdSAqY29sbGVjdF9tZF90dW47XFxubmV0L2lwdjYvaXA2X2dyZS5jOjcwOlxcdHN0cnVjdCBpcDZfdG5sIF9fcmN1ICpjb2xsZWN0X21kX3R1bl9lcnNwYW47XFxubmV0L2lwdjYvaXA2X2dyZS5jLTcxLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpmYl90dW5uZWxfZGV2O1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTc1PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcDZncmVfdGFwX29wcyBfX3JlYWRfbW9zdGx5O1xcbm5ldC9pcHY2L2lwNl9ncmUuYzo3NjpzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXA2ZXJzcGFuX3RhcF9vcHMgX19yZWFkX21vc3RseTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNzctc3RhdGljIGludCBpcDZncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9ODA9c3RhdGljIHZvaWQgaXA2Z3JlX3RubF9saW5rX2NvbmZpZyhzdHJ1Y3QgaXA2X3RubCAqdCwgaW50IHNldF9tdHUpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYzo4MTpzdGF0aWMgdm9pZCBpcDZlcnNwYW5fdG5sX2xpbmtfY29uZmlnKHN0cnVjdCBpcDZfdG5sICp0LCBpbnQgc2V0X210dSk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTgyLVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTE0MD1zdGF0aWMgc3RydWN0IGlwNl90bmwgKmlwNmdyZV90dW5uZWxfbG9va3VwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjAzLVxcdCAgICBncmVfcHJvdG8gPT0gaHRvbnMoRVRIX1BfRVJTUEFOMikpXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIwNDpcXHRcXHR0ID0gcmN1X2RlcmVmZXJlbmNlKGlnbi1cXHUwMDNlY29sbGVjdF9tZF90dW5fZXJzcGFuKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjA1LVxcdGVsc2VcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0yMzY9c3RhdGljIHZvaWQgaXA2Z3JlX3R1bm5lbF9saW5rX21kKHN0cnVjdCBpcDZncmVfbmV0ICppZ24sIHN0cnVjdCBpcDZfdG5sICp0KVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTI0MS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjQyOnN0YXRpYyB2b2lkIGlwNmVyc3Bhbl90dW5uZWxfbGlua19tZChzdHJ1Y3QgaXA2Z3JlX25ldCAqaWduLCBzdHJ1Y3QgaXA2X3RubCAqdClcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjQzLXtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjQ0LVxcdGlmICh0LVxcdTAwM2VwYXJtcy5jb2xsZWN0X21kKVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyNDU6XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKGlnbi1cXHUwMDNlY29sbGVjdF9tZF90dW5fZXJzcGFuLCB0KTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjQ2LX1cXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0yNDg9c3RhdGljIHZvaWQgaXA2Z3JlX3R1bm5lbF91bmxpbmtfbWQoc3RydWN0IGlwNmdyZV9uZXQgKmlnbiwgc3RydWN0IGlwNl90bmwgKnQpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjUzLVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyNTQ6c3RhdGljIHZvaWQgaXA2ZXJzcGFuX3R1bm5lbF91bmxpbmtfbWQoc3RydWN0IGlwNmdyZV9uZXQgKmlnbixcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjU1LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaXA2X3RubCAqdClcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yNTctXFx0aWYgKHQtXFx1MDAzZXBhcm1zLmNvbGxlY3RfbWQpXFxubmV0L2lwdjYvaXA2X2dyZS5jOjI1ODpcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIoaWduLVxcdTAwM2Vjb2xsZWN0X21kX3R1bl9lcnNwYW4sIE5VTEwpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0yNTktfVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTMxNT1zdGF0aWMgc3RydWN0IGlwNl90bmwgKmlwNmdyZV90dW5uZWxfbG9jYXRlKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0zNjEtXFxubmV0L2lwdjYvaXA2X2dyZS5jOjM2MjpzdGF0aWMgdm9pZCBpcDZlcnNwYW5fdHVubmVsX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0zNjMte1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTM2Ni1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MzY3OlxcdGlwNmVyc3Bhbl90dW5uZWxfdW5saW5rX21kKGlnbiwgdCk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTM2OC1cXHRpcDZncmVfdHVubmVsX3VubGluayhpZ24sIHQpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTQ1Nz1zdGF0aWMgaW50IGlwNmdyZV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRubF9wdGtfaW5mbyAqdHBpKVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTQ4OS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NDkwOnN0YXRpYyBpbnQgaXA2ZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY2L2lwNl9ncmUuYy00OTEtXFx0XFx0XFx0IHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSxcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy00OTMte1xcbm5ldC9pcHY2L2lwNl9ncmUuYzo0OTQ6XFx0c3RydWN0IGVyc3Bhbl9iYXNlX2hkciAqZXJzaGRyO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy00OTUtXFx0Y29uc3Qgc3RydWN0IGlwdjZoZHIgKmlwdjZoO1xcbm5ldC9pcHY2L2lwNl9ncmUuYzo0OTY6XFx0c3RydWN0IGVyc3Bhbl9tZDIgKm1kMjtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNDk3LVxcdHN0cnVjdCBpcDZfdG5sICp0dW5uZWw7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNTAzLVxcdGlwdjZoID0gaXB2Nl9oZHIoc2tiKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTA0OlxcdGVyc2hkciA9IChzdHJ1Y3QgZXJzcGFuX2Jhc2VfaGRyICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy01MDUtXFx0dmVyID0gZXJzaGRyLVxcdTAwM2V2ZXI7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNTEwLVxcdGlmICh0dW5uZWwpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTExOlxcdFxcdGludCBsZW4gPSBlcnNwYW5faGRyX2xlbih2ZXIpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy01MTItXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNTIxLVxcdFxcdGlmICh0dW5uZWwtXFx1MDAzZXBhcm1zLmNvbGxlY3RfbWQpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTIyOlxcdFxcdFxcdHN0cnVjdCBlcnNwYW5fbWV0YWRhdGEgKnBrdF9tZCwgKm1kO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy01MjMtXFx0XFx0XFx0SVBfVFVOTkVMX0RFQ0xBUkVfRkxBR1MoZmxhZ3MpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTU0Ny1cXHRcXHRcXHQgICAgIHNrYl9uZXR3b3JrX2hlYWRlcl9sZW4oc2tiKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTQ4OlxcdFxcdFxcdHBrdF9tZCA9IChzdHJ1Y3QgZXJzcGFuX21ldGFkYXRhICopKGdoICsgZ3JlX2hkcl9sZW4gK1xcbm5ldC9pcHY2L2lwNl9ncmUuYy01NDktXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHNpemVvZigqZXJzaGRyKSk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9NTcwPXN0YXRpYyBpbnQgZ3JlX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTU4NC1cXHRcXHQgICAgIHRwaS5wcm90byA9PSBodG9ucyhFVEhfUF9FUlNQQU4yKSkpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTg1OlxcdFxcdGlmIChpcDZlcnNwYW5fcmN2KHNrYiwgXFx1MDAyNnRwaSwgaGRyX2xlbikgPT0gUEFDS0VUX1JDVkQpXFxubmV0L2lwdjYvaXA2X2dyZS5jLTU4Ni1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz04Nzg9c3RhdGljIG5ldGRldl90eF90IGlwNmdyZV90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTkxNi1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6OTE3OnN0YXRpYyBuZXRkZXZfdHhfdCBpcDZlcnNwYW5fdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtOTE4LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTk3My1cXHRcXHRjb25zdCBzdHJ1Y3QgaXBfdHVubmVsX2tleSAqa2V5O1xcbm5ldC9pcHY2L2lwNl9ncmUuYzo5NzQ6XFx0XFx0c3RydWN0IGVyc3Bhbl9tZXRhZGF0YSAqbWQ7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTk3NS1cXHRcXHRfX2JlMzIgdHVuX2lkO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTk5OS1cXHRcXHRpZiAobWQtXFx1MDAzZXZlcnNpb24gPT0gMSkge1xcbm5ldC9pcHY2L2lwNl9ncmUuYzoxMDAwOlxcdFxcdFxcdGVyc3Bhbl9idWlsZF9oZWFkZXIoc2tiLFxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xMDAxLVxcdFxcdFxcdFxcdFxcdCAgICBudG9obCh0dW5faWQpLFxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTEwMDUtXFx0XFx0fSBlbHNlIGlmIChtZC1cXHUwMDNldmVyc2lvbiA9PSAyKSB7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjEwMDY6XFx0XFx0XFx0ZXJzcGFuX2J1aWxkX2hlYWRlcl92Mihza2IsXFxubmV0L2lwdjYvaXA2X2dyZS5jLTEwMDctXFx0XFx0XFx0XFx0XFx0ICAgICAgIG50b2hsKHR1bl9pZCksXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTAzMy1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTAzNDpcXHRcXHRpZiAodC1cXHUwMDNlcGFybXMuZXJzcGFuX3ZlciA9PSAxKSB7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjEwMzU6XFx0XFx0XFx0ZXJzcGFuX2J1aWxkX2hlYWRlcihza2IsIG50b2hsKHQtXFx1MDAzZXBhcm1zLm9fa2V5KSxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTAzNi1cXHRcXHRcXHRcXHRcXHQgICAgdC1cXHUwMDNlcGFybXMuaW5kZXgsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTAzOC1cXHRcXHRcXHRwcm90byA9IGh0b25zKEVUSF9QX0VSU1BBTik7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjEwMzk6XFx0XFx0fSBlbHNlIGlmICh0LVxcdTAwM2VwYXJtcy5lcnNwYW5fdmVyID09IDIpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTA0MDpcXHRcXHRcXHRlcnNwYW5fYnVpbGRfaGVhZGVyX3YyKHNrYiwgbnRvaGwodC1cXHUwMDNlcGFybXMub19rZXkpLFxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xMDQxLVxcdFxcdFxcdFxcdFxcdCAgICAgICB0LVxcdTAwM2VwYXJtcy5kaXIsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTE4Nz1zdGF0aWMgdm9pZCBpcDZncmVfdG5sX2NvcHlfdG5sX3Bhcm0oc3RydWN0IGlwNl90bmwgKnQsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTIwMi1cXHR0LVxcdTAwM2VwYXJtcy5md21hcmsgPSBwLVxcdTAwM2Vmd21hcms7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjEyMDM6XFx0dC1cXHUwMDNlcGFybXMuZXJzcGFuX3ZlciA9IHAtXFx1MDAzZWVyc3Bhbl92ZXI7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTEyMDQtXFx0dC1cXHUwMDNlcGFybXMuaW5kZXggPSBwLVxcdTAwM2VpbmRleDtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0xNTUyPXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaXA2Z3JlX2V4aXRfcnRubF9uZXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTE1NjAtXFx0XFx0ICAgIGRldi1cXHUwMDNlcnRubF9saW5rX29wcyA9PSBcXHUwMDI2aXA2Z3JlX3RhcF9vcHMgfHxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTU2MTpcXHRcXHQgICAgZGV2LVxcdTAwM2VydG5sX2xpbmtfb3BzID09IFxcdTAwMjZpcDZlcnNwYW5fdGFwX29wcylcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTU2Mi1cXHRcXHRcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTE2NDg9c3RhdGljIGludCBpcDZncmVfdGFwX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNjcyLVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoxNjczOnN0YXRpYyBpbnQgaXA2ZXJzcGFuX3RhcF92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxubmV0L2lwdjYvaXA2X2dyZS5jLTE2NzQtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTczNy1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTczODpzdGF0aWMgdm9pZCBpcDZlcnNwYW5fc2V0X3ZlcnNpb24oc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNzM5LVxcdFxcdFxcdFxcdCAgc3RydWN0IF9faXA2X3RubF9wYXJtICpwYXJtcylcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNzQzLVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoxNzQ0OlxcdHBhcm1zLVxcdTAwM2VlcnNwYW5fdmVyID0gMTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTc0NS1cXHRpZiAoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSlcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTc0NjpcXHRcXHRwYXJtcy1cXHUwMDNlZXJzcGFuX3ZlciA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX0dSRV9FUlNQQU5fVkVSXSk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTE3NDctXFxubmV0L2lwdjYvaXA2X2dyZS5jOjE3NDg6XFx0aWYgKHBhcm1zLVxcdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTc0OS1cXHRcXHRpZiAoZGF0YVtJRkxBX0dSRV9FUlNQQU5fSU5ERVhdKVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNzUwLVxcdFxcdFxcdHBhcm1zLVxcdTAwM2VpbmRleCA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0lOREVYXSk7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjE3NTE6XFx0fSBlbHNlIGlmIChwYXJtcy1cXHUwMDNlZXJzcGFuX3ZlciA9PSAyKSB7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTE3NTItXFx0XFx0aWYgKGRhdGFbSUZMQV9HUkVfRVJTUEFOX0RJUl0pXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTgyMj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlwNmdyZV90YXBfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xODMxLVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoxODMyOnN0YXRpYyBpbnQgaXA2ZXJzcGFuX2NhbGNfaGxlbihzdHJ1Y3QgaXA2X3RubCAqdHVubmVsKVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xODMzLXtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xODM3LVxcdHR1bm5lbC1cXHUwMDNlaGxlbiA9IHR1bm5lbC1cXHUwMDNldHVuX2hsZW4gKyB0dW5uZWwtXFx1MDAzZWVuY2FwX2hsZW4gK1xcbm5ldC9pcHY2L2lwNl9ncmUuYzoxODM4OlxcdFxcdCAgICAgICBlcnNwYW5faGRyX2xlbih0dW5uZWwtXFx1MDAzZXBhcm1zLmVyc3Bhbl92ZXIpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0xODM5LVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTE4NDQtXFxubmV0L2lwdjYvaXA2X2dyZS5jOjE4NDU6c3RhdGljIGludCBpcDZlcnNwYW5fdGFwX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg0Ni17XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg2My1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg2NDpcXHR0X2hsZW4gPSBpcDZlcnNwYW5fY2FsY19obGVuKHR1bm5lbCk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTE4NjUtXFx0ZGV2LVxcdTAwM2VtdHUgPSBFVEhfREFUQV9MRU4gLSB0X2hsZW47XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg3MS1cXHRkZXYtXFx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0xJVkVfQUREUl9DSEFOR0U7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjE4NzI6XFx0aXA2ZXJzcGFuX3RubF9saW5rX2NvbmZpZyh0dW5uZWwsIDEpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0xODczLVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTE4ODItXFxubmV0L2lwdjYvaXA2X2dyZS5jOjE4ODM6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcDZlcnNwYW5fbmV0ZGV2X29wcyA9IHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg4NDpcXHQubmRvX2luaXQgPVxcdFxcdGlwNmVyc3Bhbl90YXBfaW5pdCxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg4NTpcXHQubmRvX3VuaW5pdCA9XFx0XFx0aXA2ZXJzcGFuX3R1bm5lbF91bmluaXQsXFxubmV0L2lwdjYvaXA2X2dyZS5jOjE4ODY6XFx0Lm5kb19zdGFydF94bWl0ID1cXHRpcDZlcnNwYW5fdHVubmVsX3htaXQsXFxubmV0L2lwdjYvaXA2X2dyZS5jLTE4ODctXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgPVxcdGV0aF9tYWNfYWRkcixcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0yMTE1PXN0YXRpYyBpbnQgaXA2Z3JlX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIxMjItXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIxMjM6XFx0aWYgKHAtXFx1MDAzZWVyc3Bhbl92ZXIgPT0gMSB8fCBwLVxcdTAwM2VlcnNwYW5fdmVyID09IDIpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjEyNC1cXHRcXHRpZiAoIXAtXFx1MDAzZWNvbGxlY3RfbWQpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjEyNi1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjEyNzpcXHRcXHRpZiAobmxhX3B1dF91OChza2IsIElGTEFfR1JFX0VSU1BBTl9WRVIsIHAtXFx1MDAzZWVyc3Bhbl92ZXIpKVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMTI4LVxcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMTI5LVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMTMwOlxcdFxcdGlmIChwLVxcdTAwM2VlcnNwYW5fdmVyID09IDEpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjEzMS1cXHRcXHRcXHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX0dSRV9FUlNQQU5fSU5ERVgsIHAtXFx1MDAzZWluZGV4KSlcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0yMTc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBpcDZncmVfcG9saWN5W0lGTEFfR1JFX01BWCArIDFdID0ge1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyMDEtXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIyMDI6c3RhdGljIHZvaWQgaXA2ZXJzcGFuX3RhcF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjAzLXtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjA2LVxcdGRldi1cXHUwMDNlbWF4X210dSA9IDA7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjIyMDc6XFx0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzID0gXFx1MDAyNmlwNmVyc3Bhbl9uZXRkZXZfb3BzO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjA4LVxcdGRldi1cXHUwMDNlbmVlZHNfZnJlZV9uZXRkZXYgPSB0cnVlO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyMTYtXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIyMTc6c3RhdGljIGludCBpcDZlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjE4LVxcdFxcdFxcdCAgICAgc3RydWN0IHJ0bmxfbmV3bGlua19wYXJhbXMgKnBhcmFtcyxcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjI4LVxcdGlwNmdyZV9uZXRsaW5rX3Bhcm1zKGRhdGEsIFxcdTAwMjZudC1cXHUwMDNlcGFybXMpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjI5OlxcdGlwNmVyc3Bhbl9zZXRfdmVyc2lvbihkYXRhLCBcXHUwMDI2bnQtXFx1MDAzZXBhcm1zKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjIzMC1cXHRpZ24gPSBuZXRfZ2VuZXJpYyhuZXQsIGlwNmdyZV9uZXRfaWQpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyMzItXFx0aWYgKG50LVxcdTAwM2VwYXJtcy5jb2xsZWN0X21kKSB7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjIyMzM6XFx0XFx0aWYgKHJ0bmxfZGVyZWZlcmVuY2UoaWduLVxcdTAwM2Vjb2xsZWN0X21kX3R1bl9lcnNwYW4pKVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjM0LVxcdFxcdFxcdHJldHVybiAtRUVYSVNUO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyNDEtXFx0aWYgKCFlcnIpIHtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI0MjpcXHRcXHRpcDZlcnNwYW5fdG5sX2xpbmtfY29uZmlnKG50LCAhdGJbSUZMQV9NVFVdKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI0MzpcXHRcXHRpcDZlcnNwYW5fdHVubmVsX2xpbmtfbWQoaWduLCBudCk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyNDQtXFx0XFx0aXA2Z3JlX3R1bm5lbF9saW5rKG5ldF9nZW5lcmljKG5ldCwgaXA2Z3JlX25ldF9pZCksIG50KTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjQ4LVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjQ5OnN0YXRpYyB2b2lkIGlwNmVyc3Bhbl90bmxfbGlua19jb25maWcoc3RydWN0IGlwNl90bmwgKnQsIGludCBzZXRfbXR1KVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjUwLXtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI1MS1cXHRpcDZncmVfdG5sX2xpbmtfY29uZmlnX2NvbW1vbih0KTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI1MjpcXHRpcDZncmVfdG5sX2xpbmtfY29uZmlnX3JvdXRlKHQsIHNldF9tdHUsIGlwNmVyc3Bhbl9jYWxjX2hsZW4odCkpO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjUzLX1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI1NC1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI1NTpzdGF0aWMgaW50IGlwNmVyc3Bhbl90bmxfY2hhbmdlKHN0cnVjdCBpcDZfdG5sICp0LFxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjU2LVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBfX2lwNl90bmxfcGFybSAqcCwgaW50IHNldF9tdHUpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI1OC1cXHRpcDZncmVfdG5sX2NvcHlfdG5sX3Bhcm0odCwgcCk7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjIyNTk6XFx0aXA2ZXJzcGFuX3RubF9saW5rX2NvbmZpZyh0LCBzZXRfbXR1KTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI2MC1cXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjYyLVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMjYzOnN0YXRpYyBpbnQgaXA2ZXJzcGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI2NC1cXHRcXHRcXHRcXHRzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjI3OC1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI3OTpcXHRpcDZlcnNwYW5fc2V0X3ZlcnNpb24oZGF0YSwgXFx1MDAyNnApO1xcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMjgwLVxcdGlwNmdyZV90dW5uZWxfdW5saW5rX21kKGlnbiwgdCk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyODEtXFx0aXA2Z3JlX3R1bm5lbF91bmxpbmsoaWduLCB0KTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjI4MjpcXHRpcDZlcnNwYW5fdG5sX2NoYW5nZSh0LCBcXHUwMDI2cCwgIXRiW0lGTEFfTVRVXSk7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjIyODM6XFx0aXA2ZXJzcGFuX3R1bm5lbF9saW5rX21kKGlnbiwgdCk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIyODQtXFx0aXA2Z3JlX3R1bm5lbF9saW5rKGlnbiwgdCk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MjMwMz1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXA2Z3JlX3RhcF9vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0yMzE2LVxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMzE3OnN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcDZlcnNwYW5fdGFwX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMzE4OlxcdC5raW5kXFx0XFx0PSBcXFwiaXA2ZXJzcGFuXFxcIixcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjMxOS1cXHQubWF4dHlwZVxcdD0gSUZMQV9HUkVfTUFYLFxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzMjEtXFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBpcDZfdG5sKSxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjMyMjpcXHQuc2V0dXBcXHRcXHQ9IGlwNmVyc3Bhbl90YXBfc2V0dXAsXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIzMjM6XFx0LnZhbGlkYXRlXFx0PSBpcDZlcnNwYW5fdGFwX3ZhbGlkYXRlLFxcbm5ldC9pcHY2L2lwNl9ncmUuYzoyMzI0OlxcdC5uZXdsaW5rXFx0PSBpcDZlcnNwYW5fbmV3bGluayxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjMyNTpcXHQuY2hhbmdlbGlua1xcdD0gaXA2ZXJzcGFuX2NoYW5nZWxpbmssXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzMjYtXFx0LmdldF9zaXplXFx0PSBpcDZncmVfZ2V0X3NpemUsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MjMzNT1zdGF0aWMgaW50IF9faW5pdCBpcDZncmVfaW5pdCh2b2lkKVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzNTgtXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIzNTk6XFx0ZXJyID0gcnRubF9saW5rX3JlZ2lzdGVyKFxcdTAwMjZpcDZlcnNwYW5fdGFwX29wcyk7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzNjAtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxubmV0L2lwdjYvaXA2X2dyZS5jOjIzNjE6XFx0XFx0Z290byBlcnNwYW5fbGlua19mYWlsZWQ7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzNjItXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjM2NS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MjM2NjplcnNwYW5fbGlua19mYWlsZWQ6XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzNjctXFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNmlwNmdyZV90YXBfb3BzKTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0yMzc3PXN0YXRpYyB2b2lkIF9fZXhpdCBpcDZncmVfZmluaSh2b2lkKVxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzODAtXFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNmlwNmdyZV9saW5rX29wcyk7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjIzODE6XFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNmlwNmVyc3Bhbl90YXBfb3BzKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMjM4Mi1cXHRpbmV0Nl9kZWxfcHJvdG9jb2woXFx1MDAyNmlwNmdyZV9wcm90b2NvbCwgSVBQUk9UT19HUkUpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTIzOTI9TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcXFwiaXA2Z3JldGFwXFxcIik7XFxubmV0L2lwdjYvaXA2X2dyZS5jOjIzOTM6TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcXFwiaXA2ZXJzcGFuXFxcIik7XFxubmV0L2lwdjYvaXA2X2dyZS5jLTIzOTQtTU9EVUxFX0FMSUFTX05FVERFVihcXFwiaXA2Z3JlMFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxODo0NjoyOC42MTcyNDE4NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjE4NDAyMjA2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdSRS9FUlNQQU4gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lIGRlYWxpbmcgd2l0aCBHUkUgYW5kIEVSU1BBTiBmdW5jdGlvbmFsaXR5LCBhbmQgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucyBhYm91dCB0aGUgY29kZSdzIGRlcGVuZGVuY2llcy4gRVJTUEFOIGlzIGluZGVlZCBidWlsdCBvbiB0b3Agb2YgYENPTkZJR19JUFY2X0dSRWAgYW5kIGBDT05GSUdfTkVUX0lQR1JFYCwgdGhhdCdzIHNvbGlkLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgY29yZSBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgdG91Y2hlZC4gSSd2ZSBpZGVudGlmaWVkOiBgaXBncmVfeG1pdGAsIGBlcnNwYW5feG1pdGAsIGBncmVfdGFwX3htaXRgLCBgaXBncmVfZmlsbF9pbmZvYCwgYGVyc3Bhbl9maWxsX2luZm9gLCBgX19ncmU2X3htaXRgLCBgaXA2ZXJzcGFuX3R1bm5lbF94bWl0YCwgYW5kIGBpcDZncmVfZmlsbF9pbmZvYC4gU2luY2UgYF9fZ3JlX3htaXRgIGlzIHN0YXRpYywgbXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGl0IG1pZ2h0IGJlIGlubGluZWQuIEdpdmVuIHRoYXQgdGhlIHBhdGNoIHRvdWNoZXMgaXQgZGlyZWN0bHksIGFuZCBpbmNsdWRlcyBpdHMgY2FsbGVycywgaXQncyB3aXNlIHRvIGluY2x1ZGUgYF9fZ3JlX3htaXRgIGFzIGEgc3ltYm9sLlxuXG5Mb29raW5nIGFnYWluIGF0IHdoYXQgaXMgYmVpbmcgbW9kaWZpZWQsIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zOlxuYF9fZ3JlX3htaXRgXG5gaXBncmVfeG1pdGBcbmBlcnNwYW5feG1pdGBcbmBncmVfdGFwX3htaXRgXG5gaXBncmVfZmlsbF9pbmZvYFxuYGVyc3Bhbl9maWxsX2luZm9gXG5gX19ncmU2X3htaXRgXG5gaXA2ZXJzcGFuX3R1bm5lbF94bWl0YFxuYGlwNmdyZV9maWxsX2luZm9gXG5cblllcCwgdGhlc2UgbmVlZCB0byBiZSBsaXN0ZWQgaW4gYEZvY3VzU3ltYm9sc2AuXG5cbkEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBgX19ncmU2X3htaXRgICppcyogc3RhdGljLCBhbmQgdGhlIG5hbWUgaXMgY29ycmVjdC4gSSBmb3VuZCBpdCBpbiBgbmV0L2lwdjYvaXA2X2dyZS5jYC5cblxuTm93LCBsZXQncyB2ZXJpZnkgYW55IGNvbmZpZyBkZXBlbmRlbmNpZXMuIEkndmUgZ290IGBDT05GSUdfTkVUX0lQR1JFYCBhbmQgYENPTkZJR19JUFY2X0dSRWAuIE5vIG5lZWQgdG8gY29uc2lkZXIgYENPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUYCwgdGhlIGNoYW5nZXMgYXJlbid0IHVuZGVyIHRoYXQgYCNpZmRlZmAuIGBDT05GSUdfSVBWNmAgaXMgaW1wbGljaXRseSBlbmFibGVkIGJ5IGBDT05GSUdfSVBWNl9HUkVgLCBzbyB0aGF0IGlzIGFscmVhZHkgaGFuZGxlZC5cblxuU28sIGxldCdzIGJyZWFrIGRvd24gdGhlICp3aHkqIG9mIHRoaXMgcGF0Y2guIEl0J3MgYWJvdXQgZml4aW5nIGEgYnVnIHdoZXJlIGB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFnc2Agd2FzIGdldHRpbmcgdHJhc2hlZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbmV0bGluayBpbmZvIGR1bXBpbmcuIFRoaXMgY291bGQgbGVhZCB0byByYWNlIGNvbmRpdGlvbnMgb3IgYmFkIHN0YXRlIGZvciBHUkUvRVJTUEFOIHR1bm5lbHMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbG9jYWwgYGZsYWdzYCB2YXJpYWJsZSBmb3IgdGhlIHRyYW5zbWlzc2lvbiBhbmQgbW92ZXMgdGhlIGBJUF9UVU5ORUxfS0VZX0JJVGAgc2V0dGluZyB0byBgaXBncmVfZmlsbF9pbmZvYCBpbnN0ZWFkIG9mIG11bmdpbmcgdGhlIHR1bm5lbCBwYXJhbWV0ZXJzIGluIGBlcnNwYW5fZmlsbF9pbmZvYC4gVGhlIGZ1bmN0aW9uYWwgaW1wYWN0IGhlcmUgaXMgYWJvdXQgcHJvdGVjdGluZyB0aGUgdHVubmVsIGRhdGEgZnJvbSBjb3JydXB0aW9uLiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gZnV6enkgaXQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpc3N1ZXMgaGF2ZSBiZWVuIGludHJvZHVjZWQuXG5cbk15IGN1cnJlbnQgZm9jdXMgc3ltYm9scyBhcmUgdGhlc2U6XG5gX19ncmVfeG1pdGBcbmBpcGdyZV94bWl0YFxuYGVyc3Bhbl94bWl0YFxuYGdyZV90YXBfeG1pdGBcbmBpcGdyZV9maWxsX2luZm9gXG5gZXJzcGFuX2ZpbGxfaW5mb2BcbmBfX2dyZTZfeG1pdGBcbmBpcDZlcnNwYW5fdHVubmVsX3htaXRgXG5gaXA2Z3JlX2ZpbGxfaW5mb2BcblxuSSdsbCBxdWlja2x5IHZlcmlmeSB0aGF0IGBlcnNwYW5fZmlsbF9pbmZvYCBpcyBzdGlsbCBwcmVzZW50IGFmdGVyIHRoZSBjaGFuZ2VzIC0geWVwLCBpdCdzIHRoZXJlLiBUaGUgcGF0Y2gganVzdCByZW1vdmVkIHRoZSBtb2RpZmljYXRpb24gb2YgYHQtXHUwMDNlcGFybXMub19mbGFnc2AuXG5cbkFscmlnaHQsIEknbSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDUzNywiT3V0cHV0VG9rZW5zIjoyNTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTg6NDY6NDAuODAxMjY4NDk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1MjU5Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIixcbiAgICBcIklQVjZfR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ncmVfeG1pdFwiLFxuICAgIFwiaXBncmVfeG1pdFwiLFxuICAgIFwiZXJzcGFuX3htaXRcIixcbiAgICBcImdyZV90YXBfeG1pdFwiLFxuICAgIFwiaXBncmVfZmlsbF9pbmZvXCIsXG4gICAgXCJlcnNwYW5fZmlsbF9pbmZvXCIsXG4gICAgXCJfX2dyZTZfeG1pdFwiLFxuICAgIFwiaXA2ZXJzcGFuX3R1bm5lbF94bWl0XCIsXG4gICAgXCJpcDZncmVfZmlsbF9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYHR1bm5lbC1cXHUwMDNlcGFybXMub19mbGFnc2Agd2FzIG1vZGlmaWVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGFuZCBuZXRsaW5rIGluZm8gZHVtcGluZywgd2hpY2ggY291bGQgY2F1c2UgcmFjZSBjb25kaXRpb25zIG9yIHVuaW50ZW5kZWQgc3RhdGUgY2hhbmdlcyBmb3IgR1JFIGFuZCBFUlNQQU4gdHVubmVscy4gSXQgaW50cm9kdWNlcyBhIGxvY2FsIGBmbGFnc2AgdmFyaWFibGUgdG8gaG9sZCB0aGUgZmxhZ3MgZHVyaW5nIHRyYW5zbWlzc2lvbiBhbmQgY29ycmVjdGx5IHNldHMgdGhlIGBJUF9UVU5ORUxfS0VZX0JJVGAgaW4gYGlwZ3JlX2ZpbGxfaW5mb2AgaW5zdGVhZCBvZiBtb2RpZnlpbmcgdGhlIHR1bm5lbCBwYXJhbWV0ZXJzIGluIGBlcnNwYW5fZmlsbF9pbmZvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEdSRS9FUlNQQU4gdHVubmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgYnVncyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIixcbiAgICBcIklQVjZfR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ncmVfeG1pdFwiLFxuICAgIFwiaXBncmVfeG1pdFwiLFxuICAgIFwiZXJzcGFuX3htaXRcIixcbiAgICBcImdyZV90YXBfeG1pdFwiLFxuICAgIFwiaXBncmVfZmlsbF9pbmZvXCIsXG4gICAgXCJlcnNwYW5fZmlsbF9pbmZvXCIsXG4gICAgXCJfX2dyZTZfeG1pdFwiLFxuICAgIFwiaXA2ZXJzcGFuX3R1bm5lbF94bWl0XCIsXG4gICAgXCJpcDZncmVfZmlsbF9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYHR1bm5lbC1cXHUwMDNlcGFybXMub19mbGFnc2Agd2FzIG1vZGlmaWVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIGFuZCBuZXRsaW5rIGluZm8gZHVtcGluZywgd2hpY2ggY291bGQgY2F1c2UgcmFjZSBjb25kaXRpb25zIG9yIHVuaW50ZW5kZWQgc3RhdGUgY2hhbmdlcyBmb3IgR1JFIGFuZCBFUlNQQU4gdHVubmVscy4gSXQgaW50cm9kdWNlcyBhIGxvY2FsIGBmbGFnc2AgdmFyaWFibGUgdG8gaG9sZCB0aGUgZmxhZ3MgZHVyaW5nIHRyYW5zbWlzc2lvbiBhbmQgY29ycmVjdGx5IHNldHMgdGhlIGBJUF9UVU5ORUxfS0VZX0JJVGAgaW4gYGlwZ3JlX2ZpbGxfaW5mb2AgaW5zdGVhZCBvZiBtb2RpZnlpbmcgdGhlIHR1bm5lbCBwYXJhbWV0ZXJzIGluIGBlcnNwYW5fZmlsbF9pbmZvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEdSRS9FUlNQQU4gdHVubmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgYnVncyBhcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5s67[1] Phase: Succeeded StartedAt: 2026-07-20 18:46:52 +0000 UTC FinishedAt: 2026-07-20 18:46:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-20 18:46:53 +0000 UTC FinishedAt: 2026-07-20 18:46:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2] Phase: Succeeded StartedAt: 2026-07-20 18:46:53 +0000 UTC FinishedAt: 2026-07-20 23:10:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 18:46:53 +0000 UTC FinishedAt: 2026-07-20 23:10:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 18:46:53 +0000 UTC FinishedAt: 2026-07-20 18:48:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 18:46:53 +0000 UTC FinishedAt: 2026-07-20 18:47:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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-workflowd5s67/series-workflowd5s67-convert-artifact-174366180/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 18:48:11 +0000 UTC FinishedAt: 2026-07-20 19:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 18:48:11 +0000 UTC FinishedAt: 2026-07-20 19:26:47 +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:*0a6e2fc8-6e81-4ab2-ab8f-d7eee4b97216,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-workflowd5s67/series-workflowd5s67-convert-artifact-174366180/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": "9b6beaf0-989c-42e3-b459-f0dd4c4c1380", "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-workflowd5s67/series-workflowd5s67-build-action-898645538/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-20 18:48:11 +0000 UTC FinishedAt: 2026-07-20 19:26:36 +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:*0a6e2fc8-6e81-4ab2-ab8f-d7eee4b97216,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-workflowd5s67/series-workflowd5s67-convert-artifact-174366180/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": "9b6beaf0-989c-42e3-b459-f0dd4c4c1380", "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-workflowd5s67/series-workflowd5s67-build-action-898645538/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 19:26:47 +0000 UTC FinishedAt: 2026-07-20 19:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 19:26:47 +0000 UTC FinishedAt: 2026-07-20 19:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 19:26:47 +0000 UTC FinishedAt: 2026-07-20 19:27:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 19:26:47 +0000 UTC FinishedAt: 2026-07-20 19:27:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-workflowd5s67/series-workflowd5s67-convert-artifact-1968590307/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 19:27:29 +0000 UTC FinishedAt: 2026-07-20 19:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 19:27:29 +0000 UTC FinishedAt: 2026-07-20 19:29:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9b6beaf0-989c-42e3-b459-f0dd4c4c1380,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-workflowd5s67/series-workflowd5s67-build-action-898645538/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-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 19:29:22 +0000 UTC FinishedAt: 2026-07-20 19:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 19:29:22 +0000 UTC FinishedAt: 2026-07-20 19:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 19:29:22 +0000 UTC FinishedAt: 2026-07-20 20:05:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 19:29:22 +0000 UTC FinishedAt: 2026-07-20 20:05:46 +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:*0a6e2fc8-6e81-4ab2-ab8f-d7eee4b97216,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-workflowd5s67/series-workflowd5s67-convert-artifact-1968590307/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": "ca22b1f1-845e-4775-9bab-93ab57793105", "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-workflowd5s67/series-workflowd5s67-build-action-57383575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 19:29:22 +0000 UTC FinishedAt: 2026-07-20 20:05:22 +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:*0a6e2fc8-6e81-4ab2-ab8f-d7eee4b97216,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-workflowd5s67/series-workflowd5s67-convert-artifact-1968590307/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": "ca22b1f1-845e-4775-9bab-93ab57793105", "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-workflowd5s67/series-workflowd5s67-build-action-57383575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:05:46 +0000 UTC FinishedAt: 2026-07-20 20:05:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:05:46 +0000 UTC FinishedAt: 2026-07-20 20:05:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:05:46 +0000 UTC FinishedAt: 2026-07-20 20:07:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:05:46 +0000 UTC FinishedAt: 2026-07-20 20:07:32 +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:*ca22b1f1-845e-4775-9bab-93ab57793105,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-workflowd5s67/series-workflowd5s67-build-action-57383575/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-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:07:42 +0000 UTC FinishedAt: 2026-07-20 23:10:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:07:42 +0000 UTC FinishedAt: 2026-07-20 23:10:55 +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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"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:*9b6beaf0-989c-42e3-b459-f0dd4c4c1380,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ca22b1f1-845e-4775-9bab-93ab57793105,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-workflowd5s67/series-workflowd5s67-build-action-898645538/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-workflowd5s67/series-workflowd5s67-build-action-57383575/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:07:42 +0000 UTC FinishedAt: 2026-07-20 20:08:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:07:42 +0000 UTC FinishedAt: 2026-07-20 20:07:50 +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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"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-workflowd5s67/series-workflowd5s67-convert-artifact-592865788/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:07:42 +0000 UTC FinishedAt: 2026-07-20 20:07:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:07:42 +0000 UTC FinishedAt: 2026-07-20 20:07:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:07:42 +0000 UTC FinishedAt: 2026-07-20 20:07:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:08:02 +0000 UTC FinishedAt: 2026-07-20 23:10:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd5s67[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"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":["__gre_xmit","ipgre_xmit","erspan_xmit","gre_tap_xmit","ipgre_fill_info","erspan_fill_info","__gre6_xmit","ip6erspan_tunnel_xmit","ip6gre_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e13caf1c26587434f0b768193100440939c0fb91","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"d3610706-76de-4534-a8fd-5a53db5cbcf2","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-07-20 20:08:02 +0000 UTC FinishedAt: 2026-07-20 23:10:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9b6beaf0-989c-42e3-b459-f0dd4c4c1380,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ca22b1f1-845e-4775-9bab-93ab57793105,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-workflowd5s67/series-workflowd5s67-build-action-898645538/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-workflowd5s67/series-workflowd5s67-build-action-57383575/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-workflowd5s67/series-workflowd5s67-convert-artifact-592865788/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,}