Name: series-workflowr5p7z Phase: Succeeded StartedAt: 2026-08-23 07:24:28 +0000 UTC FinishedAt: 2026-08-23 11:21:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[0] Phase: Succeeded StartedAt: 2026-08-23 07:24:28 +0000 UTC FinishedAt: 2026-08-23 07:41:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[0].run-triage Phase: Succeeded StartedAt: 2026-08-23 07:24:28 +0000 UTC FinishedAt: 2026-08-23 07:41:07 +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": "7cbfb180945ce529608e4d4e24a6d483699fab1e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS", "DIBS_LO", "RDMA_RXE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7cbfb180945ce529608e4d4e24a6d483699fab1e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS", "DIBS_LO", "RDMA_RXE" ], "series_id": "b84d7834-992d-40dd-aefe-b4e552cc9887" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smcr_link_init", "smc_llc_cli_add_link", "smc_llc_srv_add_link" ], "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+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OywKICAgICYjMzQ7RElCU19MTyYjMzQ7LAogICAgJiMzNDtSRE1BX1JYRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY3JfbGlua19pbml0JiMzNDssCiAgICAmIzM0O3NtY19sbGNfY2xpX2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfc3J2X2FkZF9saW5rJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyByZWZlcmVuY2UgY291bnRpbmcgZm9yIGBzbWNfaWJfZGV2aWNlYCBvYmplY3RzIHRvIGZpeCBvYmplY3QgbGlmZXRpbWUgaXNzdWVzIChsaWtlbHkgdXNlLWFmdGVyLWZyZWUpLiBJdCByZXBsYWNlcyBga2ZyZWUoaW5pKWAgd2l0aCBgc21jX2luaXRfaW5mb19mcmVlKGluaSlgLCB3aGljaCBkcm9wcyB0aGUgcmVmZXJlbmNlcyBpZiB0aGV5IHdlcmUgYWNxdWlyZWQuIFRoZSBuZXcgYm9vbGVhbiBmaWVsZHMgYGliX2Rldl9yZWZgIGFuZCBgaWJfZGV2X3YyX3JlZmAgYXJlIGFkZGVkIHRvIGBzdHJ1Y3Qgc21jX2luaXRfaW5mb2AsIHdoaWNoIGlzIGFsd2F5cyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgICh2aWEgYGt6YWxsb2Nfb2JqYCksIGVuc3VyaW5nIHRoZXkgYXJlIHByb3Blcmx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIHRoaXMgcGF0Y2ggYWRkcmVzc2VzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlZmVyZW5jZSBsZWFrIG9mIGBzbWNfaWJfZGV2aWNlYCBpbiB0aGUgU01DIHN1YnN5c3RlbSBieSBpbnRyb2R1Y2luZyBgc21jX2luaXRfaW5mb19mcmVlYCBhbmQgcHJvcGVybHkgbWFuYWdpbmcgdGhlIG9iamVjdCBsaWZldGltZSB3aXRoIHJlZmVyZW5jZSBjb3VudGluZyAoYHNtY19pYmRldl9nZXRgL2BwdXRgKS4gSXQgYWxzbyBhZGRzIGFuIGluaXRpYWxpemF0aW9uIGNvdW50ZXIgKGBpbml0X2NudGApIHRvIHRyYWNrIHVucHVibGlzaGVkIGxpbmsgaW5pdGlhbGl6YXRpb25zLiBUaGUgY2hhbmdlcyBhZmZlY3QgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChgX19zbWNfY29ubmVjdGAsIGBzbWNfbGlzdGVuX3dvcmtgKSBhbmQgTExDIGxpbmsgbWFuYWdlbWVudCAoYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNvY2tldCBvcGVyYXRpb25zIGFuZCBpbmNvbWluZyBuZXR3b3JrIHBhY2tldHMuIFRvIHByb3Blcmx5IHRlc3QgdGhpcywgd2UgbmVlZCB0byBlbmFibGUgU01DLCBJbmZpbmlCYW5kLCBhbmQgc29mdHdhcmUtZW11bGF0ZWQgUkRNQS9ESUJTIGRldmljZXMgKGBSRE1BX1JYRWAsIGBESUJTX0xPYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3NzdmMzA3MTVjNmQ1MDU0NGQ2ZjgwYzAzMGFiNWJiYjExYzkxNDJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMjMgMDc6Mzg6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9hZl9zbWMuYyBiL25ldC9zbWMvYWZfc21jLmNcbmluZGV4IGU5ZjkzYjNhYjQzNWIuLmQ3ODFkZWUxYjMyOTMgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL2FmX3NtYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL2FmX3NtYy5jXG5AQCAtMTIyNSw3ICYjNDM7MTIyNSw3IEBAIHZvaWQgc21jX2ZpbGxfZ2lkX2xpc3Qoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG4gXHQgICAgICAgU01DX0dJRF9TSVpFKTtcbiBcbiBvdXQ6XG4tXHRrZnJlZShhbHRfaW5pKTtcbiYjNDM7XHRzbWNfaW5pdF9pbmZvX2ZyZWUoYWx0X2luaSk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfcmRtYV92Ml9wcmVwYXJlKHN0cnVjdCBzbWNfc29jayAqc21jLFxuQEAgLTE1OTYsMTQgJiM0MzsxNTk2LDE0IEBAIHN0YXRpYyBpbnQgX19zbWNfY29ubmVjdChzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbiBcdFNNQ19TVEFUX0NMTlRfU1VDQ19JTkMoc29ja19uZXQoc21jLVx1MDAzZWNsY3NvY2stXHUwMDNlc2spLCBhY2xjKTtcbiBcdHNtY19jb25uZWN0X2lzbV92bGFuX2NsZWFudXAoaW5pKTtcbiBcdGtmcmVlKGJ1Zik7XG4tXHRrZnJlZShpbmkpO1xuJiM0MztcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0cmV0dXJuIDA7XG4gXG4gdmxhbl9jbGVhbnVwOlxuIFx0c21jX2Nvbm5lY3RfaXNtX3ZsYW5fY2xlYW51cChpbmkpO1xuIFx0a2ZyZWUoYnVmKTtcbiBmYWxsYmFjazpcbi1cdGtmcmVlKGluaSk7XG4mIzQzO1x0c21jX2luaXRfaW5mb19mcmVlKGluaSk7XG4gXHRyZXR1cm4gc21jX2Nvbm5lY3RfZGVjbGluZV9mYWxsYmFjayhzbWMsIHJjLCB2ZXJzaW9uKTtcbiB9XG4gXG5AQCAtMjM0NCw3ICYjNDM7MjM0NCwxMCBAQCBzdGF0aWMgdm9pZCBzbWNfZmluZF9yZG1hX3YyX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcbiBcbiBub3RfZm91bmQ6XG4gXHRpbmktXHUwMDNlc21jcl92ZXJzaW9uIFx1MDAyNj0gflNNQ19WMjtcbiYjNDM7XHRpZiAoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmKVxuJiM0MztcdFx0c21jX2liZGV2X3B1dChpbmktXHUwMDNlc21jcnYyLmliX2Rldl92Mik7XG4gXHRpbmktXHUwMDNlc21jcnYyLmliX2Rldl92MiA9IE5VTEw7XG4mIzQzO1x0aW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmID0gZmFsc2U7XG4gXHRpbmktXHUwMDNlY2hlY2tfc21jcnYyID0gZmFsc2U7XG4gfVxuIFxuQEAgLTI1ODgsNyAmIzQzOzI1OTEsNyBAQCBzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c21jX2xpc3Rlbl9kZWNsaW5lKG5ld19zbWMsIHJjLCBpbmkgPyBpbmktXHUwMDNlZmlyc3RfY29udGFjdF9sb2NhbCA6IDAsXG4gXHRcdFx0ICAgcHJvcG9zYWxfdmVyc2lvbik7XG4gb3V0X2ZyZWU6XG4tXHRrZnJlZShpbmkpO1xuJiM0MztcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0a2ZyZWUoYnVmKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY29yZS5jIGIvbmV0L3NtYy9zbWNfY29yZS5jXG5pbmRleCAxODE2NDc5ODI0OTBiLi5kOTdiYzczMjMxMDY5IDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19jb3JlLmNcbkBAIC01NSw2ICYjNDM7NTUsMTcgQEAgc3RhdGljIHZvaWQgX19zbWNfbGdyX3Rlcm1pbmF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBzb2Z0KTtcbiBcbiBzdGF0aWMgdm9pZCBzbWNfbGlua19kb3duX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiYjNDM7dm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbiYjNDM7e1xuJiM0MztcdGlmICghaW5pKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdGlmIChpbmktXHUwMDNlaWJfZGV2X3JlZilcbiYjNDM7XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZWliX2Rldik7XG4mIzQzO1x0aWYgKGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZilcbiYjNDM7XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIpO1xuJiM0MztcdGtmcmVlKGluaSk7XG4mIzQzO31cbiYjNDM7XG4gLyogcmV0dXJuIGhlYWQgb2YgbGluayBncm91cCBsaXN0IGFuZCBpdHMgbG9jayBmb3IgYSBnaXZlbiBsaW5rIGdyb3VwICovXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgbGlzdF9oZWFkICpzbWNfbGdyX2xpc3RfaGVhZChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbiBcdFx0XHRcdFx0XHQgIHNwaW5sb2NrX3QgKipsZ3JfbG9jaylcbkBAIC03OTMsMTQgJiM0Mzs4MDQsMjEgQEAgaW50IHNtY3JfbGlua19pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbiBcdGludCByYztcbiBcbiBcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyKSB7XG4tXHRcdGxuay1cdTAwM2VzbWNpYmRldiA9IGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyO1xuJiM0MztcdFx0c21jaWJkZXYgPSBpbmktXHUwMDNlc21jcnYyLmliX2Rldl92MjtcbiBcdFx0bG5rLVx1MDAzZWlicG9ydCA9IGluaS1cdTAwM2VzbWNydjIuaWJfcG9ydF92Mjtcbi1cdFx0bG5rLVx1MDAzZXdyX3J4X3NnZV9jbnQgPSBsbmstXHUwMDNlc21jaWJkZXYtXHUwMDNlaWJkZXYtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlIFx1MDAzYyAyID8gMSA6IDI7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHNtY2liZGV2ID0gaW5pLVx1MDAzZWliX2RldjtcbiYjNDM7XHRcdGxuay1cdTAwM2VpYnBvcnQgPSBpbmktXHUwMDNlaWJfcG9ydDtcbiYjNDM7XHR9XG4mIzQzO1x0cmMgPSBzbWNfaWJkZXZfaW5pdF9iZWdpbihzbWNpYmRldik7XG4mIzQzO1x0aWYgKHJjKVxuJiM0MztcdFx0cmV0dXJuIHJjO1xuJiM0MztcdGxuay1cdTAwM2VzbWNpYmRldiA9IHNtY2liZGV2O1xuJiM0MztcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyKSB7XG4mIzQzO1x0XHRsbmstXHUwMDNld3Jfcnhfc2dlX2NudCA9IHNtY2liZGV2LVx1MDAzZWliZGV2LVx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSBcdTAwM2MgMiA/IDEgOiAyO1xuIFx0XHRsbmstXHUwMDNld3JfcnhfYnVmbGVuID0gc21jX2xpbmtfc2hhcmVkX3YyX3J4YnVmKGxuaykgP1xuIFx0XHRcdFNNQ19XUl9CVUZfU0laRSA6IFNNQ19XUl9CVUZfVjJfU0laRTtcbiBcdH0gZWxzZSB7XG4tXHRcdGxuay1cdTAwM2VzbWNpYmRldiA9IGluaS1cdTAwM2VpYl9kZXY7XG4tXHRcdGxuay1cdTAwM2VpYnBvcnQgPSBpbmktXHUwMDNlaWJfcG9ydDtcbiBcdFx0bG5rLVx1MDAzZXdyX3J4X3NnZV9jbnQgPSAxO1xuIFx0XHRsbmstXHUwMDNld3JfcnhfYnVmbGVuID0gU01DX1dSX0JVRl9TSVpFO1xuIFx0fVxuQEAgLTg4Miw2ICYjNDM7OTAwLDcgQEAgaW50IHNtY3JfbGlua19pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbiBcdGlmICghYXRvbWljX2RlY19yZXR1cm4oXHUwMDI2c21jaWJkZXYtXHUwMDNlbG5rX2NudCkpXG4gXHRcdHdha2VfdXAoXHUwMDI2c21jaWJkZXYtXHUwMDNlbG5rc19kZWxldGVkKTtcbiBcdHNtY19sZ3JfcHV0KGxncik7IC8qIGxncl9ob2xkIGFib3ZlICovXG4mIzQzO1x0c21jX2liZGV2X2luaXRfZW5kKHNtY2liZGV2KTtcbiBcdHJldHVybiByYztcbiB9XG4gXG5AQCAtOTk3LDYgJiM0MzsxMDE2LDggQEAgc3RhdGljIGludCBzbWNfbGdyX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbiBcdHNwaW5fbG9ja19iaChsZ3JfbG9jayk7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNmxnci1cdTAwM2VsaXN0LCBsZ3JfbGlzdCk7XG4gXHRzcGluX3VubG9ja19iaChsZ3JfbG9jayk7XG4mIzQzO1x0aWYgKCFpbmktXHUwMDNlaXNfc21jZClcbiYjNDM7XHRcdHNtY19pYmRldl9pbml0X2VuZChsbmstXHUwMDNlc21jaWJkZXYpO1xuIFx0cmV0dXJuIDA7XG4gXG4gZnJlZV93cTpcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmggYi9uZXQvc21jL3NtY19jb3JlLmhcbmluZGV4IDVjMThmMDhhNGM4YTUuLjlmNWE2OWEzMGNiM2YgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2NvcmUuaFxuQEAgLTQwMyw2ICYjNDM7NDAzLDcgQEAgc3RydWN0IHNtY19pbml0X2luZm9fc21jcnYyIHtcbiBcbiBcdC8qIE91dHB1dCBmaWVsZHMgd2hlbiBzYWRkciBpcyBzZXQgKi9cbiBcdHN0cnVjdCBzbWNfaWJfZGV2aWNlXHQqaWJfZGV2X3YyO1xuJiM0MztcdGJvb2xcdFx0XHRpYl9kZXZfdjJfcmVmOyAvKiBvd25zIGFuIHNtY19pYmRldiByZWZlcmVuY2UgKi9cbiBcdHU4XHRcdFx0aWJfcG9ydF92MjtcbiBcdHU4XHRcdFx0aWJfZ2lkX3YyW1NNQ19HSURfU0laRV07XG4gXG5AQCAtNDM4LDYgJiM0Mzs0MzksNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyB7XG4gXHR1OFx0XHRcdHBlZXJfbWFjW0VUSF9BTEVOXTtcbiBcdHU4XHRcdFx0cGVlcl9zeXN0ZW1pZFtTTUNfU1lTVEVNSURfTEVOXTtcbiBcdHN0cnVjdCBzbWNfaWJfZGV2aWNlXHQqaWJfZGV2O1xuJiM0MztcdGJvb2xcdFx0XHRpYl9kZXZfcmVmOyAvKiBvd25zIGFuIHNtY19pYmRldiByZWZlcmVuY2UgKi9cbiBcdHU4XHRcdFx0aWJfZ2lkW1NNQ19HSURfU0laRV07XG4gXHR1OFx0XHRcdGliX3BvcnQ7XG4gXHR1MzJcdFx0XHRpYl9jbGNxcG47XG5AQCAtNTk0LDYgJiM0Mzs1OTYsNyBAQCB2b2lkIHNtY19ydG9rZW5fc2V0MihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgaW50IHJ0b2tfaWR4LCBpbnQgbGlua19pZCxcbiB2b2lkIHNtY19zbmRidWZfc3luY19zZ19mb3JfZGV2aWNlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7XG4gdm9pZCBzbWNfcm1iX3N5bmNfc2dfZm9yX2NwdShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pO1xuIGludCBzbWNfdmxhbl9ieV90Y3BzayhzdHJ1Y3Qgc29ja2V0ICpjbGNzb2NrLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKTtcbiYjNDM7dm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG4gXG4gdm9pZCBzbWNfY29ubl9mcmVlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7XG4gaW50IHNtY19jb25uX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuYyBiL25ldC9zbWMvc21jX2liLmNcbmluZGV4IDliYjQ5NTcwNzQ0NWUuLmQ4NTg0NTNjNjRkOTIgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19pYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19pYi5jXG5AQCAtOTM0LDYgJiM0Mzs5MzQsNDQgQEAgdm9pZCBzbWNfaWJfbmRldl9jaGFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpXG4gXHRtdXRleF91bmxvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgc21jX2liZGV2X3JlbGVhc2Uoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxuJiM0Mzt7XG4mIzQzO1x0cHV0X2RldmljZShcdTAwMjZzbWNpYmRldi1cdTAwM2VpYmRldi1cdTAwM2VkZXYpO1xuJiM0MztcdGtmcmVlKHNtY2liZGV2KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dm9pZCBzbWNfaWJkZXZfZ2V0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbiYjNDM7e1xuJiM0MztcdHJlZmNvdW50X2luYyhcdTAwMjZzbWNpYmRldi1cdTAwM2VyZWZjbnQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZzbWNpYmRldi1cdTAwM2VyZWZjbnQpKVxuJiM0MztcdFx0c21jX2liZGV2X3JlbGVhc2Uoc21jaWJkZXYpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgc21jX2liZGV2X2luaXRfYmVnaW4oc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJjID0gMDtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4mIzQzO1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2c21jaWJkZXYtXHUwMDNlbGlzdCkpXG4mIzQzO1x0XHRyYyA9IC1FTk9ERVY7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0YXRvbWljX2luYyhcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnNtY19pYl9kZXZpY2VzLm11dGV4KTtcbiYjNDM7XHRyZXR1cm4gcmM7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbiYjNDM7e1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuJiM0MztcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNnNtY2liZGV2LVx1MDAzZWluaXRfY250KSlcbiYjNDM7XHRcdHdha2VfdXAoXHUwMDI2c21jaWJkZXYtXHUwMDNlaW5pdF93YWl0KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpYl9yZWdpc3Rlcl9jbGllbnQoKSAqL1xuIHN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpXG4ge1xuQEAgLTk0OSw3ICYjNDM7OTg3LDExIEBAIHN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0c21jaWJkZXYtXHUwMDNlaWJkZXYgPSBpYmRldjtcbiYjNDM7XHRnZXRfZGV2aWNlKFx1MDAyNmliZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0cmVmY291bnRfc2V0KFx1MDAyNnNtY2liZGV2LVx1MDAzZXJlZmNudCwgMSk7XG4gXHRJTklUX1dPUksoXHUwMDI2c21jaWJkZXYtXHUwMDNlcG9ydF9ldmVudF93b3JrLCBzbWNfaWJfcG9ydF9ldmVudF93b3JrKTtcbiYjNDM7XHRhdG9taWNfc2V0KFx1MDAyNnNtY2liZGV2LVx1MDAzZWluaXRfY250LCAwKTtcbiYjNDM7XHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNnNtY2liZGV2LVx1MDAzZWluaXRfd2FpdCk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNnNtY2liZGV2LVx1MDAzZWxua19jbnQsIDApO1xuIFx0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2VsbmtzX2RlbGV0ZWQpO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZzbWNpYmRldi1cdTAwM2VtdXRleCk7XG5AQCAtMTAwMCwxMSAmIzQzOzEwNDIsMTQgQEAgc3RhdGljIHZvaWQgc21jX2liX3JlbW92ZV9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHZvaWQgKmNsaWVudF9kYXRhKVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNtY19pYl9kZXZpY2VzLm11dGV4KTtcbiBcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXCYjMzQ7c21jOiByZW1vdmluZyBpYiBkZXZpY2UgJXNcXG5cJiMzNDssXG4gXHRcdFx0ICAgIHNtY2liZGV2LVx1MDAzZWliZGV2LVx1MDAzZW5hbWUpO1xuJiM0MztcdGlmIChhdG9taWNfcmVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpXG4mIzQzO1x0XHR3YWl0X2V2ZW50KHNtY2liZGV2LVx1MDAzZWluaXRfd2FpdCxcbiYjNDM7XHRcdFx0ICAgIWF0b21pY19yZWFkKFx1MDAyNnNtY2liZGV2LVx1MDAzZWluaXRfY250KSk7XG4gXHRzbWNfc21jcl90ZXJtaW5hdGVfYWxsKHNtY2liZGV2KTtcbiBcdHNtY19pYl9jbGVhbnVwX3Blcl9pYmRldihzbWNpYmRldik7XG4gXHRpYl91bnJlZ2lzdGVyX2V2ZW50X2hhbmRsZXIoXHUwMDI2c21jaWJkZXYtXHUwMDNlZXZlbnRfaGFuZGxlcik7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnNtY2liZGV2LVx1MDAzZXBvcnRfZXZlbnRfd29yayk7XG4tXHRrZnJlZShzbWNpYmRldik7XG4mIzQzO1x0c21jX2liZGV2X3B1dChzbWNpYmRldik7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgaWJfY2xpZW50IHNtY19pYl9jbGllbnQgPSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuaCBiL25ldC9zbWMvc21jX2liLmhcbmluZGV4IGVmOGFjMmI3NTQ2ZGYuLmQzMjU0NzM1MGU4YjggMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19pYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19pYi5oXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX2V0aGVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93YWl0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NyZG1hL2liX3ZlcmJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvc21jLmhcdTAwM2VcbkBAIC01MSw2ICYjNDM7NTIsOSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7XHRcdFx0XHQvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqL1xuIFx0c3RydWN0IHdvcmtfc3RydWN0XHRwb3J0X2V2ZW50X3dvcms7XG4gXHR1bnNpZ25lZCBsb25nXHRcdHBvcnRfZXZlbnRfbWFzaztcbiBcdERFQ0xBUkVfQklUTUFQKHBvcnRzX2dvaW5nX2F3YXksIFNNQ19NQVhfUE9SVFMpO1xuJiM0MztcdHJlZmNvdW50X3RcdFx0cmVmY250O1x0XHQvKiBvYmplY3QgbGlmZXRpbWUgKi9cbiYjNDM7XHRhdG9taWNfdFx0XHRpbml0X2NudDtcdC8qIHVucHVibGlzaGVkIGxpbmsgaW5pdGlhbGl6YXRpb25zICovXG4mIzQzO1x0d2FpdF9xdWV1ZV9oZWFkX3RcdGluaXRfd2FpdDtcdC8qIHdhaXQgZm9yIGxpbmtzIHRvIGJlIHB1Ymxpc2hlZCAqL1xuIFx0YXRvbWljX3RcdFx0bG5rX2NudDtcdC8qIG51bWJlciBvZiBsaW5rcyBvbiBpYmRldiAqL1xuIFx0d2FpdF9xdWV1ZV9oZWFkX3RcdGxua3NfZGVsZXRlZDtcdC8qIHdhaXQgNCByZW1vdmFsIG9mIGFsbCBsaW5rcyovXG4gXHRzdHJ1Y3QgbXV0ZXhcdFx0bXV0ZXg7XHRcdC8qIHByb3RlY3QgZGV2IHNldHVwJiM0MztjbGVhbnVwICovXG5AQCAtNTksNiAmIzQzOzYzLDExIEBAIHN0cnVjdCBzbWNfaWJfZGV2aWNlIHtcdFx0XHRcdC8qIGliLWRldmljZSBpbmZvcyBmb3Igc21jICovXG4gXHRpbnRcdFx0XHRuZGV2X2lmaWR4W1NNQ19NQVhfUE9SVFNdOyAvKiBuZGV2IGlmIGluZGV4ZXMgKi9cbiB9O1xuIFxuJiM0Mzt2b2lkIHNtY19pYmRldl9nZXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbiYjNDM7dm9pZCBzbWNfaWJkZXZfcHV0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7XG4mIzQzO2ludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpO1xuJiM0Mzt2b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpO1xuJiM0MztcbiBzdGF0aWMgaW5saW5lIF9fYmUzMiBzbWNfaWJfZ2lkX3RvX2lwdjQodTggZ2lkW1NNQ19HSURfU0laRV0pXG4ge1xuIFx0c3RydWN0IGluNl9hZGRyICphZGRyNiA9IChzdHJ1Y3QgaW42X2FkZHIgKilnaWQ7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfbGxjLmMgYi9uZXQvc21jL3NtY19sbGMuY1xuaW5kZXggYzljY2Q4NDgwMzY5Yy4uZTE2YWFhNTE0MzY4YSAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX2xsYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19sbGMuY1xuQEAgLTExMDgsNiAmIzQzOzExMDgsNyBAQCBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbiBcdHJjID0gc21jcl9saW5rX2luaXQobGdyLCBsbmtfbmV3LCBsbmtfaWR4LCBpbmkpO1xuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dF9yZWplY3Q7XG4mIzQzO1x0c21jX2liZGV2X2luaXRfZW5kKGxua19uZXctXHUwMDNlc21jaWJkZXYpO1xuIFx0c21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obG5rX25ldywgbGxjKTtcbiBcdGxua19uZXctXHUwMDNlbGlua19pZCA9IGxsYy1cdTAwM2VsaW5rX251bTtcdC8qIFNNQyBzZXJ2ZXIgYXNzaWducyBsaW5rIGlkICovXG4gXHRzbWNfbGxjX2xpbmtfc2V0X3VpZChsbmtfbmV3KTtcbkBAIC0xMTQzLDcgJiM0MzsxMTQ0LDcgQEAgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4gb3V0X3JlamVjdDpcbiBcdHNtY19sbGNfY2xpX2FkZF9saW5rX3JlamVjdChxZW50cnkpO1xuIG91dDpcbi1cdGtmcmVlKGluaSk7XG4mIzQzO1x0c21jX2luaXRfaW5mb19mcmVlKGluaSk7XG4gXHRrZnJlZShxZW50cnkpO1xuIFx0cmV0dXJuIHJjO1xuIH1cbkBAIC0xMjE3LDcgJiM0MzsxMjE4LDcgQEAgc3RhdGljIHZvaWQgc21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdHNtY19sbGNfc2VuZF9hZGRfbGluayhsaW5rLCBpbmktXHUwMDNlaWJfZGV2LVx1MDAzZW1hY1tpbmktXHUwMDNlaWJfcG9ydCAtIDFdLFxuIFx0XHRcdCAgICAgIGluaS1cdTAwM2VpYl9naWQsIE5VTEwsIFNNQ19MTENfUkVRKTtcbiBvdXQ6XG4tXHRrZnJlZShpbmkpO1xuJiM0MztcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0a2ZyZWUocWVudHJ5KTtcbiB9XG4gXG5AQCAtMTQ4Nyw2ICYjNDM7MTQ4OCw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHRpZiAocmMpXG4gXHRcdGdvdG8gb3V0O1xuIFx0bGlua19uZXcgPSBcdTAwMjZsZ3ItXHUwMDNlbG5rW2xua19pZHhdO1xuJiM0MztcdHNtY19pYmRldl9pbml0X2VuZChsaW5rX25ldy1cdTAwM2VzbWNpYmRldik7XG4gXG4gXHRyYyA9IHNtY3JfYnVmX21hcF9sZ3IobGlua19uZXcpO1xuIFx0aWYgKHJjKVxuQEAgLTE1NDQsNyAmIzQzOzE1NDYsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0fVxuIG91dDpcbiBcdGtmcmVlKHFlbnRyeSk7XG4tXHRrZnJlZShpbmkpO1xuJiM0MztcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0aWYgKHNlbmRfcmVxX2FkZF9saW5rX3Jlc3ApXG4gXHRcdHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2UocmVxX3FlbnRyeSk7XG4gXHRyZXR1cm4gcmM7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfcG5ldC5jIGIvbmV0L3NtYy9zbWNfcG5ldC5jXG5pbmRleCA2M2UyODZlMmRmYWE4Li5iZTFmNTEzN2M4ZWU3IDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfcG5ldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19wbmV0LmNcbkBAIC05ODAsMTQgJiM0Mzs5ODAsMjIgQEAgc3RhdGljIGludCBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICppYmRldiwgaW50IGksXG4gXHRpZiAoIWluaS1cdTAwM2VjaGVja19zbWNydjIgXHUwMDI2XHUwMDI2XG4gXHQgICAgIXNtY19pYl9kZXRlcm1pbmVfZ2lkKGliZGV2LCBpLCBpbmktXHUwMDNldmxhbl9pZCwgaW5pLVx1MDAzZWliX2dpZCwgTlVMTCxcbiBcdFx0XHRcdCAgTlVMTCkpIHtcbiYjNDM7XHRcdGlmIChpbmktXHUwMDNlaWJfZGV2X3JlZilcbiYjNDM7XHRcdFx0c21jX2liZGV2X3B1dChpbmktXHUwMDNlaWJfZGV2KTtcbiYjNDM7XHRcdHNtY19pYmRldl9nZXQoaWJkZXYpO1xuIFx0XHRpbmktXHUwMDNlaWJfZGV2ID0gaWJkZXY7XG4mIzQzO1x0XHRpbmktXHUwMDNlaWJfZGV2X3JlZiA9IHRydWU7XG4gXHRcdGluaS1cdTAwM2VpYl9wb3J0ID0gaTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXHRpZiAoaW5pLVx1MDAzZWNoZWNrX3NtY3J2MiBcdTAwMjZcdTAwMjZcbiBcdCAgICAhc21jX2liX2RldGVybWluZV9naWQoaWJkZXYsIGksIGluaS1cdTAwM2V2bGFuX2lkLCBpbmktXHUwMDNlc21jcnYyLmliX2dpZF92MixcbiBcdFx0XHRcdCAgTlVMTCwgXHUwMDI2aW5pLVx1MDAzZXNtY3J2MikpIHtcbiYjNDM7XHRcdGlmIChpbmktXHUwMDNlc21jcnYyLmliX2Rldl92Ml9yZWYpXG4mIzQzO1x0XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIpO1xuJiM0MztcdFx0c21jX2liZGV2X2dldChpYmRldik7XG4gXHRcdGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyID0gaWJkZXY7XG4mIzQzO1x0XHRpbmktXHUwMDNlc21jcnYyLmliX2Rldl92Ml9yZWYgPSB0cnVlO1xuIFx0XHRpbmktXHUwMDNlc21jcnYyLmliX3BvcnRfdjIgPSBpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7LAogICAgJiMzNDtESUJTX0xPJiMzNDssCiAgICAmIzM0O1JETUFfUlhFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jcl9saW5rX2luaXQmIzM0OywKICAgICYjMzQ7c21jX2xsY19jbGlfYWRkX2xpbmsmIzM0OywKICAgICYjMzQ7c21jX2xsY19zcnZfYWRkX2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgbGVhayBvZiBgc21jX2liX2RldmljZWAgaW4gdGhlIFNNQyBzdWJzeXN0ZW0gYnkgaW50cm9kdWNpbmcgYHNtY19pbml0X2luZm9fZnJlZWAgYW5kIHByb3Blcmx5IG1hbmFnaW5nIHRoZSBvYmplY3QgbGlmZXRpbWUgd2l0aCByZWZlcmVuY2UgY291bnRpbmcgKGBzbWNfaWJkZXZfZ2V0YC9gcHV0YCkuIEl0IGFsc28gYWRkcyBhbiBpbml0aWFsaXphdGlvbiBjb3VudGVyIChgaW5pdF9jbnRgKSB0byB0cmFjayB1bnB1Ymxpc2hlZCBsaW5rIGluaXRpYWxpemF0aW9ucy4gVGhlIGNoYW5nZXMgYWZmZWN0IGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoYF9fc21jX2Nvbm5lY3RgLCBgc21jX2xpc3Rlbl93b3JrYCkgYW5kIExMQyBsaW5rIG1hbmFnZW1lbnQgKGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2ApLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzb2NrZXQgb3BlcmF0aW9ucyBhbmQgaW5jb21pbmcgbmV0d29yayBwYWNrZXRzLiBUbyBwcm9wZXJseSB0ZXN0IHRoaXMsIHdlIG5lZWQgdG8gZW5hYmxlIFNNQywgSW5maW5pQmFuZCwgYW5kIHNvZnR3YXJlLWVtdWxhdGVkIFJETUEvRElCUyBkZXZpY2VzIChgUkRNQV9SWEVgLCBgRElCU19MT2ApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzc3ZjMwNzE1YzZkNTA1NDRkNmY4MGMwMzBhYjViYmIxMWM5MTQyYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIzIDA3OjM4OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9hZl9zbWMuYyBiL25ldC9zbWMvYWZfc21jLmMKaW5kZXggZTlmOTNiM2FiNDM1Yi4uZDc4MWRlZTFiMzI5MyAxMDA2NDQKLS0tIGEvbmV0L3NtYy9hZl9zbWMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL2FmX3NtYy5jCkBAIC0xMjI1LDcgJiM0MzsxMjI1LDcgQEAgdm9pZCBzbWNfZmlsbF9naWRfbGlzdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwKIAkgICAgICAgU01DX0dJRF9TSVpFKTsKIAogb3V0OgotCWtmcmVlKGFsdF9pbmkpOwomIzQzOwlzbWNfaW5pdF9pbmZvX2ZyZWUoYWx0X2luaSk7CiB9CiAKIHN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfcmRtYV92Ml9wcmVwYXJlKHN0cnVjdCBzbWNfc29jayAqc21jLApAQCAtMTU5NiwxNCAmIzQzOzE1OTYsMTQgQEAgc3RhdGljIGludCBfX3NtY19jb25uZWN0KHN0cnVjdCBzbWNfc29jayAqc21jKQogCVNNQ19TVEFUX0NMTlRfU1VDQ19JTkMoc29ja19uZXQoc21jLSZndDtjbGNzb2NrLSZndDtzayksIGFjbGMpOwogCXNtY19jb25uZWN0X2lzbV92bGFuX2NsZWFudXAoaW5pKTsKIAlrZnJlZShidWYpOwotCWtmcmVlKGluaSk7CiYjNDM7CXNtY19pbml0X2luZm9fZnJlZShpbmkpOwogCXJldHVybiAwOwogCiB2bGFuX2NsZWFudXA6CiAJc21jX2Nvbm5lY3RfaXNtX3ZsYW5fY2xlYW51cChpbmkpOwogCWtmcmVlKGJ1Zik7CiBmYWxsYmFjazoKLQlrZnJlZShpbmkpOwomIzQzOwlzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTsKIAlyZXR1cm4gc21jX2Nvbm5lY3RfZGVjbGluZV9mYWxsYmFjayhzbWMsIHJjLCB2ZXJzaW9uKTsKIH0KIApAQCAtMjM0NCw3ICYjNDM7MjM0NCwxMCBAQCBzdGF0aWMgdm9pZCBzbWNfZmluZF9yZG1hX3YyX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYywKIAogbm90X2ZvdW5kOgogCWluaS0mZ3Q7c21jcl92ZXJzaW9uICZhbXA7PSB+U01DX1YyOwomIzQzOwlpZiAoaW5pLSZndDtzbWNydjIuaWJfZGV2X3YyX3JlZikKJiM0MzsJCXNtY19pYmRldl9wdXQoaW5pLSZndDtzbWNydjIuaWJfZGV2X3YyKTsKIAlpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjIgPSBOVUxMOwomIzQzOwlpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjJfcmVmID0gZmFsc2U7CiAJaW5pLSZndDtjaGVja19zbWNydjIgPSBmYWxzZTsKIH0KIApAQCAtMjU4OCw3ICYjNDM7MjU5MSw3IEBAIHN0YXRpYyB2b2lkIHNtY19saXN0ZW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJc21jX2xpc3Rlbl9kZWNsaW5lKG5ld19zbWMsIHJjLCBpbmkgPyBpbmktJmd0O2ZpcnN0X2NvbnRhY3RfbG9jYWwgOiAwLAogCQkJICAgcHJvcG9zYWxfdmVyc2lvbik7CiBvdXRfZnJlZToKLQlrZnJlZShpbmkpOwomIzQzOwlzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTsKIAlrZnJlZShidWYpOwogfQogCmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmMgYi9uZXQvc21jL3NtY19jb3JlLmMKaW5kZXggMTgxNjQ3OTgyNDkwYi4uZDk3YmM3MzIzMTA2OSAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2NvcmUuYwpAQCAtNTUsNiAmIzQzOzU1LDE3IEBAIHN0YXRpYyB2b2lkIF9fc21jX2xncl90ZXJtaW5hdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgc29mdCk7CiAKIHN0YXRpYyB2b2lkIHNtY19saW5rX2Rvd25fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwogCiYjNDM7dm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSkKJiM0Mzt7CiYjNDM7CWlmICghaW5pKQomIzQzOwkJcmV0dXJuOwomIzQzOwlpZiAoaW5pLSZndDtpYl9kZXZfcmVmKQomIzQzOwkJc21jX2liZGV2X3B1dChpbmktJmd0O2liX2Rldik7CiYjNDM7CWlmIChpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjJfcmVmKQomIzQzOwkJc21jX2liZGV2X3B1dChpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjIpOwomIzQzOwlrZnJlZShpbmkpOwomIzQzO30KJiM0MzsKIC8qIHJldHVybiBoZWFkIG9mIGxpbmsgZ3JvdXAgbGlzdCBhbmQgaXRzIGxvY2sgZm9yIGEgZ2l2ZW4gbGluayBncm91cCAqLwogc3RhdGljIGlubGluZSBzdHJ1Y3QgbGlzdF9oZWFkICpzbWNfbGdyX2xpc3RfaGVhZChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwKIAkJCQkJCSAgc3BpbmxvY2tfdCAqKmxncl9sb2NrKQpAQCAtNzkzLDE0ICYjNDM7ODA0LDIxIEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssCiAJaW50IHJjOwogCiAJaWYgKGxnci0mZ3Q7c21jX3ZlcnNpb24gPT0gU01DX1YyKSB7Ci0JCWxuay0mZ3Q7c21jaWJkZXYgPSBpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjI7CiYjNDM7CQlzbWNpYmRldiA9IGluaS0mZ3Q7c21jcnYyLmliX2Rldl92MjsKIAkJbG5rLSZndDtpYnBvcnQgPSBpbmktJmd0O3NtY3J2Mi5pYl9wb3J0X3YyOwotCQlsbmstJmd0O3dyX3J4X3NnZV9jbnQgPSBsbmstJmd0O3NtY2liZGV2LSZndDtpYmRldi0mZ3Q7YXR0cnMubWF4X3JlY3Zfc2dlICZsdDsgMiA/IDEgOiAyOwomIzQzOwl9IGVsc2UgewomIzQzOwkJc21jaWJkZXYgPSBpbmktJmd0O2liX2RldjsKJiM0MzsJCWxuay0mZ3Q7aWJwb3J0ID0gaW5pLSZndDtpYl9wb3J0OwomIzQzOwl9CiYjNDM7CXJjID0gc21jX2liZGV2X2luaXRfYmVnaW4oc21jaWJkZXYpOwomIzQzOwlpZiAocmMpCiYjNDM7CQlyZXR1cm4gcmM7CiYjNDM7CWxuay0mZ3Q7c21jaWJkZXYgPSBzbWNpYmRldjsKJiM0MzsJaWYgKGxnci0mZ3Q7c21jX3ZlcnNpb24gPT0gU01DX1YyKSB7CiYjNDM7CQlsbmstJmd0O3dyX3J4X3NnZV9jbnQgPSBzbWNpYmRldi0mZ3Q7aWJkZXYtJmd0O2F0dHJzLm1heF9yZWN2X3NnZSAmbHQ7IDIgPyAxIDogMjsKIAkJbG5rLSZndDt3cl9yeF9idWZsZW4gPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobG5rKSA/CiAJCQlTTUNfV1JfQlVGX1NJWkUgOiBTTUNfV1JfQlVGX1YyX1NJWkU7CiAJfSBlbHNlIHsKLQkJbG5rLSZndDtzbWNpYmRldiA9IGluaS0mZ3Q7aWJfZGV2OwotCQlsbmstJmd0O2licG9ydCA9IGluaS0mZ3Q7aWJfcG9ydDsKIAkJbG5rLSZndDt3cl9yeF9zZ2VfY250ID0gMTsKIAkJbG5rLSZndDt3cl9yeF9idWZsZW4gPSBTTUNfV1JfQlVGX1NJWkU7CiAJfQpAQCAtODgyLDYgJiM0Mzs5MDAsNyBAQCBpbnQgc21jcl9saW5rX2luaXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfbGluayAqbG5rLAogCWlmICghYXRvbWljX2RlY19yZXR1cm4oJmFtcDtzbWNpYmRldi0mZ3Q7bG5rX2NudCkpCiAJCXdha2VfdXAoJmFtcDtzbWNpYmRldi0mZ3Q7bG5rc19kZWxldGVkKTsKIAlzbWNfbGdyX3B1dChsZ3IpOyAvKiBsZ3JfaG9sZCBhYm92ZSAqLwomIzQzOwlzbWNfaWJkZXZfaW5pdF9lbmQoc21jaWJkZXYpOwogCXJldHVybiByYzsKIH0KIApAQCAtOTk3LDYgJiM0MzsxMDE2LDggQEAgc3RhdGljIGludCBzbWNfbGdyX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSkKIAlzcGluX2xvY2tfYmgobGdyX2xvY2spOwogCWxpc3RfYWRkX3RhaWwoJmFtcDtsZ3ItJmd0O2xpc3QsIGxncl9saXN0KTsKIAlzcGluX3VubG9ja19iaChsZ3JfbG9jayk7CiYjNDM7CWlmICghaW5pLSZndDtpc19zbWNkKQomIzQzOwkJc21jX2liZGV2X2luaXRfZW5kKGxuay0mZ3Q7c21jaWJkZXYpOwogCXJldHVybiAwOwogCiBmcmVlX3dxOgpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY29yZS5oIGIvbmV0L3NtYy9zbWNfY29yZS5oCmluZGV4IDVjMThmMDhhNGM4YTUuLjlmNWE2OWEzMGNiM2YgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19jb3JlLmgKQEAgLTQwMyw2ICYjNDM7NDAzLDcgQEAgc3RydWN0IHNtY19pbml0X2luZm9fc21jcnYyIHsKIAogCS8qIE91dHB1dCBmaWVsZHMgd2hlbiBzYWRkciBpcyBzZXQgKi8KIAlzdHJ1Y3Qgc21jX2liX2RldmljZQkqaWJfZGV2X3YyOwomIzQzOwlib29sCQkJaWJfZGV2X3YyX3JlZjsgLyogb3ducyBhbiBzbWNfaWJkZXYgcmVmZXJlbmNlICovCiAJdTgJCQlpYl9wb3J0X3YyOwogCXU4CQkJaWJfZ2lkX3YyW1NNQ19HSURfU0laRV07CiAKQEAgLTQzOCw2ICYjNDM7NDM5LDcgQEAgc3RydWN0IHNtY19pbml0X2luZm8gewogCXU4CQkJcGVlcl9tYWNbRVRIX0FMRU5dOwogCXU4CQkJcGVlcl9zeXN0ZW1pZFtTTUNfU1lTVEVNSURfTEVOXTsKIAlzdHJ1Y3Qgc21jX2liX2RldmljZQkqaWJfZGV2OwomIzQzOwlib29sCQkJaWJfZGV2X3JlZjsgLyogb3ducyBhbiBzbWNfaWJkZXYgcmVmZXJlbmNlICovCiAJdTgJCQlpYl9naWRbU01DX0dJRF9TSVpFXTsKIAl1OAkJCWliX3BvcnQ7CiAJdTMyCQkJaWJfY2xjcXBuOwpAQCAtNTk0LDYgJiM0Mzs1OTYsNyBAQCB2b2lkIHNtY19ydG9rZW5fc2V0MihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgaW50IHJ0b2tfaWR4LCBpbnQgbGlua19pZCwKIHZvaWQgc21jX3NuZGJ1Zl9zeW5jX3NnX2Zvcl9kZXZpY2Uoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKTsKIHZvaWQgc21jX3JtYl9zeW5jX3NnX2Zvcl9jcHUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKTsKIGludCBzbWNfdmxhbl9ieV90Y3BzayhzdHJ1Y3Qgc29ja2V0ICpjbGNzb2NrLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKTsKJiM0Mzt2b2lkIHNtY19pbml0X2luZm9fZnJlZShzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKTsKIAogdm9pZCBzbWNfY29ubl9mcmVlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7CiBpbnQgc21jX2Nvbm5fY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKTsKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2liLmMgYi9uZXQvc21jL3NtY19pYi5jCmluZGV4IDliYjQ5NTcwNzQ0NWUuLmQ4NTg0NTNjNjRkOTIgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2liLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfaWIuYwpAQCAtOTM0LDYgJiM0Mzs5MzQsNDQgQEAgdm9pZCBzbWNfaWJfbmRldl9jaGFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpCiAJbXV0ZXhfdW5sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgc21jX2liZGV2X3JlbGVhc2Uoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KQomIzQzO3sKJiM0MzsJcHV0X2RldmljZSgmYW1wO3NtY2liZGV2LSZndDtpYmRldi0mZ3Q7ZGV2KTsKJiM0MzsJa2ZyZWUoc21jaWJkZXYpOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHNtY19pYmRldl9nZXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KQomIzQzO3sKJiM0MzsJcmVmY291bnRfaW5jKCZhbXA7c21jaWJkZXYtJmd0O3JlZmNudCk7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgc21jX2liZGV2X3B1dChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCiYjNDM7ewomIzQzOwlpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KCZhbXA7c21jaWJkZXYtJmd0O3JlZmNudCkpCiYjNDM7CQlzbWNfaWJkZXZfcmVsZWFzZShzbWNpYmRldik7CiYjNDM7fQomIzQzOwomIzQzO2ludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCiYjNDM7ewomIzQzOwlpbnQgcmMgPSAwOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwomIzQzOwlpZiAobGlzdF9lbXB0eSgmYW1wO3NtY2liZGV2LSZndDtsaXN0KSkKJiM0MzsJCXJjID0gLUVOT0RFVjsKJiM0MzsJZWxzZQomIzQzOwkJYXRvbWljX2luYygmYW1wO3NtY2liZGV2LSZndDtpbml0X2NudCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3NtY19pYl9kZXZpY2VzLm11dGV4KTsKJiM0MzsJcmV0dXJuIHJjOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCiYjNDM7ewomIzQzOwltdXRleF9sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwomIzQzOwlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmYW1wO3NtY2liZGV2LSZndDtpbml0X2NudCkpCiYjNDM7CQl3YWtlX3VwKCZhbXA7c21jaWJkZXYtJmd0O2luaXRfd2FpdCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3NtY19pYl9kZXZpY2VzLm11dGV4KTsKJiM0Mzt9CiYjNDM7CiAvKiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgaWJfcmVnaXN0ZXJfY2xpZW50KCkgKi8KIHN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpCiB7CkBAIC05NDksNyAmIzQzOzk4NywxMSBAQCBzdGF0aWMgaW50IHNtY19pYl9hZGRfZGV2KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2KQogCQlyZXR1cm4gLUVOT01FTTsKIAogCXNtY2liZGV2LSZndDtpYmRldiA9IGliZGV2OwomIzQzOwlnZXRfZGV2aWNlKCZhbXA7aWJkZXYtJmd0O2Rldik7CiYjNDM7CXJlZmNvdW50X3NldCgmYW1wO3NtY2liZGV2LSZndDtyZWZjbnQsIDEpOwogCUlOSVRfV09SSygmYW1wO3NtY2liZGV2LSZndDtwb3J0X2V2ZW50X3dvcmssIHNtY19pYl9wb3J0X2V2ZW50X3dvcmspOwomIzQzOwlhdG9taWNfc2V0KCZhbXA7c21jaWJkZXYtJmd0O2luaXRfY250LCAwKTsKJiM0MzsJaW5pdF93YWl0cXVldWVfaGVhZCgmYW1wO3NtY2liZGV2LSZndDtpbml0X3dhaXQpOwogCWF0b21pY19zZXQoJmFtcDtzbWNpYmRldi0mZ3Q7bG5rX2NudCwgMCk7CiAJaW5pdF93YWl0cXVldWVfaGVhZCgmYW1wO3NtY2liZGV2LSZndDtsbmtzX2RlbGV0ZWQpOwogCW11dGV4X2luaXQoJmFtcDtzbWNpYmRldi0mZ3Q7bXV0ZXgpOwpAQCAtMTAwMCwxMSAmIzQzOzEwNDIsMTQgQEAgc3RhdGljIHZvaWQgc21jX2liX3JlbW92ZV9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHZvaWQgKmNsaWVudF9kYXRhKQogCW11dGV4X3VubG9jaygmYW1wO3NtY19pYl9kZXZpY2VzLm11dGV4KTsKIAlwcl93YXJuX3JhdGVsaW1pdGVkKCYjMzQ7c21jOiByZW1vdmluZyBpYiBkZXZpY2UgJXNcbiYjMzQ7LAogCQkJICAgIHNtY2liZGV2LSZndDtpYmRldi0mZ3Q7bmFtZSk7CiYjNDM7CWlmIChhdG9taWNfcmVhZCgmYW1wO3NtY2liZGV2LSZndDtpbml0X2NudCkpCiYjNDM7CQl3YWl0X2V2ZW50KHNtY2liZGV2LSZndDtpbml0X3dhaXQsCiYjNDM7CQkJICAgIWF0b21pY19yZWFkKCZhbXA7c21jaWJkZXYtJmd0O2luaXRfY250KSk7CiAJc21jX3NtY3JfdGVybWluYXRlX2FsbChzbWNpYmRldik7CiAJc21jX2liX2NsZWFudXBfcGVyX2liZGV2KHNtY2liZGV2KTsKIAlpYl91bnJlZ2lzdGVyX2V2ZW50X2hhbmRsZXIoJmFtcDtzbWNpYmRldi0mZ3Q7ZXZlbnRfaGFuZGxlcik7CiAJY2FuY2VsX3dvcmtfc3luYygmYW1wO3NtY2liZGV2LSZndDtwb3J0X2V2ZW50X3dvcmspOwotCWtmcmVlKHNtY2liZGV2KTsKJiM0MzsJc21jX2liZGV2X3B1dChzbWNpYmRldik7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgaWJfY2xpZW50IHNtY19pYl9jbGllbnQgPSB7CmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19pYi5oIGIvbmV0L3NtYy9zbWNfaWIuaAppbmRleCBlZjhhYzJiNzU0NmRmLi5kMzI1NDczNTBlOGI4IDEwMDY0NAotLS0gYS9uZXQvc21jL3NtY19pYi5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2liLmgKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaWZfZXRoZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tdXRleC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZjb3VudC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3dhaXQuaCZndDsKICNpbmNsdWRlICZsdDtyZG1hL2liX3ZlcmJzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3NtYy5oJmd0OwpAQCAtNTEsNiAmIzQzOzUyLDkgQEAgc3RydWN0IHNtY19pYl9kZXZpY2UgewkJCQkvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqLwogCXN0cnVjdCB3b3JrX3N0cnVjdAlwb3J0X2V2ZW50X3dvcms7CiAJdW5zaWduZWQgbG9uZwkJcG9ydF9ldmVudF9tYXNrOwogCURFQ0xBUkVfQklUTUFQKHBvcnRzX2dvaW5nX2F3YXksIFNNQ19NQVhfUE9SVFMpOwomIzQzOwlyZWZjb3VudF90CQlyZWZjbnQ7CQkvKiBvYmplY3QgbGlmZXRpbWUgKi8KJiM0MzsJYXRvbWljX3QJCWluaXRfY250OwkvKiB1bnB1Ymxpc2hlZCBsaW5rIGluaXRpYWxpemF0aW9ucyAqLwomIzQzOwl3YWl0X3F1ZXVlX2hlYWRfdAlpbml0X3dhaXQ7CS8qIHdhaXQgZm9yIGxpbmtzIHRvIGJlIHB1Ymxpc2hlZCAqLwogCWF0b21pY190CQlsbmtfY250OwkvKiBudW1iZXIgb2YgbGlua3Mgb24gaWJkZXYgKi8KIAl3YWl0X3F1ZXVlX2hlYWRfdAlsbmtzX2RlbGV0ZWQ7CS8qIHdhaXQgNCByZW1vdmFsIG9mIGFsbCBsaW5rcyovCiAJc3RydWN0IG11dGV4CQltdXRleDsJCS8qIHByb3RlY3QgZGV2IHNldHVwJiM0MztjbGVhbnVwICovCkBAIC01OSw2ICYjNDM7NjMsMTEgQEAgc3RydWN0IHNtY19pYl9kZXZpY2UgewkJCQkvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqLwogCWludAkJCW5kZXZfaWZpZHhbU01DX01BWF9QT1JUU107IC8qIG5kZXYgaWYgaW5kZXhlcyAqLwogfTsKIAomIzQzO3ZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpOwomIzQzO3ZvaWQgc21jX2liZGV2X3B1dChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpOwomIzQzO2ludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpOwomIzQzO3ZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7CiYjNDM7CiBzdGF0aWMgaW5saW5lIF9fYmUzMiBzbWNfaWJfZ2lkX3RvX2lwdjQodTggZ2lkW1NNQ19HSURfU0laRV0pCiB7CiAJc3RydWN0IGluNl9hZGRyICphZGRyNiA9IChzdHJ1Y3QgaW42X2FkZHIgKilnaWQ7CmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19sbGMuYyBiL25ldC9zbWMvc21jX2xsYy5jCmluZGV4IGM5Y2NkODQ4MDM2OWMuLmUxNmFhYTUxNDM2OGEgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2xsYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2xsYy5jCkBAIC0xMTA4LDYgJiM0MzsxMTA4LDcgQEAgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpCiAJcmMgPSBzbWNyX2xpbmtfaW5pdChsZ3IsIGxua19uZXcsIGxua19pZHgsIGluaSk7CiAJaWYgKHJjKQogCQlnb3RvIG91dF9yZWplY3Q7CiYjNDM7CXNtY19pYmRldl9pbml0X2VuZChsbmtfbmV3LSZndDtzbWNpYmRldik7CiAJc21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obG5rX25ldywgbGxjKTsKIAlsbmtfbmV3LSZndDtsaW5rX2lkID0gbGxjLSZndDtsaW5rX251bTsJLyogU01DIHNlcnZlciBhc3NpZ25zIGxpbmsgaWQgKi8KIAlzbWNfbGxjX2xpbmtfc2V0X3VpZChsbmtfbmV3KTsKQEAgLTExNDMsNyAmIzQzOzExNDQsNyBAQCBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSkKIG91dF9yZWplY3Q6CiAJc21jX2xsY19jbGlfYWRkX2xpbmtfcmVqZWN0KHFlbnRyeSk7CiBvdXQ6Ci0Ja2ZyZWUoaW5pKTsKJiM0MzsJc21jX2luaXRfaW5mb19mcmVlKGluaSk7CiAJa2ZyZWUocWVudHJ5KTsKIAlyZXR1cm4gcmM7CiB9CkBAIC0xMjE3LDcgJiM0MzsxMjE4LDcgQEAgc3RhdGljIHZvaWQgc21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAlzbWNfbGxjX3NlbmRfYWRkX2xpbmsobGluaywgaW5pLSZndDtpYl9kZXYtJmd0O21hY1tpbmktJmd0O2liX3BvcnQgLSAxXSwKIAkJCSAgICAgIGluaS0mZ3Q7aWJfZ2lkLCBOVUxMLCBTTUNfTExDX1JFUSk7CiBvdXQ6Ci0Ja2ZyZWUoaW5pKTsKJiM0MzsJc21jX2luaXRfaW5mb19mcmVlKGluaSk7CiAJa2ZyZWUocWVudHJ5KTsKIH0KIApAQCAtMTQ4Nyw2ICYjNDM7MTQ4OCw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssCiAJaWYgKHJjKQogCQlnb3RvIG91dDsKIAlsaW5rX25ldyA9ICZhbXA7bGdyLSZndDtsbmtbbG5rX2lkeF07CiYjNDM7CXNtY19pYmRldl9pbml0X2VuZChsaW5rX25ldy0mZ3Q7c21jaWJkZXYpOwogCiAJcmMgPSBzbWNyX2J1Zl9tYXBfbGdyKGxpbmtfbmV3KTsKIAlpZiAocmMpCkBAIC0xNTQ0LDcgJiM0MzsxNTQ2LDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAl9CiBvdXQ6CiAJa2ZyZWUocWVudHJ5KTsKLQlrZnJlZShpbmkpOwomIzQzOwlzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTsKIAlpZiAoc2VuZF9yZXFfYWRkX2xpbmtfcmVzcCkKIAkJc21jX2xsY19zZW5kX3JlcV9hZGRfbGlua19yZXNwb25zZShyZXFfcWVudHJ5KTsKIAlyZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19wbmV0LmMgYi9uZXQvc21jL3NtY19wbmV0LmMKaW5kZXggNjNlMjg2ZTJkZmFhOC4uYmUxZjUxMzdjOGVlNyAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfcG5ldC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX3BuZXQuYwpAQCAtOTgwLDE0ICYjNDM7OTgwLDIyIEBAIHN0YXRpYyBpbnQgc21jX3BuZXRfZGV0ZXJtaW5lX2dpZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqaWJkZXYsIGludCBpLAogCWlmICghaW5pLSZndDtjaGVja19zbWNydjIgJmFtcDsmYW1wOwogCSAgICAhc21jX2liX2RldGVybWluZV9naWQoaWJkZXYsIGksIGluaS0mZ3Q7dmxhbl9pZCwgaW5pLSZndDtpYl9naWQsIE5VTEwsCiAJCQkJICBOVUxMKSkgewomIzQzOwkJaWYgKGluaS0mZ3Q7aWJfZGV2X3JlZikKJiM0MzsJCQlzbWNfaWJkZXZfcHV0KGluaS0mZ3Q7aWJfZGV2KTsKJiM0MzsJCXNtY19pYmRldl9nZXQoaWJkZXYpOwogCQlpbmktJmd0O2liX2RldiA9IGliZGV2OwomIzQzOwkJaW5pLSZndDtpYl9kZXZfcmVmID0gdHJ1ZTsKIAkJaW5pLSZndDtpYl9wb3J0ID0gaTsKIAkJcmV0dXJuIDA7CiAJfQogCWlmIChpbmktJmd0O2NoZWNrX3NtY3J2MiAmYW1wOyZhbXA7CiAJICAgICFzbWNfaWJfZGV0ZXJtaW5lX2dpZChpYmRldiwgaSwgaW5pLSZndDt2bGFuX2lkLCBpbmktJmd0O3NtY3J2Mi5pYl9naWRfdjIsCiAJCQkJICBOVUxMLCAmYW1wO2luaS0mZ3Q7c21jcnYyKSkgewomIzQzOwkJaWYgKGluaS0mZ3Q7c21jcnYyLmliX2Rldl92Ml9yZWYpCiYjNDM7CQkJc21jX2liZGV2X3B1dChpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjIpOwomIzQzOwkJc21jX2liZGV2X2dldChpYmRldik7CiAJCWluaS0mZ3Q7c21jcnYyLmliX2Rldl92MiA9IGliZGV2OwomIzQzOwkJaW5pLSZndDtzbWNydjIuaWJfZGV2X3YyX3JlZiA9IHRydWU7CiAJCWluaS0mZ3Q7c21jcnYyLmliX3BvcnRfdjIgPSBpOwogCQlyZXR1cm4gMDsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMDIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBUaGlzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYSBkZWNlbnQgY2h1bmsgb2YgdGhlIFNNQyBjb2RlIOKAkyBgYWZfc21jLmNgLCBgc21jX2NvcmUuY2AsIGBzbWNfY29yZS5oYCwgYHNtY19pYi5jYCwgYHNtY19pYi5oYCwgYHNtY19sbGMuY2AsIGFuZCBgc21jX3BuZXQuY2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCYjMzk7cyBxdWl0ZSBhIHdpZGUgc2NvcGUsIHNvIEkgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbXBsaWNhdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgcHJvcGVybHkgZnJlZWluZyB0aGUgYHN0cnVjdCBzbWNfaW5pdF9pbmZvYCBzdHJ1Y3R1cmUgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIGBzbWNfaW5pdF9pbmZvX2ZyZWVgLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiBmb3IgcHJldmVudGluZyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLiBJIHNlZSB0aGUgcGF0Y2ggYWxzbyBpbmNsdWRlcyBtYW5hZ2luZyB0aGUgYHNtY19pYl9kZXZpY2VgIHdpdGggcmVmZXJlbmNlIGNvdW50aW5nIChgcmVmY250YCkgYW5kIGFuIGluaXRpYWxpemF0aW9uIGNvdW50ZXIgKGBpbml0X2NudGApLCBhbG9uZyB3aXRoIHVzaW5nIGBzbWNfaWJkZXZfcHV0YCwgd2hpY2ggaW5kaWNhdGVzIHRoZXkmIzM5O3JlIGFkZHJlc3NpbmcgaG93IHRoZXNlIGRldmljZXMgYXJlIG1hbmFnZWQuCgpTaW5jZSB0aGlzIGlzIGluIHRoZSBTTUMgc3Vic3lzdGVtLCBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gU01DIGlzIHJlbGV2YW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggbWVhbnMgaXQgY2FuIGJlIHJ1bm5pbmcgb3ZlciBUQ1AvSVAgb3IgUkRNQSBlbXVsYXRvcnMsIGxpa2Ugc2l3IG9yIHJ4ZS4gSSYjMzk7bSBhbHNvIHJlbWVtYmVyaW5nIHRoYXQgU01DIGNhbiB1dGlsaXplIFJvQ0Ugb3IgSVNNLCBhbmQgdGhhdCBzb2Z0LVJvQ0UgKFJYRSkgaXMgZXZlbiBhdmFpbGFibGUgaW4gUUVNVS4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYmVjYXVzZSBpdCBtZWFucyB3ZSBjb3VsZCBwb3RlbnRpYWxseSBmdXp6IHRoaXMuCgpOb3csIG15IG5leHQgbW92ZSBpcyB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX1NNQ2AgaXMgc2V0IGNvcnJlY3RseS4gSSYjMzk7bGwgYWxzbyBjaGVjayBgbmV0L3NtYy9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIG9wdGlvbnMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZiBvciBtaWdodCBuZWVkIHRvIGNvbmZpZ3VyZSBmb3IgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU01DJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xubmV0L3NtYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuLS1cbm5ldC9zbWMvS2NvbmZpZy0xMy1cbm5ldC9zbWMvS2NvbmZpZzoxNDpjb25maWcgU01DX0RJQUdcbm5ldC9zbWMvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O1NNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTIyLVxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcbm5ldC9zbWMvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4OTUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYENPTkZJR19TTUNgIERlcGVuZGVuY2llcyoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBgQ09ORklHX1NNQ2AuLi4gd2hhdCAqZXhhY3RseSogaXMgdGhhdCB0aWVkIHRvPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIG1ha2luZyBhbnkgbW9kaWZpY2F0aW9ucyBvciBpbnRlZ3JhdGlvbnMuIEl0JiMzOTtzIGEgcXVpY2sgcmVmbGV4LCByZWFsbHksIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLiBJJiMzOTttIGVzc2VudGlhbGx5IHJ1bm5pbmcgYSBkZXBlbmRlbmN5IGFuYWx5c2lzIGluIG15IGhlYWQuIFdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMsIGRyaXZlcnMsIG9yIGV2ZW4gaGlnaGVyLWxldmVsIGZlYXR1cmVzIG1pZ2h0IHJlbHkgb24gdGhlIGZ1bmN0aW9uYWxpdHkgZW5hYmxlZCBieSB0aGF0IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24/IElzIGl0IGEgY29yZSBjb21wb25lbnQsIG9yIHNvbWV0aGluZyBtb3JlIHBlcmlwaGVyYWw/IE15IGFpbSBpcyB0byBidWlsZCBhIGNvbXBsZXRlIG1lbnRhbCBtYXAgb2YgdGhlIGNvbmZpZ3VyYXRpb24mIzM5O3MgcmVhY2guIEkgd2FudCB0byBtaW5pbWl6ZSB1bmZvcmVzZWVuIGNvbnNlcXVlbmNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZz0yPWNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbm5ldC9zbWMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG5uZXQvc21jL0tjb25maWctNS1cdGhlbHBcbi0tXG5uZXQvc21jL0tjb25maWc9MTQ9Y29uZmlnIFNNQ19ESUFHXG5uZXQvc21jL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xubmV0L3NtYy9LY29uZmlnOjE2Olx0ZGVwZW5kcyBvbiBTTUNcbm5ldC9zbWMvS2NvbmZpZy0xNy1cdGhlbHBcbi0tXG5uZXQvc21jL0tjb25maWc9MjM9Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG5uZXQvc21jL0tjb25maWc6MjU6XHRkZXBlbmRzIG9uIFNNQyBcdTAwMjZcdTAwMjYgQlBGX0pJVCBcdTAwMjZcdTAwMjYgQlBGX1NZU0NBTExcbm5ldC9zbWMvS2NvbmZpZy0yNi1cdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzNTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWNvZGluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gVGhpcyBkZXBlbmRlbmN5IGNoYWluLi4uIGBkZXBlbmRzIG9uIElORVQgJmFtcDsmYW1wOyBJTkZJTklCQU5EICZhbXA7JmFtcDsgRElCU2AuLi4gRElCUz8gVGhhdCBkb2VzbiYjMzk7dCBpbW1lZGlhdGVseSByaW5nIGEgYmVsbC4gTXkgaW5pdGlhbCByZWFkaW5nIG1pZ2h0IGhhdmUgYmVlbiBvZmYsIG9yIHBlcmhhcHMgdGhlcmUmIzM5O3MgYSB0eXBvIGluIG15IG1lbnRhbCBwcm9jZXNzaW5nLiBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFJpZ2h0LCBsZXQgbWUgcHVsbCB1cCBgbmV0L3NtYy9LY29uZmlnYCwgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBmaXJzdCB0ZW4gbGluZXMuIFRoYXQgc2hvdWxkIGNsZWFyIHRoaXMgdXAgcXVpY2tseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTTUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgU01DLVIgcHJvdmlkZXMgYSBcJiMzNDtzb2NrZXRzIG92ZXIgUkRNQVwmIzM0OyBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXG4gICA3Olx0XHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxuICAgODpcdFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxuICAgOTpcdFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXG4gIDEwOlx0XHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcyMQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVGhpcyAmIzM0O0RJQlMmIzM0OyBCdXNpbmVzcyoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiAmIzM0O0RJQlMmIzM0Oz8gVGhhdCB0ZXJtJiMzOTtzIHRocm93aW5nIG1lIGZvciBhIGxvb3AuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayDigJMgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzbiYjMzk7dCBzb21lIG9ic2N1cmUgdHlwbyBzbmVha2luZyBpbnRvIHRoZSBrZXJuZWwgdHJlZS4gTWF5YmUgdGhlcmUmIzM5O3MgYSBuZXcgY29tbWl0IHRoYXQgc2xpcHBlZCB0aHJvdWdoPyBBaCwgbm9wZSwgc3RpbGwgJiMzNDtESUJTJiMzNDsuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3RlcCBiYWNrLCBtYXliZSBJJiMzOTttIGxvb2tpbmcgYXQgaXQgd3JvbmcuICYjMzQ7RElCUyYjMzQ7Li4uIGlzIHRoaXMgcmVsYXRlZCB0byBJUHY2IHNvbWVob3c/IE1heWJlIGl0JiMzOTtzIGEgY29uZmlndXJhdGlvbiBvcHRpb24/IFRoZSBLY29uZmlnIGZpbGVzIGFyZSBteSBuZXh0IHN0b3AuIFRpbWUgdG8gcnVuIGEgZ3JlcCBhbmQgc2VlIHdoYXQgdGhpcyBteXN0ZXJ5ICYjMzQ7RElCUyYjMzQ7IGlzIGFsbCBhYm91dCBpbiB0aGUgY29udGV4dCBvZiB0aGUga2VybmVsIGNvbmZpZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERJQlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cbmRyaXZlcnMvZGlicy9LY29uZmlnOjE0OmNvbmZpZyBESUJTX0xPXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xNS1cdGJvb2wgXCYjMzQ7SW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNjkKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiA1NzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFNNQyBDb25maWd1cmF0aW9uIGFuZCBDb2RlIENoYW5nZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgRElCU2AgaXMgYW4gaW50ZXJuYWwgcGllY2Ugd2l0aGluIHRoaXMga2VybmVsIHRyZWUuIGBTTUNgIGNsZWFybHkgZGVwZW5kcyBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kLCBvZiBjb3Vyc2UsIGBESUJTYC4gU28sIHRvIGVuYWJsZSBgU01DYCwgYWxsIHRocmVlIGRlcGVuZGVuY2llcyBtdXN0IGJlIGVuYWJsZWQuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIGBJTkZJTklCQU5EYCwgdGhlIFJETUEgc3Vic3lzdGVtLCBoYXMgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gYWRkIGBTTUNgLCBgSU5GSU5JQkFORGAsIGFuZCBgRElCU2AgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIGVuYWJsZWQuCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgY29kZSBjaGFuZ2VzLiBJJiMzOTt2ZSBnb3QgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZDogYHNtY19maWxsX2dpZF9saXN0YCwgYHNtY19jb25uZWN0X3JkbWFfdjJfcHJlcGFyZWAsIGBfX3NtY19jb25uZWN0YCwgYHNtY19maW5kX3JkbWFfdjJfZGV2aWNlX3NlcnZgLCBgc21jX2xpc3Rlbl93b3JrYCwgYHNtY19pbml0X2luZm9fZnJlZWAsIGBzbWNyX2xpbmtfaW5pdGAsIGBzbWNfbGdyX2NyZWF0ZWAsIGBzbWNfaWJfbmRldl9jaGFuZ2VgLCBgc21jX2liZGV2X3JlbGVhc2VgLCBgc21jX2liZGV2X2dldGAsIGBzbWNfaWJkZXZfcHV0YCwgYHNtY19pYmRldl9pbml0X2JlZ2luYCwgYHNtY19pYmRldl9pbml0X2VuZGAsIGBzbWNfaWJfYWRkX2RldmAsIGBzbWNfaWJfcmVtb3ZlX2RldmAsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX2NsaV9hZGRfbGlua19pbnZpdGVgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBhbmQgYHNtY19wbmV0X2RldGVybWluZV9naWRgLgoKTG9va2luZyBhdCB0aGF0IGxpc3QsIEkmIzM5O2xsIG5lZWQgdG8gY29uY2VudHJhdGUgb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBiZSBtb3N0IGltcGFjdGVkIGJ5IHRoZSBjaGFuZ2VzOyB0aG9zZSBhcmUgYF9fc21jX2Nvbm5lY3RgLCBgc21jX2xpc3Rlbl93b3JrYCwgYHNtY19pYl9hZGRfZGV2YCwgYHNtY19pYl9yZW1vdmVfZGV2YCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYW5kIGBzbWNyX2xpbmtfaW5pdGAuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLCBgX19zbWNfY29ubmVjdGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaGVscHMgbmFycm93IHRoaW5ncyBkb3duLCB3aGljaCBtZWFucyBpdCBsaWtlbHkgaGFzIHNvbWUgc2NvcGUgcmVzdHJpY3Rpb25zLiBMZXQmIzM5O3MgY2hlY2sgYHNtY19jb25uZWN0YCwgYHNtY19saXN0ZW5gLCBhbmQgYHNtY19saXN0ZW5fd29ya2AuIEl0IGxvb2tzIGxpa2UgYHNtY19jb25uZWN0YCBpcyB0aGUgYGNvbm5lY3RgIHN5c2NhbGwgaGFuZGxlciBmb3IgQUZfU01DLiBgc21jX2xpc3RlbmAgbXVzdCBiZSB0aGUgYGxpc3RlbmAgc3lzY2FsbCBoYW5kbGVyLiBgc21jX2liX2FkZF9kZXZgIGlzIGNhbGxlZCB3aGVuIGFuIElCIGRldmljZSBpcyBhZGRlZCwgYW5kIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AgaXMgY2FsbGVkIHdoZW4gYW4gTExDIEFERF9MSU5LIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuIE5vdyBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uIHRob3NlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGZvciBhIG1vcmUgZGV0YWlsZWQgcmV2aWV3LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkfHN0YXRpYyBpbnR8c3RhdGljIHZvaWQpIFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfaWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19pYi5jPTQ1PXU4IGxvY2FsX3N5c3RlbWlkW1NNQ19TWVNURU1JRF9MRU5dO1x0XHQvKiB1bmlxdWUgc3lzdGVtIGlkZW50aWZpZXIgKi9cbm5ldC9zbWMvc21jX2liLmMtNDYtXG5uZXQvc21jL3NtY19pYi5jOjQ3OnN0YXRpYyBpbnQgc21jX2liX21vZGlmeV9xcF9pbml0KHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfaWIuYy00OC17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy02MS1cbm5ldC9zbWMvc21jX2liLmM6NjI6c3RhdGljIGludCBzbWNfaWJfbW9kaWZ5X3FwX3J0cihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2liLmMtNjMte1xuLS1cbm5ldC9zbWMvc21jX2liLmMtOTQtXG5uZXQvc21jL3NtY19pYi5jOjk1OmludCBzbWNfaWJfbW9kaWZ5X3FwX3J0cyhzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2liLmMtOTYte1xuLS1cbm5ldC9zbWMvc21jX2liLmMtMTEzLVxubmV0L3NtYy9zbWNfaWIuYzoxMTQ6aW50IHNtY19pYl9tb2RpZnlfcXBfZXJyb3Ioc3RydWN0IHNtY19saW5rICpsbmspXG5uZXQvc21jL3NtY19pYi5jLTExNS17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy0xMjItXG5uZXQvc21jL3NtY19pYi5jOjEyMzppbnQgc21jX2liX3JlYWR5X2xpbmsoc3RydWN0IHNtY19saW5rICpsbmspXG5uZXQvc21jL3NtY19pYi5jLTEyNC17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy0xNTQtXG5uZXQvc21jL3NtY19pYi5jOjE1NTpzdGF0aWMgaW50IHNtY19pYl9maWxsX21hYyhzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsIHU4IGlicG9ydClcbm5ldC9zbWMvc21jX2liLmMtMTU2LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jPTE4MT1ib29sIHNtY19pYl9pc192YWxpZF9sb2NhbF9zeXN0ZW1pZCh2b2lkKVxuLS1cbm5ldC9zbWMvc21jX2liLmMtMTg1LVxubmV0L3NtYy9zbWNfaWIuYzoxODY6c3RhdGljIHZvaWQgc21jX2liX2luaXRfbG9jYWxfc3lzdGVtaWQodm9pZClcbm5ldC9zbWMvc21jX2liLmMtMTg3LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jPTE5MT1ib29sIHNtY19pYl9wb3J0X2FjdGl2ZShzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsIHU4IGlicG9ydClcbi0tXG5uZXQvc21jL3NtY19pYi5jLTE5NS1cbm5ldC9zbWMvc21jX2liLmM6MTk2OmludCBzbWNfaWJfZmluZF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsIF9fYmUzMiBzYWRkciwgX19iZTMyIGRhZGRyLFxubmV0L3NtYy9zbWNfaWIuYy0xOTctXHRcdCAgICAgIHU4IG5leHRob3BfbWFjW10sIHU4ICp1c2VzX2dhdGV3YXkpXG4tLVxubmV0L3NtYy9zbWNfaWIuYy0yMjctXG5uZXQvc21jL3NtY19pYi5jOjIyODpzdGF0aWMgaW50IHNtY19pYl9kZXRlcm1pbmVfZ2lkX3JjdShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbm5ldC9zbWMvc21jX2liLmMtMjI5LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpYl9naWRfYXR0ciAqYXR0cixcbi0tXG5uZXQvc21jL3NtY19pYi5jLTI3My0vKiBkZXRlcm1pbmUgdGhlIGdpZCBmb3IgYW4gaWItZGV2aWNlIHBvcnQgYW5kIHZsYW4gaWQgKi9cbm5ldC9zbWMvc21jX2liLmM6Mjc0OmludCBzbWNfaWJfZGV0ZXJtaW5lX2dpZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsIHU4IGlicG9ydCxcbm5ldC9zbWMvc21jX2liLmMtMjc1LVx0XHRcdCB1bnNpZ25lZCBzaG9ydCB2bGFuX2lkLCB1OCBnaWRbXSwgdTggKnNnaWRfaW5kZXgsXG4tLVxubmV0L3NtYy9zbWNfaWIuYz0zMDc9c3RhdGljIGJvb2wgc21jX2liX2NoZWNrX2xpbmtfZ2lkKHU4IGdpZFtTTUNfR0lEX1NJWkVdLCBib29sIHNtY3J2Mixcbi0tXG5uZXQvc21jL3NtY19pYi5jLTMzMi0vKiBjaGVjayBhbGwgbGlua3MgaWYgdGhlIGdpZCBpcyBzdGlsbCBkZWZpbmVkIG9uIHNtY2liZGV2ICovXG5uZXQvc21jL3NtY19pYi5jOjMzMzpzdGF0aWMgdm9pZCBzbWNfaWJfZ2lkX2NoZWNrKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgdTggaWJwb3J0KVxubmV0L3NtYy9zbWNfaWIuYy0zMzQte1xuLS1cbm5ldC9zbWMvc21jX2liLmMtMzU3LVxubmV0L3NtYy9zbWNfaWIuYzozNTg6c3RhdGljIGludCBzbWNfaWJfcmVtZW1iZXJfcG9ydF9hdHRyKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgdTggaWJwb3J0KVxubmV0L3NtYy9zbWNfaWIuYy0zNTkte1xuLS1cbm5ldC9zbWMvc21jX2liLmMtMzgwLS8qIHByb2Nlc3MgY29udGV4dCB3cmFwcGVyIGZvciBtaWdodF9zbGVlcCBzbWNfaWJfcmVtZW1iZXJfcG9ydF9hdHRyICovXG5uZXQvc21jL3NtY19pYi5jOjM4MTpzdGF0aWMgdm9pZCBzbWNfaWJfcG9ydF9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zbWMvc21jX2liLmMtMzgyLXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTQwMS0vKiBjYW4gYmUgY2FsbGVkIGluIElSUSBjb250ZXh0ICovXG5uZXQvc21jL3NtY19pYi5jOjQwMjpzdGF0aWMgdm9pZCBzbWNfaWJfZ2xvYmFsX2V2ZW50X2hhbmRsZXIoc3RydWN0IGliX2V2ZW50X2hhbmRsZXIgKmhhbmRsZXIsXG5uZXQvc21jL3NtY19pYi5jLTQwMy1cdFx0XHRcdFx0c3RydWN0IGliX2V2ZW50ICppYmV2ZW50KVxuLS1cbm5ldC9zbWMvc21jX2liLmMtNDUwLVxubmV0L3NtYy9zbWNfaWIuYzo0NTE6dm9pZCBzbWNfaWJfZGVhbGxvY19wcm90ZWN0aW9uX2RvbWFpbihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2liLmMtNDUyLXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTQ1Ny1cbm5ldC9zbWMvc21jX2liLmM6NDU4OmludCBzbWNfaWJfY3JlYXRlX3Byb3RlY3Rpb25fZG9tYWluKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfaWIuYy00NTkte1xuLS1cbm5ldC9zbWMvc21jX2liLmM9NDY5PXN0YXRpYyBib29sIHNtY3JfZGlhZ19pc19kZXZfY3JpdGljYWwoc3RydWN0IHNtY19sZ3JfbGlzdCAqc21jX2xncixcbi0tXG5uZXQvc21jL3NtY19pYi5jLTQ5NS1cbm5ldC9zbWMvc21jX2liLmM6NDk2OnN0YXRpYyBpbnQgc21jX25sX2hhbmRsZV9kZXZfcG9ydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3NtYy9zbWNfaWIuYy00OTctXHRcdFx0XHQgIHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LFxuLS1cbm5ldC9zbWMvc21jX2liLmM9NTM2PXN0YXRpYyBib29sIHNtY19ubF9oYW5kbGVfcGNpX3ZhbHVlcyhjb25zdCBzdHJ1Y3Qgc21jX3BjaV9kZXYgKnNtY19wY2lfZGV2LFxuLS1cbm5ldC9zbWMvc21jX2liLmMtNTUxLVxubmV0L3NtYy9zbWNfaWIuYzo1NTI6c3RhdGljIGludCBzbWNfbmxfaGFuZGxlX3NtY3JfZGV2KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldixcbm5ldC9zbWMvc21jX2liLmMtNTUzLVx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zbWMvc21jX2liLmMtNjA0LVxubmV0L3NtYy9zbWNfaWIuYzo2MDU6c3RhdGljIHZvaWQgc21jX25sX3ByZXBfc21jcl9kZXYoc3RydWN0IHNtY19pYl9kZXZpY2VzICpkZXZfbGlzdCxcbm5ldC9zbWMvc21jX2liLmMtNjA2LVx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NtYy9zbWNfaWIuYy02MjctXG5uZXQvc21jL3NtY19pYi5jOjYyODppbnQgc21jcl9ubF9nZXRfZGV2aWNlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9zbWMvc21jX2liLmMtNjI5LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTYzMy1cbm5ldC9zbWMvc21jX2liLmM6NjM0OnN0YXRpYyB2b2lkIHNtY19pYl9xcF9ldmVudF9oYW5kbGVyKHN0cnVjdCBpYl9ldmVudCAqaWJldmVudCwgdm9pZCAqcHJpdilcbm5ldC9zbWMvc21jX2liLmMtNjM1LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTY1NC1cbm5ldC9zbWMvc21jX2liLmM6NjU1OnZvaWQgc21jX2liX2Rlc3Ryb3lfcXVldWVfcGFpcihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2liLmMtNjU2LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTY2Mi0vKiBjcmVhdGUgYSBxdWV1ZSBwYWlyIHdpdGhpbiB0aGUgcHJvdGVjdGlvbiBkb21haW4gZm9yIGEgbGluayAqL1xubmV0L3NtYy9zbWNfaWIuYzo2NjM6aW50IHNtY19pYl9jcmVhdGVfcXVldWVfcGFpcihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2liLmMtNjY0LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTY5NC1cbm5ldC9zbWMvc21jX2liLmM6Njk1OnZvaWQgc21jX2liX3B1dF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBpYl9tciAqbXIpXG5uZXQvc21jL3NtY19pYi5jLTY5Ni17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy02OTktXG5uZXQvc21jL3NtY19pYi5jOjcwMDpzdGF0aWMgaW50IHNtY19pYl9tYXBfbXJfc2coc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX3Nsb3QsIHU4IGxpbmtfaWR4KVxubmV0L3NtYy9zbWNfaWIuYy03MDEte1xuLS1cbm5ldC9zbWMvc21jX2liLmMtNzE0LS8qIEFsbG9jYXRlIGEgbWVtb3J5IHJlZ2lvbiBhbmQgbWFwIHRoZSBkbWEgbWFwcGVkIFNHIGxpc3Qgb2YgYnVmX3Nsb3QgKi9cbm5ldC9zbWMvc21jX2liLmM6NzE1OmludCBzbWNfaWJfZ2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGliX3BkICpwZCwgaW50IGFjY2Vzc19mbGFncyxcbm5ldC9zbWMvc21jX2liLmMtNzE2LVx0XHRcdCAgICAgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX3Nsb3QsIHU4IGxpbmtfaWR4KVxuLS1cbm5ldC9zbWMvc21jX2liLmM9NzM4PWJvb2wgc21jX2liX2lzX3NnX25lZWRfc3luYyhzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbi0tXG5uZXQvc21jL3NtY19pYi5jLTc2NC0vKiBzeW5jaHJvbml6ZSBidWZmZXIgdXNhZ2UgZm9yIGNwdSBhY2Nlc3MgKi9cbm5ldC9zbWMvc21jX2liLmM6NzY1OnZvaWQgc21jX2liX3N5bmNfc2dfZm9yX2NwdShzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbm5ldC9zbWMvc21jX2liLmMtNzY2LVx0XHRcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfc2xvdCxcbi0tXG5uZXQvc21jL3NtY19pYi5jLTc4Ny0vKiBzeW5jaHJvbml6ZSBidWZmZXIgdXNhZ2UgZm9yIGRldmljZSBhY2Nlc3MgKi9cbm5ldC9zbWMvc21jX2liLmM6Nzg4OnZvaWQgc21jX2liX3N5bmNfc2dfZm9yX2RldmljZShzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbm5ldC9zbWMvc21jX2liLmMtNzg5LVx0XHRcdCAgICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfc2xvdCxcbi0tXG5uZXQvc21jL3NtY19pYi5jLTgxMC0vKiBNYXAgYSBuZXcgVFggb3IgUlggYnVmZmVyIFNHLXRhYmxlIHRvIERNQSAqL1xubmV0L3NtYy9zbWNfaWIuYzo4MTE6aW50IHNtY19pYl9idWZfbWFwX3NnKHN0cnVjdCBzbWNfbGluayAqbG5rLFxubmV0L3NtYy9zbWNfaWIuYy04MTItXHRcdCAgICAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9zbG90LFxuLS1cbm5ldC9zbWMvc21jX2liLmMtODI2LVxubmV0L3NtYy9zbWNfaWIuYzo4Mjc6dm9pZCBzbWNfaWJfYnVmX3VubWFwX3NnKHN0cnVjdCBzbWNfbGluayAqbG5rLFxubmV0L3NtYy9zbWNfaWIuYy04MjgtXHRcdFx0IHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9zbG90LFxuLS1cbm5ldC9zbWMvc21jX2liLmM9ODQxPWxvbmcgc21jX2liX3NldHVwX3Blcl9pYmRldihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4tLVxubmV0L3NtYy9zbWNfaWIuYy04ODMtXG5uZXQvc21jL3NtY19pYi5jOjg4NDpzdGF0aWMgdm9pZCBzbWNfaWJfY2xlYW51cF9wZXJfaWJkZXYoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxubmV0L3NtYy9zbWNfaWIuYy04ODUte1xuLS1cbm5ldC9zbWMvc21jX2liLmM9ODk3PXN0YXRpYyBzdHJ1Y3QgaWJfY2xpZW50IHNtY19pYl9jbGllbnQ7XG5uZXQvc21jL3NtY19pYi5jLTg5OC1cbm5ldC9zbWMvc21jX2liLmM6ODk5OnN0YXRpYyB2b2lkIHNtY19jb3B5X25ldGRldl9pZmluZGV4KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgaW50IHBvcnQpXG5uZXQvc21jL3NtY19pYi5jLTkwMC17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy05MTAtXG5uZXQvc21jL3NtY19pYi5jOjkxMTp2b2lkIHNtY19pYl9uZGV2X2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdW5zaWduZWQgbG9uZyBldmVudClcbm5ldC9zbWMvc21jX2liLmMtOTEyLXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTkzNi1cbm5ldC9zbWMvc21jX2liLmM6OTM3OnN0YXRpYyB2b2lkIHNtY19pYmRldl9yZWxlYXNlKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbm5ldC9zbWMvc21jX2liLmMtOTM4LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTk0Mi1cbm5ldC9zbWMvc21jX2liLmM6OTQzOnZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG5uZXQvc21jL3NtY19pYi5jLTk0NC17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy05NDctXG5uZXQvc21jL3NtY19pYi5jOjk0ODp2b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxubmV0L3NtYy9zbWNfaWIuYy05NDkte1xuLS1cbm5ldC9zbWMvc21jX2liLmMtOTUzLVxubmV0L3NtYy9zbWNfaWIuYzo5NTQ6aW50IHNtY19pYmRldl9pbml0X2JlZ2luKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbm5ldC9zbWMvc21jX2liLmMtOTU1LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTk2Ni1cbm5ldC9zbWMvc21jX2liLmM6OTY3OnZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbm5ldC9zbWMvc21jX2liLmMtOTY4LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTk3NS0vKiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgaWJfcmVnaXN0ZXJfY2xpZW50KCkgKi9cbm5ldC9zbWMvc21jX2liLmM6OTc2OnN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpXG5uZXQvc21jL3NtY19pYi5jLTk3Ny17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy0xMDM1LS8qIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpYl91bnJlZ2lzdGVyX2NsaWVudCgpICovXG5uZXQvc21jL3NtY19pYi5jOjEwMzY6c3RhdGljIHZvaWQgc21jX2liX3JlbW92ZV9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHZvaWQgKmNsaWVudF9kYXRhKVxubmV0L3NtYy9zbWNfaWIuYy0xMDM3LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jPTEwNjE9aW50IF9faW5pdCBzbWNfaWJfcmVnaXN0ZXJfY2xpZW50KHZvaWQpXG4tLVxubmV0L3NtYy9zbWNfaWIuYy0xMDY2LVxubmV0L3NtYy9zbWNfaWIuYzoxMDY3OnZvaWQgc21jX2liX3VucmVnaXN0ZXJfY2xpZW50KHZvaWQpXG5uZXQvc21jL3NtY19pYi5jLTEwNjgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDE4MAoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNNQyBJQiBEZXZpY2UgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFNNQyBjb2RlIGFuZCBpbW1lZGlhdGVseSBub3RpY2UgdGhhdCBgc21jX2liX2FkZF9kZXZgIGFuZCBgc21jX2liX3JlbW92ZV9kZXZgIGFyZSBzdGF0aWMuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgcHJhY3RpY2UsIGJ1dCBnb29kIHRvIGtlZXAgaW4gbWluZCBmb3Igc2NvcGluZy4gV2FpdCBhIG1pbnV0ZS4uLiBgc21jX2liX2FkZF9kZXZgIGlzIGFjdHVhbGx5IGEgY2FsbGJhY2shIEl0JiMzOTtzIGludm9rZWQgYnkgYGliX3JlZ2lzdGVyX2NsaWVudCgpYCB3aGVuIGFuIEluZmluaUJhbmQgZGV2aWNlIGlzIGFkZGVkLiBUaGF0IG1ha2VzIG1vcmUgc2Vuc2U7IGl0IGhhcyB0byBiZSBob3cgdGhlIFNNQyBsYXllciBob29rcyBpbnRvIHRoZSBJQiBzdWJzeXN0ZW0uIE5vdywgd2hhdCYjMzk7cyB0aGlzIGBzbWNfbGlzdGVuX3dvcmtgIGZ1bmN0aW9uPyBBaCwgaXQmIzM5O3MgYSB3b3JrcXVldWUgZnVuY3Rpb24uIFRoYXQgaGludHMgYXQgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcsIHdoaWNoIGlzIG9mdGVuIGNydWNpYWwgZm9yIG5ldHdvcmsgaW50ZXJhY3Rpb25zLiBGaW5hbGx5LCBgc21jX2Nvbm5lY3RgIGFuZCBgc21jX2xpc3RlbmAgYXJlIHRoZSByZWFsIHN5c2NhbGwgZW50cnkgcG9pbnRzLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byBgbmV0L3NtYy9hZl9zbWMuY2AgdG8gc2VlIGhvdyB0aG9zZSBhcmUgaW1wbGVtZW50ZWQgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggZXZlcnl0aGluZyBlbHNlIEkmIzM5O3ZlIGp1c3QgaWRlbnRpZmllZC4gVGltZSB0byBkaXZlIGRlZXBlciBhbmQgc2VlIGhvdyB0aGUgcGllY2VzIGZpdCB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihpbnR8dm9pZHxzdGF0aWMgaW50fHN0YXRpYyB2b2lkKSBbYS16QS1aMC05X10mIzQzO1xcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvYWZfc21jLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9hZl9zbWMuYz03MT1zdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdFx0KnNtY19jbG9zZV93cTtcdC8qIHdxIGZvciBjbG9zZSB3b3JrICovXG5uZXQvc21jL2FmX3NtYy5jLTcyLVxubmV0L3NtYy9hZl9zbWMuYzo3MzpzdGF0aWMgdm9pZCBzbWNfdGNwX2xpc3Rlbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqKTtcbm5ldC9zbWMvYWZfc21jLmM6NzQ6c3RhdGljIHZvaWQgc21jX2Nvbm5lY3Rfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7XG5uZXQvc21jL2FmX3NtYy5jLTc1LVxubmV0L3NtYy9hZl9zbWMuYzo3NjppbnQgc21jX25sX2R1bXBfaHNfbGltaXRhdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG5uZXQvc21jL2FmX3NtYy5jLTc3LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTEwMi1cbm5ldC9zbWMvYWZfc21jLmM6MTAzOmludCBzbWNfbmxfZW5hYmxlX2hzX2xpbWl0YXRpb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC9zbWMvYWZfc21jLmMtMTA0LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTEwOC1cbm5ldC9zbWMvYWZfc21jLmM6MTA5OmludCBzbWNfbmxfZGlzYWJsZV9oc19saW1pdGF0aW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvc21jL2FmX3NtYy5jLTExMC17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xMTQtXG5uZXQvc21jL2FmX3NtYy5jOjExNTpzdGF0aWMgdm9pZCBzbWNfc2V0X2tlZXBhbGl2ZShzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXG5uZXQvc21jL2FmX3NtYy5jLTExNi17XG4tLVxubmV0L3NtYy9hZl9zbWMuYz0xOTQ9c3RydWN0IHNtY19oYXNoaW5mbyBzbWNfdjZfaGFzaGluZm8gPSB7XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xOTgtXG5uZXQvc21jL2FmX3NtYy5jOjE5OTppbnQgc21jX2hhc2hfc2soc3RydWN0IHNvY2sgKnNrKVxubmV0L3NtYy9hZl9zbWMuYy0yMDAte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjEzLVxubmV0L3NtYy9hZl9zbWMuYzoyMTQ6dm9pZCBzbWNfdW5oYXNoX3NrKHN0cnVjdCBzb2NrICpzaylcbm5ldC9zbWMvYWZfc21jLmMtMjE1LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTIyNy0gKi9cbm5ldC9zbWMvYWZfc21jLmM6MjI4OnZvaWQgc21jX3JlbGVhc2VfY2Ioc3RydWN0IHNvY2sgKnNrKVxubmV0L3NtYy9hZl9zbWMuYy0yMjkte1xuLS1cbm5ldC9zbWMvYWZfc21jLmM9MjYyPUVYUE9SVF9TWU1CT0xfR1BMKHNtY19wcm90bzYpO1xubmV0L3NtYy9hZl9zbWMuYy0yNjMtXG5uZXQvc21jL2FmX3NtYy5jOjI2NDpzdGF0aWMgdm9pZCBzbWNfZmJhY2tfcmVzdG9yZV9jYWxsYmFja3Moc3RydWN0IHNtY19zb2NrICpzbWMpXG5uZXQvc21jL2FmX3NtYy5jLTI2NS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yNzgtXG5uZXQvc21jL2FmX3NtYy5jOjI3OTpzdGF0aWMgdm9pZCBzbWNfcmVzdG9yZV9mYWxsYmFja19jaGFuZ2VzKHN0cnVjdCBzbWNfc29jayAqc21jKVxubmV0L3NtYy9hZl9zbWMuYy0yODAte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjg3LVxubmV0L3NtYy9hZl9zbWMuYzoyODg6c3RhdGljIGludCBfX3NtY19yZWxlYXNlKHN0cnVjdCBzbWNfc29jayAqc21jKVxubmV0L3NtYy9hZl9zbWMuYy0yODkte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzI3LVxubmV0L3NtYy9hZl9zbWMuYzozMjg6aW50IHNtY19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG5uZXQvc21jL2FmX3NtYy5jLTMyOS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0zNzMtXG5uZXQvc21jL2FmX3NtYy5jOjM3NDpzdGF0aWMgdm9pZCBzbWNfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxubmV0L3NtYy9hZl9zbWMuYy0zNzUte1xuLS1cbm5ldC9zbWMvYWZfc21jLmM9MzkzPXN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgc21jX3Nsb2NrX2tleTtcbm5ldC9zbWMvYWZfc21jLmMtMzk0LVxubmV0L3NtYy9hZl9zbWMuYzozOTU6dm9pZCBzbWNfc2tfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgaW50IHByb3RvY29sKVxubmV0L3NtYy9hZl9zbWMuYy0zOTYte1xuLS1cbm5ldC9zbWMvYWZfc21jLmM9NDIxPXN0YXRpYyBzdHJ1Y3Qgc29jayAqc21jX3NvY2tfYWxsb2Moc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNDM3LVxubmV0L3NtYy9hZl9zbWMuYzo0Mzg6aW50IHNtY19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcbm5ldC9zbWMvYWZfc21jLmMtNDM5LVx0ICAgICBpbnQgYWRkcl9sZW4pXG4tLVxubmV0L3NtYy9hZl9zbWMuYy01MDAtLyogaWYgc2V0LCB1c2UgdmFsdWUgc2V0IGJ5IHNldHNvY2tvcHQoKSAtIGVsc2UgdXNlIElQdjQgb3IgU01DIHN5c2N0bCB2YWx1ZSAqL1xubmV0L3NtYy9hZl9zbWMuYzo1MDE6c3RhdGljIHZvaWQgc21jX2FkanVzdF9zb2NrX2J1ZnNpemVzKHN0cnVjdCBzb2NrICpuc2ssIHN0cnVjdCBzb2NrICpvc2ssXG5uZXQvc21jL2FmX3NtYy5jLTUwMi1cdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyBtYXNrKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNTEwLVxubmV0L3NtYy9hZl9zbWMuYzo1MTE6c3RhdGljIHZvaWQgc21jX2NvcHlfc29ja19zZXR0aW5ncyhzdHJ1Y3Qgc29jayAqbnNrLCBzdHJ1Y3Qgc29jayAqb3NrLFxubmV0L3NtYy9hZl9zbWMuYy01MTItXHRcdFx0XHQgICB1bnNpZ25lZCBsb25nIG1hc2spXG4tLVxubmV0L3NtYy9hZl9zbWMuYy01MjktXG5uZXQvc21jL2FmX3NtYy5jOjUzMDpzdGF0aWMgdm9pZCBzbWNfY29weV9zb2NrX3NldHRpbmdzX3RvX2NsYyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbm5ldC9zbWMvYWZfc21jLmMtNTMxLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTUzOS0vKiBjb3B5IG9ubHkgc2V0dGluZ3MgYW5kIGZsYWdzIHJlbGV2YW50IGZvciBzbWMgZnJvbSBjbGMgdG8gc21jIHNvY2tldCAqL1xubmV0L3NtYy9hZl9zbWMuYzo1NDA6c3RhdGljIHZvaWQgc21jX2NvcHlfc29ja19zZXR0aW5nc190b19zbWMoc3RydWN0IHNtY19zb2NrICpzbWMpXG5uZXQvc21jL2FmX3NtYy5jLTU0MS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy01NDUtLyogcmVnaXN0ZXIgdGhlIG5ldyB2emFsbG9jZWQgc25kYnVmIG9uIGFsbCBsaW5rcyAqL1xubmV0L3NtYy9hZl9zbWMuYzo1NDY6c3RhdGljIGludCBzbWNyX2xncl9yZWdfc25kYnVmcyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL2FmX3NtYy5jLTU0Ny1cdFx0XHRcdHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNuZF9kZXNjKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNTY4LS8qIHJlZ2lzdGVyIHRoZSBuZXcgcm1iIG9uIGFsbCBsaW5rcyAqL1xubmV0L3NtYy9hZl9zbWMuYzo1Njk6c3RhdGljIGludCBzbWNyX2xncl9yZWdfcm1icyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL2FmX3NtYy5jLTU3MC1cdFx0XHQgICAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNjE3LVxubmV0L3NtYy9hZl9zbWMuYzo2MTg6c3RhdGljIGludCBzbWNyX2NsbnRfY29uZl9maXJzdF9saW5rKHN0cnVjdCBzbWNfc29jayAqc21jKVxubmV0L3NtYy9hZl9zbWMuYy02MTkte1xuLS1cbm5ldC9zbWMvYWZfc21jLmM9NjkwPXN0YXRpYyBib29sIHNtY19pc2FzY2lpKGNoYXIgKmhvc3RuYW1lKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNjk5LVxubmV0L3NtYy9hZl9zbWMuYzo3MDA6c3RhdGljIHZvaWQgc21jX2Nvbm5fc2F2ZV9wZWVyX2luZm9fZmNlKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9hZl9zbWMuYy03MDEtXHRcdFx0XHRcdHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqY2xjKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNzI2LVxubmV0L3NtYy9hZl9zbWMuYzo3Mjc6c3RhdGljIHZvaWQgc21jcl9jb25uX3NhdmVfcGVlcl9pbmZvKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9hZl9zbWMuYy03MjgtXHRcdFx0XHQgICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqY2xjKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNzM4LVxubmV0L3NtYy9hZl9zbWMuYzo3Mzk6c3RhdGljIHZvaWQgc21jZF9jb25uX3NhdmVfcGVlcl9pbmZvKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9hZl9zbWMuYy03NDAtXHRcdFx0XHQgICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqY2xjKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNzUxLVxubmV0L3NtYy9hZl9zbWMuYzo3NTI6c3RhdGljIHZvaWQgc21jX2Nvbm5fc2F2ZV9wZWVyX2luZm8oc3RydWN0IHNtY19zb2NrICpzbWMsXG5uZXQvc21jL2FmX3NtYy5jLTc1My1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX2NsY19tc2dfYWNjZXB0X2NvbmZpcm0gKmNsYylcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTc2MS1cbm5ldC9zbWMvYWZfc21jLmM6NzYyOnN0YXRpYyB2b2lkIHNtY19saW5rX3NhdmVfcGVlcl9pbmZvKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvYWZfc21jLmMtNzYzLVx0XHRcdFx0ICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqY2xjLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNzcyLVxubmV0L3NtYy9hZl9zbWMuYzo3NzM6c3RhdGljIHZvaWQgc21jX3N0YXRfaW5jX2ZiYWNrX3Jzbl9jbnQoc3RydWN0IHNtY19zb2NrICpzbWMsXG5uZXQvc21jL2FmX3NtYy5jLTc3NC1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc21jX3N0YXRzX2ZiYWNrICpmYmFja19hcnIpXG4tLVxubmV0L3NtYy9hZl9zbWMuYy03OTAtXG5uZXQvc21jL2FmX3NtYy5jOjc5MTpzdGF0aWMgdm9pZCBzbWNfc3RhdF9mYWxsYmFjayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbm5ldC9zbWMvYWZfc21jLmMtNzkyLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTgwNi0vKiBtdXN0IGJlIGNhbGxlZCB1bmRlciByY3UgcmVhZCBsb2NrICovXG5uZXQvc21jL2FmX3NtYy5jOjgwNzpzdGF0aWMgdm9pZCBzbWNfZmJhY2tfd2FrZXVwX3dhaXRxdWV1ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgdm9pZCAqa2V5KVxubmV0L3NtYy9hZl9zbWMuYy04MDgte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtODMwLVxubmV0L3NtYy9hZl9zbWMuYzo4MzE6c3RhdGljIGludCBzbWNfZmJhY2tfbWFya193b2tlbih3YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsXG5uZXQvc21jL2FmX3NtYy5jLTgzMi1cdFx0XHRcdHVuc2lnbmVkIGludCBtb2RlLCBpbnQgc3luYywgdm9pZCAqa2V5KVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtODQxLVxubmV0L3NtYy9hZl9zbWMuYzo4NDI6c3RhdGljIHZvaWQgc21jX2ZiYWNrX2ZvcndhcmRfd2FrZXVwKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc29jayAqY2xjc2ssXG5uZXQvc21jL2FmX3NtYy5jLTg0My1cdFx0XHRcdCAgICAgdm9pZCAoKmNsY3NvY2tfY2FsbGJhY2spKHN0cnVjdCBzb2NrICpzaykpXG4tLVxubmV0L3NtYy9hZl9zbWMuYy04NjMtXG5uZXQvc21jL2FmX3NtYy5jOjg2NDpzdGF0aWMgdm9pZCBzbWNfZmJhY2tfc3RhdGVfY2hhbmdlKHN0cnVjdCBzb2NrICpjbGNzaylcbm5ldC9zbWMvYWZfc21jLmMtODY1LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTg3NS1cbm5ldC9zbWMvYWZfc21jLmM6ODc2OnN0YXRpYyB2b2lkIHNtY19mYmFja19kYXRhX3JlYWR5KHN0cnVjdCBzb2NrICpjbGNzaylcbm5ldC9zbWMvYWZfc21jLmMtODc3LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTg4Ny1cbm5ldC9zbWMvYWZfc21jLmM6ODg4OnN0YXRpYyB2b2lkIHNtY19mYmFja193cml0ZV9zcGFjZShzdHJ1Y3Qgc29jayAqY2xjc2spXG5uZXQvc21jL2FmX3NtYy5jLTg4OS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy04OTktXG5uZXQvc21jL2FmX3NtYy5jOjkwMDpzdGF0aWMgdm9pZCBzbWNfZmJhY2tfZXJyb3JfcmVwb3J0KHN0cnVjdCBzb2NrICpjbGNzaylcbm5ldC9zbWMvYWZfc21jLmMtOTAxLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTkxMS1cbm5ldC9zbWMvYWZfc21jLmM6OTEyOnN0YXRpYyB2b2lkIHNtY19mYmFja19yZXBsYWNlX2NhbGxiYWNrcyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbm5ldC9zbWMvYWZfc21jLmMtOTEzLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTkzMC1cbm5ldC9zbWMvYWZfc21jLmM6OTMxOnN0YXRpYyBpbnQgc21jX3N3aXRjaF90b19mYWxsYmFjayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgaW50IHJlYXNvbl9jb2RlKVxubmV0L3NtYy9hZl9zbWMuYy05MzIte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtOTYzLS8qIGZhbGwgYmFjayBkdXJpbmcgY29ubmVjdCAqL1xubmV0L3NtYy9hZl9zbWMuYzo5NjQ6c3RhdGljIGludCBzbWNfY29ubmVjdF9mYWxsYmFjayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgaW50IHJlYXNvbl9jb2RlKVxubmV0L3NtYy9hZl9zbWMuYy05NjUte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtOTgzLS8qIGRlY2xpbmUgYW5kIGZhbGwgYmFjayBkdXJpbmcgY29ubmVjdCAqL1xubmV0L3NtYy9hZl9zbWMuYzo5ODQ6c3RhdGljIGludCBzbWNfY29ubmVjdF9kZWNsaW5lX2ZhbGxiYWNrKHN0cnVjdCBzbWNfc29jayAqc21jLCBpbnQgcmVhc29uX2NvZGUsXG5uZXQvc21jL2FmX3NtYy5jLTk4NS1cdFx0XHRcdFx0dTggdmVyc2lvbilcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTEwMDctXG5uZXQvc21jL2FmX3NtYy5jOjEwMDg6c3RhdGljIHZvaWQgc21jX2Nvbm5fYWJvcnQoc3RydWN0IHNtY19zb2NrICpzbWMsIGludCBsb2NhbF9maXJzdClcbm5ldC9zbWMvYWZfc21jLmMtMTAwOS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xMDIzLS8qIGNhbGxlZCBmb3IgY29ubmVjdCBhbmQgbGlzdGVuICovXG5uZXQvc21jL2FmX3NtYy5jOjEwMjQ6c3RhdGljIGludCBzbWNfZmluZF9yZG1hX2RldmljZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbm5ldC9zbWMvYWZfc21jLmMtMTAyNS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xMDM5LS8qIGNhbGxlZCBmb3IgY29ubmVjdCBhbmQgbGlzdGVuICovXG5uZXQvc21jL2FmX3NtYy5jOjEwNDA6c3RhdGljIGludCBzbWNfZmluZF9pc21fZGV2aWNlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxubmV0L3NtYy9hZl9zbWMuYy0xMDQxLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTEwNTI9c3RhdGljIGJvb2wgc21jX2ZpbmRfaXNtX3YyX2lzX3VuaXF1ZV9jaGlkKHUxNiBjaGlkLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTA2NS0gKi9cbm5ldC9zbWMvYWZfc21jLmM6MTA2NjpzdGF0aWMgaW50IHNtY19maW5kX2lzbV92Ml9kZXZpY2VfY2xudChzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbm5ldC9zbWMvYWZfc21jLmMtMTA2Ny1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTExMi0vKiBDaGVjayBmb3IgVkxBTiBJRCBhbmQgcmVnaXN0ZXIgaXQgb24gSVNNIGRldmljZSBqdXN0IGZvciBDTEMgaGFuZHNoYWtlICovXG5uZXQvc21jL2FmX3NtYy5jOjExMTM6c3RhdGljIGludCBzbWNfY29ubmVjdF9pc21fdmxhbl9zZXR1cChzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxubmV0L3NtYy9hZl9zbWMuYy0xMTE0LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTExMTktXG5uZXQvc21jL2FmX3NtYy5jOjExMjA6c3RhdGljIGludCBzbWNfZmluZF9wcm9wb3NhbF9kZXZpY2VzKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9hZl9zbWMuYy0xMTIxLVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTE3Mi0gKi9cbm5ldC9zbWMvYWZfc21jLmM6MTE3MzpzdGF0aWMgaW50IHNtY19jb25uZWN0X2lzbV92bGFuX2NsZWFudXAoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbm5ldC9zbWMvYWZfc21jLmMtMTE3NC17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xMTg3LS8qIENMQyBoYW5kc2hha2UgZHVyaW5nIGNvbm5lY3QgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTE4ODpzdGF0aWMgaW50IHNtY19jb25uZWN0X2NsYyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbm5ldC9zbWMvYWZfc21jLmMtMTE4OS1cdFx0XHQgICBzdHJ1Y3Qgc21jX2NsY19tc2dfYWNjZXB0X2NvbmZpcm0gKmFjbGMsXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xMjAyLVxubmV0L3NtYy9hZl9zbWMuYzoxMjAzOnZvaWQgc21jX2ZpbGxfZ2lkX2xpc3Qoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL2FmX3NtYy5jLTEyMDQtXHRcdCAgICAgICBzdHJ1Y3Qgc21jX2dpZGxpc3QgKmdpZGxpc3QsXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xMjMwLVxubmV0L3NtYy9hZl9zbWMuYzoxMjMxOnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfcmRtYV92Ml9wcmVwYXJlKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9hZl9zbWMuYy0xMjMyLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTEyNjYtLyogc2V0dXAgZm9yIFJETUEgY29ubmVjdGlvbiBvZiBjbGllbnQgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTI2NzpzdGF0aWMgaW50IHNtY19jb25uZWN0X3JkbWEoc3RydWN0IHNtY19zb2NrICpzbWMsXG5uZXQvc21jL2FmX3NtYy5jLTEyNjgtXHRcdFx0ICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTEzOTk9c21jX3YyX2RldGVybWluZV9hY2NlcHRlZF9jaGlkKHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE0MTUtLyogc2V0dXAgZm9yIElTTSBjb25uZWN0aW9uIG9mIGNsaWVudCAqL1xubmV0L3NtYy9hZl9zbWMuYzoxNDE2OnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfaXNtKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9hZl9zbWMuYy0xNDE3LVx0XHRcdCAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE0OTgtLyogY2hlY2sgaWYgcmVjZWl2ZWQgYWNjZXB0IHR5cGUgYW5kIHZlcnNpb24gbWF0Y2hlcyBhIHByb3Bvc2VkIG9uZSAqL1xubmV0L3NtYy9hZl9zbWMuYzoxNDk5OnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfY2hlY2tfYWNsYyhzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxubmV0L3NtYy9hZl9zbWMuYy0xNTAwLVx0XHRcdFx0ICBzdHJ1Y3Qgc21jX2NsY19tc2dfYWNjZXB0X2NvbmZpcm0gKmFjbGMpXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xNTE5LS8qIHBlcmZvcm0gc3RlcHMgYmVmb3JlIGFjdHVhbGx5IGNvbm5lY3RpbmcgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTUyMDpzdGF0aWMgaW50IF9fc21jX2Nvbm5lY3Qoc3RydWN0IHNtY19zb2NrICpzbWMpXG5uZXQvc21jL2FmX3NtYy5jLTE1MjEte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTYwOS1cbm5ldC9zbWMvYWZfc21jLmM6MTYxMDpzdGF0aWMgdm9pZCBzbWNfY29ubmVjdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zbWMvYWZfc21jLmMtMTYxMS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xNjU1LVxubmV0L3NtYy9hZl9zbWMuYzoxNjU2OmludCBzbWNfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkcixcbm5ldC9zbWMvYWZfc21jLmMtMTY1Ny1cdFx0aW50IGFsZW4sIGludCBmbGFncylcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE3MzYtXG5uZXQvc21jL2FmX3NtYy5jOjE3Mzc6c3RhdGljIGludCBzbWNfY2xjc29ja19hY2NlcHQoc3RydWN0IHNtY19zb2NrICpsc21jLCBzdHJ1Y3Qgc21jX3NvY2sgKipuZXdfc21jKVxubmV0L3NtYy9hZl9zbWMuYy0xNzM4LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE3OTctICovXG5uZXQvc21jL2FmX3NtYy5jOjE3OTg6c3RhdGljIHZvaWQgc21jX2FjY2VwdF9lbnF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsIHN0cnVjdCBzb2NrICpzaylcbm5ldC9zbWMvYWZfc21jLmMtMTc5OS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xODA5LS8qIHJlbW92ZSBhIHNvY2tldCBmcm9tIHRoZSBhY2NlcHQgcXVldWUgb2YgaXRzIHBhcmVudGFsIGxpc3RlbmluZyBzb2NrZXQgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTgxMDpzdGF0aWMgdm9pZCBzbWNfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spXG5uZXQvc21jL2FmX3NtYy5jLTE4MTEte1xuLS1cbm5ldC9zbWMvYWZfc21jLmM9MTgyND1zdHJ1Y3Qgc29jayAqc21jX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xODU2LS8qIGNsZWFuIHVwIGZvciBhIGNyZWF0ZWQgYnV0IG5ldmVyIGFjY2VwdGVkIHNvY2sgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTg1Nzp2b2lkIHNtY19jbG9zZV9ub25fYWNjZXB0ZWQoc3RydWN0IHNvY2sgKnNrKVxubmV0L3NtYy9hZl9zbWMuYy0xODU4LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE4NzEtXG5uZXQvc21jL2FmX3NtYy5jOjE4NzI6c3RhdGljIGludCBzbWNyX3NlcnZfY29uZl9maXJzdF9saW5rKHN0cnVjdCBzbWNfc29jayAqc21jKVxubmV0L3NtYy9hZl9zbWMuYy0xODczLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE5MjQtLyogbGlzdGVuIHdvcmtlcjogZmluaXNoICovXG5uZXQvc21jL2FmX3NtYy5jOjE5MjU6c3RhdGljIHZvaWQgc21jX2xpc3Rlbl9vdXQoc3RydWN0IHNtY19zb2NrICpuZXdfc21jKVxubmV0L3NtYy9hZl9zbWMuYy0xOTI2LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE5NDgtLyogbGlzdGVuIHdvcmtlcjogZmluaXNoIGluIHN0YXRlIGNvbm5lY3RlZCAqL1xubmV0L3NtYy9hZl9zbWMuYzoxOTQ5OnN0YXRpYyB2b2lkIHNtY19saXN0ZW5fb3V0X2Nvbm5lY3RlZChzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMpXG5uZXQvc21jL2FmX3NtYy5jLTE5NTAte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTk1OS0vKiBsaXN0ZW4gd29ya2VyOiBmaW5pc2ggaW4gZXJyb3Igc3RhdGUgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTk2MDpzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX291dF9lcnIoc3RydWN0IHNtY19zb2NrICpuZXdfc21jKVxubmV0L3NtYy9hZl9zbWMuYy0xOTYxLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE5NzMtLyogbGlzdGVuIHdvcmtlcjogZGVjbGluZSBhbmQgZmFsbCBiYWNrIGlmIHBvc3NpYmxlICovXG5uZXQvc21jL2FmX3NtYy5jOjE5NzQ6c3RhdGljIHZvaWQgc21jX2xpc3Rlbl9kZWNsaW5lKHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYywgaW50IHJlYXNvbl9jb2RlLFxubmV0L3NtYy9hZl9zbWMuYy0xOTc1LVx0XHRcdCAgICAgICBpbnQgbG9jYWxfZmlyc3QsIHU4IHZlcnNpb24pXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xOTk0LS8qIGxpc3RlbiB3b3JrZXI6IHZlcnNpb24gY2hlY2tpbmcgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTk5NTpzdGF0aWMgaW50IHNtY19saXN0ZW5fdjJfY2hlY2soc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxubmV0L3NtYy9hZl9zbWMuYy0xOTk2LVx0XHRcdCAgICAgICBzdHJ1Y3Qgc21jX2NsY19tc2dfcHJvcG9zYWwgKnBjbGMsXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yMDU2LS8qIGxpc3RlbiB3b3JrZXI6IGNoZWNrIHByZWZpeGVzICovXG5uZXQvc21jL2FmX3NtYy5jOjIwNTc6c3RhdGljIGludCBzbWNfbGlzdGVuX3ByZnhfY2hlY2soc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxubmV0L3NtYy9hZl9zbWMuYy0yMDU4LVx0XHRcdFx0IHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYylcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTIwNzQtLyogbGlzdGVuIHdvcmtlcjogaW5pdGlhbGl6ZSBjb25uZWN0aW9uIGFuZCBidWZmZXJzICovXG5uZXQvc21jL2FmX3NtYy5jOjIwNzU6c3RhdGljIGludCBzbWNfbGlzdGVuX3JkbWFfaW5pdChzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXG5uZXQvc21jL2FmX3NtYy5jLTIwNzYtXHRcdFx0XHRzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjA5NC0vKiBsaXN0ZW4gd29ya2VyOiBpbml0aWFsaXplIGNvbm5lY3Rpb24gYW5kIGJ1ZmZlcnMgZm9yIFNNQy1EICovXG5uZXQvc21jL2FmX3NtYy5jOjIwOTU6c3RhdGljIGludCBzbWNfbGlzdGVuX2lzbV9pbml0KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcbm5ldC9zbWMvYWZfc21jLmMtMjA5Ni1cdFx0XHQgICAgICAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTIxMTU9c3RhdGljIGJvb2wgc21jX2lzX2FscmVhZHlfc2VsZWN0ZWQoc3RydWN0IHNtY2RfZGV2ICpzbWNkLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjEyOC0vKiBjaGVjayBmb3IgSVNNIGRldmljZXMgbWF0Y2hpbmcgcHJvcG9zZWQgSVNNIGRldmljZXMgKi9cbm5ldC9zbWMvYWZfc21jLmM6MjEyOTpzdGF0aWMgdm9pZCBzbWNfY2hlY2tfaXNtX3YyX21hdGNoKHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmksXG5uZXQvc21jL2FmX3NtYy5jLTIxMzAtXHRcdFx0XHQgICB1MTYgcHJvcG9zZWRfY2hpZCxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTIxNTQtXG5uZXQvc21jL2FmX3NtYy5jOjIxNTU6c3RhdGljIHZvaWQgc21jX2luaXRfaW5mb19zdG9yZV9yYyh1MzIgcmMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXG5uZXQvc21jL2FmX3NtYy5jLTIxNTYte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjE2MC1cbm5ldC9zbWMvYWZfc21jLmM6MjE2MTpzdGF0aWMgdm9pZCBzbWNfZmluZF9pc21fdjJfZGV2aWNlX3NlcnYoc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxubmV0L3NtYy9hZl9zbWMuYy0yMTYyLVx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2NsY19tc2dfcHJvcG9zYWwgKnBjbGMsXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yMjUwLVxubmV0L3NtYy9hZl9zbWMuYzoyMjUxOnN0YXRpYyB2b2lkIHNtY19maW5kX2lzbV92MV9kZXZpY2Vfc2VydihzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXG5uZXQvc21jL2FmX3NtYy5jLTIyNTItXHRcdFx0XHRcdHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTIyODEtLyogbGlzdGVuIHdvcmtlcjogcmVnaXN0ZXIgYnVmZmVycyAqL1xubmV0L3NtYy9hZl9zbWMuYzoyMjgyOnN0YXRpYyBpbnQgc21jX2xpc3Rlbl9yZG1hX3JlZyhzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsIGJvb2wgbG9jYWxfZmlyc3QpXG5uZXQvc21jL2FmX3NtYy5jLTIyODMte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjI5OS1cbm5ldC9zbWMvYWZfc21jLmM6MjMwMDpzdGF0aWMgdm9pZCBzbWNfZmluZF9yZG1hX3YyX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcbm5ldC9zbWMvYWZfc21jLmMtMjMwMS1cdFx0XHRcdFx0IHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTIzNTMtXG5uZXQvc21jL2FmX3NtYy5jOjIzNTQ6c3RhdGljIGludCBzbWNfZmluZF9yZG1hX3YxX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcbm5ldC9zbWMvYWZfc21jLmMtMjM1NS1cdFx0XHRcdFx0c3RydWN0IHNtY19jbGNfbXNnX3Byb3Bvc2FsICpwY2xjLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjM3OC0vKiBkZXRlcm1pbmUgdGhlIGxvY2FsIGRldmljZSBtYXRjaGluZyB0byBwcm9wb3NhbCAqL1xubmV0L3NtYy9hZl9zbWMuYzoyMzc5OnN0YXRpYyBpbnQgc21jX2xpc3Rlbl9maW5kX2RldmljZShzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXG5uZXQvc21jL2FmX3NtYy5jLTIzODAtXHRcdFx0XHQgIHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTI0MjYtLyogbGlzdGVuIHdvcmtlcjogZmluaXNoIFJETUEgc2V0dXAgKi9cbm5ldC9zbWMvYWZfc21jLmM6MjQyNzpzdGF0aWMgaW50IHNtY19saXN0ZW5fcmRtYV9maW5pc2goc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxubmV0L3NtYy9hZl9zbWMuYy0yNDI4LVx0XHRcdFx0ICBzdHJ1Y3Qgc21jX2NsY19tc2dfYWNjZXB0X2NvbmZpcm0gKmNjbGMsXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yNDUyLS8qIHNldHVwIGZvciBjb25uZWN0aW9uIG9mIHNlcnZlciAqL1xubmV0L3NtYy9hZl9zbWMuYzoyNDUzOnN0YXRpYyB2b2lkIHNtY19saXN0ZW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc21jL2FmX3NtYy5jLTI0NTQte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjU5Ny1cbm5ldC9zbWMvYWZfc21jLmM6MjU5ODpzdGF0aWMgdm9pZCBzbWNfdGNwX2xpc3Rlbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zbWMvYWZfc21jLmMtMjU5OS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yNjMyLVxubmV0L3NtYy9hZl9zbWMuYzoyNjMzOnN0YXRpYyB2b2lkIHNtY19jbGNzb2NrX2RhdGFfcmVhZHkoc3RydWN0IHNvY2sgKmxpc3Rlbl9jbGNzb2NrKVxubmV0L3NtYy9hZl9zbWMuYy0yNjM0LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTI2NTAtXG5uZXQvc21jL2FmX3NtYy5jOjI2NTE6aW50IHNtY19saXN0ZW4oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGJhY2tsb2cpXG5uZXQvc21jL2FmX3NtYy5jLTI2NTIte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjcxNi1cbm5ldC9zbWMvYWZfc21jLmM6MjcxNzppbnQgc21jX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdfc29jayxcbm5ldC9zbWMvYWZfc21jLmMtMjcxOC1cdCAgICAgICBzdHJ1Y3QgcHJvdG9fYWNjZXB0X2FyZyAqYXJnKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjc4NS1cbm5ldC9zbWMvYWZfc21jLmM6Mjc4NjppbnQgc21jX2dldG5hbWUoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICphZGRyLFxubmV0L3NtYy9hZl9zbWMuYy0yNzg3LVx0XHRpbnQgcGVlcilcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTI3OTktXG5uZXQvc21jL2FmX3NtYy5jOjI4MDA6aW50IHNtY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbm5ldC9zbWMvYWZfc21jLmMtMjgwMS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yODM3LVxubmV0L3NtYy9hZl9zbWMuYzoyODM4OmludCBzbWNfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG5uZXQvc21jL2FmX3NtYy5jLTI4MzktXHRcdGludCBmbGFncylcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTI4ODg9X19wb2xsX3Qgc21jX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yOTQ3LVxubmV0L3NtYy9hZl9zbWMuYzoyOTQ4OmludCBzbWNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGhvdylcbm5ldC9zbWMvYWZfc21jLmMtMjk0OS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0zMDIyLVxubmV0L3NtYy9hZl9zbWMuYzozMDIzOnN0YXRpYyBpbnQgX19zbWNfZ2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxubmV0L3NtYy9hZl9zbWMuYy0zMDI0LVx0XHRcdCAgICBjaGFyIF9fdXNlciAqb3B0dmFsLCBpbnQgX191c2VyICpvcHRsZW4pXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0zMDU0LVxubmV0L3NtYy9hZl9zbWMuYzozMDU1OnN0YXRpYyBpbnQgX19zbWNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxubmV0L3NtYy9hZl9zbWMuYy0zMDU2LVx0XHRcdCAgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzA4Ni1cbm5ldC9zbWMvYWZfc21jLmM6MzA4NzppbnQgc21jX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9zbWMvYWZfc21jLmMtMzA4OC1cdFx0ICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTMxNzMtXG5uZXQvc21jL2FmX3NtYy5jOjMxNzQ6aW50IHNtY19nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG5uZXQvc21jL2FmX3NtYy5jLTMxNzUtXHRcdCAgIGNoYXIgX191c2VyICpvcHR2YWwsIGludCBfX3VzZXIgKm9wdGxlbilcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTMxOTktXG5uZXQvc21jL2FmX3NtYy5jOjMyMDA6aW50IHNtY19pb2N0bChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bnNpZ25lZCBpbnQgY21kLFxubmV0L3NtYy9hZl9zbWMuYy0zMjAxLVx0ICAgICAgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxubmV0L3NtYy9hZl9zbWMuYz0zMzM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNtY19zb2NrX29wcyA9IHtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTMzNTUtXG5uZXQvc21jL2FmX3NtYy5jOjMzNTY6aW50IHNtY19jcmVhdGVfY2xjc2soc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIGludCBmYW1pbHkpXG5uZXQvc21jL2FmX3NtYy5jLTMzNTcte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzM3NS1cbm5ldC9zbWMvYWZfc21jLmM6MzM3NjpzdGF0aWMgaW50IHNtY19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsXG5uZXQvc21jL2FmX3NtYy5jLTMzNzctXHRcdCAgICAgIGludCBrZXJuKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzEwNAoJCQkJCQkJb3V0cHV0OiA1NQoJCQkJCQkJdGhvdWdodHM6IDMwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU01DIFN1YnN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHByZXR0eSBjcml0aWNhbCBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZSB3aXRoaW4gdGhlIFNNQyBzdWJzeXN0ZW0uIEl0IGxvb2tzIGxpa2UgYHNtY19pbml0X2luZm9gIHdhcyBiZWluZyBmcmVlZCB3aXRoIGBrZnJlZWAgaW5zdGVhZCBvZiB0aGUgcHJvcGVyIGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBsZWFrLCBzcGVjaWZpY2FsbHkgbGVha2luZyByZWZlcmVuY2VzIHRvIGBzbWNfaWJfZGV2aWNlYC4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIGZpeCB0aGF0LgoKQmV5b25kIHRoZSBidWcgZml4LCB0aGVyZSYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGggdGhlIGFkZGl0aW9uIG9mIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAgYW5kIGBzbWNfaWJkZXZfaW5pdF9lbmRgLCBwcmVzdW1hYmx5IHRvIG1hbmFnZSB0aGUgaW5pdGlhbCBzZXR1cCBvZiB1bnB1Ymxpc2hlZCBsaW5rcy4gSW50ZXJlc3RpbmcuCgpOb3csIGxldCYjMzk7cyBzZWUgd2hpY2ggZnVuY3Rpb25zIGFyZSBhZmZlY3RlZC4gSSBzZWUgYF9fc21jX2Nvbm5lY3RgLCBgc21jX2xpc3Rlbl93b3JrYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYHNtY3JfbGlua19pbml0YCwgYW5kIGBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgdmlhIHRoZSB0eXBpY2FsIHVzZXItc3BhY2UgYWNjZXNzIG9mIGBjb25uZWN0YCwgYGxpc3RlbmAsIG9yLCBpbmRpcmVjdGx5LCB0aHJvdWdoIG5ldHdvcmsgcGFja2V0cyBsaWtlIHRoZSBMTEMgbWVzc2FnZXMuCgpTaW5jZSB0aGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSwgSSYjMzk7bGwgbmVlZCB0byBtYWtlIHN1cmUgdG8gaW5jbHVkZSBgc21jX2Nvbm5lY3RgLCBgc21jX2xpc3RlbmAsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGFuZCBgc21jX2xsY19zcnZfYWRkX2xpbmtgIGluIGBGb2N1c1N5bWJvbHNgLiBXYWl0IGEgbWludXRlLCBgc21jX2Nvbm5lY3RgIGFuZCBgc21jX2xpc3RlbmAgYXJlIHRoZSBhY3R1YWwgc3lzY2FsbCBlbnRyeSBwb2ludHMsIGFyZW4mIzM5O3QgdGhleT8gQW5kIHRoZSBMTEMgZnVuY3Rpb25zIGhhbmRsZSB0aG9zZSBpbmNvbWluZyBuZXR3b3JrIG1lc3NhZ2VzLiBJIHNob3VsZCBjaGVjayBgbmV0L3NtYy9zbWNfbGxjLmNgIHRvIGNvbmZpcm0gd2hldGhlciBgc21jX2xsY19jbGlfYWRkX2xpbmtgIGFuZCBgc21jX2xsY19zcnZfYWRkX2xpbmtgIGFyZSBzdGF0aWMuIEdvdHRhIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oaW50fHZvaWR8c3RhdGljIGludHxzdGF0aWMgdm9pZCkgW2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYz0yMTc9c3RydWN0IHNtY19sbGNfcWVudHJ5IHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjQtXG5uZXQvc21jL3NtY19sbGMuYzoyMjU6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNi1cdFx0XHQgICAgdTMyIGJ5dGVfbGVuKTtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0yMjg9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIzNS1cbm5ldC9zbWMvc21jX2xsYy5jOjIzNjp2b2lkIHNtY19sbGNfZmxvd19xZW50cnlfZGVsKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG5uZXQvc21jL3NtY19sbGMuYy0yMzcte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTI0Nz1zdGF0aWMgaW5saW5lIHZvaWQgc21jX2xsY19mbG93X3FlbnRyeV9zZXQoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yNTItXG5uZXQvc21jL3NtY19sbGMuYzoyNTM6c3RhdGljIHZvaWQgc21jX2xsY19mbG93X3BhcmFsbGVsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCB1OCBmbG93X3R5cGUsXG5uZXQvc21jL3NtY19sbGMuYy0yNTQtXHRcdFx0XHQgIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTI3NT1zdGF0aWMgYm9vbCBzbWNfbGxjX2Zsb3dfc3RhcnQoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0zMDYtLyogc3RhcnQgYSBuZXcgbG9jYWwgbGxjIGZsb3csIHdhaXQgdGlsbCBjdXJyZW50IGZsb3cgZmluaXNoZWQgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjMwNzppbnQgc21jX2xsY19mbG93X2luaXRpYXRlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfbGxjLmMtMzA4LVx0XHRcdCAgZW51bSBzbWNfbGxjX2Zsb3d0eXBlIHR5cGUpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMzQwLS8qIGZpbmlzaCB0aGUgY3VycmVudCBsbGMgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MzQxOnZvaWQgc21jX2xsY19mbG93X3N0b3Aoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG5uZXQvc21jL3NtY19sbGMuYy0zNDIte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTM5OD1zdHJ1Y3Qgc21jX2xsY190eF9wZW5kIHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy00MDEtLyogaGFuZGxlciBmb3Igc2VuZC90cmFuc21pc3Npb24gY29tcGxldGlvbiBvZiBhbiBMTEMgbXNnICovXG5uZXQvc21jL3NtY19sbGMuYzo0MDI6c3RhdGljIHZvaWQgc21jX2xsY190eF9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICpwZW5kLFxubmV0L3NtYy9zbWNfbGxjLmMtNDAzLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtNDIxLSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NDIyOnN0YXRpYyBpbnQgc21jX2xsY19hZGRfcGVuZGluZ19zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTQyMy1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqKndyX2J1Zixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy00NDMtXG5uZXQvc21jL3NtY19sbGMuYzo0NDQ6c3RhdGljIGludCBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRfdjIoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNDQ1LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBzbWNfd3JfdjJfYnVmICoqd3JfYnVmLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTQ1NS1cbm5ldC9zbWMvc21jX2xsYy5jOjQ1NjpzdGF0aWMgdm9pZCBzbWNfbGxjX2luaXRfbXNnX2hkcihzdHJ1Y3Qgc21jX2xsY19oZHIgKmhkcixcbm5ldC9zbWMvc21jX2xsYy5jLTQ1Ny1cdFx0XHRcdCBzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc2l6ZV90IGxlbilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy00NjgtLyogaGlnaC1sZXZlbCBBUEkgdG8gc2VuZCBMTEMgY29uZmlybSBsaW5rICovXG5uZXQvc21jL3NtY19sbGMuYzo0Njk6aW50IHNtY19sbGNfc2VuZF9jb25maXJtX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNDcwLVx0XHRcdCAgICAgIGVudW0gc21jX2xsY19yZXFyZXNwIHJlcXJlc3ApXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtNTA4LS8qIHNlbmQgTExDIGNvbmZpcm0gcmtleSByZXF1ZXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzo1MDk6c3RhdGljIGludCBzbWNfbGxjX3NlbmRfY29uZmlybV9ya2V5KHN0cnVjdCBzbWNfbGluayAqc2VuZF9saW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNTEwLVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy01NTctLyogc2VuZCBMTEMgZGVsZXRlIHJrZXkgcmVxdWVzdCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NTU4OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTU1OS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYz02MTg9c3RhdGljIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNtY19sbGNfZ2V0X2ZpcnN0X3JtYihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy02MjQtXG5uZXQvc21jL3NtY19sbGMuYzo2MjU6c3RhdGljIGludCBzbWNfbGxjX2ZpbGxfZXh0X3YyKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKmV4dCxcbm5ldC9zbWMvc21jX2xsYy5jLTYyNi1cdFx0XHQgICAgICAgc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTY2NC0vKiBzZW5kIEFERCBMSU5LIHJlcXVlc3Qgb3IgcmVzcG9uc2UgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjY2NTppbnQgc21jX2xsY19zZW5kX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggbWFjW10sIHU4IGdpZFtdLFxubmV0L3NtYy9zbWNfbGxjLmMtNjY2LVx0XHRcdCAgc3RydWN0IHNtY19saW5rICpsaW5rX25ldyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy03MjUtLyogc2VuZCBERUxFVEUgTElOSyByZXF1ZXN0IG9yIHJlc3BvbnNlICovXG5uZXQvc21jL3NtY19sbGMuYzo3MjY6aW50IHNtY19sbGNfc2VuZF9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IGxpbmtfZGVsX2lkLFxubmV0L3NtYy9zbWNfbGxjLmMtNzI3LVx0XHRcdCAgICAgZW51bSBzbWNfbGxjX3JlcXJlc3AgcmVxcmVzcCwgYm9vbCBvcmRlcmx5LFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTc2MS0vKiBzZW5kIExMQyB0ZXN0IGxpbmsgcmVxdWVzdCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NzYyOnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX3Rlc3RfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IHVzZXJfZGF0YVsxNl0pXG5uZXQvc21jL3NtY19sbGMuYy03NjMte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTc4Ni0vKiBzY2hlZHVsZSBhbiBsbGMgc2VuZCBvbiBsaW5rLCBtYXkgd2FpdCBmb3IgYnVmZmVycyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6Nzg3OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX21lc3NhZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLCB2b2lkICpsbGNidWYpXG5uZXQvc21jL3NtY19sbGMuYy03ODgte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTgwOC0gKi9cbm5ldC9zbWMvc21jX2xsYy5jOjgwOTpzdGF0aWMgaW50IHNtY19sbGNfc2VuZF9tZXNzYWdlX3dhaXQoc3RydWN0IHNtY19saW5rICpsaW5rLCB2b2lkICpsbGNidWYpXG5uZXQvc21jL3NtY19sbGMuYy04MTAte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTgyOC1cbm5ldC9zbWMvc21jX2xsYy5jOjgyOTpzdGF0aWMgaW50IHNtY19sbGNfYWxsb2NfYWx0X2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL3NtY19sbGMuYy04MzAtXHRcdFx0XHQgIGVudW0gc21jX2xncl90eXBlIGxncl9uZXdfdClcbi0tXG5uZXQvc21jL3NtY19sbGMuYy04NTMtLyogc2VuZCBvbmUgYWRkX2xpbmtfY29udGludWUgbXNnICovXG5uZXQvc21jL3NtY19sbGMuYzo4NTQ6c3RhdGljIGludCBzbWNfbGxjX2FkZF9saW5rX2NvbnQoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtODU1LVx0XHRcdFx0IHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsIHU4ICpudW1fcmtleXNfdG9kbyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy05MDgtXG5uZXQvc21jL3NtY19sbGMuYzo5MDk6c3RhdGljIGludCBzbWNfbGxjX2NsaV9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTkxMC1cdFx0XHRcdCAgICAgc3RydWN0IHNtY19saW5rICpsaW5rX25ldylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy05NTItLyogcHJlcGFyZSBhbmQgc2VuZCBhbiBhZGQgbGluayByZWplY3QgcmVzcG9uc2UgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjk1MzpzdGF0aWMgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rX3JlamVjdChzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jLTk1NC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtOTYyLVxubmV0L3NtYy9zbWNfbGxjLmM6OTYzOnN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTk2NC1cdFx0XHRcdCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwMjAtXG5uZXQvc21jL3NtY19sbGMuYzoxMDIxOnN0YXRpYyB2b2lkIHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5cyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMDIyLVx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwNDYtXG5uZXQvc21jL3NtY19sbGMuYzoxMDQ3OnN0YXRpYyB2b2lkIHNtY19sbGNfc2F2ZV9hZGRfbGlua19pbmZvKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTEwNDgtXHRcdFx0XHQgICAgICAgc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rICphZGRfbGxjKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwNTctLyogYXMgYW4gU01DIGNsaWVudCwgcHJvY2VzcyBhbiBhZGQgbGluayByZXF1ZXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzoxMDU4OmludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTA1OS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTE1MS1cbm5ldC9zbWMvc21jX2xsYy5jOjExNTI6c3RhdGljIHZvaWQgc21jX2xsY19zZW5kX3JlcXVlc3RfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMTE1My17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTE5MC0vKiBhcyBhbiBTTUMgY2xpZW50LCBpbnZpdGUgc2VydmVyIHRvIHN0YXJ0IHRoZSBhZGRfbGluayBwcm9jZXNzaW5nICovXG5uZXQvc21jL3NtY19sbGMuYzoxMTkxOnN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMTkyLVx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMjM1PXN0YXRpYyBib29sIHNtY19sbGNfaXNfbG9jYWxfYWRkX2xpbmsodW5pb24gc21jX2xsY19tc2cgKmxsYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xMjQyLVxubmV0L3NtYy9zbWNfbGxjLmM6MTI0MzpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3NfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTI0NC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTI1Ni1cbm5ldC9zbWMvc21jX2xsYy5jOjEyNTc6c3RhdGljIGludCBzbWNfbGxjX2FjdGl2ZV9saW5rX2NvdW50KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTI1OC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTI3MD1zdGF0aWMgc3RydWN0IHNtY19saW5rICpzbWNfbGxjX2ZpbmRfYXN5bV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzMTMtXG5uZXQvc21jL3NtY19sbGMuYzoxMzE0OnN0YXRpYyB2b2lkIHNtY19sbGNfZGVsZXRlX2FzeW1fbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbm5ldC9zbWMvc21jX2xsYy5jLTEzMTUte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzNDctXG5uZXQvc21jL3NtY19sbGMuYzoxMzQ4OnN0YXRpYyBpbnQgc21jX2xsY19zcnZfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMzQ5LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzODgtXG5uZXQvc21jL3NtY19sbGMuYzoxMzg5OnN0YXRpYyBpbnQgc21jX2xsY19zcnZfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTEzOTAtXHRcdFx0XHQgc3RydWN0IHNtY19saW5rICpsaW5rX25ldyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNDIyLVxubmV0L3NtYy9zbWNfbGxjLmM6MTQyMzpzdGF0aWMgdm9pZCBzbWNfbGxjX3NlbmRfcmVxX2FkZF9saW5rX3Jlc3BvbnNlKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTQyNC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTQzMS1cbm5ldC9zbWMvc21jX2xsYy5jOjE0MzI6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTE0MzMtXHRcdFx0IHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcmVxX3FlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNTU0LVxubmV0L3NtYy9zbWNfbGxjLmM6MTU1NTpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3Nfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTU1Ni17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU3My0vKiBlbnF1ZXVlIGEgbG9jYWwgYWRkX2xpbmsgcmVxIHRvIHRyaWdnZXIgYSBuZXcgYWRkX2xpbmsgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTU3NDp2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMTU3NS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU4NS0vKiB3b3JrZXIgdG8gcHJvY2VzcyBhbiBhZGQgbGluayBtZXNzYWdlICovXG5uZXQvc21jL3NtY19sbGMuYzoxNTg2OnN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc21jL3NtY19sbGMuYy0xNTg3LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNjA4LSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTYwOTp2b2lkIHNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggZGVsX2xpbmtfaWQpXG5uZXQvc21jL3NtY19sbGMuYy0xNjEwLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNjIxLVxubmV0L3NtYy9zbWNfbGxjLmM6MTYyMjpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3NfY2xpX2RlbGV0ZV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTYyMy17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTY3OS0gKi9cbm5ldC9zbWMvc21jX2xsYy5jOjE2ODA6dm9pZCBzbWNfbGxjX3NlbmRfbGlua19kZWxldGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIG9yZCwgdTMyIHJzbilcbm5ldC9zbWMvc21jX2xsYy5jLTE2ODEte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE2OTktXG5uZXQvc21jL3NtY19sbGMuYzoxNzAwOnN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0xNzAxLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNzY3LVxubmV0L3NtYy9zbWNfbGxjLmM6MTc2ODpzdGF0aWMgdm9pZCBzbWNfbGxjX2RlbGV0ZV9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3NtYy9zbWNfbGxjLmMtMTc2OS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTc4Ny0vKiBwcm9jZXNzIGEgY29uZmlybV9ya2V5IHJlcXVlc3QgZnJvbSBwZWVyLCByZW1vdGUgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTc4ODpzdGF0aWMgdm9pZCBzbWNfbGxjX3JtdF9jb25mX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0xNzg5LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xODI3LS8qIHByb2Nlc3MgYSBkZWxldGVfcmtleSByZXF1ZXN0IGZyb20gcGVlciwgcmVtb3RlIGZsb3cgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjE4Mjg6c3RhdGljIHZvaWQgc21jX2xsY19ybXRfZGVsZXRlX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0xODI5LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xODg5LVxubmV0L3NtYy9zbWNfbGxjLmM6MTg5MDpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb3RvY29sX3Zpb2xhdGlvbihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgdTggdHlwZSlcbm5ldC9zbWMvc21jX2xsYy5jLTE4OTEte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE4OTktLyogZmx1c2ggdGhlIGxsYyBldmVudCBxdWV1ZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTkwMDpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2ZsdXNoKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTkwMS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTkxMS1cbm5ldC9zbWMvc21jX2xsYy5jOjE5MTI6c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTkxMy17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjAzMy0vKiB3b3JrZXIgdG8gcHJvY2VzcyBsbGMgbWVzc2FnZXMgb24gdGhlIGV2ZW50IHF1ZXVlICovXG5uZXQvc21jL3NtY19sbGMuYzoyMDM0OnN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc21jL3NtY19sbGMuYy0yMDM1LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMDYyLS8qIHByb2Nlc3MgbGxjIHJlc3BvbnNlcyBpbiB0YXNrbGV0IGNvbnRleHQgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjIwNjM6c3RhdGljIHZvaWQgc21jX2xsY19yeF9yZXNwb25zZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0yMDY0LVx0XHRcdFx0c3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjEwNz1zdGF0aWMgdTMyIHNtY19sbGNfbWF4X2JvZHlfbGVuKHVuaW9uIHNtY19sbGNfbXNnICpsbGMpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjEyMS1cbm5ldC9zbWMvc21jX2xsYy5jOjIxMjI6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcbm5ldC9zbWMvc21jX2xsYy5jLTIxMjMtXHRcdFx0ICAgIHUzMiBieXRlX2xlbilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTY3LS8qIGNvcHkgcmVjZWl2ZWQgbXNnIGFuZCBhZGQgaXQgdG8gdGhlIGV2ZW50IHF1ZXVlICovXG5uZXQvc21jL3NtY19sbGMuYzoyMTY4OnN0YXRpYyB2b2lkIHNtY19sbGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpXG5uZXQvc21jL3NtY19sbGMuYy0yMTY5LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTg3LVxubmV0L3NtYy9zbWNfbGxjLmM6MjE4ODpzdGF0aWMgdm9pZCBzbWNfbGxjX3Rlc3RsaW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3NtYy9zbWNfbGxjLmMtMjE4OS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjIxOS1cbm5ldC9zbWMvc21jX2xsYy5jOjIyMjA6dm9pZCBzbWNfbGxjX2xncl9pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbm5ldC9zbWMvc21jX2xsYy5jLTIyMjEte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyMzgtLyogY2FsbGVkIGFmdGVyIGxnciB3YXMgcmVtb3ZlZCBmcm9tIGxncl9saXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjM5OnZvaWQgc21jX2xsY19sZ3JfY2xlYXIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0yMjQwLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjUyLVxubmV0L3NtYy9zbWNfbGxjLmM6MjI1MzppbnQgc21jX2xsY19saW5rX2luaXQoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMjI1NC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjI1OS1cbm5ldC9zbWMvc21jX2xsYy5jOjIyNjA6dm9pZCBzbWNfbGxjX2xpbmtfYWN0aXZlKHN0cnVjdCBzbWNfbGluayAqbGluaylcbm5ldC9zbWMvc21jX2xsYy5jLTIyNjEte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyNzctLyogY2FsbGVkIGluIHdvcmtlciBjb250ZXh0ICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjc4OnZvaWQgc21jX2xsY19saW5rX2NsZWFyKHN0cnVjdCBzbWNfbGluayAqbGluaywgYm9vbCBsb2cpXG5uZXQvc21jL3NtY19sbGMuYy0yMjc5LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjkyLS8qIHJlZ2lzdGVyIGEgbmV3IHJ0b2tlbiBhdCB0aGUgcmVtb3RlIHBlZXIgKGZvciBhbGwgbGlua3MpICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjkzOmludCBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTIyOTQtXHRcdFx0ICAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIzMTQtLyogdW5yZWdpc3RlciBhbiBydG9rZW4gYXQgdGhlIHJlbW90ZSBwZWVyICovXG5uZXQvc21jL3NtY19sbGMuYzoyMzE1OmludCBzbWNfbGxjX2RvX2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfbGxjLmMtMjMxNi1cdFx0XHQgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMzQwLVxubmV0L3NtYy9zbWNfbGxjLmM6MjM0MTp2b2lkIHNtY19sbGNfbGlua19zZXRfdWlkKHN0cnVjdCBzbWNfbGluayAqbGluaylcbm5ldC9zbWMvc21jX2xsYy5jLTIzNDIte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIzNDktLyogc2F2ZSBwZWVycyBsaW5rIHVzZXIgaWQsIHVzZWQgZm9yIGRlYnVnIHB1cnBvc2VzICovXG5uZXQvc21jL3NtY19sbGMuYzoyMzUwOnZvaWQgc21jX2xsY19zYXZlX3BlZXJfdWlkKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMjM1MS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjM1Ni0vKiBldmFsdWF0ZSBjb25maXJtIGxpbmsgcmVxdWVzdCBvciByZXNwb25zZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjM1NzppbnQgc21jX2xsY19ldmFsX2NvbmZfbGluayhzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSxcbm5ldC9zbWMvc21jX2xsYy5jLTIzNTgtXHRcdFx0ICAgZW51bSBzbWNfbGxjX3JlcXJlc3AgdHlwZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyNDAKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhpbmdzOgoKKipBbmFseXppbmcgU01DIExpbmsgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gYHNtY19sbGNfY2xpX2FkZF9saW5rYCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYCBhcmVuJiMzOTt0IHN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIGlzIGltcG9ydGFudCB0byByZW1lbWJlci4gVGhhdCBwcm9iYWJseSBtZWFucyB0aGV5JiMzOTtyZSBzdWJqZWN0IHRvIHNvbWUgc29ydCBvZiBkeW5hbWljIGJlaGF2aW9yLCB3aGljaCBuZWVkcyB1bmRlcnN0YW5kaW5nLiBSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHRyYWNrIGRvd24gZXhhY3RseSBob3cgdGhlc2UgbGlua3MgYXJlIGluaXRpYWxpemVkLiBUaGUgb2J2aW91cyBwbGFjZSB0byBzdGFydCBpcyBgbmV0L3NtYy9zbWNfY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBgc21jcl9saW5rX2luaXRgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgYW5kIHNlZWluZyB3aGF0IGluZmx1ZW5jZXMgdGhlc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oaW50fHZvaWR8c3RhdGljIGludHxzdGF0aWMgdm9pZCkgW2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY29yZS5jPTUwPXN0YXRpYyBERUNMQVJFX1dBSVRfUVVFVUVfSEVBRChsZ3JzX2RlbGV0ZWQpO1xubmV0L3NtYy9zbWNfY29yZS5jLTUxLVxubmV0L3NtYy9zbWNfY29yZS5jOjUyOnN0YXRpYyB2b2lkIHNtY19idWZfZnJlZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBpc19ybWIsXG5uZXQvc21jL3NtY19jb3JlLmMtNTMtXHRcdFx0IHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjKTtcbm5ldC9zbWMvc21jX2NvcmUuYzo1NDpzdGF0aWMgdm9pZCBfX3NtY19sZ3JfdGVybWluYXRlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIHNvZnQpO1xubmV0L3NtYy9zbWNfY29yZS5jLTU1LVxubmV0L3NtYy9zbWNfY29yZS5jOjU2OnN0YXRpYyB2b2lkIHNtY19saW5rX2Rvd25fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xubmV0L3NtYy9zbWNfY29yZS5jLTU3LVxubmV0L3NtYy9zbWNfY29yZS5jOjU4OnZvaWQgc21jX2luaXRfaW5mb19mcmVlKHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXG5uZXQvc21jL3NtY19jb3JlLmMtNTkte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz03MD1zdGF0aWMgaW5saW5lIHN0cnVjdCBsaXN0X2hlYWQgKnNtY19sZ3JfbGlzdF9oZWFkKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy04MS1cbm5ldC9zbWMvc21jX2NvcmUuYzo4MjpzdGF0aWMgdm9pZCBzbWNfaWJkZXZfY250X2luYyhzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2NvcmUuYy04My17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTg2LVxubmV0L3NtYy9zbWNfY29yZS5jOjg3OnN0YXRpYyB2b2lkIHNtY19pYmRldl9jbnRfZGVjKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTg4LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtOTEtXG5uZXQvc21jL3NtY19jb3JlLmM6OTI6c3RhdGljIHZvaWQgc21jX2xncl9zY2hlZHVsZV9mcmVlX3dvcmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19jb3JlLmMtOTMte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xMTEtICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTEyOnN0YXRpYyB2b2lkIHNtY19sZ3JfYWRkX2FsZXJ0X3Rva2VuKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTMte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xMzMtLyogYXNzaWduIGFuIFNNQy1SIGxpbmsgdG8gdGhlIGNvbm5lY3Rpb24gKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoxMzQ6c3RhdGljIGludCBzbWNyX2xncl9jb25uX2Fzc2lnbl9saW5rKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwgYm9vbCBmaXJzdClcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzUte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNzctICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTc4OnN0YXRpYyBpbnQgc21jX2xncl9yZWdpc3Rlcl9jb25uKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwgYm9vbCBmaXJzdClcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzkte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yMDYtICovXG5uZXQvc21jL3NtY19jb3JlLmM6MjA3OnN0YXRpYyB2b2lkIF9fc21jX2xncl91bnJlZ2lzdGVyX2Nvbm4oc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxubmV0L3NtYy9zbWNfY29yZS5jLTIwOC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTIyMS0gKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoyMjI6c3RhdGljIHZvaWQgc21jX2xncl91bnJlZ2lzdGVyX2Nvbm4oc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxubmV0L3NtYy9zbWNfY29yZS5jLTIyMy17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTIzNC1cbm5ldC9zbWMvc21jX2NvcmUuYzoyMzU6c3RhdGljIHZvaWQgc21jX2xncl9idWZfbGlzdF9hZGQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL3NtY19jb3JlLmMtMjM2LVx0XHRcdFx0IGJvb2wgaXNfcm1iLFxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNDktXG5uZXQvc21jL3NtY19jb3JlLmM6MjUwOnN0YXRpYyB2b2lkIHNtY19sZ3JfYnVmX2xpc3RfZGVsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfY29yZS5jLTI1MS1cdFx0XHRcdCBib29sIGlzX3JtYixcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjYzLVxubmV0L3NtYy9zbWNfY29yZS5jOjI2NDppbnQgc21jX25sX2dldF9zeXNfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG5uZXQvc21jL3NtY19jb3JlLmMtMjY1LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMzE5LS8qIEZpbGwgU01DX05MQV9MR1JfRF9WMl9DT01NT04vU01DX05MQV9MR1JfUl9WMl9DT01NT04gbmVzdGVkIGF0dHJpYnV0ZXMgKi9cbm5ldC9zbWMvc21jX2NvcmUuYzozMjA6c3RhdGljIGludCBzbWNfbmxfZmlsbF9sZ3JfdjJfY29tbW9uKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfY29yZS5jLTMyMS1cdFx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMzUwLVxubmV0L3NtYy9zbWNfY29yZS5jOjM1MTpzdGF0aWMgaW50IHNtY19ubF9maWxsX3NtY3JfbGdyX3YyKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfY29yZS5jLTM1Mi1cdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTM3NS1cbm5ldC9zbWMvc21jX2NvcmUuYzozNzY6c3RhdGljIGludCBzbWNfbmxfZmlsbF9sZ3Ioc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL3NtY19jb3JlLmMtMzc3LVx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTQyNy1cbm5ldC9zbWMvc21jX2NvcmUuYzo0Mjg6c3RhdGljIGludCBzbWNfbmxfZmlsbF9sZ3JfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbm5ldC9zbWMvc21jX2NvcmUuYy00MjktXHRcdFx0XHRzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTQ4OC1cbm5ldC9zbWMvc21jX2NvcmUuYzo0ODk6c3RhdGljIGludCBzbWNfbmxfaGFuZGxlX2xncihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbm5ldC9zbWMvc21jX2NvcmUuYy00OTAtXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy01MjItXG5uZXQvc21jL3NtY19jb3JlLmM6NTIzOnN0YXRpYyB2b2lkIHNtY19ubF9maWxsX2xncl9saXN0KHN0cnVjdCBzbWNfbGdyX2xpc3QgKnNtY19sZ3IsXG5uZXQvc21jL3NtY19jb3JlLmMtNTI0LVx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTU0Ni1cbm5ldC9zbWMvc21jX2NvcmUuYzo1NDc6c3RhdGljIGludCBzbWNfbmxfZmlsbF9zbWNkX2xncihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbm5ldC9zbWMvc21jX2NvcmUuYy01NDgtXHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy02MTYtXG5uZXQvc21jL3NtY19jb3JlLmM6NjE3OnN0YXRpYyBpbnQgc21jX25sX2hhbmRsZV9zbWNkX2xncihzdHJ1Y3Qgc21jZF9kZXYgKmRldixcbm5ldC9zbWMvc21jX2NvcmUuYy02MTgtXHRcdFx0XHQgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTY0My1cbm5ldC9zbWMvc21jX2NvcmUuYzo2NDQ6c3RhdGljIGludCBzbWNfbmxfZmlsbF9zbWNkX2RldihzdHJ1Y3Qgc21jZF9kZXZfbGlzdCAqZGV2X2xpc3QsXG5uZXQvc21jL3NtY19jb3JlLmMtNjQ1LVx0XHRcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtNjcwLVxubmV0L3NtYy9zbWNfY29yZS5jOjY3MTppbnQgc21jcl9ubF9nZXRfbGdyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9zbWMvc21jX2NvcmUuYy02NzIte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy02NzgtXG5uZXQvc21jL3NtY19jb3JlLmM6Njc5OmludCBzbWNyX25sX2dldF9saW5rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9zbWMvc21jX2NvcmUuYy02ODAte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy02ODYtXG5uZXQvc21jL3NtY19jb3JlLmM6Njg3OmludCBzbWNkX25sX2dldF9sZ3Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxubmV0L3NtYy9zbWNfY29yZS5jLTY4OC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTY5Mi1cbm5ldC9zbWMvc21jX2NvcmUuYzo2OTM6dm9pZCBzbWNfbGdyX2NsZWFudXBfZWFybHkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19jb3JlLmMtNjk0LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtNzA4LVxubmV0L3NtYy9zbWNfY29yZS5jOjcwOTpzdGF0aWMgdm9pZCBzbWNyX2xncl9saW5rX2RlYWN0aXZhdGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfY29yZS5jLTcxMC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTcyMi1cbm5ldC9zbWMvc21jX2NvcmUuYzo3MjM6c3RhdGljIHZvaWQgc21jX2xncl9mcmVlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKTtcbm5ldC9zbWMvc21jX2NvcmUuYy03MjQtXG5uZXQvc21jL3NtY19jb3JlLmM6NzI1OnN0YXRpYyB2b2lkIHNtY19sZ3JfZnJlZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zbWMvc21jX2NvcmUuYy03MjYte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy03NjAtXG5uZXQvc21jL3NtY19jb3JlLmM6NzYxOnN0YXRpYyB2b2lkIHNtY19sZ3JfdGVybWluYXRlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3NtYy9zbWNfY29yZS5jLTc2Mi17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jPTc3MD1zdGF0aWMgdTggc21jcl9uZXh0X2xpbmtfaWQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTc4OS1cbm5ldC9zbWMvc21jX2NvcmUuYzo3OTA6c3RhdGljIHZvaWQgc21jcl9jb3B5X2Rldl9pbmZvX3RvX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTc5MS17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTc5OC1cbm5ldC9zbWMvc21jX2NvcmUuYzo3OTk6aW50IHNtY3JfbGlua19pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbm5ldC9zbWMvc21jX2NvcmUuYy04MDAtXHRcdCAgIHU4IGxpbmtfaWR4LCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy05MDctLyogY3JlYXRlIGEgbmV3IFNNQyBsaW5rIGdyb3VwICovXG5uZXQvc21jL3NtY19jb3JlLmM6OTA4OnN0YXRpYyBpbnQgc21jX2xncl9jcmVhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXG5uZXQvc21jL3NtY19jb3JlLmMtOTA5LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTAzOS1cbm5ldC9zbWMvc21jX2NvcmUuYzoxMDQwOnN0YXRpYyBpbnQgc21jX3dyaXRlX3NwYWNlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NvcmUuYy0xMDQxLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTA1My1cbm5ldC9zbWMvc21jX2NvcmUuYzoxMDU0OnN0YXRpYyBpbnQgc21jX3N3aXRjaF9jdXJzb3Ioc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX3R4X3BlbmQgKnBlbmQsXG5uZXQvc21jL3NtY19jb3JlLmMtMTA1NS1cdFx0XHQgICAgIHN0cnVjdCBzbWNfd3JfYnVmICp3cl9idWYpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTExMDMtXG5uZXQvc21jL3NtY19jb3JlLmM6MTEwNDp2b2lkIHNtY19zd2l0Y2hfbGlua19hbmRfY291bnQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxubmV0L3NtYy9zbWNfY29yZS5jLTExMDUtXHRcdFx0ICAgICAgIHN0cnVjdCBzbWNfbGluayAqdG9fbG5rKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz0xMTE2PXN0cnVjdCBzbWNfbGluayAqc21jX3N3aXRjaF9jb25ucyhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTE5My1cbm5ldC9zbWMvc21jX2NvcmUuYzoxMTk0OnN0YXRpYyB2b2lkIHNtY3JfYnVmX3VudXNlKHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjLCBib29sIGlzX3JtYixcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTk1LVx0XHRcdCAgIHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xMjI4LVxubmV0L3NtYy9zbWNfY29yZS5jOjEyMjk6c3RhdGljIHZvaWQgc21jZF9idWZfZGV0YWNoKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NvcmUuYy0xMjMwLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTI0NC1cbm5ldC9zbWMvc21jX2NvcmUuYzoxMjQ1OnN0YXRpYyB2b2lkIHNtY19idWZfdW51c2Uoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxubmV0L3NtYy9zbWNfY29yZS5jLTEyNDYtXHRcdFx0ICBzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTI3NS0vKiByZW1vdmUgYSBmaW5pc2hlZCBjb25uZWN0aW9uIGZyb20gaXRzIGxpbmsgZ3JvdXAgKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoxMjc2OnZvaWQgc21jX2Nvbm5fZnJlZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG5uZXQvc21jL3NtY19jb3JlLmMtMTI3Ny17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTEzMTYtLyogdW5yZWdpc3RlciBhIGxpbmsgZnJvbSBhIGJ1Zl9kZXNjICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTMxNzpzdGF0aWMgdm9pZCBzbWNyX2J1Zl91bm1hcF9saW5rKHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjLCBib29sIGlzX3JtYixcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzE4LVx0XHRcdFx0c3RydWN0IHNtY19saW5rICpsbmspXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTEzMzktLyogdW5tYXAgYWxsIGJ1ZmZlcnMgb2YgbGdyIGZvciBhIGRlbGV0ZWQgbGluayAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjEzNDA6c3RhdGljIHZvaWQgc21jcl9idWZfdW5tYXBfbGdyKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTEzNDEte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xMzU5LVxubmV0L3NtYy9zbWNfY29yZS5jOjEzNjA6c3RhdGljIHZvaWQgc21jcl9ydG9rZW5fY2xlYXJfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzYxLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTM3MC1cbm5ldC9zbWMvc21jX2NvcmUuYzoxMzcxOnN0YXRpYyB2b2lkIF9fc21jcl9saW5rX2NsZWFyKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTEzNzIte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xMzg3LS8qIG11c3QgYmUgY2FsbGVkIHVuZGVyIGxnci1cdTAwM2VsbGNfY29uZl9tdXRleCBsb2NrICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTM4ODp2b2lkIHNtY3JfbGlua19jbGVhcihzdHJ1Y3Qgc21jX2xpbmsgKmxuaywgYm9vbCBsb2cpXG5uZXQvc21jL3NtY19jb3JlLmMtMTM4OS17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE0MDQtXG5uZXQvc21jL3NtY19jb3JlLmM6MTQwNTp2b2lkIHNtY3JfbGlua19ob2xkKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTE0MDYte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNDA5LVxubmV0L3NtYy9zbWNfY29yZS5jOjE0MTA6dm9pZCBzbWNyX2xpbmtfcHV0KHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTE0MTEte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNDE1LVxubmV0L3NtYy9zbWNfY29yZS5jOjE0MTY6c3RhdGljIHZvaWQgc21jcl9idWZfZnJlZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBpc19ybWIsXG5uZXQvc21jL3NtY19jb3JlLmMtMTQxNy1cdFx0XHQgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNDMwLVxubmV0L3NtYy9zbWNfY29yZS5jOjE0MzE6c3RhdGljIHZvaWQgc21jZF9idWZfZnJlZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBpc19kbWIsXG5uZXQvc21jL3NtY19jb3JlLmMtMTQzMi1cdFx0XHQgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNDQzLVxubmV0L3NtYy9zbWNfY29yZS5jOjE0NDQ6c3RhdGljIHZvaWQgc21jX2J1Zl9mcmVlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIGlzX3JtYixcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDQ1LVx0XHRcdCBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfZGVzYylcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ1Mi1cbm5ldC9zbWMvc21jX2NvcmUuYzoxNDUzOnN0YXRpYyB2b2lkIF9fc21jX2xncl9mcmVlX2J1ZnMoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgaXNfcm1iKVxubmV0L3NtYy9zbWNfY29yZS5jLTE0NTQte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNDcxLVxubmV0L3NtYy9zbWNfY29yZS5jOjE0NzI6c3RhdGljIHZvaWQgc21jX2xncl9mcmVlX2J1ZnMoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ3My17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE0ODAtLyogd29uJiMzOTt0IGJlIGZyZWVkIHVudGlsIG5vIG9uZSBhY2Nlc3NlcyB0byBsZ3IgYW55bW9yZSAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE0ODE6c3RhdGljIHZvaWQgX19zbWNfbGdyX2ZyZWUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ4Mi17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE0OTUtLyogcmVtb3ZlIGEgbGluayBncm91cCAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE0OTY6c3RhdGljIHZvaWQgc21jX2xncl9mcmVlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfY29yZS5jLTE0OTcte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNTE3LVxubmV0L3NtYy9zbWNfY29yZS5jOjE1MTg6dm9pZCBzbWNfbGdyX2hvbGQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19jb3JlLmMtMTUxOS17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE1MjItXG5uZXQvc21jL3NtY19jb3JlLmM6MTUyMzp2b2lkIHNtY19sZ3JfcHV0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfY29yZS5jLTE1MjQte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNTI4LVxubmV0L3NtYy9zbWNfY29yZS5jOjE1Mjk6c3RhdGljIHZvaWQgc21jX3NrX3dha2VfdXBzKHN0cnVjdCBzbWNfc29jayAqc21jKVxubmV0L3NtYy9zbWNfY29yZS5jLTE1MzAte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNTM2LS8qIGtpbGwgYSBjb25uZWN0aW9uICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTUzNzpzdGF0aWMgdm9pZCBzbWNfY29ubl9raWxsKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwgYm9vbCBzb2Z0KVxubmV0L3NtYy9zbWNfY29yZS5jLTE1Mzgte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNTYyLVxubmV0L3NtYy9zbWNfY29yZS5jOjE1NjM6c3RhdGljIHZvaWQgc21jX2xncl9jbGVhbnVwKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfY29yZS5jLTE1NjQte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNTgwLSAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE1ODE6c3RhdGljIHZvaWQgX19zbWNfbGdyX3Rlcm1pbmF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBzb2Z0KVxubmV0L3NtYy9zbWNfY29yZS5jLTE1ODIte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNjEzLS8qIHVubGluayBsaW5rIGdyb3VwIGFuZCBzY2hlZHVsZSB0ZXJtaW5hdGlvbiAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE2MTQ6dm9pZCBzbWNfbGdyX3Rlcm1pbmF0ZV9zY2hlZChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbm5ldC9zbWMvc21jX2NvcmUuYy0xNjE1LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTYzMC0vKiBDYWxsZWQgd2hlbiBwZWVyIGxnciBzaHV0ZG93biAocmVndWxhcmx5IG9yIGFibm9ybWFsbHkpIGlzIHJlY2VpdmVkICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTYzMTp2b2lkIHNtY19zbWNkX3Rlcm1pbmF0ZShzdHJ1Y3Qgc21jZF9kZXYgKmRldiwgc3RydWN0IHNtY2RfZ2lkICpwZWVyX2dpZCxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNjMyLVx0XHRcdHVuc2lnbmVkIHNob3J0IHZsYW4pXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE2NjAtLyogQ2FsbGVkIHdoZW4gYW4gU01DRCBkZXZpY2UgaXMgcmVtb3ZlZCBvciB0aGUgc21jIG1vZHVsZSBpcyB1bmxvYWRlZCAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE2NjE6dm9pZCBzbWNfc21jZF90ZXJtaW5hdGVfYWxsKHN0cnVjdCBzbWNkX2RldiAqc21jZClcbm5ldC9zbWMvc21jX2NvcmUuYy0xNjYyLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTY4NC0gKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoxNjg1OnZvaWQgc21jX3NtY3JfdGVybWluYXRlX2FsbChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG5uZXQvc21jL3NtY19jb3JlLmMtMTY4Ni17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE3MjItLyogc2V0IG5ldyBsZ3IgdHlwZSBhbmQgY2xlYXIgYWxsIGFzeW1tZXRyaWMgbGluayB0YWdnaW5nICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTcyMzp2b2lkIHNtY3JfbGdyX3NldF90eXBlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBlbnVtIHNtY19sZ3JfdHlwZSBuZXdfdHlwZSlcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzI0LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTc1Ny0vKiBzZXQgbmV3IGxnciB0eXBlIGFuZCB0YWcgYSBsaW5rIGFzIGFzeW1tZXRyaWMgKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoxNzU4OnZvaWQgc21jcl9sZ3Jfc2V0X3R5cGVfYXN5bShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzU5LVx0XHRcdCAgICBlbnVtIHNtY19sZ3JfdHlwZSBuZXdfdHlwZSwgaW50IGFzeW1fbG5rX2lkeClcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTc2NS0vKiBhYm9ydCBjb25uZWN0aW9uLCBhYm9ydF93b3JrIHNjaGVkdWxlZCBmcm9tIHRhc2tsZXQgY29udGV4dCAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE3NjY6c3RhdGljIHZvaWQgc21jX2Nvbm5fYWJvcnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc21jL3NtY19jb3JlLmMtMTc2Ny17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE3NzgtXG5uZXQvc21jL3NtY19jb3JlLmM6MTc3OTp2b2lkIHNtY3JfcG9ydF9hZGQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2LCB1OCBpYnBvcnQpXG5uZXQvc21jL3NtY19jb3JlLmMtMTc4MC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE4MDctICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTgwODpzdGF0aWMgdm9pZCBzbWNyX2xpbmtfZG93bihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2NvcmUuYy0xODA5LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTg0OC0vKiBtdXN0IGJlIGNhbGxlZCB1bmRlciBsZ3ItXHUwMDNlbGxjX2NvbmZfbXV0ZXggbG9jayAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE4NDk6dm9pZCBzbWNyX2xpbmtfZG93bl9jb25kKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTE4NTAte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xODU3LS8qIHdpbGwgZ2V0IHRoZSBsZ3ItXHUwMDNlbGxjX2NvbmZfbXV0ZXggbG9jayAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE4NTg6dm9pZCBzbWNyX2xpbmtfZG93bl9jb25kX3NjaGVkKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTE4NTkte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xODY3LVxubmV0L3NtYy9zbWNfY29yZS5jOjE4Njg6dm9pZCBzbWNyX3BvcnRfZXJyKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgdTggaWJwb3J0KVxubmV0L3NtYy9zbWNfY29yZS5jLTE4Njkte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xODg4LVxubmV0L3NtYy9zbWNfY29yZS5jOjE4ODk6c3RhdGljIHZvaWQgc21jX2xpbmtfZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zbWMvc21jX2NvcmUuYy0xODkwLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTkwNS1cbm5ldC9zbWMvc21jX2NvcmUuYzoxOTA2OnN0YXRpYyBpbnQgc21jX3ZsYW5fYnlfdGNwc2tfd2FsayhzdHJ1Y3QgbmV0X2RldmljZSAqbG93ZXJfZGV2LFxubmV0L3NtYy9zbWNfY29yZS5jLTE5MDctXHRcdFx0XHQgIHN0cnVjdCBuZXRkZXZfbmVzdGVkX3ByaXYgKnByaXYpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE5MTktLyogRGV0ZXJtaW5lIHZsYW4gb2YgaW50ZXJuYWwgVENQIHNvY2tldC4gKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoxOTIwOmludCBzbWNfdmxhbl9ieV90Y3BzayhzdHJ1Y3Qgc29ja2V0ICpjbGNzb2NrLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxubmV0L3NtYy9zbWNfY29yZS5jLTE5MjEte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz0xOTgyPXN0YXRpYyBib29sIHNtY2RfbGdyX21hdGNoKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xOTk3LS8qIGNyZWF0ZSBhIG5ldyBTTUMgY29ubmVjdGlvbiAoYW5kIGEgbmV3IGxpbmsgZ3JvdXAgaWYgbmVjZXNzYXJ5KSAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE5OTg6aW50IHNtY19jb25uX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbm5ldC9zbWMvc21jX2NvcmUuYy0xOTk5LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmM9MjEwND1zdGF0aWMgdTggc21jX2NvbXByZXNzX2J1ZnNpemUoaW50IHNpemUsIGJvb2wgaXNfc21jZCwgYm9vbCBpc19ybWIpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTIxMjQtLyogY29udmVydCB0aGUgUk1CIHNpemUgZnJvbSBjb21wcmVzc2VkIG5vdGF0aW9uIGludG8gaW50ZWdlciAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjIxMjU6aW50IHNtY191bmNvbXByZXNzX2J1ZnNpemUodTggY29tcHJlc3NlZClcbm5ldC9zbWMvc21jX2NvcmUuYy0yMTI2LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmM9MjE1Nj1zdGF0aWMgaW5saW5lIGludCBzbWNfcm1iX3duZF91cGRhdGVfbGltaXQoaW50IHJtYmVfc2l6ZSlcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjE2MS0vKiBtYXAgYW4gYnVmIHRvIGEgbGluayAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjIxNjI6c3RhdGljIGludCBzbWNyX2J1Zl9tYXBfbGluayhzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfZGVzYywgYm9vbCBpc19ybWIsXG5uZXQvc21jL3NtY19jb3JlLmMtMjE2My1cdFx0XHQgICAgIHN0cnVjdCBzbWNfbGluayAqbG5rKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yMjM4LSAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjIyMzk6aW50IHNtY3JfbGlua19yZWdfYnVmKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX2Rlc2MpXG5uZXQvc21jL3NtY19jb3JlLmMtMjI0MC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTIyNTYtXG5uZXQvc21jL3NtY19jb3JlLmM6MjI1NzpzdGF0aWMgaW50IF9zbWNyX2J1Zl9tYXBfbGdyKHN0cnVjdCBzbWNfbGluayAqbG5rLCBzdHJ1Y3Qgcndfc2VtYXBob3JlICpsb2NrLFxubmV0L3NtYy9zbWNfY29yZS5jLTIyNTgtXHRcdFx0ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpsc3QsIGJvb2wgaXNfcm1iKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yMjc2LS8qIG1hcCBhbGwgdXNlZCBidWZmZXJzIG9mIGxnciBmb3IgYSBuZXcgbGluayAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjIyNzc6aW50IHNtY3JfYnVmX21hcF9sZ3Ioc3RydWN0IHNtY19saW5rICpsbmspXG5uZXQvc21jL3NtY19jb3JlLmMtMjI3OC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTIyOTctICovXG5uZXQvc21jL3NtY19jb3JlLmM6MjI5ODppbnQgc21jcl9idWZfcmVnX2xncihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2NvcmUuYy0yMjk5LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmM9MjMzOT1zdGF0aWMgc3RydWN0IHNtY19idWZfZGVzYyAqc21jcl9uZXdfYnVmX2NyZWF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjM4Ni0gKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoyMzg3OnN0YXRpYyBpbnQgc21jcl9idWZfbWFwX3VzYWJsZV9saW5rcyhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbm5ldC9zbWMvc21jX2NvcmUuYy0yMzg4LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfZGVzYywgYm9vbCBpc19ybWIpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jPTI0MTI9c3RhdGljIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNtY2RfbmV3X2J1Zl9jcmVhdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTI0NDctXG5uZXQvc21jL3NtY19jb3JlLmM6MjQ0ODpzdGF0aWMgaW50IF9fc21jX2J1Zl9jcmVhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIGJvb2wgaXNfc21jZCwgYm9vbCBpc19ybWIpXG5uZXQvc21jL3NtY19jb3JlLmMtMjQ0OS17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTI1MzktXG5uZXQvc21jL3NtY19jb3JlLmM6MjU0MDp2b2lkIHNtY19zbmRidWZfc3luY19zZ19mb3JfZGV2aWNlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NvcmUuYy0yNTQxLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjU0OS1cbm5ldC9zbWMvc21jX2NvcmUuYzoyNTUwOnZvaWQgc21jX3JtYl9zeW5jX3NnX2Zvcl9jcHUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxubmV0L3NtYy9zbWNfY29yZS5jLTI1NTEte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNTcxLSAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjI1NzI6aW50IHNtY19idWZfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBib29sIGlzX3NtY2QpXG5uZXQvc21jL3NtY19jb3JlLmMtMjU3My17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTI1OTgtXG5uZXQvc21jL3NtY19jb3JlLmM6MjU5OTppbnQgc21jZF9idWZfYXR0YWNoKHN0cnVjdCBzbWNfc29jayAqc21jKVxubmV0L3NtYy9zbWNfY29yZS5jLTI2MDAte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz0yNjM0PXN0YXRpYyBpbmxpbmUgaW50IHNtY19ybWJfcmVzZXJ2ZV9ydG9rZW5faWR4KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNjQ0LVxubmV0L3NtYy9zbWNfY29yZS5jOjI2NDU6c3RhdGljIGludCBzbWNfcnRva2VuX2ZpbmRfYnlfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgaW50IGxua19pZHgsXG5uZXQvc21jL3NtY19jb3JlLmMtMjY0Ni1cdFx0XHRcdCAgIHUzMiBya2V5KVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNjU4LS8qIHNldCBydG9rZW4gZm9yIGEgbmV3IGxpbmsgdG8gYW4gZXhpc3Rpbmcgcm1iICovXG5uZXQvc21jL3NtY19jb3JlLmM6MjY1OTp2b2lkIHNtY19ydG9rZW5fc2V0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBpbnQgbGlua19pZHgsIGludCBsaW5rX2lkeF9uZXcsXG5uZXQvc21jL3NtY19jb3JlLmMtMjY2MC1cdFx0ICAgIF9fYmUzMiBud19ya2V5X2tub3duLCBfX2JlNjQgbndfdmFkZHIsIF9fYmUzMiBud19ya2V5KVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNjcxLS8qIHNldCBydG9rZW4gZm9yIGEgbmV3IGxpbmsgd2hvc2UgbGlua19pZCBpcyBnaXZlbiAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjI2NzI6dm9pZCBzbWNfcnRva2VuX3NldDIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGludCBydG9rX2lkeCwgaW50IGxpbmtfaWQsXG5uZXQvc21jL3NtY19jb3JlLmMtMjY3My1cdFx0ICAgICBfX2JlNjQgbndfdmFkZHIsIF9fYmUzMiBud19ya2V5KVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNjkyLS8qIGFkZCBhIG5ldyBydG9rZW4gZnJvbSBwZWVyICovXG5uZXQvc21jL3NtY19jb3JlLmM6MjY5MzppbnQgc21jX3J0b2tlbl9hZGQoc3RydWN0IHNtY19saW5rICpsbmssIF9fYmU2NCBud192YWRkciwgX19iZTMyIG53X3JrZXkpXG5uZXQvc21jL3NtY19jb3JlLmMtMjY5NC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTI3MTYtLyogZGVsZXRlIGFuIHJ0b2tlbiBmcm9tIGFsbCBsaW5rcyAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjI3MTc6aW50IHNtY19ydG9rZW5fZGVsZXRlKHN0cnVjdCBzbWNfbGluayAqbG5rLCBfX2JlMzIgbndfcmtleSlcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzE4LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjczNy0vKiBzYXZlIHJrZXkgYW5kIGRtYV9hZGRyIHJlY2VpdmVkIGZyb20gcGVlciBkdXJpbmcgY2xjIGhhbmRzaGFrZSAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjI3Mzg6aW50IHNtY19ybWJfcnRva2VuX2hhbmRsaW5nKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzM5LVx0XHRcdCAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjc0OC1cbm5ldC9zbWMvc21jX2NvcmUuYzoyNzQ5OnN0YXRpYyB2b2lkIHNtY19jb3JlX2dvaW5nX2F3YXkodm9pZClcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzUwLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjc3MC0vKiBDbGVhbiB1cCBhbGwgU01DIGxpbmsgZ3JvdXBzICovXG5uZXQvc21jL3NtY19jb3JlLmM6Mjc3MTpzdGF0aWMgdm9pZCBzbWNfbGdyc19zaHV0ZG93bih2b2lkKVxubmV0L3NtYy9zbWNfY29yZS5jLTI3NzIte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNzg0LVxubmV0L3NtYy9zbWNfY29yZS5jOjI3ODU6c3RhdGljIGludCBzbWNfY29yZV9yZWJvb3RfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLFxubmV0L3NtYy9zbWNfY29yZS5jLTI3ODYtXHRcdFx0XHQgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz0yNzk4PWludCBfX2luaXQgc21jX2NvcmVfaW5pdCh2b2lkKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yODAzLS8qIENhbGxlZCAoZnJvbSBzbWNfZXhpdCkgd2hlbiBtb2R1bGUgaXMgcmVtb3ZlZCAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjI4MDQ6dm9pZCBzbWNfY29yZV9leGl0KHZvaWQpXG5uZXQvc21jL3NtY19jb3JlLmMtMjgwNS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NTA5CgkJCQkJCQlvdXRwdXQ6IDU1CgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IFNlbGVjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB0YXJnZXRzIGZvciBmdXp6aW5nIHRoaXMgU01DIGNvZGUuIEkgc2VlIHRoYXQgYHNtY3JfbGlua19pbml0YCwgYHNtY19pYmRldl9pbml0X2JlZ2luYCwgYHNtY19pYmRldl9pbml0X2VuZGAsIGBzbWNfaWJkZXZfZ2V0YCwgYHNtY19pYmRldl9wdXRgLCBhbmQgYHNtY19pbml0X2luZm9fZnJlZWAgYXJlIGFsbCBub24tc3RhdGljLiBHb29kLCB0aGF0IGJyb2FkZW5zIHRoZSBzY29wZSBmb3IgcG90ZW50aWFsIGluc3RydW1lbnRhdGlvbi4KCkhvd2V2ZXIsIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoaWNoIG9uZXMgYXJlICppbnRlcmVzdGluZyogZm9yIGZ1enppbmcuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIG9uZXMgdGhhdCByZXByZXNlbnQga2V5IGxvZ2ljIG9yIGFyZSBsaWtlbHkgdG8gaGF2ZSBjb21wbGV4IHN0YXRlIHRyYW5zaXRpb25zLiBJJiMzOTttIHRoaW5raW5nIGBzbWNfY29ubmVjdGAsIGBzbWNfbGlzdGVuYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYW5kIGBzbWNyX2xpbmtfaW5pdGAgYXJlIHRoZSBwcmltZSBjYW5kaWRhdGVzLgoKQnV0IHdhaXQgYSBtaW51dGUuLi4gYHNtY19jb25uZWN0YCBhbmQgYHNtY19saXN0ZW5gIGFyZSBzdGFuZGFyZCBzeXNjYWxscywgcmlnaHQ/IFRoZXkmIzM5O3JlIGdvaW5nIHRvIGJlIGhlYXZpbHkgZXhlcmNpc2VkIHBhdGhzIGZvciBhbnkgc29ja2V0LWJhc2VkIGNvbW11bmljYXRpb24uIEkmIzM5O20gcHJvYmFibHkgZ29pbmcgdG8gZmluZCB0b25zIG9mIGV4aXN0aW5nIGZ1enppbmcgb24gdGhvc2UsIGFuZCB0aGUgU01DLXNwZWNpZmljIGxvZ2ljIGVtYmVkZGVkIHRoZXJlIG1pZ2h0IGJlIG1pbmltYWwuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGZvY3VzaW5nIG9uIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGFuZCBgc21jcl9saW5rX2luaXRgIHdpbGwgZ2l2ZSBtZSBtb3JlICYjMzQ7YmFuZyBmb3IgbXkgYnVjay4mIzM0OyBUaGV5IHNlZW0gbW9yZSBTTUMtc3BlY2lmaWMgYW5kIGxlc3MgbGlrZWx5IHRvIGJlIHNhdHVyYXRlZCB3aXRoIHN0YW5kYXJkIHNvY2tldCBmdXp6aW5nLgoKTm93LCBJJiMzOTttIGFsc28gc2VlaW5nIHRoYXQgYHNtY19wbmV0X2RldGVybWluZV9naWRgIGhhcyBiZWVuIG1vZGlmaWVkLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIHRoYXQmIzM5O3Mgc3RhdGljLCBiZWNhdXNlIEkgY291bGQmIzM5O3ZlIG1pc3NlZCBpdCBhdCB0aGUgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oaW50fHZvaWR8c3RhdGljIGludHxzdGF0aWMgdm9pZCkgW2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19wbmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfcG5ldC5jPTg1PXN0YXRpYyBib29sIHNtY19wbmV0X21hdGNoKHU4ICpwbmV0aWQxLCB1OCAqcG5ldGlkMilcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMTAwLSAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjEwMTpzdGF0aWMgaW50IHNtY19wbmV0X3JlbW92ZV9ieV9wbmV0aWQoc3RydWN0IG5ldCAqbmV0LCBjaGFyICpwbmV0X25hbWUpXG5uZXQvc21jL3NtY19wbmV0LmMtMTAyLXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMTg0LSAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjE4NTpzdGF0aWMgaW50IHNtY19wbmV0X2FkZF9ieV9uZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxubmV0L3NtYy9zbWNfcG5ldC5jLTE4Ni17XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTIxNi0gKi9cbm5ldC9zbWMvc21jX3BuZXQuYzoyMTc6c3RhdGljIGludCBzbWNfcG5ldF9yZW1vdmVfYnlfbmRldihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbm5ldC9zbWMvc21jX3BuZXQuYy0yMTgte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYz0zMjk9c3RhdGljIHN0cnVjdCBzbWNkX2RldiAqc21jX3BuZXRfZmluZF9zbWNkKGNoYXIgKnNtY2RfbmFtZSlcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMzQ3LVxubmV0L3NtYy9zbWNfcG5ldC5jOjM0ODpzdGF0aWMgaW50IHNtY19wbmV0X2FkZF9ldGgoc3RydWN0IHNtY19wbmV0dGFibGUgKnBuZXR0YWJsZSwgc3RydWN0IG5ldCAqbmV0LFxubmV0L3NtYy9zbWNfcG5ldC5jLTM0OS1cdFx0XHQgICAgY2hhciAqZXRoX25hbWUsIGNoYXIgKnBuZXRfbmFtZSlcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtNDEwLVxubmV0L3NtYy9zbWNfcG5ldC5jOjQxMTpzdGF0aWMgaW50IHNtY19wbmV0X2FkZF9pYihzdHJ1Y3Qgc21jX3BuZXR0YWJsZSAqcG5ldHRhYmxlLCBjaGFyICppYl9uYW1lLFxubmV0L3NtYy9zbWNfcG5ldC5jLTQxMi1cdFx0XHQgICB1OCBpYl9wb3J0LCBjaGFyICpwbmV0X25hbWUpXG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTQ3Ni0gKi9cbm5ldC9zbWMvc21jX3BuZXQuYzo0Nzc6c3RhdGljIGludCBzbWNfcG5ldF9lbnRlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5uZXQvc21jL3NtY19wbmV0LmMtNDc4LXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtNTMzLS8qIENvbnZlcnQgYW4gc21jX3BuZXRlbnRyeSB0byBhIG5ldGxpbmsgYXR0cmlidXRlIHNlcXVlbmNlICovXG5uZXQvc21jL3NtY19wbmV0LmM6NTM0OnN0YXRpYyBpbnQgc21jX3BuZXRfc2V0X25sYShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxubmV0L3NtYy9zbWNfcG5ldC5jLTUzNS1cdFx0XHQgICAgc3RydWN0IHNtY19wbmV0ZW50cnkgKnBuZXRlbGVtKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy01NTktXG5uZXQvc21jL3NtY19wbmV0LmM6NTYwOnN0YXRpYyBpbnQgc21jX3BuZXRfYWRkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvc21jL3NtY19wbmV0LmMtNTYxLXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtNTY2LVxubmV0L3NtYy9zbWNfcG5ldC5jOjU2NzpzdGF0aWMgaW50IHNtY19wbmV0X2RlbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3NtYy9zbWNfcG5ldC5jLTU2OC17XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTU3Ni1cbm5ldC9zbWMvc21jX3BuZXQuYzo1Nzc6c3RhdGljIGludCBzbWNfcG5ldF9kdW1wX3N0YXJ0KHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9zbWMvc21jX3BuZXQuYy01Nzgte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy01ODItXG5uZXQvc21jL3NtY19wbmV0LmM6NTgzOnN0YXRpYyBpbnQgc21jX3BuZXRfZHVtcGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9zbWMvc21jX3BuZXQuYy01ODQtXHRcdFx0ICAgICB1MzIgcG9ydGlkLCB1MzIgc2VxLCB1MzIgZmxhZ3MsXG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTYwMC1cbm5ldC9zbWMvc21jX3BuZXQuYzo2MDE6c3RhdGljIGludCBfc21jX3BuZXRfZHVtcChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBwb3J0aWQsXG5uZXQvc21jL3NtY19wbmV0LmMtNjAyLVx0XHRcdCAgdTMyIHNlcSwgdTggKnBuZXRpZCwgaW50IHN0YXJ0X2lkeClcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtNjMyLVxubmV0L3NtYy9zbWNfcG5ldC5jOjYzMzpzdGF0aWMgaW50IHNtY19wbmV0X2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxubmV0L3NtYy9zbWNfcG5ldC5jLTYzNC17XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTY0NS0vKiBSZXRyaWV2ZSBvbmUgUE5FVElEIGVudHJ5ICovXG5uZXQvc21jL3NtY19wbmV0LmM6NjQ2OnN0YXRpYyBpbnQgc21jX3BuZXRfZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvc21jL3NtY19wbmV0LmMtNjQ3LXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtNjczLSAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjY3NDpzdGF0aWMgaW50IHNtY19wbmV0X2ZsdXNoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvc21jL3NtY19wbmV0LmMtNjc1LXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmM9NzI2PWJvb2wgc21jX3BuZXRfaXNfbmRldl9wbmV0aWQoc3RydWN0IG5ldCAqbmV0LCB1OCAqcG5ldGlkKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy03NDQtXG5uZXQvc21jL3NtY19wbmV0LmM6NzQ1OnN0YXRpYyBpbnQgc21jX3BuZXRfYWRkX3BuZXRpZChzdHJ1Y3QgbmV0ICpuZXQsIHU4ICpwbmV0aWQpXG5uZXQvc21jL3NtY19wbmV0LmMtNzQ2LXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtNzcwLVxubmV0L3NtYy9zbWNfcG5ldC5jOjc3MTpzdGF0aWMgdm9pZCBzbWNfcG5ldF9yZW1vdmVfcG5ldGlkKHN0cnVjdCBuZXQgKm5ldCwgdTggKnBuZXRpZClcbm5ldC9zbWMvc21jX3BuZXQuYy03NzIte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy03ODgtXG5uZXQvc21jL3NtY19wbmV0LmM6Nzg5OnN0YXRpYyB2b2lkIHNtY19wbmV0X2FkZF9iYXNlX3BuZXRpZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvc21jL3NtY19wbmV0LmMtNzkwLVx0XHRcdFx0ICAgICB1OCAqbmRldl9wbmV0aWQpXG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTgwMy0vKiBjcmVhdGUgaW5pdGlhbCBsaXN0IG9mIG5ldGRldmljZSBwbmV0aWRzICovXG5uZXQvc21jL3NtY19wbmV0LmM6ODA0OnN0YXRpYyB2b2lkIHNtY19wbmV0X2NyZWF0ZV9wbmV0aWRzX2xpc3Qoc3RydWN0IG5ldCAqbmV0KVxubmV0L3NtYy9zbWNfcG5ldC5jLTgwNS17XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTgyNS0vKiBjbGVhbiB1cCBsaXN0IG9mIG5ldGRldmljZSBwbmV0aWRzICovXG5uZXQvc21jL3NtY19wbmV0LmM6ODI2OnN0YXRpYyB2b2lkIHNtY19wbmV0X2Rlc3Ryb3lfcG5ldGlkc19saXN0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC9zbWMvc21jX3BuZXQuYy04Mjcte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy04MzgtXG5uZXQvc21jL3NtY19wbmV0LmM6ODM5OnN0YXRpYyBpbnQgc21jX3BuZXRfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcbm5ldC9zbWMvc21jX3BuZXQuYy04NDAtXHRcdFx0XHQgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYz04NzI9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBzbWNfbmV0ZGV2X25vdGlmaWVyID0ge1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy04NzYtLyogaW5pdCBuZXR3b3JrIG5hbWVzcGFjZSAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjg3NzppbnQgc21jX3BuZXRfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L3NtYy9zbWNfcG5ldC5jLTg3OC17XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jPTg5Mz1pbnQgX19pbml0IHNtY19wbmV0X2luaXQodm9pZClcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtOTA3LS8qIGV4aXQgbmV0d29yayBuYW1lc3BhY2UgKi9cbm5ldC9zbWMvc21jX3BuZXQuYzo5MDg6dm9pZCBzbWNfcG5ldF9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvc21jL3NtY19wbmV0LmMtOTA5LXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtOTE0LVxubmV0L3NtYy9zbWNfcG5ldC5jOjkxNTp2b2lkIHNtY19wbmV0X2V4aXQodm9pZClcbm5ldC9zbWMvc21jX3BuZXQuYy05MTYte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYz05NDM9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICpwbmV0X2ZpbmRfYmFzZV9uZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy05NTAtXG5uZXQvc21jL3NtY19wbmV0LmM6OTUxOnN0YXRpYyBpbnQgc21jX3BuZXRfZmluZF9uZGV2X3BuZXRpZF9ieV90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbm5ldC9zbWMvc21jX3BuZXQuYy05NTItXHRcdFx0XHRcdCAgICAgIHU4ICpwbmV0aWQpXG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTk3Ni1cbm5ldC9zbWMvc21jX3BuZXQuYzo5Nzc6c3RhdGljIGludCBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICppYmRldiwgaW50IGksXG5uZXQvc21jL3NtY19wbmV0LmMtOTc4LVx0XHRcdFx0ICBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy0xMDA1LS8qIGZpbmQgYSByb2NlIGRldmljZSBmb3IgdGhlIGdpdmVuIHBuZXRpZCAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjEwMDY6c3RhdGljIHZvaWQgX3NtY19wbmV0X2ZpbmRfcm9jZV9ieV9wbmV0aWQodTggKnBuZXRfaWQsXG5uZXQvc21jL3NtY19wbmV0LmMtMTAwNy1cdFx0XHRcdFx0ICBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy0xMDM0LS8qIGZpbmQgYWx0ZXJuYXRlIHJvY2UgZGV2aWNlIHdpdGggc2FtZSBwbmV0X2lkLCB2bGFuX2lkIGFuZCBuZXQgbmFtZXNwYWNlICovXG5uZXQvc21jL3NtY19wbmV0LmM6MTAzNTp2b2lkIHNtY19wbmV0X2ZpbmRfYWx0X3JvY2Uoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL3NtY19wbmV0LmMtMTAzNi1cdFx0XHQgICAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSxcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMTA0Ni0gKi9cbm5ldC9zbWMvc21jX3BuZXQuYzoxMDQ3OnN0YXRpYyB2b2lkIHNtY19wbmV0X2ZpbmRfcmRtYV9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDQ4LVx0XHRcdFx0ICAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMTA4NS0gKi9cbm5ldC9zbWMvc21jX3BuZXQuYzoxMDg2OnN0YXRpYyB2b2lkIHNtY19wbmV0X2ZpbmRfcm9jZV9ieV9wbmV0aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5uZXQvc21jL3NtY19wbmV0LmMtMTA4Ny1cdFx0XHRcdFx0IHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTExMDQtXG5uZXQvc21jL3NtY19wbmV0LmM6MTEwNTpzdGF0aWMgdm9pZCBzbWNfcG5ldF9maW5kX2lzbV9ieV9wbmV0aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5uZXQvc21jL3NtY19wbmV0LmMtMTEwNi1cdFx0XHRcdFx0c3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMTEzNC0gKi9cbm5ldC9zbWMvc21jX3BuZXQuYzoxMTM1OnZvaWQgc21jX3BuZXRfZmluZF9yb2NlX3Jlc291cmNlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbm5ldC9zbWMvc21jX3BuZXQuYy0xMTM2LXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMTE1MS1cbm5ldC9zbWMvc21jX3BuZXQuYzoxMTUyOnZvaWQgc21jX3BuZXRfZmluZF9pc21fcmVzb3VyY2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxubmV0L3NtYy9zbWNfcG5ldC5jLTExNTMte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy0xMTcyLSAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjExNzM6aW50IHNtY19wbmV0aWRfYnlfdGFibGVfaWIoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2LCB1OCBpYl9wb3J0KVxubmV0L3NtYy9zbWNfcG5ldC5jLTExNzQte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy0xMjAxLSAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjEyMDI6aW50IHNtY19wbmV0aWRfYnlfdGFibGVfc21jZChzdHJ1Y3Qgc21jZF9kZXYgKnNtY2RkZXYpXG5uZXQvc21jL3NtY19wbmV0LmMtMTIwMy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNTczCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgVGFyZ2V0IExpc3QgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIG5hcnJvdyBkb3duIHRoZSBiZXN0IGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gYHNtY19wbmV0X2RldGVybWluZV9naWRgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgaXQmIzM5O3Mgbm90IGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSBvdXRzaWRlIGl0cyBjb21waWxhdGlvbiB1bml0IOKAkyB0aGF0JiMzOTtzIG9mZiB0aGUgdGFibGUuIE5vdywgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBvbmUgYXJlIHRoZSBvbmVzIEkmIzM5O20gaW50ZXJlc3RlZCBpbi4KCkZpcnN0IHBhc3M6IEkmIzM5O3ZlIGlkZW50aWZpZWQgYHNtY3JfbGlua19pbml0YCwgYHNtY19pYmRldl9pbml0X2JlZ2luYCwgYHNtY19pYmRldl9pbml0X2VuZGAsIGBzbWNfaWJkZXZfZ2V0YCwgYHNtY19pYmRldl9wdXRgLCBgc21jX2luaXRfaW5mb19mcmVlYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYW5kIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AuIEkgbmVlZCB0byBzb3J0IHRoZXNlLgoKQXJlIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAgYW5kIGBzbWNfaWJkZXZfaW5pdF9lbmRgIGFjdHVhbGx5IGV4cG9ydGVkPyBBaCwgbm8sIHRoZXkmIzM5O3JlIGp1c3Qgbm9uLXN0YXRpYywgc28gdGhlIHNhbWUgc2NvcGluZyBydWxlcyBzdGlsbCBhcHBseS4gVGhhdCBtYWtlcyBgc21jX2xsY19jbGlfYWRkX2xpbmtgIGFuZCBgc21jX2xsY19zcnZfYWRkX2xpbmtgIGF0dHJhY3RpdmUgY2FuZGlkYXRlcyBiZWNhdXNlIHRoZXkmIzM5O3JlIGxpa2VseSBpbnZvbHZlZCBpbiBoYW5kbGluZyBuZXR3b3JrIGNvbW11bmljYXRpb24sIHdoaWNoIGlzIGEgY29tbW9uIGZ1enppbmcgdGFyZ2V0LiBgc21jcl9saW5rX2luaXRgIGFsc28gc2VlbXMgcHJvbWlzaW5nIGFzIGEgY29yZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gYHNtY19pbml0X2luZm9fZnJlZWAgbG9va3MgbGlrZSBhIGNsZWFudXAgZnVuY3Rpb24sIHNvIEkmIzM5O2xsIGtlZXAgYW4gZXllIG9uIGl0LCBidXQgaXQgbWlnaHQgbm90IGJlIHRoZSAqYmVzdCogc3RhcnRpbmcgcG9pbnQuCgpJJiMzOTtsbCBjb25maXJtIHRoZSByZWFjaGFiaWxpdHkgb2YgYHNtY19sbGNfY2xpX2FkZF9saW5rYC4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYHNtY19sbGNfcHJvY2Vzc19jbGlfYWRkX2xpbmtgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgc21jX2xsY19ldmVudF9oYW5kbGVyYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHNtY19sbGNfZXZlbnRfd29ya2AuIFRoYXQgY2hhaW4gdGVsbHMgbWUgdGhpcyBnZXRzIHRyaWdnZXJlZCBieSBpbmNvbWluZyBuZXR3b3JrIHRyYWZmaWMuIERlZmluaXRlbHkgcmVhY2hhYmxlLCBzbyBnb29kLgoKTGV0JiMzOTtzIHN1bW1hcml6ZSB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IEkgYW0gY29uc2lkZXJpbmcgZm9yIGZ1enppbmc6IGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNyX2xpbmtfaW5pdGAsIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAsIGFuZCBgc21jX2liZGV2X2luaXRfZW5kYC4KCkhvbGQgb24uLi4gSSYjMzk7bSBsb29raW5nIGF0IGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAgYW5kIGBzbWNfaWJkZXZfaW5pdF9lbmRgLiBUaGV5JiMzOTtyZSBzaW1wbGUgd3JhcHBlcnMgd2l0aCBtdXRleCBsb2NrcyBhbmQgYXRvbWljIG9wZXJhdGlvbnM6CgpgYGBjCmludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCnsKCWludCByYyA9IDA7CgoJbXV0ZXhfbG9jaygmYW1wO3NtY19pYl9kZXZpY2VzLm11dGV4KTsKCWlmIChsaXN0X2VtcHR5KCZhbXA7c21jaWJkZXYtJmd0O2xpc3QpKQoJCXJjID0gLUVOT0RFVjsKCWVsc2UKCQlhdG9taWNfaW5jKCZhbXA7c21jaWJkZXYtJmd0O2luaXRfY250KTsKCW11dGV4X3VubG9jaygmYW1wO3NtY19pYl9kZXZpY2VzLm11dGV4KTsKCXJldHVybiByYzsKfQoKdm9pZCBzbWNfaWJkZXZfaW5pdF9lbmQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KQp7CgltdXRleF9sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwoJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmFtcDtzbWNpYmRldi0mZ3Q7aW5pdF9jbnQpKQoJCXdha2VfdXAoJmFtcDtzbWNpYmRldi0mZ3Q7aW5pdF93YWl0KTsKCW11dGV4X3VubG9jaygmYW1wO3NtY19pYl9kZXZpY2VzLm11dGV4KTsKfQpgYGAKClRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHRvbyBzaW1wbGUgdG8gb2ZmZXIgbWVhbmluZ2Z1bCBmdXp6aW5nIHRhcmdldHMuIFNvLCBJJiMzOTtsbCBkcm9wIHRoZXNlIGZyb20gdGhlIHByaW1hcnkgbGlzdC4gYHNtY3JfbGlua19pbml0YCBhcHBlYXJzIGJldHRlciBiZWNhdXNlIGl0IGlzIG1vcmUgY29tcGxleCB0aGFuIHRoZSBwcmV2aW91cyB0d28uIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AgYW5kIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AgYXJlIHN0aWxsIHNvbGlkIGNob2ljZXMuCgpMZXQmIzM5O3MgbWFrZSBzdXJlIEkgZGlkbiYjMzk7dCBtaXNzIGFueSBvdGhlciBmdW5jdGlvbnMgbW9kaWZpZWQgaW4gdGhpcyBhcmVhLiBPaCwgYHNtY19pYl9uZGV2X2NoYW5nZWAgaXMgbW9kaWZpZWQuCgpgYGBjCnZvaWQgc21jX2liX25kZXZfY2hhbmdlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50KQpgYGAKCk5vLCB3YWl0LiBUaGF0IG1vZGlmaWNhdGlvbiBsb29rcyBsaWtlIGNvbnRleHQsIG5vdCBmdW5jdGlvbmFsaXR5LiBBbmQgdGhlIGRpZmYgc2hvd3MgYSBzdGF0aWMgYHNtY19pYmRldl9yZWxlYXNlYCBiZWluZyBpbnRyb2R1Y2VkLiBUaGF0JiMzOTtzIG5vdCB0aGUgcHJpbWFyeSBmb2N1cyBoZXJlLgoKV2hhdCBhYm91dCB0aGUgbmV3IGZ1bmN0aW9ucywgYHNtY19pYmRldl9nZXRgIGFuZCBgc21jX2liZGV2X3B1dGA/CgpgYGBjCnZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCnZvaWQgc21jX2liZGV2X3B1dChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCmBgYAoKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWc9Mj1jb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG5uZXQvc21jL0tjb25maWc6NDpcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU1xubmV0L3NtYy9LY29uZmlnLTUtXHRoZWxwXG4tLVxubmV0L3NtYy9LY29uZmlnPTE0PWNvbmZpZyBTTUNfRElBR1xubmV0L3NtYy9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbm5ldC9zbWMvS2NvbmZpZzoxNjpcdGRlcGVuZHMgb24gU01DXG5uZXQvc21jL0tjb25maWctMTctXHRoZWxwXG4tLVxubmV0L3NtYy9LY29uZmlnPTIzPWNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcbm5ldC9zbWMvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1wmIzM0O1xubmV0L3NtYy9LY29uZmlnOjI1Olx0ZGVwZW5kcyBvbiBTTUMgXHUwMDI2XHUwMDI2IEJQRl9KSVQgXHUwMDI2XHUwMDI2IEJQRl9TWVNDQUxMXG5uZXQvc21jL0tjb25maWctMjYtXHRkZWZhdWx0IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU5OTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTt2ZSBnb3QgYERJQlNgIHBlZ2dlZCBhcyBhIGRlcGVuZGVuY3ksIG5vIHN1cnByaXNlcyB0aGVyZS4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCBvdGhlciBwYWNrYWdlcyBvciBsaWJyYXJpZXMgYXJlIHJlbHlpbmcgb24gdGhhdCwgZXNwZWNpYWxseSBhcyBpdCByZWxhdGVzIHRvIG15IGBJTkZJTklCQU5EYCBpbXBsZW1lbnRhdGlvbj8gVGltZSB0byBkaXZlIGludG8gdGhlIGRlcGVuZGVuY3kgdHJlZSBhbmQgbWFwIG91dCB3aGF0IEkmIzM5O20gZGVhbGluZyB3aXRoLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgY3JlYXRlcyBhIHRhbmdsZSBvciBpZiBpdCYjMzk7cyBmYWlybHkgc3RyYWlnaHRmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5GSU5JQkFORCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyOm1lbnVjb25maWcgSU5GSU5JQkFORFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTE2PWlmIElORklOSUJBTkRcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTE3LVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MTg6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NQURcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCB1c2Vyc3BhY2UgTUFEIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjI4OmNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgdXNlcnNwYWNlIGFjY2VzcyAodmVyYnMgYW5kIENNKVwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTM5LVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDA6Y29uZmlnIElORklOSUJBTkRfVVNFUl9BQ0NFU1NfQ09SRVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDEtXHRib29sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NDpjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDUtXHRib29sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTAtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MTpjb25maWcgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01Mi1cdGJvb2wgXCYjMzQ7SW5maW5pQmFuZCBvbi1kZW1hbmQgcGFnaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02My1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjY0OmNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTY1LVx0Ym9vbCBcJiMzNDtSRE1BL0NNXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNzEtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo3Mjpjb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TX0NPTkZJR0ZTXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03My1cdGJvb2xcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy04MC1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjgxOmNvbmZpZyBJTkZJTklCQU5EX1ZJUlRfRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy04Mi1cdGRlZl9ib29sICFISUdITUVNXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NzM5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDaGVja2luZyBJbmZpbmliYW5kIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbWV0aWN1bG91c2x5IHZlcmlmeSB0aGUgYElORklOSUJBTkRgIGRlcGVuZGVuY2llcy4gVGhpcyBpc24mIzM5O3QganVzdCBhIHN1cmZhY2UtbGV2ZWwgc2NhbjsgSSBuZWVkIHRvIGVuc3VyZSBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGNvbXBvbmVudHMgYXJlIGludGVyY29ubmVjdGVkLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBoYXJkd2FyZSwgZmlybXdhcmUgdmVyc2lvbnMsIGRyaXZlciBjb21wYXRpYmlsaXR5IGFjcm9zcyB0aGUgc3RhY2ssIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgaW5zdGFsbGVkIHNvZnR3YXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvcnJlY3QgZmFicmljIGNvbmZpZ3VyYXRpb24sIGZvY3VzaW5nIG9uIGxpbmsgc3BlZWRzLCByb3V0aW5nIHRhYmxlcywgYW5kIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3MuIEZ1cnRoZXIsIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgc29mdHdhcmUgbGF5ZXI6IGFyZSB0aGUgbmVjZXNzYXJ5IGxpYnJhcmllcyBpbnN0YWxsZWQ/IEFyZSB0aGV5IHRoZSBjb3JyZWN0IHZlcnNpb25zPyBEb2VzIHRoZSBhcHBsaWNhdGlvbiBlbnZpcm9ubWVudCBjb3JyZWN0bHkgYWNjb3VudCBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBJbmZpbmlCYW5kIGZhYnJpYz8gSSBzaG91bGQgYmUgbG9va2luZyBhdCB0aGUgT1MgbW9kdWxlcywgdGhlIE1QSSBpbXBsZW1lbnRhdGlvbiAoaWYgYXBwbGljYWJsZSksIGFuZCBhbnkgY3VzdG9tIGRyaXZlcnMgaW52b2x2ZWQuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBpbXBhY3Qgb2YgYW55IHJlY2VudCBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCB0aGF0IG1heSBhZmZlY3QgdGhlIEluZmluaUJhbmQgc2V0dXAuIEFueSBrZXJuZWwgdXBncmFkZXMgb3IgZHJpdmVyIHVwZGF0ZXMgd291bGQgbmVlZCBzcGVjaWFsIGF0dGVudGlvbi4gVWx0aW1hdGVseSwgYSBzbW9vdGggYW5kIHJlbGlhYmxlIEluZmluaUJhbmQgY29uZmlndXJhdGlvbiBpcyBwYXJhbW91bnQgZm9yIHBlYWsgc3lzdGVtIHBlcmZvcm1hbmNlLCBzbyBhIHJpZ29yb3VzIGFuZCB3ZWxsLWNvbnNpZGVyZWQgaW52ZXN0aWdhdGlvbiBpcyBlc3NlbnRpYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0yPW1lbnVjb25maWcgSU5GSU5JQkFORFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDpcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjY6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjc6XHRkZXBlbmRzIG9uICFBTFBIQVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctOC1cdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTE4PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUFEXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgdXNlcnNwYWNlIE1BRCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyMDpcdGRlcGVuZHMgb24gSU5GSU5JQkFORFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMjEtXHRoZWxwXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc9Mjg9Y29uZmlnIElORklOSUJBTkRfVVNFUl9BQ0NFU1NcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCB1c2Vyc3BhY2UgYWNjZXNzICh2ZXJicyBhbmQgQ00pXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzozMDpcdGRlcGVuZHMgb24gTU1VXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zMS1cdGhlbHBcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz00ND1jb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDUtXHRib29sXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NjpcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX0FDQ0VTUyAhPSBuXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NzpcdGRlcGVuZHMgb24gTU1VXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00OC1cdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTUxPWNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTUyLVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG9uLWRlbWFuZCBwYWdpbmcgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NTM6XHRkZXBlbmRzIG9uIElORklOSUJBTkRfVVNFUl9NRU1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTU0LVx0c2VsZWN0IE1NVV9OT1RJRklFUlxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTY0PWNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTY1LVx0Ym9vbCBcJiMzNDtSRE1BL0NNXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo2NjpcdGRlcGVuZHMgb24gSU5GSU5JQkFORFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNjctXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz03Mj1jb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TX0NPTkZJR0ZTXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03My1cdGJvb2xcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjc0Olx0ZGVwZW5kcyBvbiBJTkZJTklCQU5EX0FERFJfVFJBTlMgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTIFx1MDAyNlx1MDAyNiAhKElORklOSUJBTkQ9eSBcdTAwMjZcdTAwMjYgQ09ORklHRlNfRlM9bSlcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTc1LVx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NzQ4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gUXVhbmRhcnkqKgoKQWxyaWdodCwgbGV0IG1lIG1hcCB0aGlzIG91dC4gVG8gZ2V0IGBJTkZJTklCQU5EYCB3b3JraW5nLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgTkVUYCwgYW5kIGBJTkVUYCBlbmFibGVkLCBhbmQsIGltcG9ydGFudGx5LCB0aGF0IEkgKmRvbiYjMzk7dCogaGF2ZSBhbiBgQUxQSEFgIGFyY2hpdGVjdHVyZS4gU28sIGJhc2VkIG9uIHRob3NlIGRlcGVuZGVuY2llcywgbXkgYEVuYWJsZUNvbmZpZ3NgIHNob3VsZCBhYnNvbHV0ZWx5IGluY2x1ZGUgYFNNQ2AsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYC4KCkhhbmcgb24gYSBzZWNvbmTigKYgRG9lcyBgU01DYCByZXF1aXJlIGBTTUNfRElBR2A/IE5vcGUsIHNjcmF0Y2ggdGhhdC4gSXQgZG9lc24mIzM5O3QuIEFuZCBJIHJlY2FsbCB0aGF0IGBTTUNgIHdvcmtzIHdpdGgga2VybmVsLXNwYWNlIFJETUEsIHNvIGl0IGRvZXNuJiMzOTt0IG5lZWQgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgLiBSaWdodC4gCgpOb3csIGlmIEkmIzM5O20gdHJ5aW5nIHRvIHRlc3QgYFNNQ2Agb3ZlciBSRE1BIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dCwgSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0byBzaW11bGF0ZSBhbiBSRE1BIGVudmlyb25tZW50LiBUaGF0IG1lYW5zIGNvbnNpZGVyaW5nIHdoZXRoZXIgYFJETUFfUlhFYCAoU29mdCBSb0NFKSwgYFNNQ19MT2AgKGxvb3BiYWNrKSwgb3IgYElTTWAgKGR1bW15IElTTSkgYXJlIHJlbGV2YW50LiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSYjMzk7cyBhIGR1bW15IElTTSBvciBsb29wYmFjayBhdmFpbGFibGUsIGJlY2F1c2UgdGhhdCB3aWxsIGFsbG93IGZvciBhIGZ1bGx5IGNvbnRhaW5lZCwgc2ltdWxhdGVkIGVudmlyb25tZW50LiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggYXBwcm9hY2ggaXMgYmVzdCBzdWl0ZWQgdG8gbXkgdGVzdCBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU01DJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xubmV0L3NtYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuLS1cbm5ldC9zbWMvS2NvbmZpZy0xMy1cbm5ldC9zbWMvS2NvbmZpZzoxNDpjb25maWcgU01DX0RJQUdcbm5ldC9zbWMvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O1NNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTIyLVxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcbm5ldC9zbWMvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODQxMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqUmV2aXNpdGluZyB0aGUgU01DIEtjb25maWcqKgoKT2theSwgdGltZSB0byBjaXJjbGUgYmFjayBhbmQgZ2l2ZSBgbmV0L3NtYy9LY29uZmlnYCBhbm90aGVyIGxvb2suIEkmIzM5O3ZlIGJlZW4gZm9jdXNpbmcgb24gW21lbnRpb24gdGhlIHJlbGV2YW50IGFyZWEgb3IgdGFzaywgZS5nLiwgdGhlIHJlY2VudCBSRE1BIGltcHJvdmVtZW50cywgYSBzcGVjaWZpYyBidWcsIGEgcGVyZm9ybWFuY2UgaXNzdWUsIG9yIGEgbmV3IGZlYXR1cmVdLiBHaXZlbiB0aGUgY29tcGxleGl0aWVzIG9mIFNNQyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjaywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsIGluIHRoYXQgY29uZmlndXJhdGlvbiBmaWxlLiBUaGVyZSBjb3VsZCBiZSBzdWJ0bGUgZGVwZW5kZW5jaWVzLCBvcHRpb25zIEkgb3Zlcmxvb2tlZCwgb3IgaW1wbGljYXRpb25zIHJlbGF0ZWQgdG8gW21lbnRpb24gYSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gb3Igc3Vic3lzdGVtXS4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBLY29uZmlnIGlzIGNvcnJlY3RseSByZWZsZWN0aW5nIGFueSBjaGFuZ2VzIEkmIzM5O3ZlIG1hZGUsIGFuZCBoYXNuJiMzOTt0IGludHJvZHVjZWQgYW55IHJlZ3Jlc3Npb25zIG9yIGNvbmZsaWN0cy4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnl0aGluZyBJIG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUsIGRpc2FibGUsIG9yIGFkanVzdCwgb3IgaWYgYW55IG5ldyBvcHRpb25zIGhhdmUgYmVlbiBhZGRlZC4gVGltZSB0byBkaXZlIGJhY2sgaW4gYW5kIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU01DXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFNNQy1SIHByb3ZpZGVzIGEgXCYjMzQ7c29ja2V0cyBvdmVyIFJETUFcJiMzNDsgc29sdXRpb24gbWFraW5nIHVzZSBvZlxuICAgNzpcdFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcbiAgIDg6XHRcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cbiAgIDk6XHRcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xuICAxMDpcdFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxuICAxMTpcdFxuICAxMjpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFNNQ19ESUFHXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBTTUNcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcbiAgMTk6XHRcdCAgc21jc3MuXG4gIDIwOlx0XG4gIDIxOlx0XHQgIGlmIHVuc3VyZSwgc2F5IFkuXG4gIDIyOlx0XG4gIDIzOlx0Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxuICAyNDpcdFx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG4gIDI1Olx0XHRkZXBlbmRzIG9uIFNNQyBcdTAwMjZcdTAwMjYgQlBGX0pJVCBcdTAwMjZcdTAwMjYgQlBGX1NZU0NBTExcbiAgMjY6XHRcdGRlZmF1bHQgeVxuICAyNzpcdFx0aGVscFxuICAyODpcdFx0ICBTTUNfSFNfQ1RSTF9CUEYgZW5hYmxlcyBzdXBwb3J0IHRvIHJlZ2lzdGVyIGdlbmVyaWMgZUJQRiBob29rIGZvciBTTUNcbiAgMjk6XHRcdCAgaGFuZHNoYWtlIGZsb3csIHdoaWNoIG9mZmVyIG11Y2ggZ3JlYXRlciBmbGV4aWJpbGl0eSBpbiBtb2RpZnlpbmcgdGhlIGJlaGF2aW9yXG4gIDMwOlx0XHQgIG9mIHRoZSBTTUMgcHJvdG9jb2wgc3RhY2sgY29tcGFyZWQgdG8gYSBjb21wbGV0ZSBrZXJuZWwtYmFzZWQgYXBwcm9hY2guIFNlbGVjdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTA5NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXM6CgoqKkludmVzdGlnYXRpbmcgdGhlIFNNQy9ESUJTIERlcGVuZGVuY3kqKgoKQWxyaWdodCwgc28gYFNNQ2AmIzM5O3MgZnVuY3Rpb25hbGl0eSBoaW5nZXMgb24gYERJQlNgLiBUaW1lIHRvIGRpdmUgZGVlcGVyIGFuZCBzZWUgZXhhY3RseSBob3cgdGhhdCByZWxhdGlvbnNoaXAgaXMgZGVmaW5lZC4gTXkgaW1tZWRpYXRlIGNvdXJzZSBvZiBhY3Rpb24/IExldCYjMzk7cyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlIOKAkyBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYGRyaXZlcnMvZGlicy9LY29uZmlnYCB0byBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jeSBpcy4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBnaXZlbiBteSBleHBlcmllbmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBpbnRlcmFjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0Y29uZmlnIERJQlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IG5cbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcbiAgIDc6XHRcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcbiAgIDg6XHRcdCAgaW50byBhIHJlbW90ZSBidWZmZXIuXG4gICA5Olx0XG4gIDEwOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXG4gIDExOlx0XHQgIGRpYnMgZGV2aWNlcyBhbmQgZGlicyBjbGllbnRzIGxpa2UgdGhlIFNNQyBwcm90b2NvbC5cbiAgMTI6XHRcdCAgVGhlIG1vZHVsZSBuYW1lIGlzIGRpYnMuXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIERJQlNfTE9cbiAgMTU6XHRcdGJvb2wgXCYjMzQ7SW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXCYjMzQ7XG4gIDE2Olx0XHRkZXBlbmRzIG9uIERJQlNcbiAgMTc6XHRcdGRlZmF1bHQgblxuICAxODpcdFx0aGVscFxuICAxOTpcdFx0ICBESUJTX0xPIGVuYWJsZXMgdGhlIGNyZWF0aW9uIG9mIGFuIHNvZnR3YXJlLWVtdWxhdGVkIGRpYnMgZGV2aWNlXG4gIDIwOlx0XHQgIG5hbWVkIGxvIHdoaWNoIGNhbiBiZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSB3aGVuIGNvbW11bmljYXRpb25cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1NDMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIERldmljZSBFbXVsYXRpb24gYW5kIE5ldHdvcmsgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzeXN0ZW0gc2V0dXAsIGFuZCB0aGUgcG90ZW50aWFsIGZvciBzb21lIHNlcmlvdXMgdGVzdGluZyBwb3BzIHJpZ2h0IGludG8gbXkgaGVhZC4gVGhlIGZhY3QgdGhhdCB3ZSBoYXZlIGBESUJTX0xPYCBhdmFpbGFibGUgaGVyZSwgYW5kIHRoYXQgaXQmIzM5O3MgYSAqc29mdHdhcmUtZW11bGF0ZWQqIGRpYnMgZGV2aWNlLCBpbW1lZGlhdGVseSBzdWdnZXN0cyBhIGtleSBzdHJhdGVneTogZW5hYmxlIHRoYXQgdGhpbmchIFdoeT8gQmVjYXVzZSBnZXR0aW5nIFNNQyBmdXp6ZWQgb3ZlciBsb29wYmFjayBpcyBqdXN0IGdvb2QgcHJhY3RpY2UsIGFuZCB0aGlzIHNlZW1zIGxpa2UgdGhlIHBlcmZlY3QsIGxvdy1oYW5naW5nIGZydWl0IG9wcG9ydHVuaXR5LiBXZSBjYW4gZ2FpbiB2YWx1YWJsZSBpbnNpZ2h0cyBpbnRvIHRoZSBoYW5kbGluZyBvZiBTTUMgdHJhZmZpYyBpbiBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQuCgpUaGVuLCBtb3Zpbmcgb24gdG8gdGhlIFJvQ0Ugc2lkZSBvZiB0aGluZ3MsIGBSRE1BX1JYRWAsIFNvZnQgUm9DRSwgbmF0dXJhbGx5IGNhdGNoZXMgbXkgZXllLiBJdCYjMzk7cyB0aGUgc2FtZSBwcmluY2lwbGUgYXMgdGhlIGBESUJTX0xPYCDigJMgYSBzb2Z0d2FyZS1iYXNlZCBpbXBsZW1lbnRhdGlvbi4gRW5hYmxpbmcgdGhhdCBpcyBhIG11c3QuIFRoaXMgYWxsb3dzIHVzIHRvIGFzc2VzcyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHN5c3RlbS4gSSYjMzk7bSBhbHJlYWR5IGVudmlzaW9uaW5nIHRoZSB0ZXN0IGNhc2VzIHdlIGNhbiBidWlsZCBhcm91bmQgdGhpcyBzZXR1cCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJETUFfUlhFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnOjI6Y29uZmlnIFJETUFfUlhFXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NvZnR3YXJlIFJETUEgb3ZlciBFdGhlcm5ldCAoUm9DRSkgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5OTU0CgkJCQkJCQlvdXRwdXQ6IDI3MQoJCQkJCQkJdGhvdWdodHM6IDEyMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFNNQyBTdWJzeXN0ZW0gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGFyZWFzIHRoaXMgcGF0Y2ggbW9kaWZpZXMgd2l0aGluIHRoZSBTTUMgc3Vic3lzdGVtLiBJIHN0YXJ0ZWQgYnkgbG9va2luZyBhdCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGFuZCB0aGVuIHRoZSByZWxldmFudCBmdW5jdGlvbnMuCgpUaGUgYEVuYWJsZUNvbmZpZ3NgIGFyZTogYFNNQ2AsIGBJTkZJTklCQU5EYCwgYERJQlNgLCBgRElCU19MT2AsIGFuZCBgUkRNQV9SWEVgLiBUaGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zLCBJIHJlYWxpemUgYERJQlNfTE9gIGlzIGEgYm9vbGVhbiwgd2hpbGUgYERJQlNgLCBgUkRNQV9SWEVgLCBgU01DYCwgYW5kIGBJTkZJTklCQU5EYCBhcmUgdHJpc3RhdGVzLiBHb29kIHRvIGtlZXAgaW4gbWluZCBmb3IgdGVzdGluZyBsYXRlci4KCk5vdywgdGhlIGltcG9ydGFudCBmdW5jdGlvbnMuIEluaXRpYWxseSwgSSBjb25zaWRlcmVkIHNldmVyYWw6IGBzbWNyX2xpbmtfaW5pdGAsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNfaW5pdF9pbmZvX2ZyZWVgLCBgc21jX2liZGV2X2luaXRfYmVnaW5gLCBhbmQgYHNtY19pYmRldl9pbml0X2VuZGAuIEkgcXVpY2tseSBkaXNjb3VudGVkIGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGFuZCB0aGUgYGliZGV2YCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXMgdGhlc2UgYXJlIG9ubHkgY2xlYW51cCBhbmQgdmVyeSBzaW1wbGUgaW5pdGlhbGl6YXRpb25zLCByZXNwZWN0aXZlbHksIG5vdCBjb21wbGV4IGxvZ2ljIHBhdGhzLiBJIGFsc28gY2hlY2tlZCBgc21jX3BuZXRfZGV0ZXJtaW5lX2dpZGAsIGBzbWNfbGlzdGVuX3dvcmtgLCBgX19zbWNfY29ubmVjdGAsIGFuZCBgc21jX2ZpbmRfcmRtYV92Ml9kZXZpY2Vfc2VydmAsIHdoaWNoIGFyZSBhbGwgc3RhdGljLiBXaGlsZSB0aGVzZSBhcmUgcmVsZXZhbnQsIGBfX3NtY19jb25uZWN0YCBpcyBjYWxsZWQgYnkgYHNtY19jb25uZWN0X3dvcmtgIGFuZCBgc21jX2Nvbm5lY3RgIChzeXNjYWxsIGhhbmRsZXIpIGFuZCBgc21jX2xpc3Rlbl93b3JrYCBpcyBhIHdvcmtxdWV1ZSBoYW5kbGVyLiBUaGUgc3lzY2FsbHMgYXJlIGxpa2VseSB0byBiZSBmdXp6ZWQgYnkgZGVmYXVsdCBhbmQgdGhlIExMQyBmdW5jdGlvbnMgbG9vayBsaWtlIHRoZXkgd2lsbCBiZSBoYW5kbGluZyBpbmNvbWluZyBwYWNrZXRzLCBzbyB0aGVzZSBhcmUgYWxsIGdvb2QgdG8gdGVzdC4KCkkgYWxzbyBjaGVja2VkIGBzbWNfaWJkZXZfZ2V0YCBhbmQgYHNtY19pYmRldl9wdXRgLCBidXQgdGhlc2UgYXJlIGp1c3QgcmVmY291bnQgd3JhcHBlcnMgc28gbm90IHRoZSBmb2N1cy4KClNvLCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uOgoqICAgYHNtY3JfbGlua19pbml0YAoqICAgYHNtY19sbGNfY2xpX2FkZF9saW5rYAoqICAgYHNtY19sbGNfc3J2X2FkZF9saW5rYAoKVGhlc2UgYXJlIG5vbi1zdGF0aWMgYW5kIGhhbmRsZSBsaW5rIGluaXRpYWxpemF0aW9uIGFuZCBtYW5hZ2VtZW50LCBjcnVjaWFsIGZvciB0ZXN0aW5nIHRoZSBjb25uZWN0aW9uIHBhdGhzLgoKRmluYWxseSwgYSBxdWljayByZXZpZXcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBjb25maXJtZWQgdGhhdCBib3RoIGBESUJTYCBhbmQgYERJQlNfTE9gIGFyZSBwcmVzZW50IGluIHRoZSB0cmVlIHVuZGVyIGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AuCgpOb3csIEkgY2FuIGNsZWFybHkgYXJ0aWN1bGF0ZSB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhdGNoLiBUaGUgbWFpbiBpc3N1ZSBpcyBhIHJlZmVyZW5jZSBsZWFrIG9mIHRoZSBgc21jX2liX2RldmljZWAuIFRoaXMgcGF0Y2ggZml4ZXMgdGhhdCB3aXRoIGEgbmV3IGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGZ1bmN0aW9uIGFuZCBjYXJlZnVsIHJlZmNvdW50aW5nIHdpdGggYHNtY19pYmRldl9nZXRgL2BwdXRgLCBhbG9uZyB3aXRoIGFuIGBpbml0X2NudGAgdG8gbW9uaXRvciB1bnB1Ymxpc2hlZCBpbml0aWFsaXphdGlvbnMuIFRoZSBjaGFuZ2VzIGNvdmVyIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAobGlua2VkIHRvIGBfX3NtY19jb25uZWN0YCBhbmQgYHNtY19saXN0ZW5fd29ya2AsIHdoaWNoIGluIHR1cm4gY2FsbCB0aGUgZnVuY3Rpb25zIEkmIzM5O3ZlIGlkZW50aWZpZWQpIGFuZCBMTEMgbGluayBtYW5hZ2VtZW50IChgc21jX2xsY19jbGlfYWRkX2xpbmtgIGFuZCBgc21jX2xsY19zcnZfYWRkX2xpbmtgKS4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgYW5kIG5ldHdvcmsgcGFja2V0cywgd2hpY2ggaXMgaWRlYWwgZm9yIHRlc3RpbmcuIFRvIHRlc3QgY29tcHJlaGVuc2l2ZWx5LCBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSB0aGUgU01DLCBJbmZpbmlCYW5kLCBhbmQgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIFJETUEvRElCUyBkZXZpY2VzIChgUkRNQV9SWEVgIGFuZCBgRElCU19MT2ApLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7LAogICAgJiMzNDtESUJTX0xPJiMzNDssCiAgICAmIzM0O1JETUFfUlhFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jcl9saW5rX2luaXQmIzM0OywKICAgICYjMzQ7c21jX2xsY19jbGlfYWRkX2xpbmsmIzM0OywKICAgICYjMzQ7c21jX2xsY19zcnZfYWRkX2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgbGVhayBvZiBgc21jX2liX2RldmljZWAgaW4gdGhlIFNNQyBzdWJzeXN0ZW0gYnkgaW50cm9kdWNpbmcgYHNtY19pbml0X2luZm9fZnJlZWAgYW5kIHByb3Blcmx5IG1hbmFnaW5nIHRoZSBvYmplY3QgbGlmZXRpbWUgd2l0aCByZWZlcmVuY2UgY291bnRpbmcgKGBzbWNfaWJkZXZfZ2V0YC9gcHV0YCkuIEl0IGFsc28gYWRkcyBhbiBpbml0aWFsaXphdGlvbiBjb3VudGVyIChgaW5pdF9jbnRgKSB0byB0cmFjayB1bnB1Ymxpc2hlZCBsaW5rIGluaXRpYWxpemF0aW9ucy4gVGhlIGNoYW5nZXMgYWZmZWN0IGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoYF9fc21jX2Nvbm5lY3RgLCBgc21jX2xpc3Rlbl93b3JrYCkgYW5kIExMQyBsaW5rIG1hbmFnZW1lbnQgKGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2ApLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzb2NrZXQgb3BlcmF0aW9ucyBhbmQgaW5jb21pbmcgbmV0d29yayBwYWNrZXRzLiBUbyBwcm9wZXJseSB0ZXN0IHRoaXMsIHdlIG5lZWQgdG8gZW5hYmxlIFNNQywgSW5maW5pQmFuZCwgYW5kIHNvZnR3YXJlLWVtdWxhdGVkIFJETUEvRElCUyBkZXZpY2VzIChgUkRNQV9SWEVgLCBgRElCU19MT2ApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDssCiAgICAmIzM0O0RJQlNfTE8mIzM0OywKICAgICYjMzQ7UkRNQV9SWEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNyX2xpbmtfaW5pdCYjMzQ7LAogICAgJiMzNDtzbWNfbGxjX2NsaV9hZGRfbGluayYjMzQ7LAogICAgJiMzNDtzbWNfbGxjX3Nydl9hZGRfbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlZmVyZW5jZSBsZWFrIG9mIGBzbWNfaWJfZGV2aWNlYCBpbiB0aGUgU01DIHN1YnN5c3RlbSBieSBpbnRyb2R1Y2luZyBgc21jX2luaXRfaW5mb19mcmVlYCBhbmQgcHJvcGVybHkgbWFuYWdpbmcgdGhlIG9iamVjdCBsaWZldGltZSB3aXRoIHJlZmVyZW5jZSBjb3VudGluZyAoYHNtY19pYmRldl9nZXRgL2BwdXRgKS4gSXQgYWxzbyBhZGRzIGFuIGluaXRpYWxpemF0aW9uIGNvdW50ZXIgKGBpbml0X2NudGApIHRvIHRyYWNrIHVucHVibGlzaGVkIGxpbmsgaW5pdGlhbGl6YXRpb25zLiBUaGUgY2hhbmdlcyBhZmZlY3QgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChgX19zbWNfY29ubmVjdGAsIGBzbWNfbGlzdGVuX3dvcmtgKSBhbmQgTExDIGxpbmsgbWFuYWdlbWVudCAoYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNvY2tldCBvcGVyYXRpb25zIGFuZCBpbmNvbWluZyBuZXR3b3JrIHBhY2tldHMuIFRvIHByb3Blcmx5IHRlc3QgdGhpcywgd2UgbmVlZCB0byBlbmFibGUgU01DLCBJbmZpbmlCYW5kLCBhbmQgc29mdHdhcmUtZW11bGF0ZWQgUkRNQS9ESUJTIGRldmljZXMgKGBSRE1BX1JYRWAsIGBESUJTX0xPYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyByZWZlcmVuY2UgY291bnRpbmcgZm9yIGBzbWNfaWJfZGV2aWNlYCBvYmplY3RzIHRvIGZpeCBvYmplY3QgbGlmZXRpbWUgaXNzdWVzIChsaWtlbHkgdXNlLWFmdGVyLWZyZWUpLiBJdCByZXBsYWNlcyBga2ZyZWUoaW5pKWAgd2l0aCBgc21jX2luaXRfaW5mb19mcmVlKGluaSlgLCB3aGljaCBkcm9wcyB0aGUgcmVmZXJlbmNlcyBpZiB0aGV5IHdlcmUgYWNxdWlyZWQuIFRoZSBuZXcgYm9vbGVhbiBmaWVsZHMgYGliX2Rldl9yZWZgIGFuZCBgaWJfZGV2X3YyX3JlZmAgYXJlIGFkZGVkIHRvIGBzdHJ1Y3Qgc21jX2luaXRfaW5mb2AsIHdoaWNoIGlzIGFsd2F5cyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgICh2aWEgYGt6YWxsb2Nfb2JqYCksIGVuc3VyaW5nIHRoZXkgYXJlIHByb3Blcmx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIHRoaXMgcGF0Y2ggYWRkcmVzc2VzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3NzdmMzA3MTVjNmQ1MDU0NGQ2ZjgwYzAzMGFiNWJiYjExYzkxNDJiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMjMgMDc6Mzg6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc21jL2FmX3NtYy5jIGIvbmV0L3NtYy9hZl9zbWMuYwppbmRleCBlOWY5M2IzYWI0MzViLi5kNzgxZGVlMWIzMjkzIDEwMDY0NAotLS0gYS9uZXQvc21jL2FmX3NtYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvYWZfc21jLmMKQEAgLTEyMjUsNyAmIzQzOzEyMjUsNyBAQCB2b2lkIHNtY19maWxsX2dpZF9saXN0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLAogCSAgICAgICBTTUNfR0lEX1NJWkUpOwogCiBvdXQ6Ci0Ja2ZyZWUoYWx0X2luaSk7CiYjNDM7CXNtY19pbml0X2luZm9fZnJlZShhbHRfaW5pKTsKIH0KIAogc3RhdGljIGludCBzbWNfY29ubmVjdF9yZG1hX3YyX3ByZXBhcmUoc3RydWN0IHNtY19zb2NrICpzbWMsCkBAIC0xNTk2LDE0ICYjNDM7MTU5NiwxNCBAQCBzdGF0aWMgaW50IF9fc21jX2Nvbm5lY3Qoc3RydWN0IHNtY19zb2NrICpzbWMpCiAJU01DX1NUQVRfQ0xOVF9TVUNDX0lOQyhzb2NrX25ldChzbWMtJmd0O2NsY3NvY2stJmd0O3NrKSwgYWNsYyk7CiAJc21jX2Nvbm5lY3RfaXNtX3ZsYW5fY2xlYW51cChpbmkpOwogCWtmcmVlKGJ1Zik7Ci0Ja2ZyZWUoaW5pKTsKJiM0MzsJc21jX2luaXRfaW5mb19mcmVlKGluaSk7CiAJcmV0dXJuIDA7CiAKIHZsYW5fY2xlYW51cDoKIAlzbWNfY29ubmVjdF9pc21fdmxhbl9jbGVhbnVwKGluaSk7CiAJa2ZyZWUoYnVmKTsKIGZhbGxiYWNrOgotCWtmcmVlKGluaSk7CiYjNDM7CXNtY19pbml0X2luZm9fZnJlZShpbmkpOwogCXJldHVybiBzbWNfY29ubmVjdF9kZWNsaW5lX2ZhbGxiYWNrKHNtYywgcmMsIHZlcnNpb24pOwogfQogCkBAIC0yMzQ0LDcgJiM0MzsyMzQ0LDEwIEBAIHN0YXRpYyB2b2lkIHNtY19maW5kX3JkbWFfdjJfZGV2aWNlX3NlcnYoc3RydWN0IHNtY19zb2NrICpuZXdfc21jLAogCiBub3RfZm91bmQ6CiAJaW5pLSZndDtzbWNyX3ZlcnNpb24gJmFtcDs9IH5TTUNfVjI7CiYjNDM7CWlmIChpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjJfcmVmKQomIzQzOwkJc21jX2liZGV2X3B1dChpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjIpOwogCWluaS0mZ3Q7c21jcnYyLmliX2Rldl92MiA9IE5VTEw7CiYjNDM7CWluaS0mZ3Q7c21jcnYyLmliX2Rldl92Ml9yZWYgPSBmYWxzZTsKIAlpbmktJmd0O2NoZWNrX3NtY3J2MiA9IGZhbHNlOwogfQogCkBAIC0yNTg4LDcgJiM0MzsyNTkxLDcgQEAgc3RhdGljIHZvaWQgc21jX2xpc3Rlbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzbWNfbGlzdGVuX2RlY2xpbmUobmV3X3NtYywgcmMsIGluaSA/IGluaS0mZ3Q7Zmlyc3RfY29udGFjdF9sb2NhbCA6IDAsCiAJCQkgICBwcm9wb3NhbF92ZXJzaW9uKTsKIG91dF9mcmVlOgotCWtmcmVlKGluaSk7CiYjNDM7CXNtY19pbml0X2luZm9fZnJlZShpbmkpOwogCWtmcmVlKGJ1Zik7CiB9CiAKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NvcmUuYyBiL25ldC9zbWMvc21jX2NvcmUuYwppbmRleCAxODE2NDc5ODI0OTBiLi5kOTdiYzczMjMxMDY5IDEwMDY0NAotLS0gYS9uZXQvc21jL3NtY19jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfY29yZS5jCkBAIC01NSw2ICYjNDM7NTUsMTcgQEAgc3RhdGljIHZvaWQgX19zbWNfbGdyX3Rlcm1pbmF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBzb2Z0KTsKIAogc3RhdGljIHZvaWQgc21jX2xpbmtfZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKJiM0Mzt2b2lkIHNtY19pbml0X2luZm9fZnJlZShzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKQomIzQzO3sKJiM0MzsJaWYgKCFpbmkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CWlmIChpbmktJmd0O2liX2Rldl9yZWYpCiYjNDM7CQlzbWNfaWJkZXZfcHV0KGluaS0mZ3Q7aWJfZGV2KTsKJiM0MzsJaWYgKGluaS0mZ3Q7c21jcnYyLmliX2Rldl92Ml9yZWYpCiYjNDM7CQlzbWNfaWJkZXZfcHV0KGluaS0mZ3Q7c21jcnYyLmliX2Rldl92Mik7CiYjNDM7CWtmcmVlKGluaSk7CiYjNDM7fQomIzQzOwogLyogcmV0dXJuIGhlYWQgb2YgbGluayBncm91cCBsaXN0IGFuZCBpdHMgbG9jayBmb3IgYSBnaXZlbiBsaW5rIGdyb3VwICovCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXN0X2hlYWQgKnNtY19sZ3JfbGlzdF9oZWFkKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLAogCQkJCQkJICBzcGlubG9ja190ICoqbGdyX2xvY2spCkBAIC03OTMsMTQgJiM0Mzs4MDQsMjEgQEAgaW50IHNtY3JfbGlua19pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xpbmsgKmxuaywKIAlpbnQgcmM7CiAKIAlpZiAobGdyLSZndDtzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHsKLQkJbG5rLSZndDtzbWNpYmRldiA9IGluaS0mZ3Q7c21jcnYyLmliX2Rldl92MjsKJiM0MzsJCXNtY2liZGV2ID0gaW5pLSZndDtzbWNydjIuaWJfZGV2X3YyOwogCQlsbmstJmd0O2licG9ydCA9IGluaS0mZ3Q7c21jcnYyLmliX3BvcnRfdjI7Ci0JCWxuay0mZ3Q7d3Jfcnhfc2dlX2NudCA9IGxuay0mZ3Q7c21jaWJkZXYtJmd0O2liZGV2LSZndDthdHRycy5tYXhfcmVjdl9zZ2UgJmx0OyAyID8gMSA6IDI7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlzbWNpYmRldiA9IGluaS0mZ3Q7aWJfZGV2OwomIzQzOwkJbG5rLSZndDtpYnBvcnQgPSBpbmktJmd0O2liX3BvcnQ7CiYjNDM7CX0KJiM0MzsJcmMgPSBzbWNfaWJkZXZfaW5pdF9iZWdpbihzbWNpYmRldik7CiYjNDM7CWlmIChyYykKJiM0MzsJCXJldHVybiByYzsKJiM0MzsJbG5rLSZndDtzbWNpYmRldiA9IHNtY2liZGV2OwomIzQzOwlpZiAobGdyLSZndDtzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHsKJiM0MzsJCWxuay0mZ3Q7d3Jfcnhfc2dlX2NudCA9IHNtY2liZGV2LSZndDtpYmRldi0mZ3Q7YXR0cnMubWF4X3JlY3Zfc2dlICZsdDsgMiA/IDEgOiAyOwogCQlsbmstJmd0O3dyX3J4X2J1ZmxlbiA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsbmspID8KIAkJCVNNQ19XUl9CVUZfU0laRSA6IFNNQ19XUl9CVUZfVjJfU0laRTsKIAl9IGVsc2UgewotCQlsbmstJmd0O3NtY2liZGV2ID0gaW5pLSZndDtpYl9kZXY7Ci0JCWxuay0mZ3Q7aWJwb3J0ID0gaW5pLSZndDtpYl9wb3J0OwogCQlsbmstJmd0O3dyX3J4X3NnZV9jbnQgPSAxOwogCQlsbmstJmd0O3dyX3J4X2J1ZmxlbiA9IFNNQ19XUl9CVUZfU0laRTsKIAl9CkBAIC04ODIsNiAmIzQzOzkwMCw3IEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssCiAJaWYgKCFhdG9taWNfZGVjX3JldHVybigmYW1wO3NtY2liZGV2LSZndDtsbmtfY250KSkKIAkJd2FrZV91cCgmYW1wO3NtY2liZGV2LSZndDtsbmtzX2RlbGV0ZWQpOwogCXNtY19sZ3JfcHV0KGxncik7IC8qIGxncl9ob2xkIGFib3ZlICovCiYjNDM7CXNtY19pYmRldl9pbml0X2VuZChzbWNpYmRldik7CiAJcmV0dXJuIHJjOwogfQogCkBAIC05OTcsNiAmIzQzOzEwMTYsOCBAQCBzdGF0aWMgaW50IHNtY19sZ3JfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKQogCXNwaW5fbG9ja19iaChsZ3JfbG9jayk7CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2xnci0mZ3Q7bGlzdCwgbGdyX2xpc3QpOwogCXNwaW5fdW5sb2NrX2JoKGxncl9sb2NrKTsKJiM0MzsJaWYgKCFpbmktJmd0O2lzX3NtY2QpCiYjNDM7CQlzbWNfaWJkZXZfaW5pdF9lbmQobG5rLSZndDtzbWNpYmRldik7CiAJcmV0dXJuIDA7CiAKIGZyZWVfd3E6CmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmggYi9uZXQvc21jL3NtY19jb3JlLmgKaW5kZXggNWMxOGYwOGE0YzhhNS4uOWY1YTY5YTMwY2IzZiAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2NvcmUuaApAQCAtNDAzLDYgJiM0Mzs0MDMsNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mb19zbWNydjIgewogCiAJLyogT3V0cHV0IGZpZWxkcyB3aGVuIHNhZGRyIGlzIHNldCAqLwogCXN0cnVjdCBzbWNfaWJfZGV2aWNlCSppYl9kZXZfdjI7CiYjNDM7CWJvb2wJCQlpYl9kZXZfdjJfcmVmOyAvKiBvd25zIGFuIHNtY19pYmRldiByZWZlcmVuY2UgKi8KIAl1OAkJCWliX3BvcnRfdjI7CiAJdTgJCQlpYl9naWRfdjJbU01DX0dJRF9TSVpFXTsKIApAQCAtNDM4LDYgJiM0Mzs0MzksNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyB7CiAJdTgJCQlwZWVyX21hY1tFVEhfQUxFTl07CiAJdTgJCQlwZWVyX3N5c3RlbWlkW1NNQ19TWVNURU1JRF9MRU5dOwogCXN0cnVjdCBzbWNfaWJfZGV2aWNlCSppYl9kZXY7CiYjNDM7CWJvb2wJCQlpYl9kZXZfcmVmOyAvKiBvd25zIGFuIHNtY19pYmRldiByZWZlcmVuY2UgKi8KIAl1OAkJCWliX2dpZFtTTUNfR0lEX1NJWkVdOwogCXU4CQkJaWJfcG9ydDsKIAl1MzIJCQlpYl9jbGNxcG47CkBAIC01OTQsNiAmIzQzOzU5Niw3IEBAIHZvaWQgc21jX3J0b2tlbl9zZXQyKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBpbnQgcnRva19pZHgsIGludCBsaW5rX2lkLAogdm9pZCBzbWNfc25kYnVmX3N5bmNfc2dfZm9yX2RldmljZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pOwogdm9pZCBzbWNfcm1iX3N5bmNfc2dfZm9yX2NwdShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pOwogaW50IHNtY192bGFuX2J5X3RjcHNrKHN0cnVjdCBzb2NrZXQgKmNsY3NvY2ssIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpOwomIzQzO3ZvaWQgc21jX2luaXRfaW5mb19mcmVlKHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpOwogCiB2b2lkIHNtY19jb25uX2ZyZWUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKTsKIGludCBzbWNfY29ubl9jcmVhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpOwpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuYyBiL25ldC9zbWMvc21jX2liLmMKaW5kZXggOWJiNDk1NzA3NDQ1ZS4uZDg1ODQ1M2M2NGQ5MiAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfaWIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19pYi5jCkBAIC05MzQsNiAmIzQzOzkzNCw0NCBAQCB2b2lkIHNtY19pYl9uZGV2X2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdW5zaWduZWQgbG9uZyBldmVudCkKIAltdXRleF91bmxvY2soJmFtcDtzbWNfaWJfZGV2aWNlcy5tdXRleCk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBzbWNfaWJkZXZfcmVsZWFzZShzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCiYjNDM7ewomIzQzOwlwdXRfZGV2aWNlKCZhbXA7c21jaWJkZXYtJmd0O2liZGV2LSZndDtkZXYpOwomIzQzOwlrZnJlZShzbWNpYmRldik7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCiYjNDM7ewomIzQzOwlyZWZjb3VudF9pbmMoJmFtcDtzbWNpYmRldi0mZ3Q7cmVmY250KTsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBzbWNfaWJkZXZfcHV0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldikKJiM0Mzt7CiYjNDM7CWlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoJmFtcDtzbWNpYmRldi0mZ3Q7cmVmY250KSkKJiM0MzsJCXNtY19pYmRldl9yZWxlYXNlKHNtY2liZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IHNtY19pYmRldl9pbml0X2JlZ2luKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldikKJiM0Mzt7CiYjNDM7CWludCByYyA9IDA7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtzbWNfaWJfZGV2aWNlcy5tdXRleCk7CiYjNDM7CWlmIChsaXN0X2VtcHR5KCZhbXA7c21jaWJkZXYtJmd0O2xpc3QpKQomIzQzOwkJcmMgPSAtRU5PREVWOwomIzQzOwllbHNlCiYjNDM7CQlhdG9taWNfaW5jKCZhbXA7c21jaWJkZXYtJmd0O2luaXRfY250KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwomIzQzOwlyZXR1cm4gcmM7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldikKJiM0Mzt7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtzbWNfaWJfZGV2aWNlcy5tdXRleCk7CiYjNDM7CWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZhbXA7c21jaWJkZXYtJmd0O2luaXRfY250KSkKJiM0MzsJCXdha2VfdXAoJmFtcDtzbWNpYmRldi0mZ3Q7aW5pdF93YWl0KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwomIzQzO30KJiM0MzsKIC8qIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpYl9yZWdpc3Rlcl9jbGllbnQoKSAqLwogc3RhdGljIGludCBzbWNfaWJfYWRkX2RldihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldikKIHsKQEAgLTk0OSw3ICYjNDM7OTg3LDExIEBAIHN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJc21jaWJkZXYtJmd0O2liZGV2ID0gaWJkZXY7CiYjNDM7CWdldF9kZXZpY2UoJmFtcDtpYmRldi0mZ3Q7ZGV2KTsKJiM0MzsJcmVmY291bnRfc2V0KCZhbXA7c21jaWJkZXYtJmd0O3JlZmNudCwgMSk7CiAJSU5JVF9XT1JLKCZhbXA7c21jaWJkZXYtJmd0O3BvcnRfZXZlbnRfd29yaywgc21jX2liX3BvcnRfZXZlbnRfd29yayk7CiYjNDM7CWF0b21pY19zZXQoJmFtcDtzbWNpYmRldi0mZ3Q7aW5pdF9jbnQsIDApOwomIzQzOwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZhbXA7c21jaWJkZXYtJmd0O2luaXRfd2FpdCk7CiAJYXRvbWljX3NldCgmYW1wO3NtY2liZGV2LSZndDtsbmtfY250LCAwKTsKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZhbXA7c21jaWJkZXYtJmd0O2xua3NfZGVsZXRlZCk7CiAJbXV0ZXhfaW5pdCgmYW1wO3NtY2liZGV2LSZndDttdXRleCk7CkBAIC0xMDAwLDExICYjNDM7MTA0MiwxNCBAQCBzdGF0aWMgdm9pZCBzbWNfaWJfcmVtb3ZlX2RldihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdm9pZCAqY2xpZW50X2RhdGEpCiAJbXV0ZXhfdW5sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwogCXByX3dhcm5fcmF0ZWxpbWl0ZWQoJiMzNDtzbWM6IHJlbW92aW5nIGliIGRldmljZSAlc1xuJiMzNDssCiAJCQkgICAgc21jaWJkZXYtJmd0O2liZGV2LSZndDtuYW1lKTsKJiM0MzsJaWYgKGF0b21pY19yZWFkKCZhbXA7c21jaWJkZXYtJmd0O2luaXRfY250KSkKJiM0MzsJCXdhaXRfZXZlbnQoc21jaWJkZXYtJmd0O2luaXRfd2FpdCwKJiM0MzsJCQkgICAhYXRvbWljX3JlYWQoJmFtcDtzbWNpYmRldi0mZ3Q7aW5pdF9jbnQpKTsKIAlzbWNfc21jcl90ZXJtaW5hdGVfYWxsKHNtY2liZGV2KTsKIAlzbWNfaWJfY2xlYW51cF9wZXJfaWJkZXYoc21jaWJkZXYpOwogCWliX3VucmVnaXN0ZXJfZXZlbnRfaGFuZGxlcigmYW1wO3NtY2liZGV2LSZndDtldmVudF9oYW5kbGVyKTsKIAljYW5jZWxfd29ya19zeW5jKCZhbXA7c21jaWJkZXYtJmd0O3BvcnRfZXZlbnRfd29yayk7Ci0Ja2ZyZWUoc21jaWJkZXYpOwomIzQzOwlzbWNfaWJkZXZfcHV0KHNtY2liZGV2KTsKIH0KIAogc3RhdGljIHN0cnVjdCBpYl9jbGllbnQgc21jX2liX2NsaWVudCA9IHsKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2liLmggYi9uZXQvc21jL3NtY19pYi5oCmluZGV4IGVmOGFjMmI3NTQ2ZGYuLmQzMjU0NzM1MGU4YjggMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2liLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfaWIuaApAQCAtMTUsNiAmIzQzOzE1LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9pbnRlcnJ1cHQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pZl9ldGhlci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L211dGV4LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3JlZmNvdW50LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvd2FpdC5oJmd0OwogI2luY2x1ZGUgJmx0O3JkbWEvaWJfdmVyYnMuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvc21jLmgmZ3Q7CkBAIC01MSw2ICYjNDM7NTIsOSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7CQkJCS8qIGliLWRldmljZSBpbmZvcyBmb3Igc21jICovCiAJc3RydWN0IHdvcmtfc3RydWN0CXBvcnRfZXZlbnRfd29yazsKIAl1bnNpZ25lZCBsb25nCQlwb3J0X2V2ZW50X21hc2s7CiAJREVDTEFSRV9CSVRNQVAocG9ydHNfZ29pbmdfYXdheSwgU01DX01BWF9QT1JUUyk7CiYjNDM7CXJlZmNvdW50X3QJCXJlZmNudDsJCS8qIG9iamVjdCBsaWZldGltZSAqLwomIzQzOwlhdG9taWNfdAkJaW5pdF9jbnQ7CS8qIHVucHVibGlzaGVkIGxpbmsgaW5pdGlhbGl6YXRpb25zICovCiYjNDM7CXdhaXRfcXVldWVfaGVhZF90CWluaXRfd2FpdDsJLyogd2FpdCBmb3IgbGlua3MgdG8gYmUgcHVibGlzaGVkICovCiAJYXRvbWljX3QJCWxua19jbnQ7CS8qIG51bWJlciBvZiBsaW5rcyBvbiBpYmRldiAqLwogCXdhaXRfcXVldWVfaGVhZF90CWxua3NfZGVsZXRlZDsJLyogd2FpdCA0IHJlbW92YWwgb2YgYWxsIGxpbmtzKi8KIAlzdHJ1Y3QgbXV0ZXgJCW11dGV4OwkJLyogcHJvdGVjdCBkZXYgc2V0dXAmIzQzO2NsZWFudXAgKi8KQEAgLTU5LDYgJiM0Mzs2MywxMSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7CQkJCS8qIGliLWRldmljZSBpbmZvcyBmb3Igc21jICovCiAJaW50CQkJbmRldl9pZmlkeFtTTUNfTUFYX1BPUlRTXTsgLyogbmRldiBpZiBpbmRleGVzICovCiB9OwogCiYjNDM7dm9pZCBzbWNfaWJkZXZfZ2V0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7CiYjNDM7dm9pZCBzbWNfaWJkZXZfcHV0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7CiYjNDM7aW50IHNtY19pYmRldl9pbml0X2JlZ2luKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7CiYjNDM7dm9pZCBzbWNfaWJkZXZfaW5pdF9lbmQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTsKJiM0MzsKIHN0YXRpYyBpbmxpbmUgX19iZTMyIHNtY19pYl9naWRfdG9faXB2NCh1OCBnaWRbU01DX0dJRF9TSVpFXSkKIHsKIAlzdHJ1Y3QgaW42X2FkZHIgKmFkZHI2ID0gKHN0cnVjdCBpbjZfYWRkciAqKWdpZDsKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2xsYy5jIGIvbmV0L3NtYy9zbWNfbGxjLmMKaW5kZXggYzljY2Q4NDgwMzY5Yy4uZTE2YWFhNTE0MzY4YSAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfbGxjLmMKQEAgLTExMDgsNiAmIzQzOzExMDgsNyBAQCBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSkKIAlyYyA9IHNtY3JfbGlua19pbml0KGxnciwgbG5rX25ldywgbG5rX2lkeCwgaW5pKTsKIAlpZiAocmMpCiAJCWdvdG8gb3V0X3JlamVjdDsKJiM0MzsJc21jX2liZGV2X2luaXRfZW5kKGxua19uZXctJmd0O3NtY2liZGV2KTsKIAlzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhsbmtfbmV3LCBsbGMpOwogCWxua19uZXctJmd0O2xpbmtfaWQgPSBsbGMtJmd0O2xpbmtfbnVtOwkvKiBTTUMgc2VydmVyIGFzc2lnbnMgbGluayBpZCAqLwogCXNtY19sbGNfbGlua19zZXRfdWlkKGxua19uZXcpOwpAQCAtMTE0Myw3ICYjNDM7MTE0NCw3IEBAIGludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KQogb3V0X3JlamVjdDoKIAlzbWNfbGxjX2NsaV9hZGRfbGlua19yZWplY3QocWVudHJ5KTsKIG91dDoKLQlrZnJlZShpbmkpOwomIzQzOwlzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTsKIAlrZnJlZShxZW50cnkpOwogCXJldHVybiByYzsKIH0KQEAgLTEyMTcsNyAmIzQzOzEyMTgsNyBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX2NsaV9hZGRfbGlua19pbnZpdGUoc3RydWN0IHNtY19saW5rICpsaW5rLAogCXNtY19sbGNfc2VuZF9hZGRfbGluayhsaW5rLCBpbmktJmd0O2liX2Rldi0mZ3Q7bWFjW2luaS0mZ3Q7aWJfcG9ydCAtIDFdLAogCQkJICAgICAgaW5pLSZndDtpYl9naWQsIE5VTEwsIFNNQ19MTENfUkVRKTsKIG91dDoKLQlrZnJlZShpbmkpOwomIzQzOwlzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTsKIAlrZnJlZShxZW50cnkpOwogfQogCkBAIC0xNDg3LDYgJiM0MzsxNDg4LDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAlpZiAocmMpCiAJCWdvdG8gb3V0OwogCWxpbmtfbmV3ID0gJmFtcDtsZ3ItJmd0O2xua1tsbmtfaWR4XTsKJiM0MzsJc21jX2liZGV2X2luaXRfZW5kKGxpbmtfbmV3LSZndDtzbWNpYmRldik7CiAKIAlyYyA9IHNtY3JfYnVmX21hcF9sZ3IobGlua19uZXcpOwogCWlmIChyYykKQEAgLTE1NDQsNyAmIzQzOzE1NDYsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLAogCX0KIG91dDoKIAlrZnJlZShxZW50cnkpOwotCWtmcmVlKGluaSk7CiYjNDM7CXNtY19pbml0X2luZm9fZnJlZShpbmkpOwogCWlmIChzZW5kX3JlcV9hZGRfbGlua19yZXNwKQogCQlzbWNfbGxjX3NlbmRfcmVxX2FkZF9saW5rX3Jlc3BvbnNlKHJlcV9xZW50cnkpOwogCXJldHVybiByYzsKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3BuZXQuYyBiL25ldC9zbWMvc21jX3BuZXQuYwppbmRleCA2M2UyODZlMmRmYWE4Li5iZTFmNTEzN2M4ZWU3IDEwMDY0NAotLS0gYS9uZXQvc21jL3NtY19wbmV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfcG5ldC5jCkBAIC05ODAsMTQgJiM0Mzs5ODAsMjIgQEAgc3RhdGljIGludCBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICppYmRldiwgaW50IGksCiAJaWYgKCFpbmktJmd0O2NoZWNrX3NtY3J2MiAmYW1wOyZhbXA7CiAJICAgICFzbWNfaWJfZGV0ZXJtaW5lX2dpZChpYmRldiwgaSwgaW5pLSZndDt2bGFuX2lkLCBpbmktJmd0O2liX2dpZCwgTlVMTCwKIAkJCQkgIE5VTEwpKSB7CiYjNDM7CQlpZiAoaW5pLSZndDtpYl9kZXZfcmVmKQomIzQzOwkJCXNtY19pYmRldl9wdXQoaW5pLSZndDtpYl9kZXYpOwomIzQzOwkJc21jX2liZGV2X2dldChpYmRldik7CiAJCWluaS0mZ3Q7aWJfZGV2ID0gaWJkZXY7CiYjNDM7CQlpbmktJmd0O2liX2Rldl9yZWYgPSB0cnVlOwogCQlpbmktJmd0O2liX3BvcnQgPSBpOwogCQlyZXR1cm4gMDsKIAl9CiAJaWYgKGluaS0mZ3Q7Y2hlY2tfc21jcnYyICZhbXA7JmFtcDsKIAkgICAgIXNtY19pYl9kZXRlcm1pbmVfZ2lkKGliZGV2LCBpLCBpbmktJmd0O3ZsYW5faWQsIGluaS0mZ3Q7c21jcnYyLmliX2dpZF92MiwKIAkJCQkgIE5VTEwsICZhbXA7aW5pLSZndDtzbWNydjIpKSB7CiYjNDM7CQlpZiAoaW5pLSZndDtzbWNydjIuaWJfZGV2X3YyX3JlZikKJiM0MzsJCQlzbWNfaWJkZXZfcHV0KGluaS0mZ3Q7c21jcnYyLmliX2Rldl92Mik7CiYjNDM7CQlzbWNfaWJkZXZfZ2V0KGliZGV2KTsKIAkJaW5pLSZndDtzbWNydjIuaWJfZGV2X3YyID0gaWJkZXY7CiYjNDM7CQlpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjJfcmVmID0gdHJ1ZTsKIAkJaW5pLSZndDtzbWNydjIuaWJfcG9ydF92MiA9IGk7CiAJCXJldHVybiAwOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5OTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgU3Vic3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgdGhlIGBuZXQvc21jL2Agc3Vic3lzdGVtIHdpdGhpbiB0aGUgTGludXgga2VybmVsLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGBzbWNfaWJfZGV2aWNlYCBvYmplY3RzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgcmF0aGVyIHN0cmFpZ2h0Zm9yd2FyZCwgYWxiZWl0IGNyaXRpY2FsLCBmaXguIEl0JiMzOTtzIGFsbCBhYm91dCBib2xzdGVyaW5nIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgdGhlc2UgYHNtY19pYl9kZXZpY2VgIGluc3RhbmNlcy4KClRoZSBrZXkgY2hhbmdlIEkgc2VlIGlzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYSBtb3JlIHJvYnVzdCBsaWZlY3ljbGUgbWFuYWdlbWVudCBzeXN0ZW0uIFRoZXkmIzM5O3JlIGRpdGNoaW5nIHRoZSBkaXJlY3QgYGtmcmVlKGluaSlgIGNhbGwgaW4gZmF2b3Igb2YgYHNtY19pbml0X2luZm9fZnJlZShpbmkpYC4gVGhpcyBmdW5jdGlvbiBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVuczsgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSByZWZlcmVuY2VzIHRvIGBpYl9kZXZgIGFuZCBgaWJfZGV2X3YyYC4gVGhlIGludHJvZHVjdGlvbiBvZiBgc21jX2liZGV2X2dldGAsIGBzbWNfaWJkZXZfcHV0YCwgYHNtY19pYmRldl9pbml0X2JlZ2luYCwgYW5kIGBzbWNfaWJkZXZfaW5pdF9lbmRgIGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzIG5ldyBhcHByb2FjaC4gSXQmIzM5O3MgYSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgd2UmIzM5O3JlIG1vdmluZyB0b3dhcmRzIGEgbW9yZSBzdHJ1Y3R1cmVkIGFuZCBsZXNzIGVycm9yLXByb25lIHdheSBvZiBtYW5hZ2luZyB0aGUgb2JqZWN0JiMzOTtzIGRlcGVuZGVuY2llcy4gQW5kIGJ5IGFkZGluZyBgaWJfZGV2X3JlZmAgYW5kIGBpYl9kZXZfdjJfcmVmYCB0byB0aGUgYHNtY19pbml0X2luZm9gLCBpdCBhcHBlYXJzIHRoYXQgdGhlIHN5c3RlbSB0cmFja3MgdGhlIG93bmVyc2hpcCBvZiB0aG9zZSByZWZlcmVuY2VzIGJ5IHRoZSBgc21jX2luaXRfaW5mb2AuCgpJdCYjMzk7cyBldmlkZW50IHRoaXMgaXMgYSByZXNwb25zZSB0byBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciwgbW9yZSBnZW5lcmFsbHksIGFuIG9iamVjdCBsaWZldGltZSBtYW5hZ2VtZW50IHByb2JsZW0gcmVsYXRlZCB0byBgc21jX2liX2RldmljZWAuIFRoZSBnb29kIG5ld3MgaXMgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBuZXcgc3RydWN0dXJlcyBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIHNvIHRoYXQmIzM5O3Mgb25lIGxlc3MgYXJlYSB0byB3b3JyeSBhYm91dCBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUuIFRoZXJlJiMzOTtzIGFsc28gbm8gaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgYmVpbmcgYWRkcmVzc2VkIG9yIGV4cG9zZWQsIHdoaWNoIGlzIGEgZ29vZCBzaWduLiBUaGUgZm9jdXMgaGVyZSBpcyBzb2xlbHkgb24gcmVmZXJlbmNlIGNvdW50aW5nIGFuZCBvYmplY3QgbGlmZXRpbWUuCgpIb3dldmVyLCBJIG5lZWQgdG8gZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgZm9yIHBvc3NpYmxlIHJlZ3Jlc3Npb25zLiBJdCYjMzk7cyBhIGdvb2QgcHJhY3RpY2UsIGFuZCBJJiMzOTttIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFNpbmNlIGBzbWNfaW5pdF9pbmZvYCBpcyBsaWtlbHkgYWxsb2NhdGVkLCBwcm9iYWJseSB0aHJvdWdoIGBremFsbG9jYCwgdGhlcmUgaXMgYSByaXNrIHRoYXQgdGhlIGFkZGVkIGZpZWxkcywgYGliX2Rldl9yZWZgIGFuZCBgaWJfZGV2X3YyX3JlZmAsIG1pZ2h0IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4gSWYgYHNtY19pbml0X2luZm9gIGlzbiYjMzk7dCB6ZXJvLWluaXRpYWxpemVkLCB0aGVzZSBib29sZWFuIGZsYWdzIGNvdWxkIGJlIGxlZnQgaW4gYW4gdW5kZWZpbmVkIHN0YXRlLCBsZWFkaW5nIHRvIGluY29ycmVjdCBjYWxscyB0byBgc21jX2liZGV2X3B1dGAuIEkgc2hvdWxkIHZlcmlmeSBob3cgYHNtY19pbml0X2luZm9gIGlzIGFjdHVhbGx5IGFsbG9jYXRlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIGNvbmNlcm4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxsb2MuKnNtY19pbml0X2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NTcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqSHVudGluZyBmb3IgSW5pdGlhbGl6YXRpb24gTWFnaWMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgd2hlcmUgdGhlIGBpbmkgPSBgIGFzc2lnbm1lbnRzIG9yIHRoZSBgc3RydWN0IHNtY19pbml0X2luZm9gIGFsbG9jYXRpb25zIGFyZSBoYXBwZW5pbmcuIFRoYXQmIzM5O3MgbXkgc3RhcnRpbmcgcG9pbnQuIFRob3NlIHdpbGwgYmUgY3J1Y2lhbCBiZWNhdXNlIHRoZXkmIzM5O3JlIHRoZSBwbGFjZXMgd2hlcmUgdGhlIGluaXRpYWwgcGFyYW1ldGVycyBvciB0aGUgc3RydWN0dXJlIGRlZmluaW5nIGFuIFNNQyAoU3lzdGVtIE1hbmFnZW1lbnQgQ29udHJvbGxlcikgb3Igc2ltaWxhciBkZXZpY2UgaXMgZGVmaW5lZCwgb3IgaW5pdGlhbGl6ZWQuIEZpbmRpbmcgdGhvc2Ugd2lsbCBsZWFkIG1lIHRvIHRoZSBrZXkgY29uZmlndXJhdGlvbiBkYXRhLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBpbml0aWFsaXphdGlvbiBpcyBwcmV0dHkgaW1wb3J0YW50IHRvIHRoZSBzeXN0ZW0gYXMgYSB3aG9sZSwgc28ga25vd2luZyB0aGUgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBpcyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbmkgPSBrLiphbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvYWZfc21jLmM9MTIwMz12b2lkIHNtY19maWxsX2dpZF9saXN0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTIxMS1cbm5ldC9zbWMvYWZfc21jLmM6MTIxMjpcdGFsdF9pbmkgPSBremFsbG9jX29iaigqYWx0X2luaSk7XG5uZXQvc21jL2FmX3NtYy5jLTEyMTMtXHRpZiAoIWFsdF9pbmkpXG4tLVxubmV0L3NtYy9hZl9zbWMuYz0xNTIwPXN0YXRpYyBpbnQgX19zbWNfY29ubmVjdChzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE1MzktXG5uZXQvc21jL2FmX3NtYy5jOjE1NDA6XHRpbmkgPSBremFsbG9jX29iaigqaW5pKTtcbm5ldC9zbWMvYWZfc21jLmMtMTU0MS1cdGlmICghaW5pKVxuLS1cbm5ldC9zbWMvYWZfc21jLmM9MjQ1Mz1zdGF0aWMgdm9pZCBzbWNfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjUwNy1cbm5ldC9zbWMvYWZfc21jLmM6MjUwODpcdGluaSA9IGt6YWxsb2Nfb2JqKCppbmkpO1xubmV0L3NtYy9hZl9zbWMuYy0yNTA5LVx0aWYgKCFpbmkpIHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMDU4PWludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwNjktXG5uZXQvc21jL3NtY19sbGMuYzoxMDcwOlx0aW5pID0ga3phbGxvY19vYmooKmluaSk7XG5uZXQvc21jL3NtY19sbGMuYy0xMDcxLVx0aWYgKCFpbmkpIHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMTkxPXN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTIwOC1cbm5ldC9zbWMvc21jX2xsYy5jOjEyMDk6XHRpbmkgPSBremFsbG9jX29iaigqaW5pKTtcbm5ldC9zbWMvc21jX2xsYy5jLTEyMTAtXHRpZiAoIWluaSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNDMyPWludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTQ0Ny1cbm5ldC9zbWMvc21jX2xsYy5jOjE0NDg6XHRpbmkgPSBremFsbG9jX29iaigqaW5pKTtcbm5ldC9zbWMvc21jX2xsYy5jLTE0NDktXHRpZiAoIWluaSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODQ2CgkJCQkJCQlvdXRwdXQ6IDE4NQoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBga3phbGxvY19vYmpgIGlzIGFsbW9zdCBjZXJ0YWlubHkganVzdCBhIG1hY3JvIHRoYXQmIzM5O3MgYSB3cmFwcGVyIGZvciBga3phbGxvY2AuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgcHJhY3RpY2UsIGFuZCBpdCBtYWtlcyB0aGUgY29kZSBjbGVhbmVyLiBUaGUga2V5IGhlcmUsIHRob3VnaCwgaXMgdGhhdCBga3phbGxvY2AgemVyb2VzIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LiBLbm93aW5nIHRoYXQsIEkgY2FuIHF1aWNrbHkgY29uZmlybSB0aGF0IGBpYl9kZXZfcmVmYCBhbmQgYGliX2Rldl92Ml9yZWZgIHdpbGwgYmUgY29ycmVjdGx5IGluaXRpYWxpemVkIHRvIGBmYWxzZWAsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgdGhlIG92ZXJhbGwgc3RhdGUgb2YgdGhlc2Ugb2JqZWN0cy4KClRoaXMgcGF0Y2ggaXMgb2J2aW91c2x5IGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIHJlbGF0ZWQgb2JqZWN0IGxpZmV0aW1lIHByb2JsZW0uIENvbnNpZGVyaW5nIHRoZSB6ZXJvLWluaXRpYWxpemF0aW9uLCB0aGVyZSYjMzk7cyBubyB3YXkgdGhhdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyB0aGUgcm9vdCBjYXVzZS4gTXkgZXhwZXJ0aXNlIGlzIHRoYXQgdGhlIHplcm8tYWxsb2NhdGlvbiBwcm92aWRlcyBhbiBpbXBvcnRhbnQgZ3VhcmFudGVlIHRoYXQgbWl0aWdhdGVzIHRoZSBtb3N0IGNvbW1vbiByaXNrcy4KCkdpdmVuIHRoZSBmb2N1cyBvbiB1c2UtYWZ0ZXItZnJlZSwgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGRldGVjdGluZyB0aGlzIGtpbmQgb2YgYnVnLiBXZSByZWFsbHkgZG9uJiMzOTt0IG5lZWQgdG8gaW52b2x2ZSBLTVNBTiBmb3IgdGhpcyBzcGVjaWZpYyBpc3N1ZS4gS0FTQU4gaXMgcGVyZmVjdGx5IHN1ZmZpY2llbnQgZm9yIGNhdGNoaW5nIHRoZSBraW5kcyBvZiBtZW1vcnkgYWNjZXNzIGVycm9ycyB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgYHNtY19pYl9kZXZpY2VgIG9iamVjdHMgdG8gZml4IG9iamVjdCBsaWZldGltZSBpc3N1ZXMgKGxpa2VseSB1c2UtYWZ0ZXItZnJlZSkuIEl0IHJlcGxhY2VzIGBrZnJlZShpbmkpYCB3aXRoIGBzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKWAsIHdoaWNoIGRyb3BzIHRoZSByZWZlcmVuY2VzIGlmIHRoZXkgd2VyZSBhY3F1aXJlZC4gVGhlIG5ldyBib29sZWFuIGZpZWxkcyBgaWJfZGV2X3JlZmAgYW5kIGBpYl9kZXZfdjJfcmVmYCBhcmUgYWRkZWQgdG8gYHN0cnVjdCBzbWNfaW5pdF9pbmZvYCwgd2hpY2ggaXMgYWx3YXlzIGFsbG9jYXRlZCB1c2luZyBga3phbGxvY2AgKHZpYSBga3phbGxvY19vYmpgKSwgZW5zdXJpbmcgdGhleSBhcmUgcHJvcGVybHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdXNlLWFmdGVyLWZyZWUgYnVncywgd2hpY2ggdGhpcyBwYXRjaCBhZGRyZXNzZXMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgYHNtY19pYl9kZXZpY2VgIG9iamVjdHMgdG8gZml4IG9iamVjdCBsaWZldGltZSBpc3N1ZXMgKGxpa2VseSB1c2UtYWZ0ZXItZnJlZSkuIEl0IHJlcGxhY2VzIGBrZnJlZShpbmkpYCB3aXRoIGBzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKWAsIHdoaWNoIGRyb3BzIHRoZSByZWZlcmVuY2VzIGlmIHRoZXkgd2VyZSBhY3F1aXJlZC4gVGhlIG5ldyBib29sZWFuIGZpZWxkcyBgaWJfZGV2X3JlZmAgYW5kIGBpYl9kZXZfdjJfcmVmYCBhcmUgYWRkZWQgdG8gYHN0cnVjdCBzbWNfaW5pdF9pbmZvYCwgd2hpY2ggaXMgYWx3YXlzIGFsbG9jYXRlZCB1c2luZyBga3phbGxvY2AgKHZpYSBga3phbGxvY19vYmpgKSwgZW5zdXJpbmcgdGhleSBhcmUgcHJvcGVybHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdXNlLWFmdGVyLWZyZWUgYnVncywgd2hpY2ggdGhpcyBwYXRjaCBhZGRyZXNzZXMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM4OjUxLjE1ODUwNDUwOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTQ2NDk4MTYwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIixcbiAgICBcIlJETUFfUlhFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jcl9saW5rX2luaXRcIixcbiAgICBcInNtY19sbGNfY2xpX2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyByZWZlcmVuY2UgY291bnRpbmcgZm9yIGBzbWNfaWJfZGV2aWNlYCBvYmplY3RzIHRvIGZpeCBvYmplY3QgbGlmZXRpbWUgaXNzdWVzIChsaWtlbHkgdXNlLWFmdGVyLWZyZWUpLiBJdCByZXBsYWNlcyBga2ZyZWUoaW5pKWAgd2l0aCBgc21jX2luaXRfaW5mb19mcmVlKGluaSlgLCB3aGljaCBkcm9wcyB0aGUgcmVmZXJlbmNlcyBpZiB0aGV5IHdlcmUgYWNxdWlyZWQuIFRoZSBuZXcgYm9vbGVhbiBmaWVsZHMgYGliX2Rldl9yZWZgIGFuZCBgaWJfZGV2X3YyX3JlZmAgYXJlIGFkZGVkIHRvIGBzdHJ1Y3Qgc21jX2luaXRfaW5mb2AsIHdoaWNoIGlzIGFsd2F5cyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgICh2aWEgYGt6YWxsb2Nfb2JqYCksIGVuc3VyaW5nIHRoZXkgYXJlIHByb3Blcmx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIHRoaXMgcGF0Y2ggYWRkcmVzc2VzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGxlYWsgb2YgYHNtY19pYl9kZXZpY2VgIGluIHRoZSBTTUMgc3Vic3lzdGVtIGJ5IGludHJvZHVjaW5nIGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGFuZCBwcm9wZXJseSBtYW5hZ2luZyB0aGUgb2JqZWN0IGxpZmV0aW1lIHdpdGggcmVmZXJlbmNlIGNvdW50aW5nIChgc21jX2liZGV2X2dldGAvYHB1dGApLiBJdCBhbHNvIGFkZHMgYW4gaW5pdGlhbGl6YXRpb24gY291bnRlciAoYGluaXRfY250YCkgdG8gdHJhY2sgdW5wdWJsaXNoZWQgbGluayBpbml0aWFsaXphdGlvbnMuIFRoZSBjaGFuZ2VzIGFmZmVjdCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgKGBfX3NtY19jb25uZWN0YCwgYHNtY19saXN0ZW5fd29ya2ApIGFuZCBMTEMgbGluayBtYW5hZ2VtZW50IChgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgKS4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgYW5kIGluY29taW5nIG5ldHdvcmsgcGFja2V0cy4gVG8gcHJvcGVybHkgdGVzdCB0aGlzLCB3ZSBuZWVkIHRvIGVuYWJsZSBTTUMsIEluZmluaUJhbmQsIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBSRE1BL0RJQlMgZGV2aWNlcyAoYFJETUFfUlhFYCwgYERJQlNfTE9gKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzg6NTEuMTU4NTA5OTk5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDMxODk2NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3NzdmMzA3MTVjNmQ1MDU0NGQ2ZjgwYzAzMGFiNWJiYjExYzkxNDJiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIzIDA3OjM4OjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvYWZfc21jLmMgYi9uZXQvc21jL2FmX3NtYy5jXFxuaW5kZXggZTlmOTNiM2FiNDM1Yi4uZDc4MWRlZTFiMzI5MyAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL2FmX3NtYy5jXFxuKysrIGIvbmV0L3NtYy9hZl9zbWMuY1xcbkBAIC0xMjI1LDcgKzEyMjUsNyBAQCB2b2lkIHNtY19maWxsX2dpZF9saXN0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbiBcXHQgICAgICAgU01DX0dJRF9TSVpFKTtcXG4gXFxuIG91dDpcXG4tXFx0a2ZyZWUoYWx0X2luaSk7XFxuK1xcdHNtY19pbml0X2luZm9fZnJlZShhbHRfaW5pKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBzbWNfY29ubmVjdF9yZG1hX3YyX3ByZXBhcmUoc3RydWN0IHNtY19zb2NrICpzbWMsXFxuQEAgLTE1OTYsMTQgKzE1OTYsMTQgQEAgc3RhdGljIGludCBfX3NtY19jb25uZWN0KHN0cnVjdCBzbWNfc29jayAqc21jKVxcbiBcXHRTTUNfU1RBVF9DTE5UX1NVQ0NfSU5DKHNvY2tfbmV0KHNtYy1cXHUwMDNlY2xjc29jay1cXHUwMDNlc2spLCBhY2xjKTtcXG4gXFx0c21jX2Nvbm5lY3RfaXNtX3ZsYW5fY2xlYW51cChpbmkpO1xcbiBcXHRrZnJlZShidWYpO1xcbi1cXHRrZnJlZShpbmkpO1xcbitcXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiB2bGFuX2NsZWFudXA6XFxuIFxcdHNtY19jb25uZWN0X2lzbV92bGFuX2NsZWFudXAoaW5pKTtcXG4gXFx0a2ZyZWUoYnVmKTtcXG4gZmFsbGJhY2s6XFxuLVxcdGtmcmVlKGluaSk7XFxuK1xcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xcbiBcXHRyZXR1cm4gc21jX2Nvbm5lY3RfZGVjbGluZV9mYWxsYmFjayhzbWMsIHJjLCB2ZXJzaW9uKTtcXG4gfVxcbiBcXG5AQCAtMjM0NCw3ICsyMzQ0LDEwIEBAIHN0YXRpYyB2b2lkIHNtY19maW5kX3JkbWFfdjJfZGV2aWNlX3NlcnYoc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxcbiBcXG4gbm90X2ZvdW5kOlxcbiBcXHRpbmktXFx1MDAzZXNtY3JfdmVyc2lvbiBcXHUwMDI2PSB+U01DX1YyO1xcbitcXHRpZiAoaW5pLVxcdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZilcXG4rXFx0XFx0c21jX2liZGV2X3B1dChpbmktXFx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIpO1xcbiBcXHRpbmktXFx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIgPSBOVUxMO1xcbitcXHRpbmktXFx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmID0gZmFsc2U7XFxuIFxcdGluaS1cXHUwMDNlY2hlY2tfc21jcnYyID0gZmFsc2U7XFxuIH1cXG4gXFxuQEAgLTI1ODgsNyArMjU5MSw3IEBAIHN0YXRpYyB2b2lkIHNtY19saXN0ZW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHNtY19saXN0ZW5fZGVjbGluZShuZXdfc21jLCByYywgaW5pID8gaW5pLVxcdTAwM2VmaXJzdF9jb250YWN0X2xvY2FsIDogMCxcXG4gXFx0XFx0XFx0ICAgcHJvcG9zYWxfdmVyc2lvbik7XFxuIG91dF9mcmVlOlxcbi1cXHRrZnJlZShpbmkpO1xcbitcXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcXG4gXFx0a2ZyZWUoYnVmKTtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY29yZS5jIGIvbmV0L3NtYy9zbWNfY29yZS5jXFxuaW5kZXggMTgxNjQ3OTgyNDkwYi4uZDk3YmM3MzIzMTA2OSAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmNcXG4rKysgYi9uZXQvc21jL3NtY19jb3JlLmNcXG5AQCAtNTUsNiArNTUsMTcgQEAgc3RhdGljIHZvaWQgX19zbWNfbGdyX3Rlcm1pbmF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBzb2Z0KTtcXG4gXFxuIHN0YXRpYyB2b2lkIHNtY19saW5rX2Rvd25fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbiBcXG4rdm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG4re1xcbitcXHRpZiAoIWluaSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHRpZiAoaW5pLVxcdTAwM2VpYl9kZXZfcmVmKVxcbitcXHRcXHRzbWNfaWJkZXZfcHV0KGluaS1cXHUwMDNlaWJfZGV2KTtcXG4rXFx0aWYgKGluaS1cXHUwMDNlc21jcnYyLmliX2Rldl92Ml9yZWYpXFxuK1xcdFxcdHNtY19pYmRldl9wdXQoaW5pLVxcdTAwM2VzbWNydjIuaWJfZGV2X3YyKTtcXG4rXFx0a2ZyZWUoaW5pKTtcXG4rfVxcbitcXG4gLyogcmV0dXJuIGhlYWQgb2YgbGluayBncm91cCBsaXN0IGFuZCBpdHMgbG9jayBmb3IgYSBnaXZlbiBsaW5rIGdyb3VwICovXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGxpc3RfaGVhZCAqc21jX2xncl9saXN0X2hlYWQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgc3BpbmxvY2tfdCAqKmxncl9sb2NrKVxcbkBAIC03OTMsMTQgKzgwNCwyMSBAQCBpbnQgc21jcl9saW5rX2luaXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfbGluayAqbG5rLFxcbiBcXHRpbnQgcmM7XFxuIFxcbiBcXHRpZiAobGdyLVxcdTAwM2VzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHtcXG4tXFx0XFx0bG5rLVxcdTAwM2VzbWNpYmRldiA9IGluaS1cXHUwMDNlc21jcnYyLmliX2Rldl92MjtcXG4rXFx0XFx0c21jaWJkZXYgPSBpbmktXFx1MDAzZXNtY3J2Mi5pYl9kZXZfdjI7XFxuIFxcdFxcdGxuay1cXHUwMDNlaWJwb3J0ID0gaW5pLVxcdTAwM2VzbWNydjIuaWJfcG9ydF92MjtcXG4tXFx0XFx0bG5rLVxcdTAwM2V3cl9yeF9zZ2VfY250ID0gbG5rLVxcdTAwM2VzbWNpYmRldi1cXHUwMDNlaWJkZXYtXFx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSBcXHUwMDNjIDIgPyAxIDogMjtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0c21jaWJkZXYgPSBpbmktXFx1MDAzZWliX2RldjtcXG4rXFx0XFx0bG5rLVxcdTAwM2VpYnBvcnQgPSBpbmktXFx1MDAzZWliX3BvcnQ7XFxuK1xcdH1cXG4rXFx0cmMgPSBzbWNfaWJkZXZfaW5pdF9iZWdpbihzbWNpYmRldik7XFxuK1xcdGlmIChyYylcXG4rXFx0XFx0cmV0dXJuIHJjO1xcbitcXHRsbmstXFx1MDAzZXNtY2liZGV2ID0gc21jaWJkZXY7XFxuK1xcdGlmIChsZ3ItXFx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xcbitcXHRcXHRsbmstXFx1MDAzZXdyX3J4X3NnZV9jbnQgPSBzbWNpYmRldi1cXHUwMDNlaWJkZXYtXFx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSBcXHUwMDNjIDIgPyAxIDogMjtcXG4gXFx0XFx0bG5rLVxcdTAwM2V3cl9yeF9idWZsZW4gPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobG5rKSA/XFxuIFxcdFxcdFxcdFNNQ19XUl9CVUZfU0laRSA6IFNNQ19XUl9CVUZfVjJfU0laRTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0bG5rLVxcdTAwM2VzbWNpYmRldiA9IGluaS1cXHUwMDNlaWJfZGV2O1xcbi1cXHRcXHRsbmstXFx1MDAzZWlicG9ydCA9IGluaS1cXHUwMDNlaWJfcG9ydDtcXG4gXFx0XFx0bG5rLVxcdTAwM2V3cl9yeF9zZ2VfY250ID0gMTtcXG4gXFx0XFx0bG5rLVxcdTAwM2V3cl9yeF9idWZsZW4gPSBTTUNfV1JfQlVGX1NJWkU7XFxuIFxcdH1cXG5AQCAtODgyLDYgKzkwMCw3IEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssXFxuIFxcdGlmICghYXRvbWljX2RlY19yZXR1cm4oXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VsbmtfY250KSlcXG4gXFx0XFx0d2FrZV91cChcXHUwMDI2c21jaWJkZXYtXFx1MDAzZWxua3NfZGVsZXRlZCk7XFxuIFxcdHNtY19sZ3JfcHV0KGxncik7IC8qIGxncl9ob2xkIGFib3ZlICovXFxuK1xcdHNtY19pYmRldl9pbml0X2VuZChzbWNpYmRldik7XFxuIFxcdHJldHVybiByYztcXG4gfVxcbiBcXG5AQCAtOTk3LDYgKzEwMTYsOCBAQCBzdGF0aWMgaW50IHNtY19sZ3JfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbiBcXHRzcGluX2xvY2tfYmgobGdyX2xvY2spO1xcbiBcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZsZ3ItXFx1MDAzZWxpc3QsIGxncl9saXN0KTtcXG4gXFx0c3Bpbl91bmxvY2tfYmgobGdyX2xvY2spO1xcbitcXHRpZiAoIWluaS1cXHUwMDNlaXNfc21jZClcXG4rXFx0XFx0c21jX2liZGV2X2luaXRfZW5kKGxuay1cXHUwMDNlc21jaWJkZXYpO1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIGZyZWVfd3E6XFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NvcmUuaCBiL25ldC9zbWMvc21jX2NvcmUuaFxcbmluZGV4IDVjMThmMDhhNGM4YTUuLjlmNWE2OWEzMGNiM2YgMTAwNjQ0XFxuLS0tIGEvbmV0L3NtYy9zbWNfY29yZS5oXFxuKysrIGIvbmV0L3NtYy9zbWNfY29yZS5oXFxuQEAgLTQwMyw2ICs0MDMsNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mb19zbWNydjIge1xcbiBcXG4gXFx0LyogT3V0cHV0IGZpZWxkcyB3aGVuIHNhZGRyIGlzIHNldCAqL1xcbiBcXHRzdHJ1Y3Qgc21jX2liX2RldmljZVxcdCppYl9kZXZfdjI7XFxuK1xcdGJvb2xcXHRcXHRcXHRpYl9kZXZfdjJfcmVmOyAvKiBvd25zIGFuIHNtY19pYmRldiByZWZlcmVuY2UgKi9cXG4gXFx0dThcXHRcXHRcXHRpYl9wb3J0X3YyO1xcbiBcXHR1OFxcdFxcdFxcdGliX2dpZF92MltTTUNfR0lEX1NJWkVdO1xcbiBcXG5AQCAtNDM4LDYgKzQzOSw3IEBAIHN0cnVjdCBzbWNfaW5pdF9pbmZvIHtcXG4gXFx0dThcXHRcXHRcXHRwZWVyX21hY1tFVEhfQUxFTl07XFxuIFxcdHU4XFx0XFx0XFx0cGVlcl9zeXN0ZW1pZFtTTUNfU1lTVEVNSURfTEVOXTtcXG4gXFx0c3RydWN0IHNtY19pYl9kZXZpY2VcXHQqaWJfZGV2O1xcbitcXHRib29sXFx0XFx0XFx0aWJfZGV2X3JlZjsgLyogb3ducyBhbiBzbWNfaWJkZXYgcmVmZXJlbmNlICovXFxuIFxcdHU4XFx0XFx0XFx0aWJfZ2lkW1NNQ19HSURfU0laRV07XFxuIFxcdHU4XFx0XFx0XFx0aWJfcG9ydDtcXG4gXFx0dTMyXFx0XFx0XFx0aWJfY2xjcXBuO1xcbkBAIC01OTQsNiArNTk2LDcgQEAgdm9pZCBzbWNfcnRva2VuX3NldDIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGludCBydG9rX2lkeCwgaW50IGxpbmtfaWQsXFxuIHZvaWQgc21jX3NuZGJ1Zl9zeW5jX3NnX2Zvcl9kZXZpY2Uoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKTtcXG4gdm9pZCBzbWNfcm1iX3N5bmNfc2dfZm9yX2NwdShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pO1xcbiBpbnQgc21jX3ZsYW5fYnlfdGNwc2soc3RydWN0IHNvY2tldCAqY2xjc29jaywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XFxuK3ZvaWQgc21jX2luaXRfaW5mb19mcmVlKHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpO1xcbiBcXG4gdm9pZCBzbWNfY29ubl9mcmVlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7XFxuIGludCBzbWNfY29ubl9jcmVhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpO1xcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19pYi5jIGIvbmV0L3NtYy9zbWNfaWIuY1xcbmluZGV4IDliYjQ5NTcwNzQ0NWUuLmQ4NTg0NTNjNjRkOTIgMTAwNjQ0XFxuLS0tIGEvbmV0L3NtYy9zbWNfaWIuY1xcbisrKyBiL25ldC9zbWMvc21jX2liLmNcXG5AQCAtOTM0LDYgKzkzNCw0NCBAQCB2b2lkIHNtY19pYl9uZGV2X2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdW5zaWduZWQgbG9uZyBldmVudClcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHNtY19pYmRldl9yZWxlYXNlKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcXG4re1xcbitcXHRwdXRfZGV2aWNlKFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlaWJkZXYtXFx1MDAzZWRldik7XFxuK1xcdGtmcmVlKHNtY2liZGV2KTtcXG4rfVxcbitcXG4rdm9pZCBzbWNfaWJkZXZfZ2V0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcXG4re1xcbitcXHRyZWZjb3VudF9pbmMoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VyZWZjbnQpO1xcbit9XFxuK1xcbit2b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxcbit7XFxuK1xcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VyZWZjbnQpKVxcbitcXHRcXHRzbWNfaWJkZXZfcmVsZWFzZShzbWNpYmRldik7XFxuK31cXG4rXFxuK2ludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXFxuK3tcXG4rXFx0aW50IHJjID0gMDtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnNtY19pYl9kZXZpY2VzLm11dGV4KTtcXG4rXFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VsaXN0KSlcXG4rXFx0XFx0cmMgPSAtRU5PREVWO1xcbitcXHRlbHNlXFxuK1xcdFxcdGF0b21pY19pbmMoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2Vpbml0X2NudCk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xcbitcXHRyZXR1cm4gcmM7XFxuK31cXG4rXFxuK3ZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XFxuK1xcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlaW5pdF9jbnQpKVxcbitcXHRcXHR3YWtlX3VwKFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlaW5pdF93YWl0KTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XFxuK31cXG4rXFxuIC8qIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpYl9yZWdpc3Rlcl9jbGllbnQoKSAqL1xcbiBzdGF0aWMgaW50IHNtY19pYl9hZGRfZGV2KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2KVxcbiB7XFxuQEAgLTk0OSw3ICs5ODcsMTEgQEAgc3RhdGljIGludCBzbWNfaWJfYWRkX2RldihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldilcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRzbWNpYmRldi1cXHUwMDNlaWJkZXYgPSBpYmRldjtcXG4rXFx0Z2V0X2RldmljZShcXHUwMDI2aWJkZXYtXFx1MDAzZWRldik7XFxuK1xcdHJlZmNvdW50X3NldChcXHUwMDI2c21jaWJkZXYtXFx1MDAzZXJlZmNudCwgMSk7XFxuIFxcdElOSVRfV09SSyhcXHUwMDI2c21jaWJkZXYtXFx1MDAzZXBvcnRfZXZlbnRfd29yaywgc21jX2liX3BvcnRfZXZlbnRfd29yayk7XFxuK1xcdGF0b21pY19zZXQoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2Vpbml0X2NudCwgMCk7XFxuK1xcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2Vpbml0X3dhaXQpO1xcbiBcXHRhdG9taWNfc2V0KFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlbG5rX2NudCwgMCk7XFxuIFxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VsbmtzX2RlbGV0ZWQpO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlbXV0ZXgpO1xcbkBAIC0xMDAwLDExICsxMDQyLDE0IEBAIHN0YXRpYyB2b2lkIHNtY19pYl9yZW1vdmVfZGV2KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB2b2lkICpjbGllbnRfZGF0YSlcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XFxuIFxcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXFxcInNtYzogcmVtb3ZpbmcgaWIgZGV2aWNlICVzXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICAgc21jaWJkZXYtXFx1MDAzZWliZGV2LVxcdTAwM2VuYW1lKTtcXG4rXFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlaW5pdF9jbnQpKVxcbitcXHRcXHR3YWl0X2V2ZW50KHNtY2liZGV2LVxcdTAwM2Vpbml0X3dhaXQsXFxuK1xcdFxcdFxcdCAgICFhdG9taWNfcmVhZChcXHUwMDI2c21jaWJkZXYtXFx1MDAzZWluaXRfY250KSk7XFxuIFxcdHNtY19zbWNyX3Rlcm1pbmF0ZV9hbGwoc21jaWJkZXYpO1xcbiBcXHRzbWNfaWJfY2xlYW51cF9wZXJfaWJkZXYoc21jaWJkZXYpO1xcbiBcXHRpYl91bnJlZ2lzdGVyX2V2ZW50X2hhbmRsZXIoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VldmVudF9oYW5kbGVyKTtcXG4gXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2c21jaWJkZXYtXFx1MDAzZXBvcnRfZXZlbnRfd29yayk7XFxuLVxcdGtmcmVlKHNtY2liZGV2KTtcXG4rXFx0c21jX2liZGV2X3B1dChzbWNpYmRldik7XFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgaWJfY2xpZW50IHNtY19pYl9jbGllbnQgPSB7XFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2liLmggYi9uZXQvc21jL3NtY19pYi5oXFxuaW5kZXggZWY4YWMyYjc1NDZkZi4uZDMyNTQ3MzUwZThiOCAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19pYi5oXFxuKysrIGIvbmV0L3NtYy9zbWNfaWIuaFxcbkBAIC0xNSw2ICsxNSw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lmX2V0aGVyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dhaXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY3JkbWEvaWJfdmVyYnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9zbWMuaFxcdTAwM2VcXG5AQCAtNTEsNiArNTIsOSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7XFx0XFx0XFx0XFx0LyogaWItZGV2aWNlIGluZm9zIGZvciBzbWMgKi9cXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0XFx0cG9ydF9ldmVudF93b3JrO1xcbiBcXHR1bnNpZ25lZCBsb25nXFx0XFx0cG9ydF9ldmVudF9tYXNrO1xcbiBcXHRERUNMQVJFX0JJVE1BUChwb3J0c19nb2luZ19hd2F5LCBTTUNfTUFYX1BPUlRTKTtcXG4rXFx0cmVmY291bnRfdFxcdFxcdHJlZmNudDtcXHRcXHQvKiBvYmplY3QgbGlmZXRpbWUgKi9cXG4rXFx0YXRvbWljX3RcXHRcXHRpbml0X2NudDtcXHQvKiB1bnB1Ymxpc2hlZCBsaW5rIGluaXRpYWxpemF0aW9ucyAqL1xcbitcXHR3YWl0X3F1ZXVlX2hlYWRfdFxcdGluaXRfd2FpdDtcXHQvKiB3YWl0IGZvciBsaW5rcyB0byBiZSBwdWJsaXNoZWQgKi9cXG4gXFx0YXRvbWljX3RcXHRcXHRsbmtfY250O1xcdC8qIG51bWJlciBvZiBsaW5rcyBvbiBpYmRldiAqL1xcbiBcXHR3YWl0X3F1ZXVlX2hlYWRfdFxcdGxua3NfZGVsZXRlZDtcXHQvKiB3YWl0IDQgcmVtb3ZhbCBvZiBhbGwgbGlua3MqL1xcbiBcXHRzdHJ1Y3QgbXV0ZXhcXHRcXHRtdXRleDtcXHRcXHQvKiBwcm90ZWN0IGRldiBzZXR1cCtjbGVhbnVwICovXFxuQEAgLTU5LDYgKzYzLDExIEBAIHN0cnVjdCBzbWNfaWJfZGV2aWNlIHtcXHRcXHRcXHRcXHQvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqL1xcbiBcXHRpbnRcXHRcXHRcXHRuZGV2X2lmaWR4W1NNQ19NQVhfUE9SVFNdOyAvKiBuZGV2IGlmIGluZGV4ZXMgKi9cXG4gfTtcXG4gXFxuK3ZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpO1xcbit2b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcXG4raW50IHNtY19pYmRldl9pbml0X2JlZ2luKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7XFxuK3ZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7XFxuK1xcbiBzdGF0aWMgaW5saW5lIF9fYmUzMiBzbWNfaWJfZ2lkX3RvX2lwdjQodTggZ2lkW1NNQ19HSURfU0laRV0pXFxuIHtcXG4gXFx0c3RydWN0IGluNl9hZGRyICphZGRyNiA9IChzdHJ1Y3QgaW42X2FkZHIgKilnaWQ7XFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2xsYy5jIGIvbmV0L3NtYy9zbWNfbGxjLmNcXG5pbmRleCBjOWNjZDg0ODAzNjljLi5lMTZhYWE1MTQzNjhhIDEwMDY0NFxcbi0tLSBhL25ldC9zbWMvc21jX2xsYy5jXFxuKysrIGIvbmV0L3NtYy9zbWNfbGxjLmNcXG5AQCAtMTEwOCw2ICsxMTA4LDcgQEAgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuIFxcdHJjID0gc21jcl9saW5rX2luaXQobGdyLCBsbmtfbmV3LCBsbmtfaWR4LCBpbmkpO1xcbiBcXHRpZiAocmMpXFxuIFxcdFxcdGdvdG8gb3V0X3JlamVjdDtcXG4rXFx0c21jX2liZGV2X2luaXRfZW5kKGxua19uZXctXFx1MDAzZXNtY2liZGV2KTtcXG4gXFx0c21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obG5rX25ldywgbGxjKTtcXG4gXFx0bG5rX25ldy1cXHUwMDNlbGlua19pZCA9IGxsYy1cXHUwMDNlbGlua19udW07XFx0LyogU01DIHNlcnZlciBhc3NpZ25zIGxpbmsgaWQgKi9cXG4gXFx0c21jX2xsY19saW5rX3NldF91aWQobG5rX25ldyk7XFxuQEAgLTExNDMsNyArMTE0NCw3IEBAIGludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbiBvdXRfcmVqZWN0OlxcbiBcXHRzbWNfbGxjX2NsaV9hZGRfbGlua19yZWplY3QocWVudHJ5KTtcXG4gb3V0Olxcbi1cXHRrZnJlZShpbmkpO1xcbitcXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcXG4gXFx0a2ZyZWUocWVudHJ5KTtcXG4gXFx0cmV0dXJuIHJjO1xcbiB9XFxuQEAgLTEyMTcsNyArMTIxOCw3IEBAIHN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuIFxcdHNtY19sbGNfc2VuZF9hZGRfbGluayhsaW5rLCBpbmktXFx1MDAzZWliX2Rldi1cXHUwMDNlbWFjW2luaS1cXHUwMDNlaWJfcG9ydCAtIDFdLFxcbiBcXHRcXHRcXHQgICAgICBpbmktXFx1MDAzZWliX2dpZCwgTlVMTCwgU01DX0xMQ19SRVEpO1xcbiBvdXQ6XFxuLVxcdGtmcmVlKGluaSk7XFxuK1xcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xcbiBcXHRrZnJlZShxZW50cnkpO1xcbiB9XFxuIFxcbkBAIC0xNDg3LDYgKzE0ODgsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbiBcXHRpZiAocmMpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRsaW5rX25ldyA9IFxcdTAwMjZsZ3ItXFx1MDAzZWxua1tsbmtfaWR4XTtcXG4rXFx0c21jX2liZGV2X2luaXRfZW5kKGxpbmtfbmV3LVxcdTAwM2VzbWNpYmRldik7XFxuIFxcbiBcXHRyYyA9IHNtY3JfYnVmX21hcF9sZ3IobGlua19uZXcpO1xcbiBcXHRpZiAocmMpXFxuQEAgLTE1NDQsNyArMTU0Niw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuIFxcdH1cXG4gb3V0OlxcbiBcXHRrZnJlZShxZW50cnkpO1xcbi1cXHRrZnJlZShpbmkpO1xcbitcXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcXG4gXFx0aWYgKHNlbmRfcmVxX2FkZF9saW5rX3Jlc3ApXFxuIFxcdFxcdHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2UocmVxX3FlbnRyeSk7XFxuIFxcdHJldHVybiByYztcXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfcG5ldC5jIGIvbmV0L3NtYy9zbWNfcG5ldC5jXFxuaW5kZXggNjNlMjg2ZTJkZmFhOC4uYmUxZjUxMzdjOGVlNyAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19wbmV0LmNcXG4rKysgYi9uZXQvc21jL3NtY19wbmV0LmNcXG5AQCAtOTgwLDE0ICs5ODAsMjIgQEAgc3RhdGljIGludCBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICppYmRldiwgaW50IGksXFxuIFxcdGlmICghaW5pLVxcdTAwM2VjaGVja19zbWNydjIgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgICFzbWNfaWJfZGV0ZXJtaW5lX2dpZChpYmRldiwgaSwgaW5pLVxcdTAwM2V2bGFuX2lkLCBpbmktXFx1MDAzZWliX2dpZCwgTlVMTCxcXG4gXFx0XFx0XFx0XFx0ICBOVUxMKSkge1xcbitcXHRcXHRpZiAoaW5pLVxcdTAwM2VpYl9kZXZfcmVmKVxcbitcXHRcXHRcXHRzbWNfaWJkZXZfcHV0KGluaS1cXHUwMDNlaWJfZGV2KTtcXG4rXFx0XFx0c21jX2liZGV2X2dldChpYmRldik7XFxuIFxcdFxcdGluaS1cXHUwMDNlaWJfZGV2ID0gaWJkZXY7XFxuK1xcdFxcdGluaS1cXHUwMDNlaWJfZGV2X3JlZiA9IHRydWU7XFxuIFxcdFxcdGluaS1cXHUwMDNlaWJfcG9ydCA9IGk7XFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuIFxcdGlmIChpbmktXFx1MDAzZWNoZWNrX3NtY3J2MiBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgIXNtY19pYl9kZXRlcm1pbmVfZ2lkKGliZGV2LCBpLCBpbmktXFx1MDAzZXZsYW5faWQsIGluaS1cXHUwMDNlc21jcnYyLmliX2dpZF92MixcXG4gXFx0XFx0XFx0XFx0ICBOVUxMLCBcXHUwMDI2aW5pLVxcdTAwM2VzbWNydjIpKSB7XFxuK1xcdFxcdGlmIChpbmktXFx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmKVxcbitcXHRcXHRcXHRzbWNfaWJkZXZfcHV0KGluaS1cXHUwMDNlc21jcnYyLmliX2Rldl92Mik7XFxuK1xcdFxcdHNtY19pYmRldl9nZXQoaWJkZXYpO1xcbiBcXHRcXHRpbmktXFx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIgPSBpYmRldjtcXG4rXFx0XFx0aW5pLVxcdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZiA9IHRydWU7XFxuIFxcdFxcdGluaS1cXHUwMDNlc21jcnYyLmliX3BvcnRfdjIgPSBpO1xcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozODo1MS42MDIzNjIzNjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDg3ODc4MjE3MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCIsXG4gICAgXCJESUJTX0xPXCIsXG4gICAgXCJSRE1BX1JYRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY3JfbGlua19pbml0XCIsXG4gICAgXCJzbWNfbGxjX2NsaV9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19zcnZfYWRkX2xpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlZmVyZW5jZSBsZWFrIG9mIGBzbWNfaWJfZGV2aWNlYCBpbiB0aGUgU01DIHN1YnN5c3RlbSBieSBpbnRyb2R1Y2luZyBgc21jX2luaXRfaW5mb19mcmVlYCBhbmQgcHJvcGVybHkgbWFuYWdpbmcgdGhlIG9iamVjdCBsaWZldGltZSB3aXRoIHJlZmVyZW5jZSBjb3VudGluZyAoYHNtY19pYmRldl9nZXRgL2BwdXRgKS4gSXQgYWxzbyBhZGRzIGFuIGluaXRpYWxpemF0aW9uIGNvdW50ZXIgKGBpbml0X2NudGApIHRvIHRyYWNrIHVucHVibGlzaGVkIGxpbmsgaW5pdGlhbGl6YXRpb25zLiBUaGUgY2hhbmdlcyBhZmZlY3QgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChgX19zbWNfY29ubmVjdGAsIGBzbWNfbGlzdGVuX3dvcmtgKSBhbmQgTExDIGxpbmsgbWFuYWdlbWVudCAoYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNvY2tldCBvcGVyYXRpb25zIGFuZCBpbmNvbWluZyBuZXR3b3JrIHBhY2tldHMuIFRvIHByb3Blcmx5IHRlc3QgdGhpcywgd2UgbmVlZCB0byBlbmFibGUgU01DLCBJbmZpbmlCYW5kLCBhbmQgc29mdHdhcmUtZW11bGF0ZWQgUkRNQS9ESUJTIGRldmljZXMgKGBSRE1BX1JYRWAsIGBESUJTX0xPYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc3N2YzMDcxNWM2ZDUwNTQ0ZDZmODBjMDMwYWI1YmJiMTFjOTE0MmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyMyAwNzozODo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zbWMvYWZfc21jLmMgYi9uZXQvc21jL2FmX3NtYy5jXG5pbmRleCBlOWY5M2IzYWI0MzViLi5kNzgxZGVlMWIzMjkzIDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9hZl9zbWMuY1xuKysrIGIvbmV0L3NtYy9hZl9zbWMuY1xuQEAgLTEyMjUsNyArMTIyNSw3IEBAIHZvaWQgc21jX2ZpbGxfZ2lkX2xpc3Qoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG4gXHQgICAgICAgU01DX0dJRF9TSVpFKTtcbiBcbiBvdXQ6XG4tXHRrZnJlZShhbHRfaW5pKTtcbitcdHNtY19pbml0X2luZm9fZnJlZShhbHRfaW5pKTtcbiB9XG4gXG4gc3RhdGljIGludCBzbWNfY29ubmVjdF9yZG1hX3YyX3ByZXBhcmUoc3RydWN0IHNtY19zb2NrICpzbWMsXG5AQCAtMTU5NiwxNCArMTU5NiwxNCBAQCBzdGF0aWMgaW50IF9fc21jX2Nvbm5lY3Qoc3RydWN0IHNtY19zb2NrICpzbWMpXG4gXHRTTUNfU1RBVF9DTE5UX1NVQ0NfSU5DKHNvY2tfbmV0KHNtYy1cdTAwM2VjbGNzb2NrLVx1MDAzZXNrKSwgYWNsYyk7XG4gXHRzbWNfY29ubmVjdF9pc21fdmxhbl9jbGVhbnVwKGluaSk7XG4gXHRrZnJlZShidWYpO1xuLVx0a2ZyZWUoaW5pKTtcbitcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0cmV0dXJuIDA7XG4gXG4gdmxhbl9jbGVhbnVwOlxuIFx0c21jX2Nvbm5lY3RfaXNtX3ZsYW5fY2xlYW51cChpbmkpO1xuIFx0a2ZyZWUoYnVmKTtcbiBmYWxsYmFjazpcbi1cdGtmcmVlKGluaSk7XG4rXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcbiBcdHJldHVybiBzbWNfY29ubmVjdF9kZWNsaW5lX2ZhbGxiYWNrKHNtYywgcmMsIHZlcnNpb24pO1xuIH1cbiBcbkBAIC0yMzQ0LDcgKzIzNDQsMTAgQEAgc3RhdGljIHZvaWQgc21jX2ZpbmRfcmRtYV92Ml9kZXZpY2Vfc2VydihzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXG4gXG4gbm90X2ZvdW5kOlxuIFx0aW5pLVx1MDAzZXNtY3JfdmVyc2lvbiBcdTAwMjY9IH5TTUNfVjI7XG4rXHRpZiAoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmKVxuK1x0XHRzbWNfaWJkZXZfcHV0KGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyKTtcbiBcdGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyID0gTlVMTDtcbitcdGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZiA9IGZhbHNlO1xuIFx0aW5pLVx1MDAzZWNoZWNrX3NtY3J2MiA9IGZhbHNlO1xuIH1cbiBcbkBAIC0yNTg4LDcgKzI1OTEsNyBAQCBzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c21jX2xpc3Rlbl9kZWNsaW5lKG5ld19zbWMsIHJjLCBpbmkgPyBpbmktXHUwMDNlZmlyc3RfY29udGFjdF9sb2NhbCA6IDAsXG4gXHRcdFx0ICAgcHJvcG9zYWxfdmVyc2lvbik7XG4gb3V0X2ZyZWU6XG4tXHRrZnJlZShpbmkpO1xuK1x0c21jX2luaXRfaW5mb19mcmVlKGluaSk7XG4gXHRrZnJlZShidWYpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmMgYi9uZXQvc21jL3NtY19jb3JlLmNcbmluZGV4IDE4MTY0Nzk4MjQ5MGIuLmQ5N2JjNzMyMzEwNjkgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmNcbisrKyBiL25ldC9zbWMvc21jX2NvcmUuY1xuQEAgLTU1LDYgKzU1LDE3IEBAIHN0YXRpYyB2b2lkIF9fc21jX2xncl90ZXJtaW5hdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgc29mdCk7XG4gXG4gc3RhdGljIHZvaWQgc21jX2xpbmtfZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gXG4rdm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbit7XG4rXHRpZiAoIWluaSlcbitcdFx0cmV0dXJuO1xuK1x0aWYgKGluaS1cdTAwM2VpYl9kZXZfcmVmKVxuK1x0XHRzbWNfaWJkZXZfcHV0KGluaS1cdTAwM2VpYl9kZXYpO1xuK1x0aWYgKGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZilcbitcdFx0c21jX2liZGV2X3B1dChpbmktXHUwMDNlc21jcnYyLmliX2Rldl92Mik7XG4rXHRrZnJlZShpbmkpO1xuK31cbitcbiAvKiByZXR1cm4gaGVhZCBvZiBsaW5rIGdyb3VwIGxpc3QgYW5kIGl0cyBsb2NrIGZvciBhIGdpdmVuIGxpbmsgZ3JvdXAgKi9cbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXN0X2hlYWQgKnNtY19sZ3JfbGlzdF9oZWFkKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuIFx0XHRcdFx0XHRcdCAgc3BpbmxvY2tfdCAqKmxncl9sb2NrKVxuQEAgLTc5MywxNCArODA0LDIxIEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssXG4gXHRpbnQgcmM7XG4gXG4gXHRpZiAobGdyLVx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xuLVx0XHRsbmstXHUwMDNlc21jaWJkZXYgPSBpbmktXHUwMDNlc21jcnYyLmliX2Rldl92MjtcbitcdFx0c21jaWJkZXYgPSBpbmktXHUwMDNlc21jcnYyLmliX2Rldl92MjtcbiBcdFx0bG5rLVx1MDAzZWlicG9ydCA9IGluaS1cdTAwM2VzbWNydjIuaWJfcG9ydF92Mjtcbi1cdFx0bG5rLVx1MDAzZXdyX3J4X3NnZV9jbnQgPSBsbmstXHUwMDNlc21jaWJkZXYtXHUwMDNlaWJkZXYtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlIFx1MDAzYyAyID8gMSA6IDI7XG4rXHR9IGVsc2Uge1xuK1x0XHRzbWNpYmRldiA9IGluaS1cdTAwM2VpYl9kZXY7XG4rXHRcdGxuay1cdTAwM2VpYnBvcnQgPSBpbmktXHUwMDNlaWJfcG9ydDtcbitcdH1cbitcdHJjID0gc21jX2liZGV2X2luaXRfYmVnaW4oc21jaWJkZXYpO1xuK1x0aWYgKHJjKVxuK1x0XHRyZXR1cm4gcmM7XG4rXHRsbmstXHUwMDNlc21jaWJkZXYgPSBzbWNpYmRldjtcbitcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyKSB7XG4rXHRcdGxuay1cdTAwM2V3cl9yeF9zZ2VfY250ID0gc21jaWJkZXYtXHUwMDNlaWJkZXYtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlIFx1MDAzYyAyID8gMSA6IDI7XG4gXHRcdGxuay1cdTAwM2V3cl9yeF9idWZsZW4gPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobG5rKSA/XG4gXHRcdFx0U01DX1dSX0JVRl9TSVpFIDogU01DX1dSX0JVRl9WMl9TSVpFO1xuIFx0fSBlbHNlIHtcbi1cdFx0bG5rLVx1MDAzZXNtY2liZGV2ID0gaW5pLVx1MDAzZWliX2Rldjtcbi1cdFx0bG5rLVx1MDAzZWlicG9ydCA9IGluaS1cdTAwM2VpYl9wb3J0O1xuIFx0XHRsbmstXHUwMDNld3Jfcnhfc2dlX2NudCA9IDE7XG4gXHRcdGxuay1cdTAwM2V3cl9yeF9idWZsZW4gPSBTTUNfV1JfQlVGX1NJWkU7XG4gXHR9XG5AQCAtODgyLDYgKzkwMCw3IEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssXG4gXHRpZiAoIWF0b21pY19kZWNfcmV0dXJuKFx1MDAyNnNtY2liZGV2LVx1MDAzZWxua19jbnQpKVxuIFx0XHR3YWtlX3VwKFx1MDAyNnNtY2liZGV2LVx1MDAzZWxua3NfZGVsZXRlZCk7XG4gXHRzbWNfbGdyX3B1dChsZ3IpOyAvKiBsZ3JfaG9sZCBhYm92ZSAqL1xuK1x0c21jX2liZGV2X2luaXRfZW5kKHNtY2liZGV2KTtcbiBcdHJldHVybiByYztcbiB9XG4gXG5AQCAtOTk3LDYgKzEwMTYsOCBAQCBzdGF0aWMgaW50IHNtY19sZ3JfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuIFx0c3Bpbl9sb2NrX2JoKGxncl9sb2NrKTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bGdyLVx1MDAzZWxpc3QsIGxncl9saXN0KTtcbiBcdHNwaW5fdW5sb2NrX2JoKGxncl9sb2NrKTtcbitcdGlmICghaW5pLVx1MDAzZWlzX3NtY2QpXG4rXHRcdHNtY19pYmRldl9pbml0X2VuZChsbmstXHUwMDNlc21jaWJkZXYpO1xuIFx0cmV0dXJuIDA7XG4gXG4gZnJlZV93cTpcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmggYi9uZXQvc21jL3NtY19jb3JlLmhcbmluZGV4IDVjMThmMDhhNGM4YTUuLjlmNWE2OWEzMGNiM2YgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmhcbisrKyBiL25ldC9zbWMvc21jX2NvcmUuaFxuQEAgLTQwMyw2ICs0MDMsNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mb19zbWNydjIge1xuIFxuIFx0LyogT3V0cHV0IGZpZWxkcyB3aGVuIHNhZGRyIGlzIHNldCAqL1xuIFx0c3RydWN0IHNtY19pYl9kZXZpY2VcdCppYl9kZXZfdjI7XG4rXHRib29sXHRcdFx0aWJfZGV2X3YyX3JlZjsgLyogb3ducyBhbiBzbWNfaWJkZXYgcmVmZXJlbmNlICovXG4gXHR1OFx0XHRcdGliX3BvcnRfdjI7XG4gXHR1OFx0XHRcdGliX2dpZF92MltTTUNfR0lEX1NJWkVdO1xuIFxuQEAgLTQzOCw2ICs0MzksNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyB7XG4gXHR1OFx0XHRcdHBlZXJfbWFjW0VUSF9BTEVOXTtcbiBcdHU4XHRcdFx0cGVlcl9zeXN0ZW1pZFtTTUNfU1lTVEVNSURfTEVOXTtcbiBcdHN0cnVjdCBzbWNfaWJfZGV2aWNlXHQqaWJfZGV2O1xuK1x0Ym9vbFx0XHRcdGliX2Rldl9yZWY7IC8qIG93bnMgYW4gc21jX2liZGV2IHJlZmVyZW5jZSAqL1xuIFx0dThcdFx0XHRpYl9naWRbU01DX0dJRF9TSVpFXTtcbiBcdHU4XHRcdFx0aWJfcG9ydDtcbiBcdHUzMlx0XHRcdGliX2NsY3FwbjtcbkBAIC01OTQsNiArNTk2LDcgQEAgdm9pZCBzbWNfcnRva2VuX3NldDIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGludCBydG9rX2lkeCwgaW50IGxpbmtfaWQsXG4gdm9pZCBzbWNfc25kYnVmX3N5bmNfc2dfZm9yX2RldmljZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pO1xuIHZvaWQgc21jX3JtYl9zeW5jX3NnX2Zvcl9jcHUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKTtcbiBpbnQgc21jX3ZsYW5fYnlfdGNwc2soc3RydWN0IHNvY2tldCAqY2xjc29jaywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG4rdm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG4gXG4gdm9pZCBzbWNfY29ubl9mcmVlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7XG4gaW50IHNtY19jb25uX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuYyBiL25ldC9zbWMvc21jX2liLmNcbmluZGV4IDliYjQ5NTcwNzQ0NWUuLmQ4NTg0NTNjNjRkOTIgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19pYi5jXG4rKysgYi9uZXQvc21jL3NtY19pYi5jXG5AQCAtOTM0LDYgKzkzNCw0NCBAQCB2b2lkIHNtY19pYl9uZGV2X2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdW5zaWduZWQgbG9uZyBldmVudClcbiBcdG11dGV4X3VubG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHNtY19pYmRldl9yZWxlYXNlKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbit7XG4rXHRwdXRfZGV2aWNlKFx1MDAyNnNtY2liZGV2LVx1MDAzZWliZGV2LVx1MDAzZWRldik7XG4rXHRrZnJlZShzbWNpYmRldik7XG4rfVxuK1xuK3ZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0cmVmY291bnRfaW5jKFx1MDAyNnNtY2liZGV2LVx1MDAzZXJlZmNudCk7XG4rfVxuK1xuK3ZvaWQgc21jX2liZGV2X3B1dChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZzbWNpYmRldi1cdTAwM2VyZWZjbnQpKVxuK1x0XHRzbWNfaWJkZXZfcmVsZWFzZShzbWNpYmRldik7XG4rfVxuK1xuK2ludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0aW50IHJjID0gMDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuK1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2c21jaWJkZXYtXHUwMDNlbGlzdCkpXG4rXHRcdHJjID0gLUVOT0RFVjtcbitcdGVsc2VcbitcdFx0YXRvbWljX2luYyhcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuK1x0cmV0dXJuIHJjO1xuK31cbitcbit2b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4rXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpXG4rXHRcdHdha2VfdXAoXHUwMDI2c21jaWJkZXYtXHUwMDNlaW5pdF93YWl0KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4rfVxuK1xuIC8qIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpYl9yZWdpc3Rlcl9jbGllbnQoKSAqL1xuIHN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpXG4ge1xuQEAgLTk0OSw3ICs5ODcsMTEgQEAgc3RhdGljIGludCBzbWNfaWJfYWRkX2RldihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRzbWNpYmRldi1cdTAwM2VpYmRldiA9IGliZGV2O1xuK1x0Z2V0X2RldmljZShcdTAwMjZpYmRldi1cdTAwM2VkZXYpO1xuK1x0cmVmY291bnRfc2V0KFx1MDAyNnNtY2liZGV2LVx1MDAzZXJlZmNudCwgMSk7XG4gXHRJTklUX1dPUksoXHUwMDI2c21jaWJkZXYtXHUwMDNlcG9ydF9ldmVudF93b3JrLCBzbWNfaWJfcG9ydF9ldmVudF93b3JrKTtcbitcdGF0b21pY19zZXQoXHUwMDI2c21jaWJkZXYtXHUwMDNlaW5pdF9jbnQsIDApO1xuK1x0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X3dhaXQpO1xuIFx0YXRvbWljX3NldChcdTAwMjZzbWNpYmRldi1cdTAwM2VsbmtfY250LCAwKTtcbiBcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXHUwMDI2c21jaWJkZXYtXHUwMDNlbG5rc19kZWxldGVkKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2c21jaWJkZXYtXHUwMDNlbXV0ZXgpO1xuQEAgLTEwMDAsMTEgKzEwNDIsMTQgQEAgc3RhdGljIHZvaWQgc21jX2liX3JlbW92ZV9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHZvaWQgKmNsaWVudF9kYXRhKVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNtY19pYl9kZXZpY2VzLm11dGV4KTtcbiBcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXCJzbWM6IHJlbW92aW5nIGliIGRldmljZSAlc1xcblwiLFxuIFx0XHRcdCAgICBzbWNpYmRldi1cdTAwM2VpYmRldi1cdTAwM2VuYW1lKTtcbitcdGlmIChhdG9taWNfcmVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpXG4rXHRcdHdhaXRfZXZlbnQoc21jaWJkZXYtXHUwMDNlaW5pdF93YWl0LFxuK1x0XHRcdCAgICFhdG9taWNfcmVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpO1xuIFx0c21jX3NtY3JfdGVybWluYXRlX2FsbChzbWNpYmRldik7XG4gXHRzbWNfaWJfY2xlYW51cF9wZXJfaWJkZXYoc21jaWJkZXYpO1xuIFx0aWJfdW5yZWdpc3Rlcl9ldmVudF9oYW5kbGVyKFx1MDAyNnNtY2liZGV2LVx1MDAzZWV2ZW50X2hhbmRsZXIpO1xuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZzbWNpYmRldi1cdTAwM2Vwb3J0X2V2ZW50X3dvcmspO1xuLVx0a2ZyZWUoc21jaWJkZXYpO1xuK1x0c21jX2liZGV2X3B1dChzbWNpYmRldik7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgaWJfY2xpZW50IHNtY19pYl9jbGllbnQgPSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuaCBiL25ldC9zbWMvc21jX2liLmhcbmluZGV4IGVmOGFjMmI3NTQ2ZGYuLmQzMjU0NzM1MGU4YjggMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19pYi5oXG4rKysgYi9uZXQvc21jL3NtY19pYi5oXG5AQCAtMTUsNiArMTUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaWZfZXRoZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjcmRtYS9pYl92ZXJicy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3NtYy5oXHUwMDNlXG5AQCAtNTEsNiArNTIsOSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7XHRcdFx0XHQvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqL1xuIFx0c3RydWN0IHdvcmtfc3RydWN0XHRwb3J0X2V2ZW50X3dvcms7XG4gXHR1bnNpZ25lZCBsb25nXHRcdHBvcnRfZXZlbnRfbWFzaztcbiBcdERFQ0xBUkVfQklUTUFQKHBvcnRzX2dvaW5nX2F3YXksIFNNQ19NQVhfUE9SVFMpO1xuK1x0cmVmY291bnRfdFx0XHRyZWZjbnQ7XHRcdC8qIG9iamVjdCBsaWZldGltZSAqL1xuK1x0YXRvbWljX3RcdFx0aW5pdF9jbnQ7XHQvKiB1bnB1Ymxpc2hlZCBsaW5rIGluaXRpYWxpemF0aW9ucyAqL1xuK1x0d2FpdF9xdWV1ZV9oZWFkX3RcdGluaXRfd2FpdDtcdC8qIHdhaXQgZm9yIGxpbmtzIHRvIGJlIHB1Ymxpc2hlZCAqL1xuIFx0YXRvbWljX3RcdFx0bG5rX2NudDtcdC8qIG51bWJlciBvZiBsaW5rcyBvbiBpYmRldiAqL1xuIFx0d2FpdF9xdWV1ZV9oZWFkX3RcdGxua3NfZGVsZXRlZDtcdC8qIHdhaXQgNCByZW1vdmFsIG9mIGFsbCBsaW5rcyovXG4gXHRzdHJ1Y3QgbXV0ZXhcdFx0bXV0ZXg7XHRcdC8qIHByb3RlY3QgZGV2IHNldHVwK2NsZWFudXAgKi9cbkBAIC01OSw2ICs2MywxMSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7XHRcdFx0XHQvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqL1xuIFx0aW50XHRcdFx0bmRldl9pZmlkeFtTTUNfTUFYX1BPUlRTXTsgLyogbmRldiBpZiBpbmRleGVzICovXG4gfTtcbiBcbit2b2lkIHNtY19pYmRldl9nZXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbit2b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbitpbnQgc21jX2liZGV2X2luaXRfYmVnaW4oc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbit2b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpO1xuK1xuIHN0YXRpYyBpbmxpbmUgX19iZTMyIHNtY19pYl9naWRfdG9faXB2NCh1OCBnaWRbU01DX0dJRF9TSVpFXSlcbiB7XG4gXHRzdHJ1Y3QgaW42X2FkZHIgKmFkZHI2ID0gKHN0cnVjdCBpbjZfYWRkciAqKWdpZDtcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19sbGMuYyBiL25ldC9zbWMvc21jX2xsYy5jXG5pbmRleCBjOWNjZDg0ODAzNjljLi5lMTZhYWE1MTQzNjhhIDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmNcbisrKyBiL25ldC9zbWMvc21jX2xsYy5jXG5AQCAtMTEwOCw2ICsxMTA4LDcgQEAgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4gXHRyYyA9IHNtY3JfbGlua19pbml0KGxnciwgbG5rX25ldywgbG5rX2lkeCwgaW5pKTtcbiBcdGlmIChyYylcbiBcdFx0Z290byBvdXRfcmVqZWN0O1xuK1x0c21jX2liZGV2X2luaXRfZW5kKGxua19uZXctXHUwMDNlc21jaWJkZXYpO1xuIFx0c21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obG5rX25ldywgbGxjKTtcbiBcdGxua19uZXctXHUwMDNlbGlua19pZCA9IGxsYy1cdTAwM2VsaW5rX251bTtcdC8qIFNNQyBzZXJ2ZXIgYXNzaWducyBsaW5rIGlkICovXG4gXHRzbWNfbGxjX2xpbmtfc2V0X3VpZChsbmtfbmV3KTtcbkBAIC0xMTQzLDcgKzExNDQsNyBAQCBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbiBvdXRfcmVqZWN0OlxuIFx0c21jX2xsY19jbGlfYWRkX2xpbmtfcmVqZWN0KHFlbnRyeSk7XG4gb3V0OlxuLVx0a2ZyZWUoaW5pKTtcbitcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0a2ZyZWUocWVudHJ5KTtcbiBcdHJldHVybiByYztcbiB9XG5AQCAtMTIxNyw3ICsxMjE4LDcgQEAgc3RhdGljIHZvaWQgc21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdHNtY19sbGNfc2VuZF9hZGRfbGluayhsaW5rLCBpbmktXHUwMDNlaWJfZGV2LVx1MDAzZW1hY1tpbmktXHUwMDNlaWJfcG9ydCAtIDFdLFxuIFx0XHRcdCAgICAgIGluaS1cdTAwM2VpYl9naWQsIE5VTEwsIFNNQ19MTENfUkVRKTtcbiBvdXQ6XG4tXHRrZnJlZShpbmkpO1xuK1x0c21jX2luaXRfaW5mb19mcmVlKGluaSk7XG4gXHRrZnJlZShxZW50cnkpO1xuIH1cbiBcbkBAIC0xNDg3LDYgKzE0ODgsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dDtcbiBcdGxpbmtfbmV3ID0gXHUwMDI2bGdyLVx1MDAzZWxua1tsbmtfaWR4XTtcbitcdHNtY19pYmRldl9pbml0X2VuZChsaW5rX25ldy1cdTAwM2VzbWNpYmRldik7XG4gXG4gXHRyYyA9IHNtY3JfYnVmX21hcF9sZ3IobGlua19uZXcpO1xuIFx0aWYgKHJjKVxuQEAgLTE1NDQsNyArMTU0Niw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHR9XG4gb3V0OlxuIFx0a2ZyZWUocWVudHJ5KTtcbi1cdGtmcmVlKGluaSk7XG4rXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcbiBcdGlmIChzZW5kX3JlcV9hZGRfbGlua19yZXNwKVxuIFx0XHRzbWNfbGxjX3NlbmRfcmVxX2FkZF9saW5rX3Jlc3BvbnNlKHJlcV9xZW50cnkpO1xuIFx0cmV0dXJuIHJjO1xuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3BuZXQuYyBiL25ldC9zbWMvc21jX3BuZXQuY1xuaW5kZXggNjNlMjg2ZTJkZmFhOC4uYmUxZjUxMzdjOGVlNyAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3BuZXQuY1xuKysrIGIvbmV0L3NtYy9zbWNfcG5ldC5jXG5AQCAtOTgwLDE0ICs5ODAsMjIgQEAgc3RhdGljIGludCBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICppYmRldiwgaW50IGksXG4gXHRpZiAoIWluaS1cdTAwM2VjaGVja19zbWNydjIgXHUwMDI2XHUwMDI2XG4gXHQgICAgIXNtY19pYl9kZXRlcm1pbmVfZ2lkKGliZGV2LCBpLCBpbmktXHUwMDNldmxhbl9pZCwgaW5pLVx1MDAzZWliX2dpZCwgTlVMTCxcbiBcdFx0XHRcdCAgTlVMTCkpIHtcbitcdFx0aWYgKGluaS1cdTAwM2VpYl9kZXZfcmVmKVxuK1x0XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZWliX2Rldik7XG4rXHRcdHNtY19pYmRldl9nZXQoaWJkZXYpO1xuIFx0XHRpbmktXHUwMDNlaWJfZGV2ID0gaWJkZXY7XG4rXHRcdGluaS1cdTAwM2VpYl9kZXZfcmVmID0gdHJ1ZTtcbiBcdFx0aW5pLVx1MDAzZWliX3BvcnQgPSBpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcdGlmIChpbmktXHUwMDNlY2hlY2tfc21jcnYyIFx1MDAyNlx1MDAyNlxuIFx0ICAgICFzbWNfaWJfZGV0ZXJtaW5lX2dpZChpYmRldiwgaSwgaW5pLVx1MDAzZXZsYW5faWQsIGluaS1cdTAwM2VzbWNydjIuaWJfZ2lkX3YyLFxuIFx0XHRcdFx0ICBOVUxMLCBcdTAwMjZpbmktXHUwMDNlc21jcnYyKSkge1xuK1x0XHRpZiAoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmKVxuK1x0XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIpO1xuK1x0XHRzbWNfaWJkZXZfZ2V0KGliZGV2KTtcbiBcdFx0aW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIgPSBpYmRldjtcbitcdFx0aW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmID0gdHJ1ZTtcbiBcdFx0aW5pLVx1MDAzZXNtY3J2Mi5pYl9wb3J0X3YyID0gaTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozODo1MS42MDIzNjM3MTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjkxOTQwMzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gVGhpcyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGEgZGVjZW50IGNodW5rIG9mIHRoZSBTTUMgY29kZSDigJMgYGFmX3NtYy5jYCwgYHNtY19jb3JlLmNgLCBgc21jX2NvcmUuaGAsIGBzbWNfaWIuY2AsIGBzbWNfaWIuaGAsIGBzbWNfbGxjLmNgLCBhbmQgYHNtY19wbmV0LmNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQncyBxdWl0ZSBhIHdpZGUgc2NvcGUsIHNvIEkgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbXBsaWNhdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgcHJvcGVybHkgZnJlZWluZyB0aGUgYHN0cnVjdCBzbWNfaW5pdF9pbmZvYCBzdHJ1Y3R1cmUgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIGBzbWNfaW5pdF9pbmZvX2ZyZWVgLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiBmb3IgcHJldmVudGluZyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLiBJIHNlZSB0aGUgcGF0Y2ggYWxzbyBpbmNsdWRlcyBtYW5hZ2luZyB0aGUgYHNtY19pYl9kZXZpY2VgIHdpdGggcmVmZXJlbmNlIGNvdW50aW5nIChgcmVmY250YCkgYW5kIGFuIGluaXRpYWxpemF0aW9uIGNvdW50ZXIgKGBpbml0X2NudGApLCBhbG9uZyB3aXRoIHVzaW5nIGBzbWNfaWJkZXZfcHV0YCwgd2hpY2ggaW5kaWNhdGVzIHRoZXkncmUgYWRkcmVzc2luZyBob3cgdGhlc2UgZGV2aWNlcyBhcmUgbWFuYWdlZC5cblxuU2luY2UgdGhpcyBpcyBpbiB0aGUgU01DIHN1YnN5c3RlbSwgSSBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuIFNNQyBpcyByZWxldmFudCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSBydW5uaW5nIG92ZXIgVENQL0lQIG9yIFJETUEgZW11bGF0b3JzLCBsaWtlIHNpdyBvciByeGUuIEknbSBhbHNvIHJlbWVtYmVyaW5nIHRoYXQgU01DIGNhbiB1dGlsaXplIFJvQ0Ugb3IgSVNNLCBhbmQgdGhhdCBzb2Z0LVJvQ0UgKFJYRSkgaXMgZXZlbiBhdmFpbGFibGUgaW4gUUVNVS4gVGhhdCdzIGludGVyZXN0aW5nLCBiZWNhdXNlIGl0IG1lYW5zIHdlIGNvdWxkIHBvdGVudGlhbGx5IGZ1enogdGhpcy5cblxuTm93LCBteSBuZXh0IG1vdmUgaXMgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX1NNQ2AgaXMgc2V0IGNvcnJlY3RseS4gSSdsbCBhbHNvIGNoZWNrIGBuZXQvc21jL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgb3B0aW9ucyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mIG9yIG1pZ2h0IG5lZWQgdG8gY29uZmlndXJlIGZvciB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDAyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzg6NTcuODk0MzA2NzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwODQ1MDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcXG5uZXQvc21jL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMTMtXFxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xcbm5ldC9zbWMvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiU01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMjItXFxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcXG5uZXQvc21jL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzg6NTguMDQ1MTcwMjc1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0MzQ4NjY0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBDT05GSUdfU01DYCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCBgQ09ORklHX1NNQ2AuLi4gd2hhdCAqZXhhY3RseSogaXMgdGhhdCB0aWVkIHRvP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIG1ha2luZyBhbnkgbW9kaWZpY2F0aW9ucyBvciBpbnRlZ3JhdGlvbnMuIEl0J3MgYSBxdWljayByZWZsZXgsIHJlYWxseSwgYSBtZW50YWwgY2hlY2tsaXN0IG9mIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIEknbSBlc3NlbnRpYWxseSBydW5uaW5nIGEgZGVwZW5kZW5jeSBhbmFseXNpcyBpbiBteSBoZWFkLiBXaGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzLCBkcml2ZXJzLCBvciBldmVuIGhpZ2hlci1sZXZlbCBmZWF0dXJlcyBtaWdodCByZWx5IG9uIHRoZSBmdW5jdGlvbmFsaXR5IGVuYWJsZWQgYnkgdGhhdCBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBJcyBpdCBhIGNvcmUgY29tcG9uZW50LCBvciBzb21ldGhpbmcgbW9yZSBwZXJpcGhlcmFsPyBNeSBhaW0gaXMgdG8gYnVpbGQgYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uJ3MgcmVhY2guIEkgd2FudCB0byBtaW5pbWl6ZSB1bmZvcmVzZWVuIGNvbnNlcXVlbmNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg5NSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM5OjAxLjI4ODY1OTc1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTAzNjcyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL0tjb25maWc9Mj1jb25maWcgU01DXFxubmV0L3NtYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbm5ldC9zbWMvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG5uZXQvc21jL0tjb25maWctNS1cXHRoZWxwXFxuLS1cXG5uZXQvc21jL0tjb25maWc9MTQ9Y29uZmlnIFNNQ19ESUFHXFxubmV0L3NtYy9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5uZXQvc21jL0tjb25maWc6MTY6XFx0ZGVwZW5kcyBvbiBTTUNcXG5uZXQvc21jL0tjb25maWctMTctXFx0aGVscFxcbi0tXFxubmV0L3NtYy9LY29uZmlnPTIzPWNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcXG5uZXQvc21jL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG5uZXQvc21jL0tjb25maWc6MjU6XFx0ZGVwZW5kcyBvbiBTTUMgXFx1MDAyNlxcdTAwMjYgQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBCUEZfU1lTQ0FMTFxcbm5ldC9zbWMvS2NvbmZpZy0yNi1cXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzk6MDEuMzMzNzAyMDE0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3MjY0MTgzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWNvZGluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGRlcGVuZGVuY3kgY2hhaW4uLi4gYGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU2AuLi4gRElCUz8gVGhhdCBkb2Vzbid0IGltbWVkaWF0ZWx5IHJpbmcgYSBiZWxsLiBNeSBpbml0aWFsIHJlYWRpbmcgbWlnaHQgaGF2ZSBiZWVuIG9mZiwgb3IgcGVyaGFwcyB0aGVyZSdzIGEgdHlwbyBpbiBteSBtZW50YWwgcHJvY2Vzc2luZy4gTGV0IG1lIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoYXQuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFJpZ2h0LCBsZXQgbWUgcHVsbCB1cCBgbmV0L3NtYy9LY29uZmlnYCwgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBmaXJzdCB0ZW4gbGluZXMuIFRoYXQgc2hvdWxkIGNsZWFyIHRoaXMgdXAgcXVpY2tseS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM1MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM5OjA0LjkwNjM0Njg3NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNNQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBTTUMtUiBwcm92aWRlcyBhIFxcXCJzb2NrZXRzIG92ZXIgUkRNQVxcXCIgc29sdXRpb24gbWFraW5nIHVzZSBvZlxcbiAgIDc6XFx0XFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcXG4gICA4OlxcdFxcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cXG4gICA5OlxcdFxcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xcbiAgMTA6XFx0XFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOTowNC45MDY0MDQ2MjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDMxOTI0Mjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVGhpcyBcIkRJQlNcIiBCdXNpbmVzcyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIFwiRElCU1wiPyBUaGF0IHRlcm0ncyB0aHJvd2luZyBtZSBmb3IgYSBsb29wLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sg4oCTIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpc24ndCBzb21lIG9ic2N1cmUgdHlwbyBzbmVha2luZyBpbnRvIHRoZSBrZXJuZWwgdHJlZS4gTWF5YmUgdGhlcmUncyBhIG5ldyBjb21taXQgdGhhdCBzbGlwcGVkIHRocm91Z2g/IEFoLCBub3BlLCBzdGlsbCBcIkRJQlNcIi5cblxuQWxyaWdodCwgbGV0J3Mgc3RlcCBiYWNrLCBtYXliZSBJJ20gbG9va2luZyBhdCBpdCB3cm9uZy4gXCJESUJTXCIuLi4gaXMgdGhpcyByZWxhdGVkIHRvIElQdjYgc29tZWhvdz8gTWF5YmUgaXQncyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBUaGUgS2NvbmZpZyBmaWxlcyBhcmUgbXkgbmV4dCBzdG9wLiBUaW1lIHRvIHJ1biBhIGdyZXAgYW5kIHNlZSB3aGF0IHRoaXMgbXlzdGVyeSBcIkRJQlNcIiBpcyBhbGwgYWJvdXQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGtlcm5lbCBjb25maWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3MjEsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM5OjA4LjMzODMzMTgzOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NDUzNzA2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRElCU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXFxuZHJpdmVycy9kaWJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE1LVxcdGJvb2wgXFxcIkludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzk6MTAuMDIyODc0MzEyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5ODE1MzYzNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFNNQyBDb25maWd1cmF0aW9uIGFuZCBDb2RlIENoYW5nZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgRElCU2AgaXMgYW4gaW50ZXJuYWwgcGllY2Ugd2l0aGluIHRoaXMga2VybmVsIHRyZWUuIGBTTUNgIGNsZWFybHkgZGVwZW5kcyBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kLCBvZiBjb3Vyc2UsIGBESUJTYC4gU28sIHRvIGVuYWJsZSBgU01DYCwgYWxsIHRocmVlIGRlcGVuZGVuY2llcyBtdXN0IGJlIGVuYWJsZWQuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgYElORklOSUJBTkRgLCB0aGUgUkRNQSBzdWJzeXN0ZW0sIGhhcyBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMsIGp1c3QgdG8gYmUgdGhvcm91Z2guIEknbGwgbWFrZSBzdXJlIHRvIGFkZCBgU01DYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgIHRvIGBFbmFibGVDb25maWdzYCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBlbmFibGVkLlxuXG5Ob3csIGxldCdzIGdldCBpbnRvIHRoZSBjb2RlIGNoYW5nZXMuIEkndmUgZ290IGEgbGlzdCBvZiBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQ6IGBzbWNfZmlsbF9naWRfbGlzdGAsIGBzbWNfY29ubmVjdF9yZG1hX3YyX3ByZXBhcmVgLCBgX19zbWNfY29ubmVjdGAsIGBzbWNfZmluZF9yZG1hX3YyX2RldmljZV9zZXJ2YCwgYHNtY19saXN0ZW5fd29ya2AsIGBzbWNfaW5pdF9pbmZvX2ZyZWVgLCBgc21jcl9saW5rX2luaXRgLCBgc21jX2xncl9jcmVhdGVgLCBgc21jX2liX25kZXZfY2hhbmdlYCwgYHNtY19pYmRldl9yZWxlYXNlYCwgYHNtY19pYmRldl9nZXRgLCBgc21jX2liZGV2X3B1dGAsIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAsIGBzbWNfaWJkZXZfaW5pdF9lbmRgLCBgc21jX2liX2FkZF9kZXZgLCBgc21jX2liX3JlbW92ZV9kZXZgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYW5kIGBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkYC5cblxuTG9va2luZyBhdCB0aGF0IGxpc3QsIEknbGwgbmVlZCB0byBjb25jZW50cmF0ZSBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIG1vc3QgaW1wYWN0ZWQgYnkgdGhlIGNoYW5nZXM7IHRob3NlIGFyZSBgX19zbWNfY29ubmVjdGAsIGBzbWNfbGlzdGVuX3dvcmtgLCBgc21jX2liX2FkZF9kZXZgLCBgc21jX2liX3JlbW92ZV9kZXZgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBhbmQgYHNtY3JfbGlua19pbml0YC5cblxuT2theSwgbGV0J3Mgc2VlLCBgX19zbWNfY29ubmVjdGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaGVscHMgbmFycm93IHRoaW5ncyBkb3duLCB3aGljaCBtZWFucyBpdCBsaWtlbHkgaGFzIHNvbWUgc2NvcGUgcmVzdHJpY3Rpb25zLiBMZXQncyBjaGVjayBgc21jX2Nvbm5lY3RgLCBgc21jX2xpc3RlbmAsIGFuZCBgc21jX2xpc3Rlbl93b3JrYC4gSXQgbG9va3MgbGlrZSBgc21jX2Nvbm5lY3RgIGlzIHRoZSBgY29ubmVjdGAgc3lzY2FsbCBoYW5kbGVyIGZvciBBRl9TTUMuIGBzbWNfbGlzdGVuYCBtdXN0IGJlIHRoZSBgbGlzdGVuYCBzeXNjYWxsIGhhbmRsZXIuIGBzbWNfaWJfYWRkX2RldmAgaXMgY2FsbGVkIHdoZW4gYW4gSUIgZGV2aWNlIGlzIGFkZGVkLCBhbmQgYHNtY19sbGNfY2xpX2FkZF9saW5rYCBpcyBjYWxsZWQgd2hlbiBhbiBMTEMgQUREX0xJTksgbWVzc2FnZSBpcyByZWNlaXZlZC4gTm93IEknbGwgbmVlZCB0byBmb2N1cyBvbiB0aG9zZSBub24tc3RhdGljIGZ1bmN0aW9ucyBmb3IgYSBtb3JlIGRldGFpbGVkIHJldmlldy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA2OSwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOToxOS4wMDQ0MTMyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk0NTIxNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihpbnR8dm9pZHxzdGF0aWMgaW50fHN0YXRpYyB2b2lkKSBbYS16QS1aMC05X10rXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9zbWNfaWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19pYi5jPTQ1PXU4IGxvY2FsX3N5c3RlbWlkW1NNQ19TWVNURU1JRF9MRU5dO1xcdFxcdC8qIHVuaXF1ZSBzeXN0ZW0gaWRlbnRpZmllciAqL1xcbm5ldC9zbWMvc21jX2liLmMtNDYtXFxubmV0L3NtYy9zbWNfaWIuYzo0NzpzdGF0aWMgaW50IHNtY19pYl9tb2RpZnlfcXBfaW5pdChzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcXG5uZXQvc21jL3NtY19pYi5jLTQ4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNjEtXFxubmV0L3NtYy9zbWNfaWIuYzo2MjpzdGF0aWMgaW50IHNtY19pYl9tb2RpZnlfcXBfcnRyKHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2liLmMtNjMte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy05NC1cXG5uZXQvc21jL3NtY19pYi5jOjk1OmludCBzbWNfaWJfbW9kaWZ5X3FwX3J0cyhzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcXG5uZXQvc21jL3NtY19pYi5jLTk2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtMTEzLVxcbm5ldC9zbWMvc21jX2liLmM6MTE0OmludCBzbWNfaWJfbW9kaWZ5X3FwX2Vycm9yKHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2liLmMtMTE1LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtMTIyLVxcbm5ldC9zbWMvc21jX2liLmM6MTIzOmludCBzbWNfaWJfcmVhZHlfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcXG5uZXQvc21jL3NtY19pYi5jLTEyNC17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTE1NC1cXG5uZXQvc21jL3NtY19pYi5jOjE1NTpzdGF0aWMgaW50IHNtY19pYl9maWxsX21hYyhzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsIHU4IGlicG9ydClcXG5uZXQvc21jL3NtY19pYi5jLTE1Ni17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jPTE4MT1ib29sIHNtY19pYl9pc192YWxpZF9sb2NhbF9zeXN0ZW1pZCh2b2lkKVxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy0xODUtXFxubmV0L3NtYy9zbWNfaWIuYzoxODY6c3RhdGljIHZvaWQgc21jX2liX2luaXRfbG9jYWxfc3lzdGVtaWQodm9pZClcXG5uZXQvc21jL3NtY19pYi5jLTE4Ny17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jPTE5MT1ib29sIHNtY19pYl9wb3J0X2FjdGl2ZShzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsIHU4IGlicG9ydClcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtMTk1LVxcbm5ldC9zbWMvc21jX2liLmM6MTk2OmludCBzbWNfaWJfZmluZF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsIF9fYmUzMiBzYWRkciwgX19iZTMyIGRhZGRyLFxcbm5ldC9zbWMvc21jX2liLmMtMTk3LVxcdFxcdCAgICAgIHU4IG5leHRob3BfbWFjW10sIHU4ICp1c2VzX2dhdGV3YXkpXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTIyNy1cXG5uZXQvc21jL3NtY19pYi5jOjIyODpzdGF0aWMgaW50IHNtY19pYl9kZXRlcm1pbmVfZ2lkX3JjdShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5uZXQvc21jL3NtY19pYi5jLTIyOS1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGliX2dpZF9hdHRyICphdHRyLFxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy0yNzMtLyogZGV0ZXJtaW5lIHRoZSBnaWQgZm9yIGFuIGliLWRldmljZSBwb3J0IGFuZCB2bGFuIGlkICovXFxubmV0L3NtYy9zbWNfaWIuYzoyNzQ6aW50IHNtY19pYl9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgdTggaWJwb3J0LFxcbm5ldC9zbWMvc21jX2liLmMtMjc1LVxcdFxcdFxcdCB1bnNpZ25lZCBzaG9ydCB2bGFuX2lkLCB1OCBnaWRbXSwgdTggKnNnaWRfaW5kZXgsXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jPTMwNz1zdGF0aWMgYm9vbCBzbWNfaWJfY2hlY2tfbGlua19naWQodTggZ2lkW1NNQ19HSURfU0laRV0sIGJvb2wgc21jcnYyLFxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy0zMzItLyogY2hlY2sgYWxsIGxpbmtzIGlmIHRoZSBnaWQgaXMgc3RpbGwgZGVmaW5lZCBvbiBzbWNpYmRldiAqL1xcbm5ldC9zbWMvc21jX2liLmM6MzMzOnN0YXRpYyB2b2lkIHNtY19pYl9naWRfY2hlY2soc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2LCB1OCBpYnBvcnQpXFxubmV0L3NtYy9zbWNfaWIuYy0zMzQte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy0zNTctXFxubmV0L3NtYy9zbWNfaWIuYzozNTg6c3RhdGljIGludCBzbWNfaWJfcmVtZW1iZXJfcG9ydF9hdHRyKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgdTggaWJwb3J0KVxcbm5ldC9zbWMvc21jX2liLmMtMzU5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtMzgwLS8qIHByb2Nlc3MgY29udGV4dCB3cmFwcGVyIGZvciBtaWdodF9zbGVlcCBzbWNfaWJfcmVtZW1iZXJfcG9ydF9hdHRyICovXFxubmV0L3NtYy9zbWNfaWIuYzozODE6c3RhdGljIHZvaWQgc21jX2liX3BvcnRfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3NtYy9zbWNfaWIuYy0zODIte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy00MDEtLyogY2FuIGJlIGNhbGxlZCBpbiBJUlEgY29udGV4dCAqL1xcbm5ldC9zbWMvc21jX2liLmM6NDAyOnN0YXRpYyB2b2lkIHNtY19pYl9nbG9iYWxfZXZlbnRfaGFuZGxlcihzdHJ1Y3QgaWJfZXZlbnRfaGFuZGxlciAqaGFuZGxlcixcXG5uZXQvc21jL3NtY19pYi5jLTQwMy1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWJfZXZlbnQgKmliZXZlbnQpXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTQ1MC1cXG5uZXQvc21jL3NtY19pYi5jOjQ1MTp2b2lkIHNtY19pYl9kZWFsbG9jX3Byb3RlY3Rpb25fZG9tYWluKHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2liLmMtNDUyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNDU3LVxcbm5ldC9zbWMvc21jX2liLmM6NDU4OmludCBzbWNfaWJfY3JlYXRlX3Byb3RlY3Rpb25fZG9tYWluKHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2liLmMtNDU5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmM9NDY5PXN0YXRpYyBib29sIHNtY3JfZGlhZ19pc19kZXZfY3JpdGljYWwoc3RydWN0IHNtY19sZ3JfbGlzdCAqc21jX2xncixcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNDk1LVxcbm5ldC9zbWMvc21jX2liLmM6NDk2OnN0YXRpYyBpbnQgc21jX25sX2hhbmRsZV9kZXZfcG9ydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9zbWMvc21jX2liLmMtNDk3LVxcdFxcdFxcdFxcdCAgc3RydWN0IGliX2RldmljZSAqaWJkZXYsXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jPTUzNj1zdGF0aWMgYm9vbCBzbWNfbmxfaGFuZGxlX3BjaV92YWx1ZXMoY29uc3Qgc3RydWN0IHNtY19wY2lfZGV2ICpzbWNfcGNpX2RldixcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNTUxLVxcbm5ldC9zbWMvc21jX2liLmM6NTUyOnN0YXRpYyBpbnQgc21jX25sX2hhbmRsZV9zbWNyX2RldihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsXFxubmV0L3NtYy9zbWNfaWIuYy01NTMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy02MDQtXFxubmV0L3NtYy9zbWNfaWIuYzo2MDU6c3RhdGljIHZvaWQgc21jX25sX3ByZXBfc21jcl9kZXYoc3RydWN0IHNtY19pYl9kZXZpY2VzICpkZXZfbGlzdCxcXG5uZXQvc21jL3NtY19pYi5jLTYwNi1cXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNjI3LVxcbm5ldC9zbWMvc21jX2liLmM6NjI4OmludCBzbWNyX25sX2dldF9kZXZpY2Uoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9zbWMvc21jX2liLmMtNjI5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNjMzLVxcbm5ldC9zbWMvc21jX2liLmM6NjM0OnN0YXRpYyB2b2lkIHNtY19pYl9xcF9ldmVudF9oYW5kbGVyKHN0cnVjdCBpYl9ldmVudCAqaWJldmVudCwgdm9pZCAqcHJpdilcXG5uZXQvc21jL3NtY19pYi5jLTYzNS17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTY1NC1cXG5uZXQvc21jL3NtY19pYi5jOjY1NTp2b2lkIHNtY19pYl9kZXN0cm95X3F1ZXVlX3BhaXIoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfaWIuYy02NTYte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy02NjItLyogY3JlYXRlIGEgcXVldWUgcGFpciB3aXRoaW4gdGhlIHByb3RlY3Rpb24gZG9tYWluIGZvciBhIGxpbmsgKi9cXG5uZXQvc21jL3NtY19pYi5jOjY2MzppbnQgc21jX2liX2NyZWF0ZV9xdWV1ZV9wYWlyKHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2liLmMtNjY0LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNjk0LVxcbm5ldC9zbWMvc21jX2liLmM6Njk1OnZvaWQgc21jX2liX3B1dF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBpYl9tciAqbXIpXFxubmV0L3NtYy9zbWNfaWIuYy02OTYte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy02OTktXFxubmV0L3NtYy9zbWNfaWIuYzo3MDA6c3RhdGljIGludCBzbWNfaWJfbWFwX21yX3NnKHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9zbG90LCB1OCBsaW5rX2lkeClcXG5uZXQvc21jL3NtY19pYi5jLTcwMS17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTcxNC0vKiBBbGxvY2F0ZSBhIG1lbW9yeSByZWdpb24gYW5kIG1hcCB0aGUgZG1hIG1hcHBlZCBTRyBsaXN0IG9mIGJ1Zl9zbG90ICovXFxubmV0L3NtYy9zbWNfaWIuYzo3MTU6aW50IHNtY19pYl9nZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3QgaWJfcGQgKnBkLCBpbnQgYWNjZXNzX2ZsYWdzLFxcbm5ldC9zbWMvc21jX2liLmMtNzE2LVxcdFxcdFxcdCAgICAgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX3Nsb3QsIHU4IGxpbmtfaWR4KVxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYz03Mzg9Ym9vbCBzbWNfaWJfaXNfc2dfbmVlZF9zeW5jKHN0cnVjdCBzbWNfbGluayAqbG5rLFxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy03NjQtLyogc3luY2hyb25pemUgYnVmZmVyIHVzYWdlIGZvciBjcHUgYWNjZXNzICovXFxubmV0L3NtYy9zbWNfaWIuYzo3NjU6dm9pZCBzbWNfaWJfc3luY19zZ19mb3JfY3B1KHN0cnVjdCBzbWNfbGluayAqbG5rLFxcbm5ldC9zbWMvc21jX2liLmMtNzY2LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfc2xvdCxcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNzg3LS8qIHN5bmNocm9uaXplIGJ1ZmZlciB1c2FnZSBmb3IgZGV2aWNlIGFjY2VzcyAqL1xcbm5ldC9zbWMvc21jX2liLmM6Nzg4OnZvaWQgc21jX2liX3N5bmNfc2dfZm9yX2RldmljZShzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcXG5uZXQvc21jL3NtY19pYi5jLTc4OS1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX3Nsb3QsXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTgxMC0vKiBNYXAgYSBuZXcgVFggb3IgUlggYnVmZmVyIFNHLXRhYmxlIHRvIERNQSAqL1xcbm5ldC9zbWMvc21jX2liLmM6ODExOmludCBzbWNfaWJfYnVmX21hcF9zZyhzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcXG5uZXQvc21jL3NtY19pYi5jLTgxMi1cXHRcXHQgICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfc2xvdCxcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtODI2LVxcbm5ldC9zbWMvc21jX2liLmM6ODI3OnZvaWQgc21jX2liX2J1Zl91bm1hcF9zZyhzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcXG5uZXQvc21jL3NtY19pYi5jLTgyOC1cXHRcXHRcXHQgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX3Nsb3QsXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jPTg0MT1sb25nIHNtY19pYl9zZXR1cF9wZXJfaWJkZXYoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy04ODMtXFxubmV0L3NtYy9zbWNfaWIuYzo4ODQ6c3RhdGljIHZvaWQgc21jX2liX2NsZWFudXBfcGVyX2liZGV2KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcXG5uZXQvc21jL3NtY19pYi5jLTg4NS17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jPTg5Nz1zdGF0aWMgc3RydWN0IGliX2NsaWVudCBzbWNfaWJfY2xpZW50O1xcbm5ldC9zbWMvc21jX2liLmMtODk4LVxcbm5ldC9zbWMvc21jX2liLmM6ODk5OnN0YXRpYyB2b2lkIHNtY19jb3B5X25ldGRldl9pZmluZGV4KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgaW50IHBvcnQpXFxubmV0L3NtYy9zbWNfaWIuYy05MDAte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy05MTAtXFxubmV0L3NtYy9zbWNfaWIuYzo5MTE6dm9pZCBzbWNfaWJfbmRldl9jaGFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpXFxubmV0L3NtYy9zbWNfaWIuYy05MTIte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy05MzYtXFxubmV0L3NtYy9zbWNfaWIuYzo5Mzc6c3RhdGljIHZvaWQgc21jX2liZGV2X3JlbGVhc2Uoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxcbm5ldC9zbWMvc21jX2liLmMtOTM4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtOTQyLVxcbm5ldC9zbWMvc21jX2liLmM6OTQzOnZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXFxubmV0L3NtYy9zbWNfaWIuYy05NDQte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy05NDctXFxubmV0L3NtYy9zbWNfaWIuYzo5NDg6dm9pZCBzbWNfaWJkZXZfcHV0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcXG5uZXQvc21jL3NtY19pYi5jLTk0OS17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTk1My1cXG5uZXQvc21jL3NtY19pYi5jOjk1NDppbnQgc21jX2liZGV2X2luaXRfYmVnaW4oc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxcbm5ldC9zbWMvc21jX2liLmMtOTU1LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtOTY2LVxcbm5ldC9zbWMvc21jX2liLmM6OTY3OnZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcXG5uZXQvc21jL3NtY19pYi5jLTk2OC17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTk3NS0vKiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgaWJfcmVnaXN0ZXJfY2xpZW50KCkgKi9cXG5uZXQvc21jL3NtY19pYi5jOjk3NjpzdGF0aWMgaW50IHNtY19pYl9hZGRfZGV2KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2KVxcbm5ldC9zbWMvc21jX2liLmMtOTc3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtMTAzNS0vKiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgaWJfdW5yZWdpc3Rlcl9jbGllbnQoKSAqL1xcbm5ldC9zbWMvc21jX2liLmM6MTAzNjpzdGF0aWMgdm9pZCBzbWNfaWJfcmVtb3ZlX2RldihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdm9pZCAqY2xpZW50X2RhdGEpXFxubmV0L3NtYy9zbWNfaWIuYy0xMDM3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmM9MTA2MT1pbnQgX19pbml0IHNtY19pYl9yZWdpc3Rlcl9jbGllbnQodm9pZClcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtMTA2Ni1cXG5uZXQvc21jL3NtY19pYi5jOjEwNjc6dm9pZCBzbWNfaWJfdW5yZWdpc3Rlcl9jbGllbnQodm9pZClcXG5uZXQvc21jL3NtY19pYi5jLTEwNjgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOToxOS4wNTM4NzAxNzVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM0OTQzNjg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNQyBJQiBEZXZpY2UgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBTTUMgY29kZSBhbmQgaW1tZWRpYXRlbHkgbm90aWNlIHRoYXQgYHNtY19pYl9hZGRfZGV2YCBhbmQgYHNtY19pYl9yZW1vdmVfZGV2YCBhcmUgc3RhdGljLiBUaGF0J3Mgc3RhbmRhcmQgcHJhY3RpY2UsIGJ1dCBnb29kIHRvIGtlZXAgaW4gbWluZCBmb3Igc2NvcGluZy4gV2FpdCBhIG1pbnV0ZS4uLiBgc21jX2liX2FkZF9kZXZgIGlzIGFjdHVhbGx5IGEgY2FsbGJhY2shIEl0J3MgaW52b2tlZCBieSBgaWJfcmVnaXN0ZXJfY2xpZW50KClgIHdoZW4gYW4gSW5maW5pQmFuZCBkZXZpY2UgaXMgYWRkZWQuIFRoYXQgbWFrZXMgbW9yZSBzZW5zZTsgaXQgaGFzIHRvIGJlIGhvdyB0aGUgU01DIGxheWVyIGhvb2tzIGludG8gdGhlIElCIHN1YnN5c3RlbS4gTm93LCB3aGF0J3MgdGhpcyBgc21jX2xpc3Rlbl93b3JrYCBmdW5jdGlvbj8gQWgsIGl0J3MgYSB3b3JrcXVldWUgZnVuY3Rpb24uIFRoYXQgaGludHMgYXQgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcsIHdoaWNoIGlzIG9mdGVuIGNydWNpYWwgZm9yIG5ldHdvcmsgaW50ZXJhY3Rpb25zLiBGaW5hbGx5LCBgc21jX2Nvbm5lY3RgIGFuZCBgc21jX2xpc3RlbmAgYXJlIHRoZSByZWFsIHN5c2NhbGwgZW50cnkgcG9pbnRzLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byBgbmV0L3NtYy9hZl9zbWMuY2AgdG8gc2VlIGhvdyB0aG9zZSBhcmUgaW1wbGVtZW50ZWQgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggZXZlcnl0aGluZyBlbHNlIEkndmUganVzdCBpZGVudGlmaWVkLiBUaW1lIHRvIGRpdmUgZGVlcGVyIGFuZCBzZWUgaG93IHRoZSBwaWVjZXMgZml0IHRvZ2V0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDE4MCwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOToyMy40MDMzMDk1NTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzIxMDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oaW50fHZvaWR8c3RhdGljIGludHxzdGF0aWMgdm9pZCkgW2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvYWZfc21jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9hZl9zbWMuYz03MT1zdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdFxcdCpzbWNfY2xvc2Vfd3E7XFx0Lyogd3EgZm9yIGNsb3NlIHdvcmsgKi9cXG5uZXQvc21jL2FmX3NtYy5jLTcyLVxcbm5ldC9zbWMvYWZfc21jLmM6NzM6c3RhdGljIHZvaWQgc21jX3RjcF9saXN0ZW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7XFxubmV0L3NtYy9hZl9zbWMuYzo3NDpzdGF0aWMgdm9pZCBzbWNfY29ubmVjdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqKTtcXG5uZXQvc21jL2FmX3NtYy5jLTc1LVxcbm5ldC9zbWMvYWZfc21jLmM6NzY6aW50IHNtY19ubF9kdW1wX2hzX2xpbWl0YXRpb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9zbWMvYWZfc21jLmMtNzcte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xMDItXFxubmV0L3NtYy9hZl9zbWMuYzoxMDM6aW50IHNtY19ubF9lbmFibGVfaHNfbGltaXRhdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9zbWMvYWZfc21jLmMtMTA0LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTA4LVxcbm5ldC9zbWMvYWZfc21jLmM6MTA5OmludCBzbWNfbmxfZGlzYWJsZV9oc19saW1pdGF0aW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3NtYy9hZl9zbWMuYy0xMTAte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xMTQtXFxubmV0L3NtYy9hZl9zbWMuYzoxMTU6c3RhdGljIHZvaWQgc21jX3NldF9rZWVwYWxpdmUoc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKVxcbm5ldC9zbWMvYWZfc21jLmMtMTE2LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MTk0PXN0cnVjdCBzbWNfaGFzaGluZm8gc21jX3Y2X2hhc2hpbmZvID0ge1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xOTgtXFxubmV0L3NtYy9hZl9zbWMuYzoxOTk6aW50IHNtY19oYXNoX3NrKHN0cnVjdCBzb2NrICpzaylcXG5uZXQvc21jL2FmX3NtYy5jLTIwMC17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTIxMy1cXG5uZXQvc21jL2FmX3NtYy5jOjIxNDp2b2lkIHNtY191bmhhc2hfc2soc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9zbWMvYWZfc21jLmMtMjE1LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjI3LSAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MjI4OnZvaWQgc21jX3JlbGVhc2VfY2Ioc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9zbWMvYWZfc21jLmMtMjI5LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MjYyPUVYUE9SVF9TWU1CT0xfR1BMKHNtY19wcm90bzYpO1xcbm5ldC9zbWMvYWZfc21jLmMtMjYzLVxcbm5ldC9zbWMvYWZfc21jLmM6MjY0OnN0YXRpYyB2b2lkIHNtY19mYmFja19yZXN0b3JlX2NhbGxiYWNrcyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG5uZXQvc21jL2FmX3NtYy5jLTI2NS17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTI3OC1cXG5uZXQvc21jL2FmX3NtYy5jOjI3OTpzdGF0aWMgdm9pZCBzbWNfcmVzdG9yZV9mYWxsYmFja19jaGFuZ2VzKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbm5ldC9zbWMvYWZfc21jLmMtMjgwLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjg3LVxcbm5ldC9zbWMvYWZfc21jLmM6Mjg4OnN0YXRpYyBpbnQgX19zbWNfcmVsZWFzZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG5uZXQvc21jL2FmX3NtYy5jLTI4OS17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTMyNy1cXG5uZXQvc21jL2FmX3NtYy5jOjMyODppbnQgc21jX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG5uZXQvc21jL2FmX3NtYy5jLTMyOS17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTM3My1cXG5uZXQvc21jL2FmX3NtYy5jOjM3NDpzdGF0aWMgdm9pZCBzbWNfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9zbWMvYWZfc21jLmMtMzc1LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MzkzPXN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgc21jX3Nsb2NrX2tleTtcXG5uZXQvc21jL2FmX3NtYy5jLTM5NC1cXG5uZXQvc21jL2FmX3NtYy5jOjM5NTp2b2lkIHNtY19za19pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBpbnQgcHJvdG9jb2wpXFxubmV0L3NtYy9hZl9zbWMuYy0zOTYte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYz00MjE9c3RhdGljIHN0cnVjdCBzb2NrICpzbWNfc29ja19hbGxvYyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTQzNy1cXG5uZXQvc21jL2FmX3NtYy5jOjQzODppbnQgc21jX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVhZGRyLFxcbm5ldC9zbWMvYWZfc21jLmMtNDM5LVxcdCAgICAgaW50IGFkZHJfbGVuKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy01MDAtLyogaWYgc2V0LCB1c2UgdmFsdWUgc2V0IGJ5IHNldHNvY2tvcHQoKSAtIGVsc2UgdXNlIElQdjQgb3IgU01DIHN5c2N0bCB2YWx1ZSAqL1xcbm5ldC9zbWMvYWZfc21jLmM6NTAxOnN0YXRpYyB2b2lkIHNtY19hZGp1c3Rfc29ja19idWZzaXplcyhzdHJ1Y3Qgc29jayAqbnNrLCBzdHJ1Y3Qgc29jayAqb3NrLFxcbm5ldC9zbWMvYWZfc21jLmMtNTAyLVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgbG9uZyBtYXNrKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy01MTAtXFxubmV0L3NtYy9hZl9zbWMuYzo1MTE6c3RhdGljIHZvaWQgc21jX2NvcHlfc29ja19zZXR0aW5ncyhzdHJ1Y3Qgc29jayAqbnNrLCBzdHJ1Y3Qgc29jayAqb3NrLFxcbm5ldC9zbWMvYWZfc21jLmMtNTEyLVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGxvbmcgbWFzaylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNTI5LVxcbm5ldC9zbWMvYWZfc21jLmM6NTMwOnN0YXRpYyB2b2lkIHNtY19jb3B5X3NvY2tfc2V0dGluZ3NfdG9fY2xjKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbm5ldC9zbWMvYWZfc21jLmMtNTMxLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNTM5LS8qIGNvcHkgb25seSBzZXR0aW5ncyBhbmQgZmxhZ3MgcmVsZXZhbnQgZm9yIHNtYyBmcm9tIGNsYyB0byBzbWMgc29ja2V0ICovXFxubmV0L3NtYy9hZl9zbWMuYzo1NDA6c3RhdGljIHZvaWQgc21jX2NvcHlfc29ja19zZXR0aW5nc190b19zbWMoc3RydWN0IHNtY19zb2NrICpzbWMpXFxubmV0L3NtYy9hZl9zbWMuYy01NDEte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy01NDUtLyogcmVnaXN0ZXIgdGhlIG5ldyB2emFsbG9jZWQgc25kYnVmIG9uIGFsbCBsaW5rcyAqL1xcbm5ldC9zbWMvYWZfc21jLmM6NTQ2OnN0YXRpYyBpbnQgc21jcl9sZ3JfcmVnX3NuZGJ1ZnMoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvYWZfc21jLmMtNTQ3LVxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNuZF9kZXNjKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy01NjgtLyogcmVnaXN0ZXIgdGhlIG5ldyBybWIgb24gYWxsIGxpbmtzICovXFxubmV0L3NtYy9hZl9zbWMuYzo1Njk6c3RhdGljIGludCBzbWNyX2xncl9yZWdfcm1icyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9hZl9zbWMuYy01NzAtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNjE3LVxcbm5ldC9zbWMvYWZfc21jLmM6NjE4OnN0YXRpYyBpbnQgc21jcl9jbG50X2NvbmZfZmlyc3RfbGluayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG5uZXQvc21jL2FmX3NtYy5jLTYxOS17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jPTY5MD1zdGF0aWMgYm9vbCBzbWNfaXNhc2NpaShjaGFyICpob3N0bmFtZSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNjk5LVxcbm5ldC9zbWMvYWZfc21jLmM6NzAwOnN0YXRpYyB2b2lkIHNtY19jb25uX3NhdmVfcGVlcl9pbmZvX2ZjZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTcwMS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2NsY19tc2dfYWNjZXB0X2NvbmZpcm0gKmNsYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNzI2LVxcbm5ldC9zbWMvYWZfc21jLmM6NzI3OnN0YXRpYyB2b2lkIHNtY3JfY29ubl9zYXZlX3BlZXJfaW5mbyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTcyOC1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqY2xjKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy03MzgtXFxubmV0L3NtYy9hZl9zbWMuYzo3Mzk6c3RhdGljIHZvaWQgc21jZF9jb25uX3NhdmVfcGVlcl9pbmZvKHN0cnVjdCBzbWNfc29jayAqc21jLFxcbm5ldC9zbWMvYWZfc21jLmMtNzQwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNtY19jbGNfbXNnX2FjY2VwdF9jb25maXJtICpjbGMpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTc1MS1cXG5uZXQvc21jL2FmX3NtYy5jOjc1MjpzdGF0aWMgdm9pZCBzbWNfY29ubl9zYXZlX3BlZXJfaW5mbyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTc1My1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNtY19jbGNfbXNnX2FjY2VwdF9jb25maXJtICpjbGMpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTc2MS1cXG5uZXQvc21jL2FmX3NtYy5jOjc2MjpzdGF0aWMgdm9pZCBzbWNfbGlua19zYXZlX3BlZXJfaW5mbyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9hZl9zbWMuYy03NjMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy03NzItXFxubmV0L3NtYy9hZl9zbWMuYzo3NzM6c3RhdGljIHZvaWQgc21jX3N0YXRfaW5jX2ZiYWNrX3Jzbl9jbnQoc3RydWN0IHNtY19zb2NrICpzbWMsXFxubmV0L3NtYy9hZl9zbWMuYy03NzQtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzbWNfc3RhdHNfZmJhY2sgKmZiYWNrX2FycilcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNzkwLVxcbm5ldC9zbWMvYWZfc21jLmM6NzkxOnN0YXRpYyB2b2lkIHNtY19zdGF0X2ZhbGxiYWNrKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbm5ldC9zbWMvYWZfc21jLmMtNzkyLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtODA2LS8qIG11c3QgYmUgY2FsbGVkIHVuZGVyIHJjdSByZWFkIGxvY2sgKi9cXG5uZXQvc21jL2FmX3NtYy5jOjgwNzpzdGF0aWMgdm9pZCBzbWNfZmJhY2tfd2FrZXVwX3dhaXRxdWV1ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgdm9pZCAqa2V5KVxcbm5ldC9zbWMvYWZfc21jLmMtODA4LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtODMwLVxcbm5ldC9zbWMvYWZfc21jLmM6ODMxOnN0YXRpYyBpbnQgc21jX2ZiYWNrX21hcmtfd29rZW4od2FpdF9xdWV1ZV9lbnRyeV90ICp3YWl0LFxcbm5ldC9zbWMvYWZfc21jLmMtODMyLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBtb2RlLCBpbnQgc3luYywgdm9pZCAqa2V5KVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy04NDEtXFxubmV0L3NtYy9hZl9zbWMuYzo4NDI6c3RhdGljIHZvaWQgc21jX2ZiYWNrX2ZvcndhcmRfd2FrZXVwKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc29jayAqY2xjc2ssXFxubmV0L3NtYy9hZl9zbWMuYy04NDMtXFx0XFx0XFx0XFx0ICAgICB2b2lkICgqY2xjc29ja19jYWxsYmFjaykoc3RydWN0IHNvY2sgKnNrKSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtODYzLVxcbm5ldC9zbWMvYWZfc21jLmM6ODY0OnN0YXRpYyB2b2lkIHNtY19mYmFja19zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNvY2sgKmNsY3NrKVxcbm5ldC9zbWMvYWZfc21jLmMtODY1LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtODc1LVxcbm5ldC9zbWMvYWZfc21jLmM6ODc2OnN0YXRpYyB2b2lkIHNtY19mYmFja19kYXRhX3JlYWR5KHN0cnVjdCBzb2NrICpjbGNzaylcXG5uZXQvc21jL2FmX3NtYy5jLTg3Ny17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTg4Ny1cXG5uZXQvc21jL2FmX3NtYy5jOjg4ODpzdGF0aWMgdm9pZCBzbWNfZmJhY2tfd3JpdGVfc3BhY2Uoc3RydWN0IHNvY2sgKmNsY3NrKVxcbm5ldC9zbWMvYWZfc21jLmMtODg5LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtODk5LVxcbm5ldC9zbWMvYWZfc21jLmM6OTAwOnN0YXRpYyB2b2lkIHNtY19mYmFja19lcnJvcl9yZXBvcnQoc3RydWN0IHNvY2sgKmNsY3NrKVxcbm5ldC9zbWMvYWZfc21jLmMtOTAxLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtOTExLVxcbm5ldC9zbWMvYWZfc21jLmM6OTEyOnN0YXRpYyB2b2lkIHNtY19mYmFja19yZXBsYWNlX2NhbGxiYWNrcyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG5uZXQvc21jL2FmX3NtYy5jLTkxMy17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTkzMC1cXG5uZXQvc21jL2FmX3NtYy5jOjkzMTpzdGF0aWMgaW50IHNtY19zd2l0Y2hfdG9fZmFsbGJhY2soc3RydWN0IHNtY19zb2NrICpzbWMsIGludCByZWFzb25fY29kZSlcXG5uZXQvc21jL2FmX3NtYy5jLTkzMi17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTk2My0vKiBmYWxsIGJhY2sgZHVyaW5nIGNvbm5lY3QgKi9cXG5uZXQvc21jL2FmX3NtYy5jOjk2NDpzdGF0aWMgaW50IHNtY19jb25uZWN0X2ZhbGxiYWNrKHN0cnVjdCBzbWNfc29jayAqc21jLCBpbnQgcmVhc29uX2NvZGUpXFxubmV0L3NtYy9hZl9zbWMuYy05NjUte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy05ODMtLyogZGVjbGluZSBhbmQgZmFsbCBiYWNrIGR1cmluZyBjb25uZWN0ICovXFxubmV0L3NtYy9hZl9zbWMuYzo5ODQ6c3RhdGljIGludCBzbWNfY29ubmVjdF9kZWNsaW5lX2ZhbGxiYWNrKHN0cnVjdCBzbWNfc29jayAqc21jLCBpbnQgcmVhc29uX2NvZGUsXFxubmV0L3NtYy9hZl9zbWMuYy05ODUtXFx0XFx0XFx0XFx0XFx0dTggdmVyc2lvbilcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTAwNy1cXG5uZXQvc21jL2FmX3NtYy5jOjEwMDg6c3RhdGljIHZvaWQgc21jX2Nvbm5fYWJvcnQoc3RydWN0IHNtY19zb2NrICpzbWMsIGludCBsb2NhbF9maXJzdClcXG5uZXQvc21jL2FmX3NtYy5jLTEwMDkte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xMDIzLS8qIGNhbGxlZCBmb3IgY29ubmVjdCBhbmQgbGlzdGVuICovXFxubmV0L3NtYy9hZl9zbWMuYzoxMDI0OnN0YXRpYyBpbnQgc21jX2ZpbmRfcmRtYV9kZXZpY2Uoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxubmV0L3NtYy9hZl9zbWMuYy0xMDI1LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTAzOS0vKiBjYWxsZWQgZm9yIGNvbm5lY3QgYW5kIGxpc3RlbiAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTA0MDpzdGF0aWMgaW50IHNtY19maW5kX2lzbV9kZXZpY2Uoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxubmV0L3NtYy9hZl9zbWMuYy0xMDQxLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MTA1Mj1zdGF0aWMgYm9vbCBzbWNfZmluZF9pc21fdjJfaXNfdW5pcXVlX2NoaWQodTE2IGNoaWQsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmksXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTEwNjUtICovXFxubmV0L3NtYy9hZl9zbWMuYzoxMDY2OnN0YXRpYyBpbnQgc21jX2ZpbmRfaXNtX3YyX2RldmljZV9jbG50KHN0cnVjdCBzbWNfc29jayAqc21jLFxcbm5ldC9zbWMvYWZfc21jLmMtMTA2Ny1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTExMi0vKiBDaGVjayBmb3IgVkxBTiBJRCBhbmQgcmVnaXN0ZXIgaXQgb24gSVNNIGRldmljZSBqdXN0IGZvciBDTEMgaGFuZHNoYWtlICovXFxubmV0L3NtYy9hZl9zbWMuYzoxMTEzOnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfaXNtX3ZsYW5fc2V0dXAoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG5uZXQvc21jL2FmX3NtYy5jLTExMTQte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xMTE5LVxcbm5ldC9zbWMvYWZfc21jLmM6MTEyMDpzdGF0aWMgaW50IHNtY19maW5kX3Byb3Bvc2FsX2RldmljZXMoc3RydWN0IHNtY19zb2NrICpzbWMsXFxubmV0L3NtYy9hZl9zbWMuYy0xMTIxLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTE3Mi0gKi9cXG5uZXQvc21jL2FmX3NtYy5jOjExNzM6c3RhdGljIGludCBzbWNfY29ubmVjdF9pc21fdmxhbl9jbGVhbnVwKHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxubmV0L3NtYy9hZl9zbWMuYy0xMTc0LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTE4Ny0vKiBDTEMgaGFuZHNoYWtlIGR1cmluZyBjb25uZWN0ICovXFxubmV0L3NtYy9hZl9zbWMuYzoxMTg4OnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfY2xjKHN0cnVjdCBzbWNfc29jayAqc21jLFxcbm5ldC9zbWMvYWZfc21jLmMtMTE4OS1cXHRcXHRcXHQgICBzdHJ1Y3Qgc21jX2NsY19tc2dfYWNjZXB0X2NvbmZpcm0gKmFjbGMsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTEyMDItXFxubmV0L3NtYy9hZl9zbWMuYzoxMjAzOnZvaWQgc21jX2ZpbGxfZ2lkX2xpc3Qoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9hZl9zbWMuYy0xMjA0LVxcdFxcdCAgICAgICBzdHJ1Y3Qgc21jX2dpZGxpc3QgKmdpZGxpc3QsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTEyMzAtXFxubmV0L3NtYy9hZl9zbWMuYzoxMjMxOnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfcmRtYV92Ml9wcmVwYXJlKHN0cnVjdCBzbWNfc29jayAqc21jLFxcbm5ldC9zbWMvYWZfc21jLmMtMTIzMi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19jbGNfbXNnX2FjY2VwdF9jb25maXJtICphY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xMjY2LS8qIHNldHVwIGZvciBSRE1BIGNvbm5lY3Rpb24gb2YgY2xpZW50ICovXFxubmV0L3NtYy9hZl9zbWMuYzoxMjY3OnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfcmRtYShzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTEyNjgtXFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYyxcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MTM5OT1zbWNfdjJfZGV0ZXJtaW5lX2FjY2VwdGVkX2NoaWQoc3RydWN0IHNtY19jbGNfbXNnX2FjY2VwdF9jb25maXJtICphY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xNDE1LS8qIHNldHVwIGZvciBJU00gY29ubmVjdGlvbiBvZiBjbGllbnQgKi9cXG5uZXQvc21jL2FmX3NtYy5jOjE0MTY6c3RhdGljIGludCBzbWNfY29ubmVjdF9pc20oc3RydWN0IHNtY19zb2NrICpzbWMsXFxubmV0L3NtYy9hZl9zbWMuYy0xNDE3LVxcdFxcdFxcdCAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYyxcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTQ5OC0vKiBjaGVjayBpZiByZWNlaXZlZCBhY2NlcHQgdHlwZSBhbmQgdmVyc2lvbiBtYXRjaGVzIGEgcHJvcG9zZWQgb25lICovXFxubmV0L3NtYy9hZl9zbWMuYzoxNDk5OnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfY2hlY2tfYWNsYyhzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxcbm5ldC9zbWMvYWZfc21jLmMtMTUwMC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTUxOS0vKiBwZXJmb3JtIHN0ZXBzIGJlZm9yZSBhY3R1YWxseSBjb25uZWN0aW5nICovXFxubmV0L3NtYy9hZl9zbWMuYzoxNTIwOnN0YXRpYyBpbnQgX19zbWNfY29ubmVjdChzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG5uZXQvc21jL2FmX3NtYy5jLTE1MjEte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xNjA5LVxcbm5ldC9zbWMvYWZfc21jLmM6MTYxMDpzdGF0aWMgdm9pZCBzbWNfY29ubmVjdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvc21jL2FmX3NtYy5jLTE2MTEte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xNjU1LVxcbm5ldC9zbWMvYWZfc21jLmM6MTY1NjppbnQgc21jX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIsXFxubmV0L3NtYy9hZl9zbWMuYy0xNjU3LVxcdFxcdGludCBhbGVuLCBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE3MzYtXFxubmV0L3NtYy9hZl9zbWMuYzoxNzM3OnN0YXRpYyBpbnQgc21jX2NsY3NvY2tfYWNjZXB0KHN0cnVjdCBzbWNfc29jayAqbHNtYywgc3RydWN0IHNtY19zb2NrICoqbmV3X3NtYylcXG5uZXQvc21jL2FmX3NtYy5jLTE3Mzgte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xNzk3LSAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTc5ODpzdGF0aWMgdm9pZCBzbWNfYWNjZXB0X2VucXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwgc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9zbWMvYWZfc21jLmMtMTc5OS17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE4MDktLyogcmVtb3ZlIGEgc29ja2V0IGZyb20gdGhlIGFjY2VwdCBxdWV1ZSBvZiBpdHMgcGFyZW50YWwgbGlzdGVuaW5nIHNvY2tldCAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTgxMDpzdGF0aWMgdm9pZCBzbWNfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spXFxubmV0L3NtYy9hZl9zbWMuYy0xODExLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MTgyND1zdHJ1Y3Qgc29jayAqc21jX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE4NTYtLyogY2xlYW4gdXAgZm9yIGEgY3JlYXRlZCBidXQgbmV2ZXIgYWNjZXB0ZWQgc29jayAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTg1Nzp2b2lkIHNtY19jbG9zZV9ub25fYWNjZXB0ZWQoc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9zbWMvYWZfc21jLmMtMTg1OC17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE4NzEtXFxubmV0L3NtYy9hZl9zbWMuYzoxODcyOnN0YXRpYyBpbnQgc21jcl9zZXJ2X2NvbmZfZmlyc3RfbGluayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG5uZXQvc21jL2FmX3NtYy5jLTE4NzMte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xOTI0LS8qIGxpc3RlbiB3b3JrZXI6IGZpbmlzaCAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTkyNTpzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX291dChzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMpXFxubmV0L3NtYy9hZl9zbWMuYy0xOTI2LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTk0OC0vKiBsaXN0ZW4gd29ya2VyOiBmaW5pc2ggaW4gc3RhdGUgY29ubmVjdGVkICovXFxubmV0L3NtYy9hZl9zbWMuYzoxOTQ5OnN0YXRpYyB2b2lkIHNtY19saXN0ZW5fb3V0X2Nvbm5lY3RlZChzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMpXFxubmV0L3NtYy9hZl9zbWMuYy0xOTUwLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTk1OS0vKiBsaXN0ZW4gd29ya2VyOiBmaW5pc2ggaW4gZXJyb3Igc3RhdGUgKi9cXG5uZXQvc21jL2FmX3NtYy5jOjE5NjA6c3RhdGljIHZvaWQgc21jX2xpc3Rlbl9vdXRfZXJyKHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYylcXG5uZXQvc21jL2FmX3NtYy5jLTE5NjEte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xOTczLS8qIGxpc3RlbiB3b3JrZXI6IGRlY2xpbmUgYW5kIGZhbGwgYmFjayBpZiBwb3NzaWJsZSAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTk3NDpzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX2RlY2xpbmUoc3RydWN0IHNtY19zb2NrICpuZXdfc21jLCBpbnQgcmVhc29uX2NvZGUsXFxubmV0L3NtYy9hZl9zbWMuYy0xOTc1LVxcdFxcdFxcdCAgICAgICBpbnQgbG9jYWxfZmlyc3QsIHU4IHZlcnNpb24pXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE5OTQtLyogbGlzdGVuIHdvcmtlcjogdmVyc2lvbiBjaGVja2luZyAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTk5NTpzdGF0aWMgaW50IHNtY19saXN0ZW5fdjJfY2hlY2soc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxcbm5ldC9zbWMvYWZfc21jLmMtMTk5Ni1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19jbGNfbXNnX3Byb3Bvc2FsICpwY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yMDU2LS8qIGxpc3RlbiB3b3JrZXI6IGNoZWNrIHByZWZpeGVzICovXFxubmV0L3NtYy9hZl9zbWMuYzoyMDU3OnN0YXRpYyBpbnQgc21jX2xpc3Rlbl9wcmZ4X2NoZWNrKHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTIwNTgtXFx0XFx0XFx0XFx0IHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjA3NC0vKiBsaXN0ZW4gd29ya2VyOiBpbml0aWFsaXplIGNvbm5lY3Rpb24gYW5kIGJ1ZmZlcnMgKi9cXG5uZXQvc21jL2FmX3NtYy5jOjIwNzU6c3RhdGljIGludCBzbWNfbGlzdGVuX3JkbWFfaW5pdChzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXFxubmV0L3NtYy9hZl9zbWMuYy0yMDc2LVxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTIwOTQtLyogbGlzdGVuIHdvcmtlcjogaW5pdGlhbGl6ZSBjb25uZWN0aW9uIGFuZCBidWZmZXJzIGZvciBTTUMtRCAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MjA5NTpzdGF0aWMgaW50IHNtY19saXN0ZW5faXNtX2luaXQoc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxcbm5ldC9zbWMvYWZfc21jLmMtMjA5Ni1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MjExNT1zdGF0aWMgYm9vbCBzbWNfaXNfYWxyZWFkeV9zZWxlY3RlZChzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTIxMjgtLyogY2hlY2sgZm9yIElTTSBkZXZpY2VzIG1hdGNoaW5nIHByb3Bvc2VkIElTTSBkZXZpY2VzICovXFxubmV0L3NtYy9hZl9zbWMuYzoyMTI5OnN0YXRpYyB2b2lkIHNtY19jaGVja19pc21fdjJfbWF0Y2goc3RydWN0IHNtY19pbml0X2luZm8gKmluaSxcXG5uZXQvc21jL2FmX3NtYy5jLTIxMzAtXFx0XFx0XFx0XFx0ICAgdTE2IHByb3Bvc2VkX2NoaWQsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTIxNTQtXFxubmV0L3NtYy9hZl9zbWMuYzoyMTU1OnN0YXRpYyB2b2lkIHNtY19pbml0X2luZm9fc3RvcmVfcmModTMyIHJjLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbm5ldC9zbWMvYWZfc21jLmMtMjE1Ni17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTIxNjAtXFxubmV0L3NtYy9hZl9zbWMuYzoyMTYxOnN0YXRpYyB2b2lkIHNtY19maW5kX2lzbV92Ml9kZXZpY2Vfc2VydihzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXFxubmV0L3NtYy9hZl9zbWMuYy0yMTYyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYyxcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjI1MC1cXG5uZXQvc21jL2FmX3NtYy5jOjIyNTE6c3RhdGljIHZvaWQgc21jX2ZpbmRfaXNtX3YxX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTIyNTItXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNtY19jbGNfbXNnX3Byb3Bvc2FsICpwY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yMjgxLS8qIGxpc3RlbiB3b3JrZXI6IHJlZ2lzdGVyIGJ1ZmZlcnMgKi9cXG5uZXQvc21jL2FmX3NtYy5jOjIyODI6c3RhdGljIGludCBzbWNfbGlzdGVuX3JkbWFfcmVnKHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYywgYm9vbCBsb2NhbF9maXJzdClcXG5uZXQvc21jL2FmX3NtYy5jLTIyODMte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yMjk5LVxcbm5ldC9zbWMvYWZfc21jLmM6MjMwMDpzdGF0aWMgdm9pZCBzbWNfZmluZF9yZG1hX3YyX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTIzMDEtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYyxcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjM1My1cXG5uZXQvc21jL2FmX3NtYy5jOjIzNTQ6c3RhdGljIGludCBzbWNfZmluZF9yZG1hX3YxX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTIzNTUtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNtY19jbGNfbXNnX3Byb3Bvc2FsICpwY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yMzc4LS8qIGRldGVybWluZSB0aGUgbG9jYWwgZGV2aWNlIG1hdGNoaW5nIHRvIHByb3Bvc2FsICovXFxubmV0L3NtYy9hZl9zbWMuYzoyMzc5OnN0YXRpYyBpbnQgc21jX2xpc3Rlbl9maW5kX2RldmljZShzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXFxubmV0L3NtYy9hZl9zbWMuYy0yMzgwLVxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY19jbGNfbXNnX3Byb3Bvc2FsICpwY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yNDI2LS8qIGxpc3RlbiB3b3JrZXI6IGZpbmlzaCBSRE1BIHNldHVwICovXFxubmV0L3NtYy9hZl9zbWMuYzoyNDI3OnN0YXRpYyBpbnQgc21jX2xpc3Rlbl9yZG1hX2ZpbmlzaChzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXFxubmV0L3NtYy9hZl9zbWMuYy0yNDI4LVxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY19jbGNfbXNnX2FjY2VwdF9jb25maXJtICpjY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yNDUyLS8qIHNldHVwIGZvciBjb25uZWN0aW9uIG9mIHNlcnZlciAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MjQ1MzpzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvYWZfc21jLmMtMjQ1NC17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTI1OTctXFxubmV0L3NtYy9hZl9zbWMuYzoyNTk4OnN0YXRpYyB2b2lkIHNtY190Y3BfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvYWZfc21jLmMtMjU5OS17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTI2MzItXFxubmV0L3NtYy9hZl9zbWMuYzoyNjMzOnN0YXRpYyB2b2lkIHNtY19jbGNzb2NrX2RhdGFfcmVhZHkoc3RydWN0IHNvY2sgKmxpc3Rlbl9jbGNzb2NrKVxcbm5ldC9zbWMvYWZfc21jLmMtMjYzNC17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTI2NTAtXFxubmV0L3NtYy9hZl9zbWMuYzoyNjUxOmludCBzbWNfbGlzdGVuKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBiYWNrbG9nKVxcbm5ldC9zbWMvYWZfc21jLmMtMjY1Mi17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTI3MTYtXFxubmV0L3NtYy9hZl9zbWMuYzoyNzE3OmludCBzbWNfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld19zb2NrLFxcbm5ldC9zbWMvYWZfc21jLmMtMjcxOC1cXHQgICAgICAgc3RydWN0IHByb3RvX2FjY2VwdF9hcmcgKmFyZylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjc4NS1cXG5uZXQvc21jL2FmX3NtYy5jOjI3ODY6aW50IHNtY19nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqYWRkcixcXG5uZXQvc21jL2FmX3NtYy5jLTI3ODctXFx0XFx0aW50IHBlZXIpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTI3OTktXFxubmV0L3NtYy9hZl9zbWMuYzoyODAwOmludCBzbWNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXFxubmV0L3NtYy9hZl9zbWMuYy0yODAxLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjgzNy1cXG5uZXQvc21jL2FmX3NtYy5jOjI4Mzg6aW50IHNtY19yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcXG5uZXQvc21jL2FmX3NtYy5jLTI4MzktXFx0XFx0aW50IGZsYWdzKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYz0yODg4PV9fcG9sbF90IHNtY19wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yOTQ3LVxcbm5ldC9zbWMvYWZfc21jLmM6Mjk0ODppbnQgc21jX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBob3cpXFxubmV0L3NtYy9hZl9zbWMuYy0yOTQ5LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMzAyMi1cXG5uZXQvc21jL2FmX3NtYy5jOjMwMjM6c3RhdGljIGludCBfX3NtY19nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L3NtYy9hZl9zbWMuYy0zMDI0LVxcdFxcdFxcdCAgICBjaGFyIF9fdXNlciAqb3B0dmFsLCBpbnQgX191c2VyICpvcHRsZW4pXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTMwNTQtXFxubmV0L3NtYy9hZl9zbWMuYzozMDU1OnN0YXRpYyBpbnQgX19zbWNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbm5ldC9zbWMvYWZfc21jLmMtMzA1Ni1cXHRcXHRcXHQgICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMzA4Ni1cXG5uZXQvc21jL2FmX3NtYy5jOjMwODc6aW50IHNtY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L3NtYy9hZl9zbWMuYy0zMDg4LVxcdFxcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTMxNzMtXFxubmV0L3NtYy9hZl9zbWMuYzozMTc0OmludCBzbWNfZ2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbm5ldC9zbWMvYWZfc21jLmMtMzE3NS1cXHRcXHQgICBjaGFyIF9fdXNlciAqb3B0dmFsLCBpbnQgX191c2VyICpvcHRsZW4pXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTMxOTktXFxubmV0L3NtYy9hZl9zbWMuYzozMjAwOmludCBzbWNfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCxcXG5uZXQvc21jL2FmX3NtYy5jLTMyMDEtXFx0ICAgICAgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jPTMzMzU9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc21jX3NvY2tfb3BzID0ge1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0zMzU1LVxcbm5ldC9zbWMvYWZfc21jLmM6MzM1NjppbnQgc21jX2NyZWF0ZV9jbGNzayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgaW50IGZhbWlseSlcXG5uZXQvc21jL2FmX3NtYy5jLTMzNTcte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0zMzc1LVxcbm5ldC9zbWMvYWZfc21jLmM6MzM3NjpzdGF0aWMgaW50IHNtY19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsXFxubmV0L3NtYy9hZl9zbWMuYy0zMzc3LVxcdFxcdCAgICAgIGludCBrZXJuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOToyMy40NTAwMzMxNDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA5NTUxMTI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgU01DIFN1YnN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcHJldHR5IGNyaXRpY2FsIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIHdpdGhpbiB0aGUgU01DIHN1YnN5c3RlbS4gSXQgbG9va3MgbGlrZSBgc21jX2luaXRfaW5mb2Agd2FzIGJlaW5nIGZyZWVkIHdpdGggYGtmcmVlYCBpbnN0ZWFkIG9mIHRoZSBwcm9wZXIgYHNtY19pbml0X2luZm9fZnJlZWAgZnVuY3Rpb24uIFRoYXQncyBhIGNsYXNzaWMgbGVhaywgc3BlY2lmaWNhbGx5IGxlYWtpbmcgcmVmZXJlbmNlcyB0byBgc21jX2liX2RldmljZWAuIFdlIGRlZmluaXRlbHkgbmVlZCB0byBmaXggdGhhdC5cblxuQmV5b25kIHRoZSBidWcgZml4LCB0aGVyZSdzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aCB0aGUgYWRkaXRpb24gb2YgYHNtY19pYmRldl9pbml0X2JlZ2luYCBhbmQgYHNtY19pYmRldl9pbml0X2VuZGAsIHByZXN1bWFibHkgdG8gbWFuYWdlIHRoZSBpbml0aWFsIHNldHVwIG9mIHVucHVibGlzaGVkIGxpbmtzLiBJbnRlcmVzdGluZy5cblxuTm93LCBsZXQncyBzZWUgd2hpY2ggZnVuY3Rpb25zIGFyZSBhZmZlY3RlZC4gSSBzZWUgYF9fc21jX2Nvbm5lY3RgLCBgc21jX2xpc3Rlbl93b3JrYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYHNtY3JfbGlua19pbml0YCwgYW5kIGBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgdmlhIHRoZSB0eXBpY2FsIHVzZXItc3BhY2UgYWNjZXNzIG9mIGBjb25uZWN0YCwgYGxpc3RlbmAsIG9yLCBpbmRpcmVjdGx5LCB0aHJvdWdoIG5ldHdvcmsgcGFja2V0cyBsaWtlIHRoZSBMTEMgbWVzc2FnZXMuXG5cblNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlLCBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGluY2x1ZGUgYHNtY19jb25uZWN0YCwgYHNtY19saXN0ZW5gLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYCBpbiBgRm9jdXNTeW1ib2xzYC4gV2FpdCBhIG1pbnV0ZSwgYHNtY19jb25uZWN0YCBhbmQgYHNtY19saXN0ZW5gIGFyZSB0aGUgYWN0dWFsIHN5c2NhbGwgZW50cnkgcG9pbnRzLCBhcmVuJ3QgdGhleT8gQW5kIHRoZSBMTEMgZnVuY3Rpb25zIGhhbmRsZSB0aG9zZSBpbmNvbWluZyBuZXR3b3JrIG1lc3NhZ2VzLiBJIHNob3VsZCBjaGVjayBgbmV0L3NtYy9zbWNfbGxjLmNgIHRvIGNvbmZpcm0gd2hldGhlciBgc21jX2xsY19jbGlfYWRkX2xpbmtgIGFuZCBgc21jX2xsY19zcnZfYWRkX2xpbmtgIGFyZSBzdGF0aWMuIEdvdHRhIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTA0LCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM5OjMwLjU0NTU0ODEwMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3MzMwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihpbnR8dm9pZHxzdGF0aWMgaW50fHN0YXRpYyB2b2lkKSBbYS16QS1aMC05X10rXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9zbWNfbGxjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfbGxjLmM9MjE3PXN0cnVjdCBzbWNfbGxjX3FlbnRyeSB7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjQtXFxubmV0L3NtYy9zbWNfbGxjLmM6MjI1OnN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMsXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI2LVxcdFxcdFxcdCAgICB1MzIgYnl0ZV9sZW4pO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjI4PXN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY19mbG93X3FlbnRyeV9jbHIoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzNS1cXG5uZXQvc21jL3NtY19sbGMuYzoyMzY6dm9pZCBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzNy17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0yNDc9c3RhdGljIGlubGluZSB2b2lkIHNtY19sbGNfZmxvd19xZW50cnlfc2V0KHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3csXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yNTItXFxubmV0L3NtYy9zbWNfbGxjLmM6MjUzOnN0YXRpYyB2b2lkIHNtY19sbGNfZmxvd19wYXJhbGxlbChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgdTggZmxvd190eXBlLFxcbm5ldC9zbWMvc21jX2xsYy5jLTI1NC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9Mjc1PXN0YXRpYyBib29sIHNtY19sbGNfZmxvd19zdGFydChzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93LFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMzA2LS8qIHN0YXJ0IGEgbmV3IGxvY2FsIGxsYyBmbG93LCB3YWl0IHRpbGwgY3VycmVudCBmbG93IGZpbmlzaGVkICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MzA3OmludCBzbWNfbGxjX2Zsb3dfaW5pdGlhdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfbGxjLmMtMzA4LVxcdFxcdFxcdCAgZW51bSBzbWNfbGxjX2Zsb3d0eXBlIHR5cGUpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0zNDAtLyogZmluaXNoIHRoZSBjdXJyZW50IGxsYyBmbG93ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MzQxOnZvaWQgc21jX2xsY19mbG93X3N0b3Aoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXFxubmV0L3NtYy9zbWNfbGxjLmMtMzQyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTM5OD1zdHJ1Y3Qgc21jX2xsY190eF9wZW5kIHtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTQwMS0vKiBoYW5kbGVyIGZvciBzZW5kL3RyYW5zbWlzc2lvbiBjb21wbGV0aW9uIG9mIGFuIExMQyBtc2cgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo0MDI6c3RhdGljIHZvaWQgc21jX2xsY190eF9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICpwZW5kLFxcbm5ldC9zbWMvc21jX2xsYy5jLTQwMy1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNDIxLSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjQyMjpzdGF0aWMgaW50IHNtY19sbGNfYWRkX3BlbmRpbmdfc2VuZChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtNDIzLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqKndyX2J1ZixcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTQ0My1cXG5uZXQvc21jL3NtY19sbGMuYzo0NDQ6c3RhdGljIGludCBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRfdjIoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTQ0NS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY193cl92Ml9idWYgKip3cl9idWYsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy00NTUtXFxubmV0L3NtYy9zbWNfbGxjLmM6NDU2OnN0YXRpYyB2b2lkIHNtY19sbGNfaW5pdF9tc2dfaGRyKHN0cnVjdCBzbWNfbGxjX2hkciAqaGRyLFxcbm5ldC9zbWMvc21jX2xsYy5jLTQ1Ny1cXHRcXHRcXHRcXHQgc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHNpemVfdCBsZW4pXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy00NjgtLyogaGlnaC1sZXZlbCBBUEkgdG8gc2VuZCBMTEMgY29uZmlybSBsaW5rICovXFxubmV0L3NtYy9zbWNfbGxjLmM6NDY5OmludCBzbWNfbGxjX3NlbmRfY29uZmlybV9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy00NzAtXFx0XFx0XFx0ICAgICAgZW51bSBzbWNfbGxjX3JlcXJlc3AgcmVxcmVzcClcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTUwOC0vKiBzZW5kIExMQyBjb25maXJtIHJrZXkgcmVxdWVzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjUwOTpzdGF0aWMgaW50IHNtY19sbGNfc2VuZF9jb25maXJtX3JrZXkoc3RydWN0IHNtY19saW5rICpzZW5kX2xpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtNTEwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNtY19idWZfZGVzYyAqcm1iX2Rlc2MpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy01NTctLyogc2VuZCBMTEMgZGVsZXRlIHJrZXkgcmVxdWVzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjU1ODpzdGF0aWMgaW50IHNtY19sbGNfc2VuZF9kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtNTU5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTYxOD1zdGF0aWMgc3RydWN0IHNtY19idWZfZGVzYyAqc21jX2xsY19nZXRfZmlyc3Rfcm1iKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNjI0LVxcbm5ldC9zbWMvc21jX2xsYy5jOjYyNTpzdGF0aWMgaW50IHNtY19sbGNfZmlsbF9leHRfdjIoc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCAqZXh0LFxcbm5ldC9zbWMvc21jX2xsYy5jLTYyNi1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNjY0LS8qIHNlbmQgQUREIExJTksgcmVxdWVzdCBvciByZXNwb25zZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjY2NTppbnQgc21jX2xsY19zZW5kX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggbWFjW10sIHU4IGdpZFtdLFxcbm5ldC9zbWMvc21jX2xsYy5jLTY2Ni1cXHRcXHRcXHQgIHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy03MjUtLyogc2VuZCBERUxFVEUgTElOSyByZXF1ZXN0IG9yIHJlc3BvbnNlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6NzI2OmludCBzbWNfbGxjX3NlbmRfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBsaW5rX2RlbF9pZCxcXG5uZXQvc21jL3NtY19sbGMuYy03MjctXFx0XFx0XFx0ICAgICBlbnVtIHNtY19sbGNfcmVxcmVzcCByZXFyZXNwLCBib29sIG9yZGVybHksXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy03NjEtLyogc2VuZCBMTEMgdGVzdCBsaW5rIHJlcXVlc3QgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo3NjI6c3RhdGljIGludCBzbWNfbGxjX3NlbmRfdGVzdF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggdXNlcl9kYXRhWzE2XSlcXG5uZXQvc21jL3NtY19sbGMuYy03NjMte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNzg2LS8qIHNjaGVkdWxlIGFuIGxsYyBzZW5kIG9uIGxpbmssIG1heSB3YWl0IGZvciBidWZmZXJzICovXFxubmV0L3NtYy9zbWNfbGxjLmM6Nzg3OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX21lc3NhZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLCB2b2lkICpsbGNidWYpXFxubmV0L3NtYy9zbWNfbGxjLmMtNzg4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTgwOC0gKi9cXG5uZXQvc21jL3NtY19sbGMuYzo4MDk6c3RhdGljIGludCBzbWNfbGxjX3NlbmRfbWVzc2FnZV93YWl0KHN0cnVjdCBzbWNfbGluayAqbGluaywgdm9pZCAqbGxjYnVmKVxcbm5ldC9zbWMvc21jX2xsYy5jLTgxMC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy04MjgtXFxubmV0L3NtYy9zbWNfbGxjLmM6ODI5OnN0YXRpYyBpbnQgc21jX2xsY19hbGxvY19hbHRfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19sbGMuYy04MzAtXFx0XFx0XFx0XFx0ICBlbnVtIHNtY19sZ3JfdHlwZSBsZ3JfbmV3X3QpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy04NTMtLyogc2VuZCBvbmUgYWRkX2xpbmtfY29udGludWUgbXNnICovXFxubmV0L3NtYy9zbWNfbGxjLmM6ODU0OnN0YXRpYyBpbnQgc21jX2xsY19hZGRfbGlua19jb250KHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy04NTUtXFx0XFx0XFx0XFx0IHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsIHU4ICpudW1fcmtleXNfdG9kbyxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTkwOC1cXG5uZXQvc21jL3NtY19sbGMuYzo5MDk6c3RhdGljIGludCBzbWNfbGxjX2NsaV9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy05MTAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtOTUyLS8qIHByZXBhcmUgYW5kIHNlbmQgYW4gYWRkIGxpbmsgcmVqZWN0IHJlc3BvbnNlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6OTUzOnN0YXRpYyBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmtfcmVqZWN0KHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTk1NC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy05NjItXFxubmV0L3NtYy9zbWNfbGxjLmM6OTYzOnN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy05NjQtXFx0XFx0XFx0XFx0IHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmksXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMDIwLVxcbm5ldC9zbWMvc21jX2xsYy5jOjEwMjE6c3RhdGljIHZvaWQgc21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0xMDIyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMDQ2LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEwNDc6c3RhdGljIHZvaWQgc21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8oc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTEwNDgtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGluayAqYWRkX2xsYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEwNTctLyogYXMgYW4gU01DIGNsaWVudCwgcHJvY2VzcyBhbiBhZGQgbGluayByZXF1ZXN0ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTA1ODppbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG5uZXQvc21jL3NtY19sbGMuYy0xMDU5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTExNTEtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTE1MjpzdGF0aWMgdm9pZCBzbWNfbGxjX3NlbmRfcmVxdWVzdF9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMTE1My17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMTkwLS8qIGFzIGFuIFNNQyBjbGllbnQsIGludml0ZSBzZXJ2ZXIgdG8gc3RhcnQgdGhlIGFkZF9saW5rIHByb2Nlc3NpbmcgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxMTkxOnN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtMTE5Mi1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEyMzU9c3RhdGljIGJvb2wgc21jX2xsY19pc19sb2NhbF9hZGRfbGluayh1bmlvbiBzbWNfbGxjX21zZyAqbGxjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTI0Mi1cXG5uZXQvc21jL3NtY19sbGMuYzoxMjQzOnN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTI0NC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMjU2LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEyNTc6c3RhdGljIGludCBzbWNfbGxjX2FjdGl2ZV9saW5rX2NvdW50KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2xsYy5jLTEyNTgte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTI3MD1zdGF0aWMgc3RydWN0IHNtY19saW5rICpzbWNfbGxjX2ZpbmRfYXN5bV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTMxMy1cXG5uZXQvc21jL3NtY19sbGMuYzoxMzE0OnN0YXRpYyB2b2lkIHNtY19sbGNfZGVsZXRlX2FzeW1fbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0xMzE1LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEzNDctXFxubmV0L3NtYy9zbWNfbGxjLmM6MTM0ODpzdGF0aWMgaW50IHNtY19sbGNfc3J2X3JrZXlfZXhjaGFuZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTEzNDktXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTM4OC1cXG5uZXQvc21jL3NtY19sbGMuYzoxMzg5OnN0YXRpYyBpbnQgc21jX2xsY19zcnZfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0xMzkwLVxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTQyMi1cXG5uZXQvc21jL3NtY19sbGMuYzoxNDIzOnN0YXRpYyB2b2lkIHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2Uoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTQyNC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNDMxLVxcbm5ldC9zbWMvc21jX2xsYy5jOjE0MzI6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0xNDMzLVxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnJlcV9xZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTU0LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE1NTU6c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0xNTU2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NzMtLyogZW5xdWV1ZSBhIGxvY2FsIGFkZF9saW5rIHJlcSB0byB0cmlnZ2VyIGEgbmV3IGFkZF9saW5rIGZsb3cgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxNTc0OnZvaWQgc21jX2xsY19hZGRfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU3NS17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTg1LS8qIHdvcmtlciB0byBwcm9jZXNzIGFuIGFkZCBsaW5rIG1lc3NhZ2UgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxNTg2OnN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU4Ny17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNjA4LSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjE2MDk6dm9pZCBzbWNfbGxjX3Nydl9kZWxldGVfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IGRlbF9saW5rX2lkKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2MTAte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTYyMS1cXG5uZXQvc21jL3NtY19sbGMuYzoxNjIyOnN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19jbGlfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTYyMy17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNjc5LSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjE2ODA6dm9pZCBzbWNfbGxjX3NlbmRfbGlua19kZWxldGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIG9yZCwgdTMyIHJzbilcXG5uZXQvc21jL3NtY19sbGMuYy0xNjgxLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2OTktXFxubmV0L3NtYy9zbWNfbGxjLmM6MTcwMDpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3Nfc3J2X2RlbGV0ZV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE3MDEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTc2Ny1cXG5uZXQvc21jL3NtY19sbGMuYzoxNzY4OnN0YXRpYyB2b2lkIHNtY19sbGNfZGVsZXRlX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMTc2OS17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNzg3LS8qIHByb2Nlc3MgYSBjb25maXJtX3JrZXkgcmVxdWVzdCBmcm9tIHBlZXIsIHJlbW90ZSBmbG93ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTc4ODpzdGF0aWMgdm9pZCBzbWNfbGxjX3JtdF9jb25mX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTc4OS17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xODI3LS8qIHByb2Nlc3MgYSBkZWxldGVfcmtleSByZXF1ZXN0IGZyb20gcGVlciwgcmVtb3RlIGZsb3cgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxODI4OnN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE4Mjkte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg4OS1cXG5uZXQvc21jL3NtY19sbGMuYzoxODkwOnN0YXRpYyB2b2lkIHNtY19sbGNfcHJvdG9jb2xfdmlvbGF0aW9uKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCB1OCB0eXBlKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE4OTEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg5OS0vKiBmbHVzaCB0aGUgbGxjIGV2ZW50IHF1ZXVlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTkwMDpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2ZsdXNoKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE5MDEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTkxMS1cXG5uZXQvc21jL3NtY19sbGMuYzoxOTEyOnN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfaGFuZGxlcihzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG5uZXQvc21jL3NtY19sbGMuYy0xOTEzLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIwMzMtLyogd29ya2VyIHRvIHByb2Nlc3MgbGxjIG1lc3NhZ2VzIG9uIHRoZSBldmVudCBxdWV1ZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIwMzQ6c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvc21jL3NtY19sbGMuYy0yMDM1LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIwNjItLyogcHJvY2VzcyBsbGMgcmVzcG9uc2VzIGluIHRhc2tsZXQgY29udGV4dCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIwNjM6c3RhdGljIHZvaWQgc21jX2xsY19yeF9yZXNwb25zZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtMjA2NC1cXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTIxMDc9c3RhdGljIHUzMiBzbWNfbGxjX21heF9ib2R5X2xlbih1bmlvbiBzbWNfbGxjX21zZyAqbGxjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjEyMS1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTIyOnN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMsXFxubmV0L3NtYy9zbWNfbGxjLmMtMjEyMy1cXHRcXHRcXHQgICAgdTMyIGJ5dGVfbGVuKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE2Ny0vKiBjb3B5IHJlY2VpdmVkIG1zZyBhbmQgYWRkIGl0IHRvIHRoZSBldmVudCBxdWV1ZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIxNjg6c3RhdGljIHZvaWQgc21jX2xsY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcXG5uZXQvc21jL3NtY19sbGMuYy0yMTY5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxODctXFxubmV0L3NtYy9zbWNfbGxjLmM6MjE4ODpzdGF0aWMgdm9pZCBzbWNfbGxjX3Rlc3RsaW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxODkte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjIxOS1cXG5uZXQvc21jL3NtY19sbGMuYzoyMjIwOnZvaWQgc21jX2xsY19sZ3JfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19zb2NrICpzbWMpXFxubmV0L3NtYy9zbWNfbGxjLmMtMjIyMS17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjM4LS8qIGNhbGxlZCBhZnRlciBsZ3Igd2FzIHJlbW92ZWQgZnJvbSBsZ3JfbGlzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIyMzk6dm9pZCBzbWNfbGxjX2xncl9jbGVhcihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0yMjQwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNTItXFxubmV0L3NtYy9zbWNfbGxjLmM6MjI1MzppbnQgc21jX2xsY19saW5rX2luaXQoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNTQte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI1OS1cXG5uZXQvc21jL3NtY19sbGMuYzoyMjYwOnZvaWQgc21jX2xsY19saW5rX2FjdGl2ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI2MS17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjc3LS8qIGNhbGxlZCBpbiB3b3JrZXIgY29udGV4dCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIyNzg6dm9pZCBzbWNfbGxjX2xpbmtfY2xlYXIoc3RydWN0IHNtY19saW5rICpsaW5rLCBib29sIGxvZylcXG5uZXQvc21jL3NtY19sbGMuYy0yMjc5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyOTItLyogcmVnaXN0ZXIgYSBuZXcgcnRva2VuIGF0IHRoZSByZW1vdGUgcGVlciAoZm9yIGFsbCBsaW5rcykgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoyMjkzOmludCBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0yMjk0LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzMTQtLyogdW5yZWdpc3RlciBhbiBydG9rZW4gYXQgdGhlIHJlbW90ZSBwZWVyICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MjMxNTppbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19sbGMuYy0yMzE2LVxcdFxcdFxcdCAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM0MC1cXG5uZXQvc21jL3NtY19sbGMuYzoyMzQxOnZvaWQgc21jX2xsY19saW5rX3NldF91aWQoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzNDIte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM0OS0vKiBzYXZlIHBlZXJzIGxpbmsgdXNlciBpZCwgdXNlZCBmb3IgZGVidWcgcHVycG9zZXMgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoyMzUwOnZvaWQgc21jX2xsY19zYXZlX3BlZXJfdWlkKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzNTEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM1Ni0vKiBldmFsdWF0ZSBjb25maXJtIGxpbmsgcmVxdWVzdCBvciByZXNwb25zZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIzNTc6aW50IHNtY19sbGNfZXZhbF9jb25mX2xpbmsoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnksXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM1OC1cXHRcXHRcXHQgICBlbnVtIHNtY19sbGNfcmVxcmVzcCB0eXBlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOTozMC41OTQyOTgxNzZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5MjIyNDkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6XG5cbioqQW5hbHl6aW5nIFNNQyBMaW5rIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gYHNtY19sbGNfY2xpX2FkZF9saW5rYCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYCBhcmVuJ3Qgc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBUaGF0IHByb2JhYmx5IG1lYW5zIHRoZXkncmUgc3ViamVjdCB0byBzb21lIHNvcnQgb2YgZHluYW1pYyBiZWhhdmlvciwgd2hpY2ggbmVlZHMgdW5kZXJzdGFuZGluZy4gUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHRyYWNrIGRvd24gZXhhY3RseSBob3cgdGhlc2UgbGlua3MgYXJlIGluaXRpYWxpemVkLiBUaGUgb2J2aW91cyBwbGFjZSB0byBzdGFydCBpcyBgbmV0L3NtYy9zbWNfY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIGBzbWNyX2xpbmtfaW5pdGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY29tcGxldGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBhbmQgc2VlaW5nIHdoYXQgaW5mbHVlbmNlcyB0aGVzZSBub24tc3RhdGljIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAyNDAsIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOTozMy45ODY1MjU2NDRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjU5MTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oaW50fHZvaWR8c3RhdGljIGludHxzdGF0aWMgdm9pZCkgW2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jb3JlLmM9NTA9c3RhdGljIERFQ0xBUkVfV0FJVF9RVUVVRV9IRUFEKGxncnNfZGVsZXRlZCk7XFxubmV0L3NtYy9zbWNfY29yZS5jLTUxLVxcbm5ldC9zbWMvc21jX2NvcmUuYzo1MjpzdGF0aWMgdm9pZCBzbWNfYnVmX2ZyZWUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgaXNfcm1iLFxcbm5ldC9zbWMvc21jX2NvcmUuYy01My1cXHRcXHRcXHQgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX2Rlc2MpO1xcbm5ldC9zbWMvc21jX2NvcmUuYzo1NDpzdGF0aWMgdm9pZCBfX3NtY19sZ3JfdGVybWluYXRlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIHNvZnQpO1xcbm5ldC9zbWMvc21jX2NvcmUuYy01NS1cXG5uZXQvc21jL3NtY19jb3JlLmM6NTY6c3RhdGljIHZvaWQgc21jX2xpbmtfZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxubmV0L3NtYy9zbWNfY29yZS5jLTU3LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo1ODp2b2lkIHNtY19pbml0X2luZm9fZnJlZShzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbm5ldC9zbWMvc21jX2NvcmUuYy01OS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmM9NzA9c3RhdGljIGlubGluZSBzdHJ1Y3QgbGlzdF9oZWFkICpzbWNfbGdyX2xpc3RfaGVhZChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy04MS1cXG5uZXQvc21jL3NtY19jb3JlLmM6ODI6c3RhdGljIHZvaWQgc21jX2liZGV2X2NudF9pbmMoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTgzLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy04Ni1cXG5uZXQvc21jL3NtY19jb3JlLmM6ODc6c3RhdGljIHZvaWQgc21jX2liZGV2X2NudF9kZWMoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTg4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy05MS1cXG5uZXQvc21jL3NtY19jb3JlLmM6OTI6c3RhdGljIHZvaWQgc21jX2xncl9zY2hlZHVsZV9mcmVlX3dvcmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTkzLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTEtICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjExMjpzdGF0aWMgdm9pZCBzbWNfbGdyX2FkZF9hbGVydF90b2tlbihzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY29yZS5jLTExMy17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTMzLS8qIGFzc2lnbiBhbiBTTUMtUiBsaW5rIHRvIHRoZSBjb25uZWN0aW9uICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjEzNDpzdGF0aWMgaW50IHNtY3JfbGdyX2Nvbm5fYXNzaWduX2xpbmsoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLCBib29sIGZpcnN0KVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzUte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE3Ny0gKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MTc4OnN0YXRpYyBpbnQgc21jX2xncl9yZWdpc3Rlcl9jb25uKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwgYm9vbCBmaXJzdClcXG5uZXQvc21jL3NtY19jb3JlLmMtMTc5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yMDYtICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjIwNzpzdGF0aWMgdm9pZCBfX3NtY19sZ3JfdW5yZWdpc3Rlcl9jb25uKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jb3JlLmMtMjA4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yMjEtICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjIyMjpzdGF0aWMgdm9pZCBzbWNfbGdyX3VucmVnaXN0ZXJfY29ubihzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY29yZS5jLTIyMy17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjM0LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoyMzU6c3RhdGljIHZvaWQgc21jX2xncl9idWZfbGlzdF9hZGQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfY29yZS5jLTIzNi1cXHRcXHRcXHRcXHQgYm9vbCBpc19ybWIsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjQ5LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoyNTA6c3RhdGljIHZvaWQgc21jX2xncl9idWZfbGlzdF9kZWwoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfY29yZS5jLTI1MS1cXHRcXHRcXHRcXHQgYm9vbCBpc19ybWIsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjYzLVxcbm5ldC9zbWMvc21jX2NvcmUuYzoyNjQ6aW50IHNtY19ubF9nZXRfc3lzX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNjUte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTMxOS0vKiBGaWxsIFNNQ19OTEFfTEdSX0RfVjJfQ09NTU9OL1NNQ19OTEFfTEdSX1JfVjJfQ09NTU9OIG5lc3RlZCBhdHRyaWJ1dGVzICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjMyMDpzdGF0aWMgaW50IHNtY19ubF9maWxsX2xncl92Ml9jb21tb24oc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfY29yZS5jLTMyMS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMzUwLVxcbm5ldC9zbWMvc21jX2NvcmUuYzozNTE6c3RhdGljIGludCBzbWNfbmxfZmlsbF9zbWNyX2xncl92MihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19jb3JlLmMtMzUyLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMzc1LVxcbm5ldC9zbWMvc21jX2NvcmUuYzozNzY6c3RhdGljIGludCBzbWNfbmxfZmlsbF9sZ3Ioc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfY29yZS5jLTM3Ny1cXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTQyNy1cXG5uZXQvc21jL3NtY19jb3JlLmM6NDI4OnN0YXRpYyBpbnQgc21jX25sX2ZpbGxfbGdyX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfY29yZS5jLTQyOS1cXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNDg4LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo0ODk6c3RhdGljIGludCBzbWNfbmxfaGFuZGxlX2xncihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19jb3JlLmMtNDkwLVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy01MjItXFxubmV0L3NtYy9zbWNfY29yZS5jOjUyMzpzdGF0aWMgdm9pZCBzbWNfbmxfZmlsbF9sZ3JfbGlzdChzdHJ1Y3Qgc21jX2xncl9saXN0ICpzbWNfbGdyLFxcbm5ldC9zbWMvc21jX2NvcmUuYy01MjQtXFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNTQ2LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo1NDc6c3RhdGljIGludCBzbWNfbmxfZmlsbF9zbWNkX2xncihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19jb3JlLmMtNTQ4LVxcdFxcdFxcdFxcdHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNjE2LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo2MTc6c3RhdGljIGludCBzbWNfbmxfaGFuZGxlX3NtY2RfbGdyKHN0cnVjdCBzbWNkX2RldiAqZGV2LFxcbm5ldC9zbWMvc21jX2NvcmUuYy02MTgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTY0My1cXG5uZXQvc21jL3NtY19jb3JlLmM6NjQ0OnN0YXRpYyBpbnQgc21jX25sX2ZpbGxfc21jZF9kZXYoc3RydWN0IHNtY2RfZGV2X2xpc3QgKmRldl9saXN0LFxcbm5ldC9zbWMvc21jX2NvcmUuYy02NDUtXFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy02NzAtXFxubmV0L3NtYy9zbWNfY29yZS5jOjY3MTppbnQgc21jcl9ubF9nZXRfbGdyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG5uZXQvc21jL3NtY19jb3JlLmMtNjcyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy02NzgtXFxubmV0L3NtYy9zbWNfY29yZS5jOjY3OTppbnQgc21jcl9ubF9nZXRfbGluayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTY4MC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNjg2LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo2ODc6aW50IHNtY2RfbmxfZ2V0X2xncihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTY4OC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNjkyLVxcbm5ldC9zbWMvc21jX2NvcmUuYzo2OTM6dm9pZCBzbWNfbGdyX2NsZWFudXBfZWFybHkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTY5NC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNzA4LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo3MDk6c3RhdGljIHZvaWQgc21jcl9sZ3JfbGlua19kZWFjdGl2YXRlX2FsbChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19jb3JlLmMtNzEwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy03MjItXFxubmV0L3NtYy9zbWNfY29yZS5jOjcyMzpzdGF0aWMgdm9pZCBzbWNfbGdyX2ZyZWUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpO1xcbm5ldC9zbWMvc21jX2NvcmUuYy03MjQtXFxubmV0L3NtYy9zbWNfY29yZS5jOjcyNTpzdGF0aWMgdm9pZCBzbWNfbGdyX2ZyZWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTcyNi17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNzYwLVxcbm5ldC9zbWMvc21jX2NvcmUuYzo3NjE6c3RhdGljIHZvaWQgc21jX2xncl90ZXJtaW5hdGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTc2Mi17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmM9NzcwPXN0YXRpYyB1OCBzbWNyX25leHRfbGlua19pZChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy03ODktXFxubmV0L3NtYy9zbWNfY29yZS5jOjc5MDpzdGF0aWMgdm9pZCBzbWNyX2NvcHlfZGV2X2luZm9fdG9fbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTc5MS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNzk4LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo3OTk6aW50IHNtY3JfbGlua19pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcXG5uZXQvc21jL3NtY19jb3JlLmMtODAwLVxcdFxcdCAgIHU4IGxpbmtfaWR4LCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTkwNy0vKiBjcmVhdGUgYSBuZXcgU01DIGxpbmsgZ3JvdXAgKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6OTA4OnN0YXRpYyBpbnQgc21jX2xncl9jcmVhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxubmV0L3NtYy9zbWNfY29yZS5jLTkwOS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTAzOS1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTA0MDpzdGF0aWMgaW50IHNtY193cml0ZV9zcGFjZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY29yZS5jLTEwNDEte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTEwNTMtXFxubmV0L3NtYy9zbWNfY29yZS5jOjEwNTQ6c3RhdGljIGludCBzbWNfc3dpdGNoX2N1cnNvcihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfdHhfcGVuZCAqcGVuZCxcXG5uZXQvc21jL3NtY19jb3JlLmMtMTA1NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBzbWNfd3JfYnVmICp3cl9idWYpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTEwMy1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTEwNDp2b2lkIHNtY19zd2l0Y2hfbGlua19hbmRfY291bnQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTA1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc21jX2xpbmsgKnRvX2xuaylcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYz0xMTE2PXN0cnVjdCBzbWNfbGluayAqc21jX3N3aXRjaF9jb25ucyhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTkzLVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxMTk0OnN0YXRpYyB2b2lkIHNtY3JfYnVmX3VudXNlKHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjLCBib29sIGlzX3JtYixcXG5uZXQvc21jL3NtY19jb3JlLmMtMTE5NS1cXHRcXHRcXHQgICBzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMjI4LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxMjI5OnN0YXRpYyB2b2lkIHNtY2RfYnVmX2RldGFjaChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY29yZS5jLTEyMzAte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTEyNDQtXFxubmV0L3NtYy9zbWNfY29yZS5jOjEyNDU6c3RhdGljIHZvaWQgc21jX2J1Zl91bnVzZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxubmV0L3NtYy9zbWNfY29yZS5jLTEyNDYtXFx0XFx0XFx0ICBzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMjc1LS8qIHJlbW92ZSBhIGZpbmlzaGVkIGNvbm5lY3Rpb24gZnJvbSBpdHMgbGluayBncm91cCAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxMjc2OnZvaWQgc21jX2Nvbm5fZnJlZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY29yZS5jLTEyNzcte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTEzMTYtLyogdW5yZWdpc3RlciBhIGxpbmsgZnJvbSBhIGJ1Zl9kZXNjICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjEzMTc6c3RhdGljIHZvaWQgc21jcl9idWZfdW5tYXBfbGluayhzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfZGVzYywgYm9vbCBpc19ybWIsXFxubmV0L3NtYy9zbWNfY29yZS5jLTEzMTgtXFx0XFx0XFx0XFx0c3RydWN0IHNtY19saW5rICpsbmspXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTMzOS0vKiB1bm1hcCBhbGwgYnVmZmVycyBvZiBsZ3IgZm9yIGEgZGVsZXRlZCBsaW5rICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjEzNDA6c3RhdGljIHZvaWQgc21jcl9idWZfdW5tYXBfbGdyKHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzQxLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzU5LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxMzYwOnN0YXRpYyB2b2lkIHNtY3JfcnRva2VuX2NsZWFyX2xpbmsoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTEzNjEte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTEzNzAtXFxubmV0L3NtYy9zbWNfY29yZS5jOjEzNzE6c3RhdGljIHZvaWQgX19zbWNyX2xpbmtfY2xlYXIoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTEzNzIte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTEzODctLyogbXVzdCBiZSBjYWxsZWQgdW5kZXIgbGdyLVxcdTAwM2VsbGNfY29uZl9tdXRleCBsb2NrICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjEzODg6dm9pZCBzbWNyX2xpbmtfY2xlYXIoc3RydWN0IHNtY19saW5rICpsbmssIGJvb2wgbG9nKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzg5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDA0LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxNDA1OnZvaWQgc21jcl9saW5rX2hvbGQoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTE0MDYte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE0MDktXFxubmV0L3NtYy9zbWNfY29yZS5jOjE0MTA6dm9pZCBzbWNyX2xpbmtfcHV0KHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDExLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDE1LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxNDE2OnN0YXRpYyB2b2lkIHNtY3JfYnVmX2ZyZWUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgaXNfcm1iLFxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDE3LVxcdFxcdFxcdCAgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX2Rlc2MpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTQzMC1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTQzMTpzdGF0aWMgdm9pZCBzbWNkX2J1Zl9mcmVlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIGlzX2RtYixcXG5uZXQvc21jL3NtY19jb3JlLmMtMTQzMi1cXHRcXHRcXHQgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjKVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE0NDMtXFxubmV0L3NtYy9zbWNfY29yZS5jOjE0NDQ6c3RhdGljIHZvaWQgc21jX2J1Zl9mcmVlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIGlzX3JtYixcXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ0NS1cXHRcXHRcXHQgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX2Rlc2MpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ1Mi1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTQ1MzpzdGF0aWMgdm9pZCBfX3NtY19sZ3JfZnJlZV9idWZzKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIGlzX3JtYilcXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ1NC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ3MS1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTQ3MjpzdGF0aWMgdm9pZCBzbWNfbGdyX2ZyZWVfYnVmcyhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ3My17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ4MC0vKiB3b24ndCBiZSBmcmVlZCB1bnRpbCBubyBvbmUgYWNjZXNzZXMgdG8gbGdyIGFueW1vcmUgKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MTQ4MTpzdGF0aWMgdm9pZCBfX3NtY19sZ3JfZnJlZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ4Mi17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ5NS0vKiByZW1vdmUgYSBsaW5rIGdyb3VwICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjE0OTY6c3RhdGljIHZvaWQgc21jX2xncl9mcmVlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDk3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNTE3LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxNTE4OnZvaWQgc21jX2xncl9ob2xkKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNTE5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNTIyLVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxNTIzOnZvaWQgc21jX2xncl9wdXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTE1MjQte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE1MjgtXFxubmV0L3NtYy9zbWNfY29yZS5jOjE1Mjk6c3RhdGljIHZvaWQgc21jX3NrX3dha2VfdXBzKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNTMwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNTM2LS8qIGtpbGwgYSBjb25uZWN0aW9uICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjE1Mzc6c3RhdGljIHZvaWQgc21jX2Nvbm5fa2lsbChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIGJvb2wgc29mdClcXG5uZXQvc21jL3NtY19jb3JlLmMtMTUzOC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTU2Mi1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTU2MzpzdGF0aWMgdm9pZCBzbWNfbGdyX2NsZWFudXAoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTE1NjQte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE1ODAtICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjE1ODE6c3RhdGljIHZvaWQgX19zbWNfbGdyX3Rlcm1pbmF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBzb2Z0KVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNTgyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNjEzLS8qIHVubGluayBsaW5rIGdyb3VwIGFuZCBzY2hlZHVsZSB0ZXJtaW5hdGlvbiAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxNjE0OnZvaWQgc21jX2xncl90ZXJtaW5hdGVfc2NoZWQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTE2MTUte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE2MzAtLyogQ2FsbGVkIHdoZW4gcGVlciBsZ3Igc2h1dGRvd24gKHJlZ3VsYXJseSBvciBhYm5vcm1hbGx5KSBpcyByZWNlaXZlZCAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxNjMxOnZvaWQgc21jX3NtY2RfdGVybWluYXRlKHN0cnVjdCBzbWNkX2RldiAqZGV2LCBzdHJ1Y3Qgc21jZF9naWQgKnBlZXJfZ2lkLFxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNjMyLVxcdFxcdFxcdHVuc2lnbmVkIHNob3J0IHZsYW4pXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTY2MC0vKiBDYWxsZWQgd2hlbiBhbiBTTUNEIGRldmljZSBpcyByZW1vdmVkIG9yIHRoZSBzbWMgbW9kdWxlIGlzIHVubG9hZGVkICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjE2NjE6dm9pZCBzbWNfc21jZF90ZXJtaW5hdGVfYWxsKHN0cnVjdCBzbWNkX2RldiAqc21jZClcXG5uZXQvc21jL3NtY19jb3JlLmMtMTY2Mi17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTY4NC0gKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MTY4NTp2b2lkIHNtY19zbWNyX3Rlcm1pbmF0ZV9hbGwoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNjg2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzIyLS8qIHNldCBuZXcgbGdyIHR5cGUgYW5kIGNsZWFyIGFsbCBhc3ltbWV0cmljIGxpbmsgdGFnZ2luZyAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxNzIzOnZvaWQgc21jcl9sZ3Jfc2V0X3R5cGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGVudW0gc21jX2xncl90eXBlIG5ld190eXBlKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzI0LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzU3LS8qIHNldCBuZXcgbGdyIHR5cGUgYW5kIHRhZyBhIGxpbmsgYXMgYXN5bW1ldHJpYyAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxNzU4OnZvaWQgc21jcl9sZ3Jfc2V0X3R5cGVfYXN5bShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19jb3JlLmMtMTc1OS1cXHRcXHRcXHQgICAgZW51bSBzbWNfbGdyX3R5cGUgbmV3X3R5cGUsIGludCBhc3ltX2xua19pZHgpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTc2NS0vKiBhYm9ydCBjb25uZWN0aW9uLCBhYm9ydF93b3JrIHNjaGVkdWxlZCBmcm9tIHRhc2tsZXQgY29udGV4dCAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxNzY2OnN0YXRpYyB2b2lkIHNtY19jb25uX2Fib3J0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzY3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzc4LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxNzc5OnZvaWQgc21jcl9wb3J0X2FkZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsIHU4IGlicG9ydClcXG5uZXQvc21jL3NtY19jb3JlLmMtMTc4MC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTgwNy0gKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MTgwODpzdGF0aWMgdm9pZCBzbWNyX2xpbmtfZG93bihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcXG5uZXQvc21jL3NtY19jb3JlLmMtMTgwOS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTg0OC0vKiBtdXN0IGJlIGNhbGxlZCB1bmRlciBsZ3ItXFx1MDAzZWxsY19jb25mX211dGV4IGxvY2sgKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MTg0OTp2b2lkIHNtY3JfbGlua19kb3duX2NvbmQoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTE4NTAte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE4NTctLyogd2lsbCBnZXQgdGhlIGxnci1cXHUwMDNlbGxjX2NvbmZfbXV0ZXggbG9jayAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxODU4OnZvaWQgc21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcXG5uZXQvc21jL3NtY19jb3JlLmMtMTg1OS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTg2Ny1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTg2ODp2b2lkIHNtY3JfcG9ydF9lcnIoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2LCB1OCBpYnBvcnQpXFxubmV0L3NtYy9zbWNfY29yZS5jLTE4Njkte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE4ODgtXFxubmV0L3NtYy9zbWNfY29yZS5jOjE4ODk6c3RhdGljIHZvaWQgc21jX2xpbmtfZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvc21jL3NtY19jb3JlLmMtMTg5MC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTkwNS1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTkwNjpzdGF0aWMgaW50IHNtY192bGFuX2J5X3RjcHNrX3dhbGsoc3RydWN0IG5ldF9kZXZpY2UgKmxvd2VyX2RldixcXG5uZXQvc21jL3NtY19jb3JlLmMtMTkwNy1cXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRkZXZfbmVzdGVkX3ByaXYgKnByaXYpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTkxOS0vKiBEZXRlcm1pbmUgdmxhbiBvZiBpbnRlcm5hbCBUQ1Agc29ja2V0LiAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxOTIwOmludCBzbWNfdmxhbl9ieV90Y3BzayhzdHJ1Y3Qgc29ja2V0ICpjbGNzb2NrLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xOTIxLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYz0xOTgyPXN0YXRpYyBib29sIHNtY2RfbGdyX21hdGNoKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE5OTctLyogY3JlYXRlIGEgbmV3IFNNQyBjb25uZWN0aW9uIChhbmQgYSBuZXcgbGluayBncm91cCBpZiBuZWNlc3NhcnkpICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjE5OTg6aW50IHNtY19jb25uX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG5uZXQvc21jL3NtY19jb3JlLmMtMTk5OS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmM9MjEwND1zdGF0aWMgdTggc21jX2NvbXByZXNzX2J1ZnNpemUoaW50IHNpemUsIGJvb2wgaXNfc21jZCwgYm9vbCBpc19ybWIpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjEyNC0vKiBjb252ZXJ0IHRoZSBSTUIgc2l6ZSBmcm9tIGNvbXByZXNzZWQgbm90YXRpb24gaW50byBpbnRlZ2VyICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjIxMjU6aW50IHNtY191bmNvbXByZXNzX2J1ZnNpemUodTggY29tcHJlc3NlZClcXG5uZXQvc21jL3NtY19jb3JlLmMtMjEyNi17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmM9MjE1Nj1zdGF0aWMgaW5saW5lIGludCBzbWNfcm1iX3duZF91cGRhdGVfbGltaXQoaW50IHJtYmVfc2l6ZSlcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yMTYxLS8qIG1hcCBhbiBidWYgdG8gYSBsaW5rICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjIxNjI6c3RhdGljIGludCBzbWNyX2J1Zl9tYXBfbGluayhzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfZGVzYywgYm9vbCBpc19ybWIsXFxubmV0L3NtYy9zbWNfY29yZS5jLTIxNjMtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yMjM4LSAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoyMjM5OmludCBzbWNyX2xpbmtfcmVnX2J1ZihzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yMjQwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yMjU2LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoyMjU3OnN0YXRpYyBpbnQgX3NtY3JfYnVmX21hcF9sZ3Ioc3RydWN0IHNtY19saW5rICpsbmssIHN0cnVjdCByd19zZW1hcGhvcmUgKmxvY2ssXFxubmV0L3NtYy9zbWNfY29yZS5jLTIyNTgtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpsc3QsIGJvb2wgaXNfcm1iKVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTIyNzYtLyogbWFwIGFsbCB1c2VkIGJ1ZmZlcnMgb2YgbGdyIGZvciBhIG5ldyBsaW5rICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjIyNzc6aW50IHNtY3JfYnVmX21hcF9sZ3Ioc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTIyNzgte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTIyOTctICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjIyOTg6aW50IHNtY3JfYnVmX3JlZ19sZ3Ioc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTIyOTkte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jPTIzMzk9c3RhdGljIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNtY3JfbmV3X2J1Zl9jcmVhdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjM4Ni0gKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MjM4NzpzdGF0aWMgaW50IHNtY3JfYnVmX21hcF91c2FibGVfbGlua3Moc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfY29yZS5jLTIzODgtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfZGVzYywgYm9vbCBpc19ybWIpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmM9MjQxMj1zdGF0aWMgc3RydWN0IHNtY19idWZfZGVzYyAqc21jZF9uZXdfYnVmX2NyZWF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNDQ3LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoyNDQ4OnN0YXRpYyBpbnQgX19zbWNfYnVmX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgYm9vbCBpc19zbWNkLCBib29sIGlzX3JtYilcXG5uZXQvc21jL3NtY19jb3JlLmMtMjQ0OS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjUzOS1cXG5uZXQvc21jL3NtY19jb3JlLmM6MjU0MDp2b2lkIHNtY19zbmRidWZfc3luY19zZ19mb3JfZGV2aWNlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jb3JlLmMtMjU0MS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjU0OS1cXG5uZXQvc21jL3NtY19jb3JlLmM6MjU1MDp2b2lkIHNtY19ybWJfc3luY19zZ19mb3JfY3B1KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jb3JlLmMtMjU1MS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjU3MS0gKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MjU3MjppbnQgc21jX2J1Zl9jcmVhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIGJvb2wgaXNfc21jZClcXG5uZXQvc21jL3NtY19jb3JlLmMtMjU3My17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjU5OC1cXG5uZXQvc21jL3NtY19jb3JlLmM6MjU5OTppbnQgc21jZF9idWZfYXR0YWNoKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNjAwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYz0yNjM0PXN0YXRpYyBpbmxpbmUgaW50IHNtY19ybWJfcmVzZXJ2ZV9ydG9rZW5faWR4KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTI2NDQtXFxubmV0L3NtYy9zbWNfY29yZS5jOjI2NDU6c3RhdGljIGludCBzbWNfcnRva2VuX2ZpbmRfYnlfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgaW50IGxua19pZHgsXFxubmV0L3NtYy9zbWNfY29yZS5jLTI2NDYtXFx0XFx0XFx0XFx0ICAgdTMyIHJrZXkpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjY1OC0vKiBzZXQgcnRva2VuIGZvciBhIG5ldyBsaW5rIHRvIGFuIGV4aXN0aW5nIHJtYiAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoyNjU5OnZvaWQgc21jX3J0b2tlbl9zZXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGludCBsaW5rX2lkeCwgaW50IGxpbmtfaWR4X25ldyxcXG5uZXQvc21jL3NtY19jb3JlLmMtMjY2MC1cXHRcXHQgICAgX19iZTMyIG53X3JrZXlfa25vd24sIF9fYmU2NCBud192YWRkciwgX19iZTMyIG53X3JrZXkpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjY3MS0vKiBzZXQgcnRva2VuIGZvciBhIG5ldyBsaW5rIHdob3NlIGxpbmtfaWQgaXMgZ2l2ZW4gKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MjY3Mjp2b2lkIHNtY19ydG9rZW5fc2V0MihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgaW50IHJ0b2tfaWR4LCBpbnQgbGlua19pZCxcXG5uZXQvc21jL3NtY19jb3JlLmMtMjY3My1cXHRcXHQgICAgIF9fYmU2NCBud192YWRkciwgX19iZTMyIG53X3JrZXkpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjY5Mi0vKiBhZGQgYSBuZXcgcnRva2VuIGZyb20gcGVlciAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoyNjkzOmludCBzbWNfcnRva2VuX2FkZChzdHJ1Y3Qgc21jX2xpbmsgKmxuaywgX19iZTY0IG53X3ZhZGRyLCBfX2JlMzIgbndfcmtleSlcXG5uZXQvc21jL3NtY19jb3JlLmMtMjY5NC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjcxNi0vKiBkZWxldGUgYW4gcnRva2VuIGZyb20gYWxsIGxpbmtzICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjI3MTc6aW50IHNtY19ydG9rZW5fZGVsZXRlKHN0cnVjdCBzbWNfbGluayAqbG5rLCBfX2JlMzIgbndfcmtleSlcXG5uZXQvc21jL3NtY19jb3JlLmMtMjcxOC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjczNy0vKiBzYXZlIHJrZXkgYW5kIGRtYV9hZGRyIHJlY2VpdmVkIGZyb20gcGVlciBkdXJpbmcgY2xjIGhhbmRzaGFrZSAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoyNzM4OmludCBzbWNfcm1iX3J0b2tlbl9oYW5kbGluZyhzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxubmV0L3NtYy9zbWNfY29yZS5jLTI3MzktXFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfbGluayAqbG5rLFxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTI3NDgtXFxubmV0L3NtYy9zbWNfY29yZS5jOjI3NDk6c3RhdGljIHZvaWQgc21jX2NvcmVfZ29pbmdfYXdheSh2b2lkKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzUwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzcwLS8qIENsZWFuIHVwIGFsbCBTTUMgbGluayBncm91cHMgKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6Mjc3MTpzdGF0aWMgdm9pZCBzbWNfbGdyc19zaHV0ZG93bih2b2lkKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzcyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzg0LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoyNzg1OnN0YXRpYyBpbnQgc21jX2NvcmVfcmVib290X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcXG5uZXQvc21jL3NtY19jb3JlLmMtMjc4Ni1cXHRcXHRcXHRcXHQgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jPTI3OTg9aW50IF9faW5pdCBzbWNfY29yZV9pbml0KHZvaWQpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjgwMy0vKiBDYWxsZWQgKGZyb20gc21jX2V4aXQpIHdoZW4gbW9kdWxlIGlzIHJlbW92ZWQgKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MjgwNDp2b2lkIHNtY19jb3JlX2V4aXQodm9pZClcXG5uZXQvc21jL3NtY19jb3JlLmMtMjgwNS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM5OjM0LjAzNDE5MDAzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NzA5OTc3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgU2VsZWN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB0YXJnZXRzIGZvciBmdXp6aW5nIHRoaXMgU01DIGNvZGUuIEkgc2VlIHRoYXQgYHNtY3JfbGlua19pbml0YCwgYHNtY19pYmRldl9pbml0X2JlZ2luYCwgYHNtY19pYmRldl9pbml0X2VuZGAsIGBzbWNfaWJkZXZfZ2V0YCwgYHNtY19pYmRldl9wdXRgLCBhbmQgYHNtY19pbml0X2luZm9fZnJlZWAgYXJlIGFsbCBub24tc3RhdGljLiBHb29kLCB0aGF0IGJyb2FkZW5zIHRoZSBzY29wZSBmb3IgcG90ZW50aWFsIGluc3RydW1lbnRhdGlvbi5cblxuSG93ZXZlciwgdGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hpY2ggb25lcyBhcmUgKmludGVyZXN0aW5nKiBmb3IgZnV6emluZy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBvbmVzIHRoYXQgcmVwcmVzZW50IGtleSBsb2dpYyBvciBhcmUgbGlrZWx5IHRvIGhhdmUgY29tcGxleCBzdGF0ZSB0cmFuc2l0aW9ucy4gSSdtIHRoaW5raW5nIGBzbWNfY29ubmVjdGAsIGBzbWNfbGlzdGVuYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYW5kIGBzbWNyX2xpbmtfaW5pdGAgYXJlIHRoZSBwcmltZSBjYW5kaWRhdGVzLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZS4uLiBgc21jX2Nvbm5lY3RgIGFuZCBgc21jX2xpc3RlbmAgYXJlIHN0YW5kYXJkIHN5c2NhbGxzLCByaWdodD8gVGhleSdyZSBnb2luZyB0byBiZSBoZWF2aWx5IGV4ZXJjaXNlZCBwYXRocyBmb3IgYW55IHNvY2tldC1iYXNlZCBjb21tdW5pY2F0aW9uLiBJJ20gcHJvYmFibHkgZ29pbmcgdG8gZmluZCB0b25zIG9mIGV4aXN0aW5nIGZ1enppbmcgb24gdGhvc2UsIGFuZCB0aGUgU01DLXNwZWNpZmljIGxvZ2ljIGVtYmVkZGVkIHRoZXJlIG1pZ2h0IGJlIG1pbmltYWwuIEl0J3MgbGlrZWx5IHRoYXQgZm9jdXNpbmcgb24gYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYW5kIGBzbWNyX2xpbmtfaW5pdGAgd2lsbCBnaXZlIG1lIG1vcmUgXCJiYW5nIGZvciBteSBidWNrLlwiIFRoZXkgc2VlbSBtb3JlIFNNQy1zcGVjaWZpYyBhbmQgbGVzcyBsaWtlbHkgdG8gYmUgc2F0dXJhdGVkIHdpdGggc3RhbmRhcmQgc29ja2V0IGZ1enppbmcuXG5cbk5vdywgSSdtIGFsc28gc2VlaW5nIHRoYXQgYHNtY19wbmV0X2RldGVybWluZV9naWRgIGhhcyBiZWVuIG1vZGlmaWVkLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIHRoYXQncyBzdGF0aWMsIGJlY2F1c2UgSSBjb3VsZCd2ZSBtaXNzZWQgaXQgYXQgdGhlIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTUwOSwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOTo0MC41MDUxOTA2MzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzODUwMzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oaW50fHZvaWR8c3RhdGljIGludHxzdGF0aWMgdm9pZCkgW2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX3BuZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19wbmV0LmM9ODU9c3RhdGljIGJvb2wgc21jX3BuZXRfbWF0Y2godTggKnBuZXRpZDEsIHU4ICpwbmV0aWQyKVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTEwMC0gKi9cXG5uZXQvc21jL3NtY19wbmV0LmM6MTAxOnN0YXRpYyBpbnQgc21jX3BuZXRfcmVtb3ZlX2J5X3BuZXRpZChzdHJ1Y3QgbmV0ICpuZXQsIGNoYXIgKnBuZXRfbmFtZSlcXG5uZXQvc21jL3NtY19wbmV0LmMtMTAyLXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xODQtICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjE4NTpzdGF0aWMgaW50IHNtY19wbmV0X2FkZF9ieV9uZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xODYte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTIxNi0gKi9cXG5uZXQvc21jL3NtY19wbmV0LmM6MjE3OnN0YXRpYyBpbnQgc21jX3BuZXRfcmVtb3ZlX2J5X25kZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxubmV0L3NtYy9zbWNfcG5ldC5jLTIxOC17XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmM9MzI5PXN0YXRpYyBzdHJ1Y3Qgc21jZF9kZXYgKnNtY19wbmV0X2ZpbmRfc21jZChjaGFyICpzbWNkX25hbWUpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtMzQ3LVxcbm5ldC9zbWMvc21jX3BuZXQuYzozNDg6c3RhdGljIGludCBzbWNfcG5ldF9hZGRfZXRoKHN0cnVjdCBzbWNfcG5ldHRhYmxlICpwbmV0dGFibGUsIHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvc21jL3NtY19wbmV0LmMtMzQ5LVxcdFxcdFxcdCAgICBjaGFyICpldGhfbmFtZSwgY2hhciAqcG5ldF9uYW1lKVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTQxMC1cXG5uZXQvc21jL3NtY19wbmV0LmM6NDExOnN0YXRpYyBpbnQgc21jX3BuZXRfYWRkX2liKHN0cnVjdCBzbWNfcG5ldHRhYmxlICpwbmV0dGFibGUsIGNoYXIgKmliX25hbWUsXFxubmV0L3NtYy9zbWNfcG5ldC5jLTQxMi1cXHRcXHRcXHQgICB1OCBpYl9wb3J0LCBjaGFyICpwbmV0X25hbWUpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNDc2LSAqL1xcbm5ldC9zbWMvc21jX3BuZXQuYzo0Nzc6c3RhdGljIGludCBzbWNfcG5ldF9lbnRlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxubmV0L3NtYy9zbWNfcG5ldC5jLTQ3OC17XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNTMzLS8qIENvbnZlcnQgYW4gc21jX3BuZXRlbnRyeSB0byBhIG5ldGxpbmsgYXR0cmlidXRlIHNlcXVlbmNlICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjUzNDpzdGF0aWMgaW50IHNtY19wbmV0X3NldF9ubGEoc3RydWN0IHNrX2J1ZmYgKm1zZyxcXG5uZXQvc21jL3NtY19wbmV0LmMtNTM1LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX3BuZXRlbnRyeSAqcG5ldGVsZW0pXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNTU5LVxcbm5ldC9zbWMvc21jX3BuZXQuYzo1NjA6c3RhdGljIGludCBzbWNfcG5ldF9hZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvc21jL3NtY19wbmV0LmMtNTYxLXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy01NjYtXFxubmV0L3NtYy9zbWNfcG5ldC5jOjU2NzpzdGF0aWMgaW50IHNtY19wbmV0X2RlbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9zbWMvc21jX3BuZXQuYy01Njgte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTU3Ni1cXG5uZXQvc21jL3NtY19wbmV0LmM6NTc3OnN0YXRpYyBpbnQgc21jX3BuZXRfZHVtcF9zdGFydChzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L3NtYy9zbWNfcG5ldC5jLTU3OC17XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNTgyLVxcbm5ldC9zbWMvc21jX3BuZXQuYzo1ODM6c3RhdGljIGludCBzbWNfcG5ldF9kdW1waW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9zbWMvc21jX3BuZXQuYy01ODQtXFx0XFx0XFx0ICAgICB1MzIgcG9ydGlkLCB1MzIgc2VxLCB1MzIgZmxhZ3MsXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNjAwLVxcbm5ldC9zbWMvc21jX3BuZXQuYzo2MDE6c3RhdGljIGludCBfc21jX3BuZXRfZHVtcChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBwb3J0aWQsXFxubmV0L3NtYy9zbWNfcG5ldC5jLTYwMi1cXHRcXHRcXHQgIHUzMiBzZXEsIHU4ICpwbmV0aWQsIGludCBzdGFydF9pZHgpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNjMyLVxcbm5ldC9zbWMvc21jX3BuZXQuYzo2MzM6c3RhdGljIGludCBzbWNfcG5ldF9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG5uZXQvc21jL3NtY19wbmV0LmMtNjM0LXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy02NDUtLyogUmV0cmlldmUgb25lIFBORVRJRCBlbnRyeSAqL1xcbm5ldC9zbWMvc21jX3BuZXQuYzo2NDY6c3RhdGljIGludCBzbWNfcG5ldF9nZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvc21jL3NtY19wbmV0LmMtNjQ3LXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy02NzMtICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjY3NDpzdGF0aWMgaW50IHNtY19wbmV0X2ZsdXNoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3NtYy9zbWNfcG5ldC5jLTY3NS17XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmM9NzI2PWJvb2wgc21jX3BuZXRfaXNfbmRldl9wbmV0aWQoc3RydWN0IG5ldCAqbmV0LCB1OCAqcG5ldGlkKVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTc0NC1cXG5uZXQvc21jL3NtY19wbmV0LmM6NzQ1OnN0YXRpYyBpbnQgc21jX3BuZXRfYWRkX3BuZXRpZChzdHJ1Y3QgbmV0ICpuZXQsIHU4ICpwbmV0aWQpXFxubmV0L3NtYy9zbWNfcG5ldC5jLTc0Ni17XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNzcwLVxcbm5ldC9zbWMvc21jX3BuZXQuYzo3NzE6c3RhdGljIHZvaWQgc21jX3BuZXRfcmVtb3ZlX3BuZXRpZChzdHJ1Y3QgbmV0ICpuZXQsIHU4ICpwbmV0aWQpXFxubmV0L3NtYy9zbWNfcG5ldC5jLTc3Mi17XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNzg4LVxcbm5ldC9zbWMvc21jX3BuZXQuYzo3ODk6c3RhdGljIHZvaWQgc21jX3BuZXRfYWRkX2Jhc2VfcG5ldGlkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvc21jL3NtY19wbmV0LmMtNzkwLVxcdFxcdFxcdFxcdCAgICAgdTggKm5kZXZfcG5ldGlkKVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTgwMy0vKiBjcmVhdGUgaW5pdGlhbCBsaXN0IG9mIG5ldGRldmljZSBwbmV0aWRzICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjgwNDpzdGF0aWMgdm9pZCBzbWNfcG5ldF9jcmVhdGVfcG5ldGlkc19saXN0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvc21jL3NtY19wbmV0LmMtODA1LXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy04MjUtLyogY2xlYW4gdXAgbGlzdCBvZiBuZXRkZXZpY2UgcG5ldGlkcyAqL1xcbm5ldC9zbWMvc21jX3BuZXQuYzo4MjY6c3RhdGljIHZvaWQgc21jX3BuZXRfZGVzdHJveV9wbmV0aWRzX2xpc3Qoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9zbWMvc21jX3BuZXQuYy04Mjcte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTgzOC1cXG5uZXQvc21jL3NtY19wbmV0LmM6ODM5OnN0YXRpYyBpbnQgc21jX3BuZXRfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcXG5uZXQvc21jL3NtY19wbmV0LmMtODQwLVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmM9ODcyPXN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgc21jX25ldGRldl9ub3RpZmllciA9IHtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy04NzYtLyogaW5pdCBuZXR3b3JrIG5hbWVzcGFjZSAqL1xcbm5ldC9zbWMvc21jX3BuZXQuYzo4Nzc6aW50IHNtY19wbmV0X25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvc21jL3NtY19wbmV0LmMtODc4LXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYz04OTM9aW50IF9faW5pdCBzbWNfcG5ldF9pbml0KHZvaWQpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtOTA3LS8qIGV4aXQgbmV0d29yayBuYW1lc3BhY2UgKi9cXG5uZXQvc21jL3NtY19wbmV0LmM6OTA4OnZvaWQgc21jX3BuZXRfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9zbWMvc21jX3BuZXQuYy05MDkte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTkxNC1cXG5uZXQvc21jL3NtY19wbmV0LmM6OTE1OnZvaWQgc21jX3BuZXRfZXhpdCh2b2lkKVxcbm5ldC9zbWMvc21jX3BuZXQuYy05MTYte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jPTk0Mz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKnBuZXRfZmluZF9iYXNlX25kZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtOTUwLVxcbm5ldC9zbWMvc21jX3BuZXQuYzo5NTE6c3RhdGljIGludCBzbWNfcG5ldF9maW5kX25kZXZfcG5ldGlkX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbm5ldC9zbWMvc21jX3BuZXQuYy05NTItXFx0XFx0XFx0XFx0XFx0ICAgICAgdTggKnBuZXRpZClcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy05NzYtXFxubmV0L3NtYy9zbWNfcG5ldC5jOjk3NzpzdGF0aWMgaW50IHNtY19wbmV0X2RldGVybWluZV9naWQoc3RydWN0IHNtY19pYl9kZXZpY2UgKmliZGV2LCBpbnQgaSxcXG5uZXQvc21jL3NtY19wbmV0LmMtOTc4LVxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDA1LS8qIGZpbmQgYSByb2NlIGRldmljZSBmb3IgdGhlIGdpdmVuIHBuZXRpZCAqL1xcbm5ldC9zbWMvc21jX3BuZXQuYzoxMDA2OnN0YXRpYyB2b2lkIF9zbWNfcG5ldF9maW5kX3JvY2VfYnlfcG5ldGlkKHU4ICpwbmV0X2lkLFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDA3LVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSxcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDM0LS8qIGZpbmQgYWx0ZXJuYXRlIHJvY2UgZGV2aWNlIHdpdGggc2FtZSBwbmV0X2lkLCB2bGFuX2lkIGFuZCBuZXQgbmFtZXNwYWNlICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjEwMzU6dm9pZCBzbWNfcG5ldF9maW5kX2FsdF9yb2NlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDM2LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTEwNDYtICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjEwNDc6c3RhdGljIHZvaWQgc21jX3BuZXRfZmluZF9yZG1hX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDQ4LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtMTA4NS0gKi9cXG5uZXQvc21jL3NtY19wbmV0LmM6MTA4NjpzdGF0aWMgdm9pZCBzbWNfcG5ldF9maW5kX3JvY2VfYnlfcG5ldGlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDg3LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTExMDQtXFxubmV0L3NtYy9zbWNfcG5ldC5jOjExMDU6c3RhdGljIHZvaWQgc21jX3BuZXRfZmluZF9pc21fYnlfcG5ldGlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMTA2LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtMTEzNC0gKi9cXG5uZXQvc21jL3NtY19wbmV0LmM6MTEzNTp2b2lkIHNtY19wbmV0X2ZpbmRfcm9jZV9yZXNvdXJjZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxubmV0L3NtYy9zbWNfcG5ldC5jLTExMzYte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTExNTEtXFxubmV0L3NtYy9zbWNfcG5ldC5jOjExNTI6dm9pZCBzbWNfcG5ldF9maW5kX2lzbV9yZXNvdXJjZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxubmV0L3NtYy9zbWNfcG5ldC5jLTExNTMte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTExNzItICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjExNzM6aW50IHNtY19wbmV0aWRfYnlfdGFibGVfaWIoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2LCB1OCBpYl9wb3J0KVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMTc0LXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMjAxLSAqL1xcbm5ldC9zbWMvc21jX3BuZXQuYzoxMjAyOmludCBzbWNfcG5ldGlkX2J5X3RhYmxlX3NtY2Qoc3RydWN0IHNtY2RfZGV2ICpzbWNkZGV2KVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMjAzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzk6NDAuNTU5MDQ1ODgxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MDMxMzk1NTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmluaW5nIHRoZSBUYXJnZXQgTGlzdCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIG5hcnJvdyBkb3duIHRoZSBiZXN0IGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gYHNtY19wbmV0X2RldGVybWluZV9naWRgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgaXQncyBub3QgZGlyZWN0bHkgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgaXRzIGNvbXBpbGF0aW9uIHVuaXQg4oCTIHRoYXQncyBvZmYgdGhlIHRhYmxlLiBOb3csIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgb25lIGFyZSB0aGUgb25lcyBJJ20gaW50ZXJlc3RlZCBpbi5cblxuRmlyc3QgcGFzczogSSd2ZSBpZGVudGlmaWVkIGBzbWNyX2xpbmtfaW5pdGAsIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAsIGBzbWNfaWJkZXZfaW5pdF9lbmRgLCBgc21jX2liZGV2X2dldGAsIGBzbWNfaWJkZXZfcHV0YCwgYHNtY19pbml0X2luZm9fZnJlZWAsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGFuZCBgc21jX2xsY19zcnZfYWRkX2xpbmtgLiBJIG5lZWQgdG8gc29ydCB0aGVzZS5cblxuQXJlIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAgYW5kIGBzbWNfaWJkZXZfaW5pdF9lbmRgIGFjdHVhbGx5IGV4cG9ydGVkPyBBaCwgbm8sIHRoZXkncmUganVzdCBub24tc3RhdGljLCBzbyB0aGUgc2FtZSBzY29waW5nIHJ1bGVzIHN0aWxsIGFwcGx5LiBUaGF0IG1ha2VzIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AgYW5kIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AgYXR0cmFjdGl2ZSBjYW5kaWRhdGVzIGJlY2F1c2UgdGhleSdyZSBsaWtlbHkgaW52b2x2ZWQgaW4gaGFuZGxpbmcgbmV0d29yayBjb21tdW5pY2F0aW9uLCB3aGljaCBpcyBhIGNvbW1vbiBmdXp6aW5nIHRhcmdldC4gYHNtY3JfbGlua19pbml0YCBhbHNvIHNlZW1zIHByb21pc2luZyBhcyBhIGNvcmUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGxvb2tzIGxpa2UgYSBjbGVhbnVwIGZ1bmN0aW9uLCBzbyBJJ2xsIGtlZXAgYW4gZXllIG9uIGl0LCBidXQgaXQgbWlnaHQgbm90IGJlIHRoZSAqYmVzdCogc3RhcnRpbmcgcG9pbnQuXG5cbkknbGwgY29uZmlybSB0aGUgcmVhY2hhYmlsaXR5IG9mIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AuIEl0J3MgY2FsbGVkIGZyb20gYHNtY19sbGNfcHJvY2Vzc19jbGlfYWRkX2xpbmtgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgc21jX2xsY19ldmVudF9oYW5kbGVyYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHNtY19sbGNfZXZlbnRfd29ya2AuIFRoYXQgY2hhaW4gdGVsbHMgbWUgdGhpcyBnZXRzIHRyaWdnZXJlZCBieSBpbmNvbWluZyBuZXR3b3JrIHRyYWZmaWMuIERlZmluaXRlbHkgcmVhY2hhYmxlLCBzbyBnb29kLlxuXG5MZXQncyBzdW1tYXJpemUgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBJIGFtIGNvbnNpZGVyaW5nIGZvciBmdXp6aW5nOiBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBgc21jcl9saW5rX2luaXRgLCBgc21jX2liZGV2X2luaXRfYmVnaW5gLCBhbmQgYHNtY19pYmRldl9pbml0X2VuZGAuXG5cbkhvbGQgb24uLi4gSSdtIGxvb2tpbmcgYXQgYHNtY19pYmRldl9pbml0X2JlZ2luYCBhbmQgYHNtY19pYmRldl9pbml0X2VuZGAuIFRoZXkncmUgc2ltcGxlIHdyYXBwZXJzIHdpdGggbXV0ZXggbG9ja3MgYW5kIGF0b21pYyBvcGVyYXRpb25zOlxuXG5gYGBjXG5pbnQgc21jX2liZGV2X2luaXRfYmVnaW4oc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxue1xuXHRpbnQgcmMgPSAwO1xuXG5cdG11dGV4X2xvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuXHRpZiAobGlzdF9lbXB0eShcdTAwMjZzbWNpYmRldi1cdTAwM2VsaXN0KSlcblx0XHRyYyA9IC1FTk9ERVY7XG5cdGVsc2Vcblx0XHRhdG9taWNfaW5jKFx1MDAyNnNtY2liZGV2LVx1MDAzZWluaXRfY250KTtcblx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNtY19pYl9kZXZpY2VzLm11dGV4KTtcblx0cmV0dXJuIHJjO1xufVxuXG52b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG57XG5cdG11dGV4X2xvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpXG5cdFx0d2FrZV91cChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X3dhaXQpO1xuXHRtdXRleF91bmxvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xufVxuYGBgXG5cblRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHRvbyBzaW1wbGUgdG8gb2ZmZXIgbWVhbmluZ2Z1bCBmdXp6aW5nIHRhcmdldHMuIFNvLCBJJ2xsIGRyb3AgdGhlc2UgZnJvbSB0aGUgcHJpbWFyeSBsaXN0LiBgc21jcl9saW5rX2luaXRgIGFwcGVhcnMgYmV0dGVyIGJlY2F1c2UgaXQgaXMgbW9yZSBjb21wbGV4IHRoYW4gdGhlIHByZXZpb3VzIHR3by4gYHNtY19sbGNfY2xpX2FkZF9saW5rYCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYCBhcmUgc3RpbGwgc29saWQgY2hvaWNlcy5cblxuTGV0J3MgbWFrZSBzdXJlIEkgZGlkbid0IG1pc3MgYW55IG90aGVyIGZ1bmN0aW9ucyBtb2RpZmllZCBpbiB0aGlzIGFyZWEuIE9oLCBgc21jX2liX25kZXZfY2hhbmdlYCBpcyBtb2RpZmllZC5cblxuYGBgY1xudm9pZCBzbWNfaWJfbmRldl9jaGFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpXG5gYGBcblxuTm8sIHdhaXQuIFRoYXQgbW9kaWZpY2F0aW9uIGxvb2tzIGxpa2UgY29udGV4dCwgbm90IGZ1bmN0aW9uYWxpdHkuIEFuZCB0aGUgZGlmZiBzaG93cyBhIHN0YXRpYyBgc21jX2liZGV2X3JlbGVhc2VgIGJlaW5nIGludHJvZHVjZWQuIFRoYXQncyBub3QgdGhlIHByaW1hcnkgZm9jdXMgaGVyZS5cblxuV2hhdCBhYm91dCB0aGUgbmV3IGZ1bmN0aW9ucywgYHNtY19pYmRldl9nZXRgIGFuZCBgc21jX2liZGV2X3B1dGA/XG5cbmBgYGNcbnZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG52b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxuYGBgXG5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM1NzMsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM5OjU0LjU5MDQ0NDg2NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2NDg2MjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvS2NvbmZpZz0yPWNvbmZpZyBTTUNcXG5uZXQvc21jL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxubmV0L3NtYy9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbm5ldC9zbWMvS2NvbmZpZy01LVxcdGhlbHBcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZz0xND1jb25maWcgU01DX0RJQUdcXG5uZXQvc21jL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbm5ldC9zbWMvS2NvbmZpZzoxNjpcXHRkZXBlbmRzIG9uIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0xNy1cXHRoZWxwXFxuLS1cXG5uZXQvc21jL0tjb25maWc9MjM9Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbm5ldC9zbWMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XFxcIlxcbm5ldC9zbWMvS2NvbmZpZzoyNTpcXHRkZXBlbmRzIG9uIFNNQyBcXHUwMDI2XFx1MDAyNiBCUEZfSklUIFxcdTAwMjZcXHUwMDI2IEJQRl9TWVNDQUxMXFxubmV0L3NtYy9LY29uZmlnLTI2LVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOTo1NC44NjY5MzYyNTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI5NTM1MzY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBJJ3ZlIGdvdCBgRElCU2AgcGVnZ2VkIGFzIGEgZGVwZW5kZW5jeSwgbm8gc3VycHJpc2VzIHRoZXJlLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0IG90aGVyIHBhY2thZ2VzIG9yIGxpYnJhcmllcyBhcmUgcmVseWluZyBvbiB0aGF0LCBlc3BlY2lhbGx5IGFzIGl0IHJlbGF0ZXMgdG8gbXkgYElORklOSUJBTkRgIGltcGxlbWVudGF0aW9uPyBUaW1lIHRvIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jeSB0cmVlIGFuZCBtYXAgb3V0IHdoYXQgSSdtIGRlYWxpbmcgd2l0aC4gTGV0J3Mgc2VlIGlmIHRoaXMgY3JlYXRlcyBhIHRhbmdsZSBvciBpZiBpdCdzIGZhaXJseSBzdHJhaWdodGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1OTk3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzk6NTguMTYyMjkyNjA0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU1MjQ2MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElORklOSUJBTkRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyOm1lbnVjb25maWcgSU5GSU5JQkFORFxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTE2PWlmIElORklOSUJBTkRcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoxODpjb25maWcgSU5GSU5JQkFORF9VU0VSX01BRFxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHVzZXJzcGFjZSBNQUQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI3LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjI4OmNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMjktXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgdXNlcnNwYWNlIGFjY2VzcyAodmVyYnMgYW5kIENNKVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTM5LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjQwOmNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTX0NPUkVcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00MS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00My1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NDpjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQ1LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTUwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjUxOmNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01Mi1cXHRib29sIFxcXCJJbmZpbmlCYW5kIG9uLWRlbWFuZCBwYWdpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTYzLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjY0OmNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02NS1cXHRib29sIFxcXCJSRE1BL0NNXFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNzEtXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NzI6Y29uZmlnIElORklOSUJBTkRfQUREUl9UUkFOU19DT05GSUdGU1xcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTczLVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTgwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjgxOmNvbmZpZyBJTkZJTklCQU5EX1ZJUlRfRE1BXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctODItXFx0ZGVmX2Jvb2wgIUhJR0hNRU1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzk6NTguMjg3ODIzODcxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NzA2MjAyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ2hlY2tpbmcgSW5maW5pYmFuZCBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBtZXRpY3Vsb3VzbHkgdmVyaWZ5IHRoZSBgSU5GSU5JQkFORGAgZGVwZW5kZW5jaWVzLiBUaGlzIGlzbid0IGp1c3QgYSBzdXJmYWNlLWxldmVsIHNjYW47IEkgbmVlZCB0byBlbnN1cmUgYSBob2xpc3RpYyB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBjb21wb25lbnRzIGFyZSBpbnRlcmNvbm5lY3RlZC4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBoYXJkd2FyZSwgZmlybXdhcmUgdmVyc2lvbnMsIGRyaXZlciBjb21wYXRpYmlsaXR5IGFjcm9zcyB0aGUgc3RhY2ssIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgaW5zdGFsbGVkIHNvZnR3YXJlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgY29ycmVjdCBmYWJyaWMgY29uZmlndXJhdGlvbiwgZm9jdXNpbmcgb24gbGluayBzcGVlZHMsIHJvdXRpbmcgdGFibGVzLCBhbmQgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcy4gRnVydGhlciwgSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIHNvZnR3YXJlIGxheWVyOiBhcmUgdGhlIG5lY2Vzc2FyeSBsaWJyYXJpZXMgaW5zdGFsbGVkPyBBcmUgdGhleSB0aGUgY29ycmVjdCB2ZXJzaW9ucz8gRG9lcyB0aGUgYXBwbGljYXRpb24gZW52aXJvbm1lbnQgY29ycmVjdGx5IGFjY291bnQgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgSW5maW5pQmFuZCBmYWJyaWM/IEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgdGhlIE9TIG1vZHVsZXMsIHRoZSBNUEkgaW1wbGVtZW50YXRpb24gKGlmIGFwcGxpY2FibGUpLCBhbmQgYW55IGN1c3RvbSBkcml2ZXJzIGludm9sdmVkLiBJIGFsc28gbmVlZCB0byBjb25zaWRlciB0aGUgaW1wYWN0IG9mIGFueSByZWNlbnQgY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgdGhhdCBtYXkgYWZmZWN0IHRoZSBJbmZpbmlCYW5kIHNldHVwLiBBbnkga2VybmVsIHVwZ3JhZGVzIG9yIGRyaXZlciB1cGRhdGVzIHdvdWxkIG5lZWQgc3BlY2lhbCBhdHRlbnRpb24uIFVsdGltYXRlbHksIGEgc21vb3RoIGFuZCByZWxpYWJsZSBJbmZpbmlCYW5kIGNvbmZpZ3VyYXRpb24gaXMgcGFyYW1vdW50IGZvciBwZWFrIHN5c3RlbSBwZXJmb3JtYW5jZSwgc28gYSByaWdvcm91cyBhbmQgd2VsbC1jb25zaWRlcmVkIGludmVzdGlnYXRpb24gaXMgZXNzZW50aWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjczOSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjQwOjAzLjE1ODQ0NjkzNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3NjU5NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0yPW1lbnVjb25maWcgSU5GSU5JQkFORFxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1OlxcdGRlcGVuZHMgb24gTkVUXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NjpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo3OlxcdGRlcGVuZHMgb24gIUFMUEhBXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctOC1cXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTE4PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUFEXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgdXNlcnNwYWNlIE1BRCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjIwOlxcdGRlcGVuZHMgb24gSU5GSU5JQkFORFxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTIxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTI4PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMjktXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgdXNlcnNwYWNlIGFjY2VzcyAodmVyYnMgYW5kIENNKVxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzozMDpcXHRkZXBlbmRzIG9uIE1NVVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTMxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTQ0PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUVNXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDUtXFx0Ym9vbFxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjQ2OlxcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX0FDQ0VTUyAhPSBuXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDc6XFx0ZGVwZW5kcyBvbiBNTVVcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00OC1cXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTUxPWNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01Mi1cXHRib29sIFxcXCJJbmZpbmlCYW5kIG9uLWRlbWFuZCBwYWdpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MzpcXHRkZXBlbmRzIG9uIElORklOSUJBTkRfVVNFUl9NRU1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01NC1cXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz02ND1jb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiUkRNQS9DTVxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo2NjpcXHRkZXBlbmRzIG9uIElORklOSUJBTkRcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02Ny1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTcyPWNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNfQ09ORklHRlNcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03My1cXHRib29sXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NzQ6XFx0ZGVwZW5kcyBvbiBJTkZJTklCQU5EX0FERFJfVFJBTlMgXFx1MDAyNlxcdTAwMjYgQ09ORklHRlNfRlMgXFx1MDAyNlxcdTAwMjYgIShJTkZJTklCQU5EPXkgXFx1MDAyNlxcdTAwMjYgQ09ORklHRlNfRlM9bSlcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03NS1cXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6MDMuMjAyMjE5MDExWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMTE1NTA5NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBRdWFuZGFyeSoqXG5cbkFscmlnaHQsIGxldCBtZSBtYXAgdGhpcyBvdXQuIFRvIGdldCBgSU5GSU5JQkFORGAgd29ya2luZywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgTkVUYCwgYW5kIGBJTkVUYCBlbmFibGVkLCBhbmQsIGltcG9ydGFudGx5LCB0aGF0IEkgKmRvbid0KiBoYXZlIGFuIGBBTFBIQWAgYXJjaGl0ZWN0dXJlLiBTbywgYmFzZWQgb24gdGhvc2UgZGVwZW5kZW5jaWVzLCBteSBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGFic29sdXRlbHkgaW5jbHVkZSBgU01DYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgLlxuXG5IYW5nIG9uIGEgc2Vjb25k4oCmIERvZXMgYFNNQ2AgcmVxdWlyZSBgU01DX0RJQUdgPyBOb3BlLCBzY3JhdGNoIHRoYXQuIEl0IGRvZXNuJ3QuIEFuZCBJIHJlY2FsbCB0aGF0IGBTTUNgIHdvcmtzIHdpdGgga2VybmVsLXNwYWNlIFJETUEsIHNvIGl0IGRvZXNuJ3QgbmVlZCBgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU2AuIFJpZ2h0LiBcblxuTm93LCBpZiBJJ20gdHJ5aW5nIHRvIHRlc3QgYFNNQ2Agb3ZlciBSRE1BIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dCwgSSdtIGdvaW5nIHRvIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRvIHNpbXVsYXRlIGFuIFJETUEgZW52aXJvbm1lbnQuIFRoYXQgbWVhbnMgY29uc2lkZXJpbmcgd2hldGhlciBgUkRNQV9SWEVgIChTb2Z0IFJvQ0UpLCBgU01DX0xPYCAobG9vcGJhY2spLCBvciBgSVNNYCAoZHVtbXkgSVNNKSBhcmUgcmVsZXZhbnQuIEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJ3MgYSBkdW1teSBJU00gb3IgbG9vcGJhY2sgYXZhaWxhYmxlLCBiZWNhdXNlIHRoYXQgd2lsbCBhbGxvdyBmb3IgYSBmdWxseSBjb250YWluZWQsIHNpbXVsYXRlZCBlbnZpcm9ubWVudC4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggYXBwcm9hY2ggaXMgYmVzdCBzdWl0ZWQgdG8gbXkgdGVzdCBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzc0OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDowOS4yMTM3NzI2NzdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODA0NTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcXG5uZXQvc21jL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMTMtXFxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xcbm5ldC9zbWMvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiU01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMjItXFxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcXG5uZXQvc21jL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6MDkuMjYzNTgyMTYxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3NjE3MjA0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUmV2aXNpdGluZyB0aGUgU01DIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGNpcmNsZSBiYWNrIGFuZCBnaXZlIGBuZXQvc21jL0tjb25maWdgIGFub3RoZXIgbG9vay4gSSd2ZSBiZWVuIGZvY3VzaW5nIG9uIFttZW50aW9uIHRoZSByZWxldmFudCBhcmVhIG9yIHRhc2ssIGUuZy4sIHRoZSByZWNlbnQgUkRNQSBpbXByb3ZlbWVudHMsIGEgc3BlY2lmaWMgYnVnLCBhIHBlcmZvcm1hbmNlIGlzc3VlLCBvciBhIG5ldyBmZWF0dXJlXS4gR2l2ZW4gdGhlIGNvbXBsZXhpdGllcyBvZiBTTUMgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmtpbmcgc3RhY2ssIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsIGluIHRoYXQgY29uZmlndXJhdGlvbiBmaWxlLiBUaGVyZSBjb3VsZCBiZSBzdWJ0bGUgZGVwZW5kZW5jaWVzLCBvcHRpb25zIEkgb3Zlcmxvb2tlZCwgb3IgaW1wbGljYXRpb25zIHJlbGF0ZWQgdG8gW21lbnRpb24gYSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gb3Igc3Vic3lzdGVtXS4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBLY29uZmlnIGlzIGNvcnJlY3RseSByZWZsZWN0aW5nIGFueSBjaGFuZ2VzIEkndmUgbWFkZSwgYW5kIGhhc24ndCBpbnRyb2R1Y2VkIGFueSByZWdyZXNzaW9ucyBvciBjb25mbGljdHMuIExldCdzIHNlZSBpZiB0aGVyZSdzIGFueXRoaW5nIEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSwgZGlzYWJsZSwgb3IgYWRqdXN0LCBvciBpZiBhbnkgbmV3IG9wdGlvbnMgaGF2ZSBiZWVuIGFkZGVkLiBUaW1lIHRvIGRpdmUgYmFjayBpbiBhbmQgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODQxMywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjQwOjE2LjAyNTMwNTQxN1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc21jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTTUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgU01DLVIgcHJvdmlkZXMgYSBcXFwic29ja2V0cyBvdmVyIFJETUFcXFwiIHNvbHV0aW9uIG1ha2luZyB1c2Ugb2ZcXG4gICA3OlxcdFxcdCAgUkRNQSBvdmVyIENvbnZlcmdlZCBFdGhlcm5ldCAoUm9DRSkgdGVjaG5vbG9neSB0byB1cGdyYWRlXFxuICAgODpcXHRcXHQgIEFGX0lORVQgVENQIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXFxuICAgOTpcXHRcXHQgIFRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU01DLVIgc29sdXRpb24gaXMgZGVzaWduZWQgYXNcXG4gIDEwOlxcdFxcdCAgYSBzZXBhcmF0ZSBzb2NrZXQgZmFtaWx5IFNNQy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBTTUNfRElBR1xcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBTTUNcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcXG4gIDE5OlxcdFxcdCAgc21jc3MuXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdCAgaWYgdW5zdXJlLCBzYXkgWS5cXG4gIDIyOlxcdFxcbiAgMjM6XFx0Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbiAgMjQ6XFx0XFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG4gIDI1OlxcdFxcdGRlcGVuZHMgb24gU01DIFxcdTAwMjZcXHUwMDI2IEJQRl9KSVQgXFx1MDAyNlxcdTAwMjYgQlBGX1NZU0NBTExcXG4gIDI2OlxcdFxcdGRlZmF1bHQgeVxcbiAgMjc6XFx0XFx0aGVscFxcbiAgMjg6XFx0XFx0ICBTTUNfSFNfQ1RSTF9CUEYgZW5hYmxlcyBzdXBwb3J0IHRvIHJlZ2lzdGVyIGdlbmVyaWMgZUJQRiBob29rIGZvciBTTUNcXG4gIDI5OlxcdFxcdCAgaGFuZHNoYWtlIGZsb3csIHdoaWNoIG9mZmVyIG11Y2ggZ3JlYXRlciBmbGV4aWJpbGl0eSBpbiBtb2RpZnlpbmcgdGhlIGJlaGF2aW9yXFxuICAzMDpcXHRcXHQgIG9mIHRoZSBTTUMgcHJvdG9jb2wgc3RhY2sgY29tcGFyZWQgdG8gYSBjb21wbGV0ZSBrZXJuZWwtYmFzZWQgYXBwcm9hY2guIFNlbGVjdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDoxNi4wMjUzNjY1NjdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzNjM4OTEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU01DL0RJQlMgRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIHNvIGBTTUNgJ3MgZnVuY3Rpb25hbGl0eSBoaW5nZXMgb24gYERJQlNgLiBUaW1lIHRvIGRpdmUgZGVlcGVyIGFuZCBzZWUgZXhhY3RseSBob3cgdGhhdCByZWxhdGlvbnNoaXAgaXMgZGVmaW5lZC4gTXkgaW1tZWRpYXRlIGNvdXJzZSBvZiBhY3Rpb24/IExldCdzIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2Ug4oCTIEknbGwgbmVlZCB0byBleGFtaW5lIGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AgdG8gc2VlIHdoYXQgdGhlIGRlcGVuZGVuY3kgaXMuIFRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBnaXZlbiBteSBleHBlcmllbmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MDk3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDoxOS45NjE3NTc2OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdGNvbmZpZyBESUJTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IG5cXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcXG4gICA3OlxcdFxcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcXG4gICA4OlxcdFxcdCAgaW50byBhIHJlbW90ZSBidWZmZXIuXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHByb3ZpZGUgdGhlIGFic3RyYWN0aW9uIGxheWVyIGJldHdlZW5cXG4gIDExOlxcdFxcdCAgZGlicyBkZXZpY2VzIGFuZCBkaWJzIGNsaWVudHMgbGlrZSB0aGUgU01DIHByb3RvY29sLlxcbiAgMTI6XFx0XFx0ICBUaGUgbW9kdWxlIG5hbWUgaXMgZGlicy5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIERJQlNfTE9cXG4gIDE1OlxcdFxcdGJvb2wgXFxcIkludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1xcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gRElCU1xcbiAgMTc6XFx0XFx0ZGVmYXVsdCBuXFxuICAxODpcXHRcXHRoZWxwXFxuICAxOTpcXHRcXHQgIERJQlNfTE8gZW5hYmxlcyB0aGUgY3JlYXRpb24gb2YgYW4gc29mdHdhcmUtZW11bGF0ZWQgZGlicyBkZXZpY2VcXG4gIDIwOlxcdFxcdCAgbmFtZWQgbG8gd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHRyYW5zZmVycmluZyBkYXRhIHdoZW4gY29tbXVuaWNhdGlvblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDoxOS45NjE4MTgwNloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzc4NTI4NTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gRGV2aWNlIEVtdWxhdGlvbiBhbmQgTmV0d29yayBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBzeXN0ZW0gc2V0dXAsIGFuZCB0aGUgcG90ZW50aWFsIGZvciBzb21lIHNlcmlvdXMgdGVzdGluZyBwb3BzIHJpZ2h0IGludG8gbXkgaGVhZC4gVGhlIGZhY3QgdGhhdCB3ZSBoYXZlIGBESUJTX0xPYCBhdmFpbGFibGUgaGVyZSwgYW5kIHRoYXQgaXQncyBhICpzb2Z0d2FyZS1lbXVsYXRlZCogZGlicyBkZXZpY2UsIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEga2V5IHN0cmF0ZWd5OiBlbmFibGUgdGhhdCB0aGluZyEgV2h5PyBCZWNhdXNlIGdldHRpbmcgU01DIGZ1enplZCBvdmVyIGxvb3BiYWNrIGlzIGp1c3QgZ29vZCBwcmFjdGljZSwgYW5kIHRoaXMgc2VlbXMgbGlrZSB0aGUgcGVyZmVjdCwgbG93LWhhbmdpbmcgZnJ1aXQgb3Bwb3J0dW5pdHkuIFdlIGNhbiBnYWluIHZhbHVhYmxlIGluc2lnaHRzIGludG8gdGhlIGhhbmRsaW5nIG9mIFNNQyB0cmFmZmljIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC5cblxuVGhlbiwgbW92aW5nIG9uIHRvIHRoZSBSb0NFIHNpZGUgb2YgdGhpbmdzLCBgUkRNQV9SWEVgLCBTb2Z0IFJvQ0UsIG5hdHVyYWxseSBjYXRjaGVzIG15IGV5ZS4gSXQncyB0aGUgc2FtZSBwcmluY2lwbGUgYXMgdGhlIGBESUJTX0xPYCDigJMgYSBzb2Z0d2FyZS1iYXNlZCBpbXBsZW1lbnRhdGlvbi4gRW5hYmxpbmcgdGhhdCBpcyBhIG11c3QuIFRoaXMgYWxsb3dzIHVzIHRvIGFzc2VzcyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHN5c3RlbS4gSSdtIGFscmVhZHkgZW52aXNpb25pbmcgdGhlIHRlc3QgY2FzZXMgd2UgY2FuIGJ1aWxkIGFyb3VuZCB0aGlzIHNldHVwIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTU0MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6MjQuMzQwMzQ5ODE1WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzYwMjA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUkRNQV9SWEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZzoyOmNvbmZpZyBSRE1BX1JYRVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTb2Z0d2FyZSBSRE1BIG92ZXIgRXRoZXJuZXQgKFJvQ0UpIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6MjQuMzg3OTU4NDFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU5MzE0MjUzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFNNQyBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBhcmVhcyB0aGlzIHBhdGNoIG1vZGlmaWVzIHdpdGhpbiB0aGUgU01DIHN1YnN5c3RlbS4gSSBzdGFydGVkIGJ5IGxvb2tpbmcgYXQgdGhlIGBFbmFibGVDb25maWdzYCBhbmQgdGhlbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zLlxuXG5UaGUgYEVuYWJsZUNvbmZpZ3NgIGFyZTogYFNNQ2AsIGBJTkZJTklCQU5EYCwgYERJQlNgLCBgRElCU19MT2AsIGFuZCBgUkRNQV9SWEVgLiBUaGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zLCBJIHJlYWxpemUgYERJQlNfTE9gIGlzIGEgYm9vbGVhbiwgd2hpbGUgYERJQlNgLCBgUkRNQV9SWEVgLCBgU01DYCwgYW5kIGBJTkZJTklCQU5EYCBhcmUgdHJpc3RhdGVzLiBHb29kIHRvIGtlZXAgaW4gbWluZCBmb3IgdGVzdGluZyBsYXRlci5cblxuTm93LCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucy4gSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgc2V2ZXJhbDogYHNtY3JfbGlua19pbml0YCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYHNtY19pbml0X2luZm9fZnJlZWAsIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAsIGFuZCBgc21jX2liZGV2X2luaXRfZW5kYC4gSSBxdWlja2x5IGRpc2NvdW50ZWQgYHNtY19pbml0X2luZm9fZnJlZWAgYW5kIHRoZSBgaWJkZXZgIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBhcyB0aGVzZSBhcmUgb25seSBjbGVhbnVwIGFuZCB2ZXJ5IHNpbXBsZSBpbml0aWFsaXphdGlvbnMsIHJlc3BlY3RpdmVseSwgbm90IGNvbXBsZXggbG9naWMgcGF0aHMuIEkgYWxzbyBjaGVja2VkIGBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkYCwgYHNtY19saXN0ZW5fd29ya2AsIGBfX3NtY19jb25uZWN0YCwgYW5kIGBzbWNfZmluZF9yZG1hX3YyX2RldmljZV9zZXJ2YCwgd2hpY2ggYXJlIGFsbCBzdGF0aWMuIFdoaWxlIHRoZXNlIGFyZSByZWxldmFudCwgYF9fc21jX2Nvbm5lY3RgIGlzIGNhbGxlZCBieSBgc21jX2Nvbm5lY3Rfd29ya2AgYW5kIGBzbWNfY29ubmVjdGAgKHN5c2NhbGwgaGFuZGxlcikgYW5kIGBzbWNfbGlzdGVuX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGhhbmRsZXIuIFRoZSBzeXNjYWxscyBhcmUgbGlrZWx5IHRvIGJlIGZ1enplZCBieSBkZWZhdWx0IGFuZCB0aGUgTExDIGZ1bmN0aW9ucyBsb29rIGxpa2UgdGhleSB3aWxsIGJlIGhhbmRsaW5nIGluY29taW5nIHBhY2tldHMsIHNvIHRoZXNlIGFyZSBhbGwgZ29vZCB0byB0ZXN0LlxuXG5JIGFsc28gY2hlY2tlZCBgc21jX2liZGV2X2dldGAgYW5kIGBzbWNfaWJkZXZfcHV0YCwgYnV0IHRoZXNlIGFyZSBqdXN0IHJlZmNvdW50IHdyYXBwZXJzIHNvIG5vdCB0aGUgZm9jdXMuXG5cblNvLCBJJ20gZ29pbmcgdG8gZm9jdXMgb246XG4qICAgYHNtY3JfbGlua19pbml0YFxuKiAgIGBzbWNfbGxjX2NsaV9hZGRfbGlua2BcbiogICBgc21jX2xsY19zcnZfYWRkX2xpbmtgXG5cblRoZXNlIGFyZSBub24tc3RhdGljIGFuZCBoYW5kbGUgbGluayBpbml0aWFsaXphdGlvbiBhbmQgbWFuYWdlbWVudCwgY3J1Y2lhbCBmb3IgdGVzdGluZyB0aGUgY29ubmVjdGlvbiBwYXRocy5cblxuRmluYWxseSwgYSBxdWljayByZXZpZXcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBjb25maXJtZWQgdGhhdCBib3RoIGBESUJTYCBhbmQgYERJQlNfTE9gIGFyZSBwcmVzZW50IGluIHRoZSB0cmVlIHVuZGVyIGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AuXG5cbk5vdywgSSBjYW4gY2xlYXJseSBhcnRpY3VsYXRlIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgcGF0Y2guIFRoZSBtYWluIGlzc3VlIGlzIGEgcmVmZXJlbmNlIGxlYWsgb2YgdGhlIGBzbWNfaWJfZGV2aWNlYC4gVGhpcyBwYXRjaCBmaXhlcyB0aGF0IHdpdGggYSBuZXcgYHNtY19pbml0X2luZm9fZnJlZWAgZnVuY3Rpb24gYW5kIGNhcmVmdWwgcmVmY291bnRpbmcgd2l0aCBgc21jX2liZGV2X2dldGAvYHB1dGAsIGFsb25nIHdpdGggYW4gYGluaXRfY250YCB0byBtb25pdG9yIHVucHVibGlzaGVkIGluaXRpYWxpemF0aW9ucy4gVGhlIGNoYW5nZXMgY292ZXIgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChsaW5rZWQgdG8gYF9fc21jX2Nvbm5lY3RgIGFuZCBgc21jX2xpc3Rlbl93b3JrYCwgd2hpY2ggaW4gdHVybiBjYWxsIHRoZSBmdW5jdGlvbnMgSSd2ZSBpZGVudGlmaWVkKSBhbmQgTExDIGxpbmsgbWFuYWdlbWVudCAoYHNtY19sbGNfY2xpX2FkZF9saW5rYCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNvY2tldCBvcGVyYXRpb25zIGFuZCBuZXR3b3JrIHBhY2tldHMsIHdoaWNoIGlzIGlkZWFsIGZvciB0ZXN0aW5nLiBUbyB0ZXN0IGNvbXByZWhlbnNpdmVseSwgSSdsbCBuZWVkIHRvIGVuYWJsZSB0aGUgU01DLCBJbmZpbmlCYW5kLCBhbmQgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIFJETUEvRElCUyBkZXZpY2VzIChgUkRNQV9SWEVgIGFuZCBgRElCU19MT2ApLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTk1NCwiT3V0cHV0VG9rZW5zIjoyNzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjQwOjQwLjMxOTM4NjgxNFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNzk0MzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIixcbiAgICBcIlJETUFfUlhFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jcl9saW5rX2luaXRcIixcbiAgICBcInNtY19sbGNfY2xpX2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGxlYWsgb2YgYHNtY19pYl9kZXZpY2VgIGluIHRoZSBTTUMgc3Vic3lzdGVtIGJ5IGludHJvZHVjaW5nIGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGFuZCBwcm9wZXJseSBtYW5hZ2luZyB0aGUgb2JqZWN0IGxpZmV0aW1lIHdpdGggcmVmZXJlbmNlIGNvdW50aW5nIChgc21jX2liZGV2X2dldGAvYHB1dGApLiBJdCBhbHNvIGFkZHMgYW4gaW5pdGlhbGl6YXRpb24gY291bnRlciAoYGluaXRfY250YCkgdG8gdHJhY2sgdW5wdWJsaXNoZWQgbGluayBpbml0aWFsaXphdGlvbnMuIFRoZSBjaGFuZ2VzIGFmZmVjdCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgKGBfX3NtY19jb25uZWN0YCwgYHNtY19saXN0ZW5fd29ya2ApIGFuZCBMTEMgbGluayBtYW5hZ2VtZW50IChgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgKS4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgYW5kIGluY29taW5nIG5ldHdvcmsgcGFja2V0cy4gVG8gcHJvcGVybHkgdGVzdCB0aGlzLCB3ZSBuZWVkIHRvIGVuYWJsZSBTTUMsIEluZmluaUJhbmQsIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBSRE1BL0RJQlMgZGV2aWNlcyAoYFJETUFfUlhFYCwgYERJQlNfTE9gKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIixcbiAgICBcIlJETUFfUlhFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jcl9saW5rX2luaXRcIixcbiAgICBcInNtY19sbGNfY2xpX2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGxlYWsgb2YgYHNtY19pYl9kZXZpY2VgIGluIHRoZSBTTUMgc3Vic3lzdGVtIGJ5IGludHJvZHVjaW5nIGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGFuZCBwcm9wZXJseSBtYW5hZ2luZyB0aGUgb2JqZWN0IGxpZmV0aW1lIHdpdGggcmVmZXJlbmNlIGNvdW50aW5nIChgc21jX2liZGV2X2dldGAvYHB1dGApLiBJdCBhbHNvIGFkZHMgYW4gaW5pdGlhbGl6YXRpb24gY291bnRlciAoYGluaXRfY250YCkgdG8gdHJhY2sgdW5wdWJsaXNoZWQgbGluayBpbml0aWFsaXphdGlvbnMuIFRoZSBjaGFuZ2VzIGFmZmVjdCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgKGBfX3NtY19jb25uZWN0YCwgYHNtY19saXN0ZW5fd29ya2ApIGFuZCBMTEMgbGluayBtYW5hZ2VtZW50IChgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgKS4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgYW5kIGluY29taW5nIG5ldHdvcmsgcGFja2V0cy4gVG8gcHJvcGVybHkgdGVzdCB0aGlzLCB3ZSBuZWVkIHRvIGVuYWJsZSBTTUMsIEluZmluaUJhbmQsIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBSRE1BL0RJQlMgZGV2aWNlcyAoYFJETUFfUlhFYCwgYERJQlNfTE9gKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6NDAuMzkwMTg2ODI2WiIsIlNlcSI6MzcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjIzMzI2MzQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjQwOjQwLjM5MDY5MzQzNloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNjIzMjc1MTc5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyByZWZlcmVuY2UgY291bnRpbmcgZm9yIGBzbWNfaWJfZGV2aWNlYCBvYmplY3RzIHRvIGZpeCBvYmplY3QgbGlmZXRpbWUgaXNzdWVzIChsaWtlbHkgdXNlLWFmdGVyLWZyZWUpLiBJdCByZXBsYWNlcyBga2ZyZWUoaW5pKWAgd2l0aCBgc21jX2luaXRfaW5mb19mcmVlKGluaSlgLCB3aGljaCBkcm9wcyB0aGUgcmVmZXJlbmNlcyBpZiB0aGV5IHdlcmUgYWNxdWlyZWQuIFRoZSBuZXcgYm9vbGVhbiBmaWVsZHMgYGliX2Rldl9yZWZgIGFuZCBgaWJfZGV2X3YyX3JlZmAgYXJlIGFkZGVkIHRvIGBzdHJ1Y3Qgc21jX2luaXRfaW5mb2AsIHdoaWNoIGlzIGFsd2F5cyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgICh2aWEgYGt6YWxsb2Nfb2JqYCksIGVuc3VyaW5nIHRoZXkgYXJlIHByb3Blcmx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIHRoaXMgcGF0Y2ggYWRkcmVzc2VzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc3N2YzMDcxNWM2ZDUwNTQ0ZDZmODBjMDMwYWI1YmJiMTFjOTE0MmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyMyAwNzozODo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zbWMvYWZfc21jLmMgYi9uZXQvc21jL2FmX3NtYy5jXG5pbmRleCBlOWY5M2IzYWI0MzViLi5kNzgxZGVlMWIzMjkzIDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9hZl9zbWMuY1xuKysrIGIvbmV0L3NtYy9hZl9zbWMuY1xuQEAgLTEyMjUsNyArMTIyNSw3IEBAIHZvaWQgc21jX2ZpbGxfZ2lkX2xpc3Qoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG4gXHQgICAgICAgU01DX0dJRF9TSVpFKTtcbiBcbiBvdXQ6XG4tXHRrZnJlZShhbHRfaW5pKTtcbitcdHNtY19pbml0X2luZm9fZnJlZShhbHRfaW5pKTtcbiB9XG4gXG4gc3RhdGljIGludCBzbWNfY29ubmVjdF9yZG1hX3YyX3ByZXBhcmUoc3RydWN0IHNtY19zb2NrICpzbWMsXG5AQCAtMTU5NiwxNCArMTU5NiwxNCBAQCBzdGF0aWMgaW50IF9fc21jX2Nvbm5lY3Qoc3RydWN0IHNtY19zb2NrICpzbWMpXG4gXHRTTUNfU1RBVF9DTE5UX1NVQ0NfSU5DKHNvY2tfbmV0KHNtYy1cdTAwM2VjbGNzb2NrLVx1MDAzZXNrKSwgYWNsYyk7XG4gXHRzbWNfY29ubmVjdF9pc21fdmxhbl9jbGVhbnVwKGluaSk7XG4gXHRrZnJlZShidWYpO1xuLVx0a2ZyZWUoaW5pKTtcbitcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0cmV0dXJuIDA7XG4gXG4gdmxhbl9jbGVhbnVwOlxuIFx0c21jX2Nvbm5lY3RfaXNtX3ZsYW5fY2xlYW51cChpbmkpO1xuIFx0a2ZyZWUoYnVmKTtcbiBmYWxsYmFjazpcbi1cdGtmcmVlKGluaSk7XG4rXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcbiBcdHJldHVybiBzbWNfY29ubmVjdF9kZWNsaW5lX2ZhbGxiYWNrKHNtYywgcmMsIHZlcnNpb24pO1xuIH1cbiBcbkBAIC0yMzQ0LDcgKzIzNDQsMTAgQEAgc3RhdGljIHZvaWQgc21jX2ZpbmRfcmRtYV92Ml9kZXZpY2Vfc2VydihzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXG4gXG4gbm90X2ZvdW5kOlxuIFx0aW5pLVx1MDAzZXNtY3JfdmVyc2lvbiBcdTAwMjY9IH5TTUNfVjI7XG4rXHRpZiAoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmKVxuK1x0XHRzbWNfaWJkZXZfcHV0KGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyKTtcbiBcdGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyID0gTlVMTDtcbitcdGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZiA9IGZhbHNlO1xuIFx0aW5pLVx1MDAzZWNoZWNrX3NtY3J2MiA9IGZhbHNlO1xuIH1cbiBcbkBAIC0yNTg4LDcgKzI1OTEsNyBAQCBzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c21jX2xpc3Rlbl9kZWNsaW5lKG5ld19zbWMsIHJjLCBpbmkgPyBpbmktXHUwMDNlZmlyc3RfY29udGFjdF9sb2NhbCA6IDAsXG4gXHRcdFx0ICAgcHJvcG9zYWxfdmVyc2lvbik7XG4gb3V0X2ZyZWU6XG4tXHRrZnJlZShpbmkpO1xuK1x0c21jX2luaXRfaW5mb19mcmVlKGluaSk7XG4gXHRrZnJlZShidWYpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmMgYi9uZXQvc21jL3NtY19jb3JlLmNcbmluZGV4IDE4MTY0Nzk4MjQ5MGIuLmQ5N2JjNzMyMzEwNjkgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmNcbisrKyBiL25ldC9zbWMvc21jX2NvcmUuY1xuQEAgLTU1LDYgKzU1LDE3IEBAIHN0YXRpYyB2b2lkIF9fc21jX2xncl90ZXJtaW5hdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgc29mdCk7XG4gXG4gc3RhdGljIHZvaWQgc21jX2xpbmtfZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gXG4rdm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbit7XG4rXHRpZiAoIWluaSlcbitcdFx0cmV0dXJuO1xuK1x0aWYgKGluaS1cdTAwM2VpYl9kZXZfcmVmKVxuK1x0XHRzbWNfaWJkZXZfcHV0KGluaS1cdTAwM2VpYl9kZXYpO1xuK1x0aWYgKGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZilcbitcdFx0c21jX2liZGV2X3B1dChpbmktXHUwMDNlc21jcnYyLmliX2Rldl92Mik7XG4rXHRrZnJlZShpbmkpO1xuK31cbitcbiAvKiByZXR1cm4gaGVhZCBvZiBsaW5rIGdyb3VwIGxpc3QgYW5kIGl0cyBsb2NrIGZvciBhIGdpdmVuIGxpbmsgZ3JvdXAgKi9cbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXN0X2hlYWQgKnNtY19sZ3JfbGlzdF9oZWFkKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuIFx0XHRcdFx0XHRcdCAgc3BpbmxvY2tfdCAqKmxncl9sb2NrKVxuQEAgLTc5MywxNCArODA0LDIxIEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssXG4gXHRpbnQgcmM7XG4gXG4gXHRpZiAobGdyLVx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xuLVx0XHRsbmstXHUwMDNlc21jaWJkZXYgPSBpbmktXHUwMDNlc21jcnYyLmliX2Rldl92MjtcbitcdFx0c21jaWJkZXYgPSBpbmktXHUwMDNlc21jcnYyLmliX2Rldl92MjtcbiBcdFx0bG5rLVx1MDAzZWlicG9ydCA9IGluaS1cdTAwM2VzbWNydjIuaWJfcG9ydF92Mjtcbi1cdFx0bG5rLVx1MDAzZXdyX3J4X3NnZV9jbnQgPSBsbmstXHUwMDNlc21jaWJkZXYtXHUwMDNlaWJkZXYtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlIFx1MDAzYyAyID8gMSA6IDI7XG4rXHR9IGVsc2Uge1xuK1x0XHRzbWNpYmRldiA9IGluaS1cdTAwM2VpYl9kZXY7XG4rXHRcdGxuay1cdTAwM2VpYnBvcnQgPSBpbmktXHUwMDNlaWJfcG9ydDtcbitcdH1cbitcdHJjID0gc21jX2liZGV2X2luaXRfYmVnaW4oc21jaWJkZXYpO1xuK1x0aWYgKHJjKVxuK1x0XHRyZXR1cm4gcmM7XG4rXHRsbmstXHUwMDNlc21jaWJkZXYgPSBzbWNpYmRldjtcbitcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyKSB7XG4rXHRcdGxuay1cdTAwM2V3cl9yeF9zZ2VfY250ID0gc21jaWJkZXYtXHUwMDNlaWJkZXYtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlIFx1MDAzYyAyID8gMSA6IDI7XG4gXHRcdGxuay1cdTAwM2V3cl9yeF9idWZsZW4gPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobG5rKSA/XG4gXHRcdFx0U01DX1dSX0JVRl9TSVpFIDogU01DX1dSX0JVRl9WMl9TSVpFO1xuIFx0fSBlbHNlIHtcbi1cdFx0bG5rLVx1MDAzZXNtY2liZGV2ID0gaW5pLVx1MDAzZWliX2Rldjtcbi1cdFx0bG5rLVx1MDAzZWlicG9ydCA9IGluaS1cdTAwM2VpYl9wb3J0O1xuIFx0XHRsbmstXHUwMDNld3Jfcnhfc2dlX2NudCA9IDE7XG4gXHRcdGxuay1cdTAwM2V3cl9yeF9idWZsZW4gPSBTTUNfV1JfQlVGX1NJWkU7XG4gXHR9XG5AQCAtODgyLDYgKzkwMCw3IEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssXG4gXHRpZiAoIWF0b21pY19kZWNfcmV0dXJuKFx1MDAyNnNtY2liZGV2LVx1MDAzZWxua19jbnQpKVxuIFx0XHR3YWtlX3VwKFx1MDAyNnNtY2liZGV2LVx1MDAzZWxua3NfZGVsZXRlZCk7XG4gXHRzbWNfbGdyX3B1dChsZ3IpOyAvKiBsZ3JfaG9sZCBhYm92ZSAqL1xuK1x0c21jX2liZGV2X2luaXRfZW5kKHNtY2liZGV2KTtcbiBcdHJldHVybiByYztcbiB9XG4gXG5AQCAtOTk3LDYgKzEwMTYsOCBAQCBzdGF0aWMgaW50IHNtY19sZ3JfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuIFx0c3Bpbl9sb2NrX2JoKGxncl9sb2NrKTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bGdyLVx1MDAzZWxpc3QsIGxncl9saXN0KTtcbiBcdHNwaW5fdW5sb2NrX2JoKGxncl9sb2NrKTtcbitcdGlmICghaW5pLVx1MDAzZWlzX3NtY2QpXG4rXHRcdHNtY19pYmRldl9pbml0X2VuZChsbmstXHUwMDNlc21jaWJkZXYpO1xuIFx0cmV0dXJuIDA7XG4gXG4gZnJlZV93cTpcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmggYi9uZXQvc21jL3NtY19jb3JlLmhcbmluZGV4IDVjMThmMDhhNGM4YTUuLjlmNWE2OWEzMGNiM2YgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmhcbisrKyBiL25ldC9zbWMvc21jX2NvcmUuaFxuQEAgLTQwMyw2ICs0MDMsNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mb19zbWNydjIge1xuIFxuIFx0LyogT3V0cHV0IGZpZWxkcyB3aGVuIHNhZGRyIGlzIHNldCAqL1xuIFx0c3RydWN0IHNtY19pYl9kZXZpY2VcdCppYl9kZXZfdjI7XG4rXHRib29sXHRcdFx0aWJfZGV2X3YyX3JlZjsgLyogb3ducyBhbiBzbWNfaWJkZXYgcmVmZXJlbmNlICovXG4gXHR1OFx0XHRcdGliX3BvcnRfdjI7XG4gXHR1OFx0XHRcdGliX2dpZF92MltTTUNfR0lEX1NJWkVdO1xuIFxuQEAgLTQzOCw2ICs0MzksNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyB7XG4gXHR1OFx0XHRcdHBlZXJfbWFjW0VUSF9BTEVOXTtcbiBcdHU4XHRcdFx0cGVlcl9zeXN0ZW1pZFtTTUNfU1lTVEVNSURfTEVOXTtcbiBcdHN0cnVjdCBzbWNfaWJfZGV2aWNlXHQqaWJfZGV2O1xuK1x0Ym9vbFx0XHRcdGliX2Rldl9yZWY7IC8qIG93bnMgYW4gc21jX2liZGV2IHJlZmVyZW5jZSAqL1xuIFx0dThcdFx0XHRpYl9naWRbU01DX0dJRF9TSVpFXTtcbiBcdHU4XHRcdFx0aWJfcG9ydDtcbiBcdHUzMlx0XHRcdGliX2NsY3FwbjtcbkBAIC01OTQsNiArNTk2LDcgQEAgdm9pZCBzbWNfcnRva2VuX3NldDIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGludCBydG9rX2lkeCwgaW50IGxpbmtfaWQsXG4gdm9pZCBzbWNfc25kYnVmX3N5bmNfc2dfZm9yX2RldmljZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pO1xuIHZvaWQgc21jX3JtYl9zeW5jX3NnX2Zvcl9jcHUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKTtcbiBpbnQgc21jX3ZsYW5fYnlfdGNwc2soc3RydWN0IHNvY2tldCAqY2xjc29jaywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG4rdm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG4gXG4gdm9pZCBzbWNfY29ubl9mcmVlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7XG4gaW50IHNtY19jb25uX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuYyBiL25ldC9zbWMvc21jX2liLmNcbmluZGV4IDliYjQ5NTcwNzQ0NWUuLmQ4NTg0NTNjNjRkOTIgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19pYi5jXG4rKysgYi9uZXQvc21jL3NtY19pYi5jXG5AQCAtOTM0LDYgKzkzNCw0NCBAQCB2b2lkIHNtY19pYl9uZGV2X2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdW5zaWduZWQgbG9uZyBldmVudClcbiBcdG11dGV4X3VubG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHNtY19pYmRldl9yZWxlYXNlKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbit7XG4rXHRwdXRfZGV2aWNlKFx1MDAyNnNtY2liZGV2LVx1MDAzZWliZGV2LVx1MDAzZWRldik7XG4rXHRrZnJlZShzbWNpYmRldik7XG4rfVxuK1xuK3ZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0cmVmY291bnRfaW5jKFx1MDAyNnNtY2liZGV2LVx1MDAzZXJlZmNudCk7XG4rfVxuK1xuK3ZvaWQgc21jX2liZGV2X3B1dChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZzbWNpYmRldi1cdTAwM2VyZWZjbnQpKVxuK1x0XHRzbWNfaWJkZXZfcmVsZWFzZShzbWNpYmRldik7XG4rfVxuK1xuK2ludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0aW50IHJjID0gMDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuK1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2c21jaWJkZXYtXHUwMDNlbGlzdCkpXG4rXHRcdHJjID0gLUVOT0RFVjtcbitcdGVsc2VcbitcdFx0YXRvbWljX2luYyhcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuK1x0cmV0dXJuIHJjO1xuK31cbitcbit2b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4rXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpXG4rXHRcdHdha2VfdXAoXHUwMDI2c21jaWJkZXYtXHUwMDNlaW5pdF93YWl0KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4rfVxuK1xuIC8qIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpYl9yZWdpc3Rlcl9jbGllbnQoKSAqL1xuIHN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpXG4ge1xuQEAgLTk0OSw3ICs5ODcsMTEgQEAgc3RhdGljIGludCBzbWNfaWJfYWRkX2RldihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRzbWNpYmRldi1cdTAwM2VpYmRldiA9IGliZGV2O1xuK1x0Z2V0X2RldmljZShcdTAwMjZpYmRldi1cdTAwM2VkZXYpO1xuK1x0cmVmY291bnRfc2V0KFx1MDAyNnNtY2liZGV2LVx1MDAzZXJlZmNudCwgMSk7XG4gXHRJTklUX1dPUksoXHUwMDI2c21jaWJkZXYtXHUwMDNlcG9ydF9ldmVudF93b3JrLCBzbWNfaWJfcG9ydF9ldmVudF93b3JrKTtcbitcdGF0b21pY19zZXQoXHUwMDI2c21jaWJkZXYtXHUwMDNlaW5pdF9jbnQsIDApO1xuK1x0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X3dhaXQpO1xuIFx0YXRvbWljX3NldChcdTAwMjZzbWNpYmRldi1cdTAwM2VsbmtfY250LCAwKTtcbiBcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXHUwMDI2c21jaWJkZXYtXHUwMDNlbG5rc19kZWxldGVkKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2c21jaWJkZXYtXHUwMDNlbXV0ZXgpO1xuQEAgLTEwMDAsMTEgKzEwNDIsMTQgQEAgc3RhdGljIHZvaWQgc21jX2liX3JlbW92ZV9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHZvaWQgKmNsaWVudF9kYXRhKVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNtY19pYl9kZXZpY2VzLm11dGV4KTtcbiBcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXCJzbWM6IHJlbW92aW5nIGliIGRldmljZSAlc1xcblwiLFxuIFx0XHRcdCAgICBzbWNpYmRldi1cdTAwM2VpYmRldi1cdTAwM2VuYW1lKTtcbitcdGlmIChhdG9taWNfcmVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpXG4rXHRcdHdhaXRfZXZlbnQoc21jaWJkZXYtXHUwMDNlaW5pdF93YWl0LFxuK1x0XHRcdCAgICFhdG9taWNfcmVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpO1xuIFx0c21jX3NtY3JfdGVybWluYXRlX2FsbChzbWNpYmRldik7XG4gXHRzbWNfaWJfY2xlYW51cF9wZXJfaWJkZXYoc21jaWJkZXYpO1xuIFx0aWJfdW5yZWdpc3Rlcl9ldmVudF9oYW5kbGVyKFx1MDAyNnNtY2liZGV2LVx1MDAzZWV2ZW50X2hhbmRsZXIpO1xuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZzbWNpYmRldi1cdTAwM2Vwb3J0X2V2ZW50X3dvcmspO1xuLVx0a2ZyZWUoc21jaWJkZXYpO1xuK1x0c21jX2liZGV2X3B1dChzbWNpYmRldik7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgaWJfY2xpZW50IHNtY19pYl9jbGllbnQgPSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuaCBiL25ldC9zbWMvc21jX2liLmhcbmluZGV4IGVmOGFjMmI3NTQ2ZGYuLmQzMjU0NzM1MGU4YjggMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19pYi5oXG4rKysgYi9uZXQvc21jL3NtY19pYi5oXG5AQCAtMTUsNiArMTUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaWZfZXRoZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjcmRtYS9pYl92ZXJicy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3NtYy5oXHUwMDNlXG5AQCAtNTEsNiArNTIsOSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7XHRcdFx0XHQvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqL1xuIFx0c3RydWN0IHdvcmtfc3RydWN0XHRwb3J0X2V2ZW50X3dvcms7XG4gXHR1bnNpZ25lZCBsb25nXHRcdHBvcnRfZXZlbnRfbWFzaztcbiBcdERFQ0xBUkVfQklUTUFQKHBvcnRzX2dvaW5nX2F3YXksIFNNQ19NQVhfUE9SVFMpO1xuK1x0cmVmY291bnRfdFx0XHRyZWZjbnQ7XHRcdC8qIG9iamVjdCBsaWZldGltZSAqL1xuK1x0YXRvbWljX3RcdFx0aW5pdF9jbnQ7XHQvKiB1bnB1Ymxpc2hlZCBsaW5rIGluaXRpYWxpemF0aW9ucyAqL1xuK1x0d2FpdF9xdWV1ZV9oZWFkX3RcdGluaXRfd2FpdDtcdC8qIHdhaXQgZm9yIGxpbmtzIHRvIGJlIHB1Ymxpc2hlZCAqL1xuIFx0YXRvbWljX3RcdFx0bG5rX2NudDtcdC8qIG51bWJlciBvZiBsaW5rcyBvbiBpYmRldiAqL1xuIFx0d2FpdF9xdWV1ZV9oZWFkX3RcdGxua3NfZGVsZXRlZDtcdC8qIHdhaXQgNCByZW1vdmFsIG9mIGFsbCBsaW5rcyovXG4gXHRzdHJ1Y3QgbXV0ZXhcdFx0bXV0ZXg7XHRcdC8qIHByb3RlY3QgZGV2IHNldHVwK2NsZWFudXAgKi9cbkBAIC01OSw2ICs2MywxMSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7XHRcdFx0XHQvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqL1xuIFx0aW50XHRcdFx0bmRldl9pZmlkeFtTTUNfTUFYX1BPUlRTXTsgLyogbmRldiBpZiBpbmRleGVzICovXG4gfTtcbiBcbit2b2lkIHNtY19pYmRldl9nZXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbit2b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbitpbnQgc21jX2liZGV2X2luaXRfYmVnaW4oc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbit2b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpO1xuK1xuIHN0YXRpYyBpbmxpbmUgX19iZTMyIHNtY19pYl9naWRfdG9faXB2NCh1OCBnaWRbU01DX0dJRF9TSVpFXSlcbiB7XG4gXHRzdHJ1Y3QgaW42X2FkZHIgKmFkZHI2ID0gKHN0cnVjdCBpbjZfYWRkciAqKWdpZDtcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19sbGMuYyBiL25ldC9zbWMvc21jX2xsYy5jXG5pbmRleCBjOWNjZDg0ODAzNjljLi5lMTZhYWE1MTQzNjhhIDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmNcbisrKyBiL25ldC9zbWMvc21jX2xsYy5jXG5AQCAtMTEwOCw2ICsxMTA4LDcgQEAgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4gXHRyYyA9IHNtY3JfbGlua19pbml0KGxnciwgbG5rX25ldywgbG5rX2lkeCwgaW5pKTtcbiBcdGlmIChyYylcbiBcdFx0Z290byBvdXRfcmVqZWN0O1xuK1x0c21jX2liZGV2X2luaXRfZW5kKGxua19uZXctXHUwMDNlc21jaWJkZXYpO1xuIFx0c21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obG5rX25ldywgbGxjKTtcbiBcdGxua19uZXctXHUwMDNlbGlua19pZCA9IGxsYy1cdTAwM2VsaW5rX251bTtcdC8qIFNNQyBzZXJ2ZXIgYXNzaWducyBsaW5rIGlkICovXG4gXHRzbWNfbGxjX2xpbmtfc2V0X3VpZChsbmtfbmV3KTtcbkBAIC0xMTQzLDcgKzExNDQsNyBAQCBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbiBvdXRfcmVqZWN0OlxuIFx0c21jX2xsY19jbGlfYWRkX2xpbmtfcmVqZWN0KHFlbnRyeSk7XG4gb3V0OlxuLVx0a2ZyZWUoaW5pKTtcbitcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0a2ZyZWUocWVudHJ5KTtcbiBcdHJldHVybiByYztcbiB9XG5AQCAtMTIxNyw3ICsxMjE4LDcgQEAgc3RhdGljIHZvaWQgc21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdHNtY19sbGNfc2VuZF9hZGRfbGluayhsaW5rLCBpbmktXHUwMDNlaWJfZGV2LVx1MDAzZW1hY1tpbmktXHUwMDNlaWJfcG9ydCAtIDFdLFxuIFx0XHRcdCAgICAgIGluaS1cdTAwM2VpYl9naWQsIE5VTEwsIFNNQ19MTENfUkVRKTtcbiBvdXQ6XG4tXHRrZnJlZShpbmkpO1xuK1x0c21jX2luaXRfaW5mb19mcmVlKGluaSk7XG4gXHRrZnJlZShxZW50cnkpO1xuIH1cbiBcbkBAIC0xNDg3LDYgKzE0ODgsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dDtcbiBcdGxpbmtfbmV3ID0gXHUwMDI2bGdyLVx1MDAzZWxua1tsbmtfaWR4XTtcbitcdHNtY19pYmRldl9pbml0X2VuZChsaW5rX25ldy1cdTAwM2VzbWNpYmRldik7XG4gXG4gXHRyYyA9IHNtY3JfYnVmX21hcF9sZ3IobGlua19uZXcpO1xuIFx0aWYgKHJjKVxuQEAgLTE1NDQsNyArMTU0Niw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHR9XG4gb3V0OlxuIFx0a2ZyZWUocWVudHJ5KTtcbi1cdGtmcmVlKGluaSk7XG4rXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcbiBcdGlmIChzZW5kX3JlcV9hZGRfbGlua19yZXNwKVxuIFx0XHRzbWNfbGxjX3NlbmRfcmVxX2FkZF9saW5rX3Jlc3BvbnNlKHJlcV9xZW50cnkpO1xuIFx0cmV0dXJuIHJjO1xuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3BuZXQuYyBiL25ldC9zbWMvc21jX3BuZXQuY1xuaW5kZXggNjNlMjg2ZTJkZmFhOC4uYmUxZjUxMzdjOGVlNyAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3BuZXQuY1xuKysrIGIvbmV0L3NtYy9zbWNfcG5ldC5jXG5AQCAtOTgwLDE0ICs5ODAsMjIgQEAgc3RhdGljIGludCBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICppYmRldiwgaW50IGksXG4gXHRpZiAoIWluaS1cdTAwM2VjaGVja19zbWNydjIgXHUwMDI2XHUwMDI2XG4gXHQgICAgIXNtY19pYl9kZXRlcm1pbmVfZ2lkKGliZGV2LCBpLCBpbmktXHUwMDNldmxhbl9pZCwgaW5pLVx1MDAzZWliX2dpZCwgTlVMTCxcbiBcdFx0XHRcdCAgTlVMTCkpIHtcbitcdFx0aWYgKGluaS1cdTAwM2VpYl9kZXZfcmVmKVxuK1x0XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZWliX2Rldik7XG4rXHRcdHNtY19pYmRldl9nZXQoaWJkZXYpO1xuIFx0XHRpbmktXHUwMDNlaWJfZGV2ID0gaWJkZXY7XG4rXHRcdGluaS1cdTAwM2VpYl9kZXZfcmVmID0gdHJ1ZTtcbiBcdFx0aW5pLVx1MDAzZWliX3BvcnQgPSBpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcdGlmIChpbmktXHUwMDNlY2hlY2tfc21jcnYyIFx1MDAyNlx1MDAyNlxuIFx0ICAgICFzbWNfaWJfZGV0ZXJtaW5lX2dpZChpYmRldiwgaSwgaW5pLVx1MDAzZXZsYW5faWQsIGluaS1cdTAwM2VzbWNydjIuaWJfZ2lkX3YyLFxuIFx0XHRcdFx0ICBOVUxMLCBcdTAwMjZpbmktXHUwMDNlc21jcnYyKSkge1xuK1x0XHRpZiAoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmKVxuK1x0XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIpO1xuK1x0XHRzbWNfaWJkZXZfZ2V0KGliZGV2KTtcbiBcdFx0aW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIgPSBpYmRldjtcbitcdFx0aW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmID0gdHJ1ZTtcbiBcdFx0aW5pLVx1MDAzZXNtY3J2Mi5pYl9wb3J0X3YyID0gaTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDo0MC4zOTA2OTQzMTZaIiwiU2VxIjozOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM4MzMzNzkwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNQyBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIHNxdWFyZWx5IGF0IHRoZSBgbmV0L3NtYy9gIHN1YnN5c3RlbSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBgc21jX2liX2RldmljZWAgb2JqZWN0cy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIHJhdGhlciBzdHJhaWdodGZvcndhcmQsIGFsYmVpdCBjcml0aWNhbCwgZml4LiBJdCdzIGFsbCBhYm91dCBib2xzdGVyaW5nIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgdGhlc2UgYHNtY19pYl9kZXZpY2VgIGluc3RhbmNlcy5cblxuVGhlIGtleSBjaGFuZ2UgSSBzZWUgaXMgdGhlIGludHJvZHVjdGlvbiBvZiBhIG1vcmUgcm9idXN0IGxpZmVjeWNsZSBtYW5hZ2VtZW50IHN5c3RlbS4gVGhleSdyZSBkaXRjaGluZyB0aGUgZGlyZWN0IGBrZnJlZShpbmkpYCBjYWxsIGluIGZhdm9yIG9mIGBzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKWAuIFRoaXMgZnVuY3Rpb24gaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnM7IGl0J3MgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSByZWZlcmVuY2VzIHRvIGBpYl9kZXZgIGFuZCBgaWJfZGV2X3YyYC4gVGhlIGludHJvZHVjdGlvbiBvZiBgc21jX2liZGV2X2dldGAsIGBzbWNfaWJkZXZfcHV0YCwgYHNtY19pYmRldl9pbml0X2JlZ2luYCwgYW5kIGBzbWNfaWJkZXZfaW5pdF9lbmRgIGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzIG5ldyBhcHByb2FjaC4gSXQncyBhIGNsZWFyIGluZGljYXRpb24gdGhhdCB3ZSdyZSBtb3ZpbmcgdG93YXJkcyBhIG1vcmUgc3RydWN0dXJlZCBhbmQgbGVzcyBlcnJvci1wcm9uZSB3YXkgb2YgbWFuYWdpbmcgdGhlIG9iamVjdCdzIGRlcGVuZGVuY2llcy4gQW5kIGJ5IGFkZGluZyBgaWJfZGV2X3JlZmAgYW5kIGBpYl9kZXZfdjJfcmVmYCB0byB0aGUgYHNtY19pbml0X2luZm9gLCBpdCBhcHBlYXJzIHRoYXQgdGhlIHN5c3RlbSB0cmFja3MgdGhlIG93bmVyc2hpcCBvZiB0aG9zZSByZWZlcmVuY2VzIGJ5IHRoZSBgc21jX2luaXRfaW5mb2AuXG5cbkl0J3MgZXZpZGVudCB0aGlzIGlzIGEgcmVzcG9uc2UgdG8gYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IsIG1vcmUgZ2VuZXJhbGx5LCBhbiBvYmplY3QgbGlmZXRpbWUgbWFuYWdlbWVudCBwcm9ibGVtIHJlbGF0ZWQgdG8gYHNtY19pYl9kZXZpY2VgLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgdGhlcmUgYXJlbid0IGFueSBuZXcgc3RydWN0dXJlcyBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIHNvIHRoYXQncyBvbmUgbGVzcyBhcmVhIHRvIHdvcnJ5IGFib3V0IGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gVGhlcmUncyBhbHNvIG5vIGluZGljYXRpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzIGJlaW5nIGFkZHJlc3NlZCBvciBleHBvc2VkLCB3aGljaCBpcyBhIGdvb2Qgc2lnbi4gVGhlIGZvY3VzIGhlcmUgaXMgc29sZWx5IG9uIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgb2JqZWN0IGxpZmV0aW1lLlxuXG5Ib3dldmVyLCBJIG5lZWQgdG8gZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgZm9yIHBvc3NpYmxlIHJlZ3Jlc3Npb25zLiBJdCdzIGEgZ29vZCBwcmFjdGljZSwgYW5kIEknbSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBTaW5jZSBgc21jX2luaXRfaW5mb2AgaXMgbGlrZWx5IGFsbG9jYXRlZCwgcHJvYmFibHkgdGhyb3VnaCBga3phbGxvY2AsIHRoZXJlIGlzIGEgcmlzayB0aGF0IHRoZSBhZGRlZCBmaWVsZHMsIGBpYl9kZXZfcmVmYCBhbmQgYGliX2Rldl92Ml9yZWZgLCBtaWdodCBub3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIElmIGBzbWNfaW5pdF9pbmZvYCBpc24ndCB6ZXJvLWluaXRpYWxpemVkLCB0aGVzZSBib29sZWFuIGZsYWdzIGNvdWxkIGJlIGxlZnQgaW4gYW4gdW5kZWZpbmVkIHN0YXRlLCBsZWFkaW5nIHRvIGluY29ycmVjdCBjYWxscyB0byBgc21jX2liZGV2X3B1dGAuIEkgc2hvdWxkIHZlcmlmeSBob3cgYHNtY19pbml0X2luZm9gIGlzIGFjdHVhbGx5IGFsbG9jYXRlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIGNvbmNlcm4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5OTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDo0Ny43NzQwMzUxMzlaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyOTgwMTA0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGxvYy4qc21jX2luaXRfaW5mb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6NDcuODI3MDMxNzYzWiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODQwNzEwMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipIdW50aW5nIGZvciBJbml0aWFsaXphdGlvbiBNYWdpYyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHdoZXJlIHRoZSBgaW5pID0gYCBhc3NpZ25tZW50cyBvciB0aGUgYHN0cnVjdCBzbWNfaW5pdF9pbmZvYCBhbGxvY2F0aW9ucyBhcmUgaGFwcGVuaW5nLiBUaGF0J3MgbXkgc3RhcnRpbmcgcG9pbnQuIFRob3NlIHdpbGwgYmUgY3J1Y2lhbCBiZWNhdXNlIHRoZXkncmUgdGhlIHBsYWNlcyB3aGVyZSB0aGUgaW5pdGlhbCBwYXJhbWV0ZXJzIG9yIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pbmcgYW4gU01DIChTeXN0ZW0gTWFuYWdlbWVudCBDb250cm9sbGVyKSBvciBzaW1pbGFyIGRldmljZSBpcyBkZWZpbmVkLCBvciBpbml0aWFsaXplZC4gRmluZGluZyB0aG9zZSB3aWxsIGxlYWQgbWUgdG8gdGhlIGtleSBjb25maWd1cmF0aW9uIGRhdGEuIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgaW5pdGlhbGl6YXRpb24gaXMgcHJldHR5IGltcG9ydGFudCB0byB0aGUgc3lzdGVtIGFzIGEgd2hvbGUsIHNvIGtub3dpbmcgdGhlIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgaXMgdGhlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk1NywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjQwOjUwLjgxMTEwNTU5MVoiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwODk4OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW5pID0gay4qYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9hZl9zbWMuYz0xMjAzPXZvaWQgc21jX2ZpbGxfZ2lkX2xpc3Qoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTEyMTEtXFxubmV0L3NtYy9hZl9zbWMuYzoxMjEyOlxcdGFsdF9pbmkgPSBremFsbG9jX29iaigqYWx0X2luaSk7XFxubmV0L3NtYy9hZl9zbWMuYy0xMjEzLVxcdGlmICghYWx0X2luaSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MTUyMD1zdGF0aWMgaW50IF9fc21jX2Nvbm5lY3Qoc3RydWN0IHNtY19zb2NrICpzbWMpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE1MzktXFxubmV0L3NtYy9hZl9zbWMuYzoxNTQwOlxcdGluaSA9IGt6YWxsb2Nfb2JqKCppbmkpO1xcbm5ldC9zbWMvYWZfc21jLmMtMTU0MS1cXHRpZiAoIWluaSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MjQ1Mz1zdGF0aWMgdm9pZCBzbWNfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yNTA3LVxcbm5ldC9zbWMvYWZfc21jLmM6MjUwODpcXHRpbmkgPSBremFsbG9jX29iaigqaW5pKTtcXG5uZXQvc21jL2FmX3NtYy5jLTI1MDktXFx0aWYgKCFpbmkpIHtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEwNTg9aW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMDY5LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEwNzA6XFx0aW5pID0ga3phbGxvY19vYmooKmluaSk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTA3MS1cXHRpZiAoIWluaSkge1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTE5MT1zdGF0aWMgdm9pZCBzbWNfbGxjX2NsaV9hZGRfbGlua19pbnZpdGUoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTIwOC1cXG5uZXQvc21jL3NtY19sbGMuYzoxMjA5OlxcdGluaSA9IGt6YWxsb2Nfb2JqKCppbmkpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTEyMTAtXFx0aWYgKCFpbmkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNDMyPWludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNDQ3LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE0NDg6XFx0aW5pID0ga3phbGxvY19vYmooKmluaSk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ0OS1cXHRpZiAoIWluaSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDo1MC44NTcxOTkyODZaIiwiU2VxIjo0MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc2NjE3OTI3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBga3phbGxvY19vYmpgIGlzIGFsbW9zdCBjZXJ0YWlubHkganVzdCBhIG1hY3JvIHRoYXQncyBhIHdyYXBwZXIgZm9yIGBremFsbG9jYC4gVGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlLCBhbmQgaXQgbWFrZXMgdGhlIGNvZGUgY2xlYW5lci4gVGhlIGtleSBoZXJlLCB0aG91Z2gsIGlzIHRoYXQgYGt6YWxsb2NgIHplcm9lcyB0aGUgYWxsb2NhdGVkIG1lbW9yeS4gS25vd2luZyB0aGF0LCBJIGNhbiBxdWlja2x5IGNvbmZpcm0gdGhhdCBgaWJfZGV2X3JlZmAgYW5kIGBpYl9kZXZfdjJfcmVmYCB3aWxsIGJlIGNvcnJlY3RseSBpbml0aWFsaXplZCB0byBgZmFsc2VgLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHRoZSBvdmVyYWxsIHN0YXRlIG9mIHRoZXNlIG9iamVjdHMuXG5cblRoaXMgcGF0Y2ggaXMgb2J2aW91c2x5IGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIHJlbGF0ZWQgb2JqZWN0IGxpZmV0aW1lIHByb2JsZW0uIENvbnNpZGVyaW5nIHRoZSB6ZXJvLWluaXRpYWxpemF0aW9uLCB0aGVyZSdzIG5vIHdheSB0aGF0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHRoZSByb290IGNhdXNlLiBNeSBleHBlcnRpc2UgaXMgdGhhdCB0aGUgemVyby1hbGxvY2F0aW9uIHByb3ZpZGVzIGFuIGltcG9ydGFudCBndWFyYW50ZWUgdGhhdCBtaXRpZ2F0ZXMgdGhlIG1vc3QgY29tbW9uIHJpc2tzLlxuXG5HaXZlbiB0aGUgZm9jdXMgb24gdXNlLWFmdGVyLWZyZWUsIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdGhpcyBraW5kIG9mIGJ1Zy4gV2UgcmVhbGx5IGRvbid0IG5lZWQgdG8gaW52b2x2ZSBLTVNBTiBmb3IgdGhpcyBzcGVjaWZpYyBpc3N1ZS4gS0FTQU4gaXMgcGVyZmVjdGx5IHN1ZmZpY2llbnQgZm9yIGNhdGNoaW5nIHRoZSBraW5kcyBvZiBtZW1vcnkgYWNjZXNzIGVycm9ycyB3ZSdyZSBsaWtlbHkgZGVhbGluZyB3aXRoIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NDYsIk91dHB1dFRva2VucyI6MTg1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6NTYuNjIzMzgxNTU3WiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgYHNtY19pYl9kZXZpY2VgIG9iamVjdHMgdG8gZml4IG9iamVjdCBsaWZldGltZSBpc3N1ZXMgKGxpa2VseSB1c2UtYWZ0ZXItZnJlZSkuIEl0IHJlcGxhY2VzIGBrZnJlZShpbmkpYCB3aXRoIGBzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKWAsIHdoaWNoIGRyb3BzIHRoZSByZWZlcmVuY2VzIGlmIHRoZXkgd2VyZSBhY3F1aXJlZC4gVGhlIG5ldyBib29sZWFuIGZpZWxkcyBgaWJfZGV2X3JlZmAgYW5kIGBpYl9kZXZfdjJfcmVmYCBhcmUgYWRkZWQgdG8gYHN0cnVjdCBzbWNfaW5pdF9pbmZvYCwgd2hpY2ggaXMgYWx3YXlzIGFsbG9jYXRlZCB1c2luZyBga3phbGxvY2AgKHZpYSBga3phbGxvY19vYmpgKSwgZW5zdXJpbmcgdGhleSBhcmUgcHJvcGVybHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdXNlLWFmdGVyLWZyZWUgYnVncywgd2hpY2ggdGhpcyBwYXRjaCBhZGRyZXNzZXMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyByZWZlcmVuY2UgY291bnRpbmcgZm9yIGBzbWNfaWJfZGV2aWNlYCBvYmplY3RzIHRvIGZpeCBvYmplY3QgbGlmZXRpbWUgaXNzdWVzIChsaWtlbHkgdXNlLWFmdGVyLWZyZWUpLiBJdCByZXBsYWNlcyBga2ZyZWUoaW5pKWAgd2l0aCBgc21jX2luaXRfaW5mb19mcmVlKGluaSlgLCB3aGljaCBkcm9wcyB0aGUgcmVmZXJlbmNlcyBpZiB0aGV5IHdlcmUgYWNxdWlyZWQuIFRoZSBuZXcgYm9vbGVhbiBmaWVsZHMgYGliX2Rldl9yZWZgIGFuZCBgaWJfZGV2X3YyX3JlZmAgYXJlIGFkZGVkIHRvIGBzdHJ1Y3Qgc21jX2luaXRfaW5mb2AsIHdoaWNoIGlzIGFsd2F5cyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgICh2aWEgYGt6YWxsb2Nfb2JqYCksIGVuc3VyaW5nIHRoZXkgYXJlIHByb3Blcmx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIHRoaXMgcGF0Y2ggYWRkcmVzc2VzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5p7z[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-23 07:24:28 +0000 UTC FinishedAt: 2026-08-23 07:40:57 +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": "7cbfb180945ce529608e4d4e24a6d483699fab1e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS", "DIBS_LO", "RDMA_RXE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7cbfb180945ce529608e4d4e24a6d483699fab1e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "SMC", "INFINIBAND", "DIBS", "DIBS_LO", "RDMA_RXE" ], "series_id": "b84d7834-992d-40dd-aefe-b4e552cc9887" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "smcr_link_init", "smc_llc_cli_add_link", "smc_llc_srv_add_link" ], "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+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NNQyYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EJiMzNDssCiAgICAmIzM0O0RJQlMmIzM0OywKICAgICYjMzQ7RElCU19MTyYjMzQ7LAogICAgJiMzNDtSRE1BX1JYRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NtY3JfbGlua19pbml0JiMzNDssCiAgICAmIzM0O3NtY19sbGNfY2xpX2FkZF9saW5rJiMzNDssCiAgICAmIzM0O3NtY19sbGNfc3J2X2FkZF9saW5rJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyByZWZlcmVuY2UgY291bnRpbmcgZm9yIGBzbWNfaWJfZGV2aWNlYCBvYmplY3RzIHRvIGZpeCBvYmplY3QgbGlmZXRpbWUgaXNzdWVzIChsaWtlbHkgdXNlLWFmdGVyLWZyZWUpLiBJdCByZXBsYWNlcyBga2ZyZWUoaW5pKWAgd2l0aCBgc21jX2luaXRfaW5mb19mcmVlKGluaSlgLCB3aGljaCBkcm9wcyB0aGUgcmVmZXJlbmNlcyBpZiB0aGV5IHdlcmUgYWNxdWlyZWQuIFRoZSBuZXcgYm9vbGVhbiBmaWVsZHMgYGliX2Rldl9yZWZgIGFuZCBgaWJfZGV2X3YyX3JlZmAgYXJlIGFkZGVkIHRvIGBzdHJ1Y3Qgc21jX2luaXRfaW5mb2AsIHdoaWNoIGlzIGFsd2F5cyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgICh2aWEgYGt6YWxsb2Nfb2JqYCksIGVuc3VyaW5nIHRoZXkgYXJlIHByb3Blcmx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIHRoaXMgcGF0Y2ggYWRkcmVzc2VzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlZmVyZW5jZSBsZWFrIG9mIGBzbWNfaWJfZGV2aWNlYCBpbiB0aGUgU01DIHN1YnN5c3RlbSBieSBpbnRyb2R1Y2luZyBgc21jX2luaXRfaW5mb19mcmVlYCBhbmQgcHJvcGVybHkgbWFuYWdpbmcgdGhlIG9iamVjdCBsaWZldGltZSB3aXRoIHJlZmVyZW5jZSBjb3VudGluZyAoYHNtY19pYmRldl9nZXRgL2BwdXRgKS4gSXQgYWxzbyBhZGRzIGFuIGluaXRpYWxpemF0aW9uIGNvdW50ZXIgKGBpbml0X2NudGApIHRvIHRyYWNrIHVucHVibGlzaGVkIGxpbmsgaW5pdGlhbGl6YXRpb25zLiBUaGUgY2hhbmdlcyBhZmZlY3QgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChgX19zbWNfY29ubmVjdGAsIGBzbWNfbGlzdGVuX3dvcmtgKSBhbmQgTExDIGxpbmsgbWFuYWdlbWVudCAoYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNvY2tldCBvcGVyYXRpb25zIGFuZCBpbmNvbWluZyBuZXR3b3JrIHBhY2tldHMuIFRvIHByb3Blcmx5IHRlc3QgdGhpcywgd2UgbmVlZCB0byBlbmFibGUgU01DLCBJbmZpbmlCYW5kLCBhbmQgc29mdHdhcmUtZW11bGF0ZWQgUkRNQS9ESUJTIGRldmljZXMgKGBSRE1BX1JYRWAsIGBESUJTX0xPYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3NzdmMzA3MTVjNmQ1MDU0NGQ2ZjgwYzAzMGFiNWJiYjExYzkxNDJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMjMgMDc6Mzg6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9hZl9zbWMuYyBiL25ldC9zbWMvYWZfc21jLmNcbmluZGV4IGU5ZjkzYjNhYjQzNWIuLmQ3ODFkZWUxYjMyOTMgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL2FmX3NtYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL2FmX3NtYy5jXG5AQCAtMTIyNSw3ICYjNDM7MTIyNSw3IEBAIHZvaWQgc21jX2ZpbGxfZ2lkX2xpc3Qoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG4gXHQgICAgICAgU01DX0dJRF9TSVpFKTtcbiBcbiBvdXQ6XG4tXHRrZnJlZShhbHRfaW5pKTtcbiYjNDM7XHRzbWNfaW5pdF9pbmZvX2ZyZWUoYWx0X2luaSk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfcmRtYV92Ml9wcmVwYXJlKHN0cnVjdCBzbWNfc29jayAqc21jLFxuQEAgLTE1OTYsMTQgJiM0MzsxNTk2LDE0IEBAIHN0YXRpYyBpbnQgX19zbWNfY29ubmVjdChzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbiBcdFNNQ19TVEFUX0NMTlRfU1VDQ19JTkMoc29ja19uZXQoc21jLVx1MDAzZWNsY3NvY2stXHUwMDNlc2spLCBhY2xjKTtcbiBcdHNtY19jb25uZWN0X2lzbV92bGFuX2NsZWFudXAoaW5pKTtcbiBcdGtmcmVlKGJ1Zik7XG4tXHRrZnJlZShpbmkpO1xuJiM0MztcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0cmV0dXJuIDA7XG4gXG4gdmxhbl9jbGVhbnVwOlxuIFx0c21jX2Nvbm5lY3RfaXNtX3ZsYW5fY2xlYW51cChpbmkpO1xuIFx0a2ZyZWUoYnVmKTtcbiBmYWxsYmFjazpcbi1cdGtmcmVlKGluaSk7XG4mIzQzO1x0c21jX2luaXRfaW5mb19mcmVlKGluaSk7XG4gXHRyZXR1cm4gc21jX2Nvbm5lY3RfZGVjbGluZV9mYWxsYmFjayhzbWMsIHJjLCB2ZXJzaW9uKTtcbiB9XG4gXG5AQCAtMjM0NCw3ICYjNDM7MjM0NCwxMCBAQCBzdGF0aWMgdm9pZCBzbWNfZmluZF9yZG1hX3YyX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcbiBcbiBub3RfZm91bmQ6XG4gXHRpbmktXHUwMDNlc21jcl92ZXJzaW9uIFx1MDAyNj0gflNNQ19WMjtcbiYjNDM7XHRpZiAoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmKVxuJiM0MztcdFx0c21jX2liZGV2X3B1dChpbmktXHUwMDNlc21jcnYyLmliX2Rldl92Mik7XG4gXHRpbmktXHUwMDNlc21jcnYyLmliX2Rldl92MiA9IE5VTEw7XG4mIzQzO1x0aW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmID0gZmFsc2U7XG4gXHRpbmktXHUwMDNlY2hlY2tfc21jcnYyID0gZmFsc2U7XG4gfVxuIFxuQEAgLTI1ODgsNyAmIzQzOzI1OTEsNyBAQCBzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c21jX2xpc3Rlbl9kZWNsaW5lKG5ld19zbWMsIHJjLCBpbmkgPyBpbmktXHUwMDNlZmlyc3RfY29udGFjdF9sb2NhbCA6IDAsXG4gXHRcdFx0ICAgcHJvcG9zYWxfdmVyc2lvbik7XG4gb3V0X2ZyZWU6XG4tXHRrZnJlZShpbmkpO1xuJiM0MztcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0a2ZyZWUoYnVmKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY29yZS5jIGIvbmV0L3NtYy9zbWNfY29yZS5jXG5pbmRleCAxODE2NDc5ODI0OTBiLi5kOTdiYzczMjMxMDY5IDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19jb3JlLmNcbkBAIC01NSw2ICYjNDM7NTUsMTcgQEAgc3RhdGljIHZvaWQgX19zbWNfbGdyX3Rlcm1pbmF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBzb2Z0KTtcbiBcbiBzdGF0aWMgdm9pZCBzbWNfbGlua19kb3duX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiYjNDM7dm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbiYjNDM7e1xuJiM0MztcdGlmICghaW5pKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdGlmIChpbmktXHUwMDNlaWJfZGV2X3JlZilcbiYjNDM7XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZWliX2Rldik7XG4mIzQzO1x0aWYgKGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZilcbiYjNDM7XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIpO1xuJiM0MztcdGtmcmVlKGluaSk7XG4mIzQzO31cbiYjNDM7XG4gLyogcmV0dXJuIGhlYWQgb2YgbGluayBncm91cCBsaXN0IGFuZCBpdHMgbG9jayBmb3IgYSBnaXZlbiBsaW5rIGdyb3VwICovXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgbGlzdF9oZWFkICpzbWNfbGdyX2xpc3RfaGVhZChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbiBcdFx0XHRcdFx0XHQgIHNwaW5sb2NrX3QgKipsZ3JfbG9jaylcbkBAIC03OTMsMTQgJiM0Mzs4MDQsMjEgQEAgaW50IHNtY3JfbGlua19pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbiBcdGludCByYztcbiBcbiBcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyKSB7XG4tXHRcdGxuay1cdTAwM2VzbWNpYmRldiA9IGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyO1xuJiM0MztcdFx0c21jaWJkZXYgPSBpbmktXHUwMDNlc21jcnYyLmliX2Rldl92MjtcbiBcdFx0bG5rLVx1MDAzZWlicG9ydCA9IGluaS1cdTAwM2VzbWNydjIuaWJfcG9ydF92Mjtcbi1cdFx0bG5rLVx1MDAzZXdyX3J4X3NnZV9jbnQgPSBsbmstXHUwMDNlc21jaWJkZXYtXHUwMDNlaWJkZXYtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlIFx1MDAzYyAyID8gMSA6IDI7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdHNtY2liZGV2ID0gaW5pLVx1MDAzZWliX2RldjtcbiYjNDM7XHRcdGxuay1cdTAwM2VpYnBvcnQgPSBpbmktXHUwMDNlaWJfcG9ydDtcbiYjNDM7XHR9XG4mIzQzO1x0cmMgPSBzbWNfaWJkZXZfaW5pdF9iZWdpbihzbWNpYmRldik7XG4mIzQzO1x0aWYgKHJjKVxuJiM0MztcdFx0cmV0dXJuIHJjO1xuJiM0MztcdGxuay1cdTAwM2VzbWNpYmRldiA9IHNtY2liZGV2O1xuJiM0MztcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyKSB7XG4mIzQzO1x0XHRsbmstXHUwMDNld3Jfcnhfc2dlX2NudCA9IHNtY2liZGV2LVx1MDAzZWliZGV2LVx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSBcdTAwM2MgMiA/IDEgOiAyO1xuIFx0XHRsbmstXHUwMDNld3JfcnhfYnVmbGVuID0gc21jX2xpbmtfc2hhcmVkX3YyX3J4YnVmKGxuaykgP1xuIFx0XHRcdFNNQ19XUl9CVUZfU0laRSA6IFNNQ19XUl9CVUZfVjJfU0laRTtcbiBcdH0gZWxzZSB7XG4tXHRcdGxuay1cdTAwM2VzbWNpYmRldiA9IGluaS1cdTAwM2VpYl9kZXY7XG4tXHRcdGxuay1cdTAwM2VpYnBvcnQgPSBpbmktXHUwMDNlaWJfcG9ydDtcbiBcdFx0bG5rLVx1MDAzZXdyX3J4X3NnZV9jbnQgPSAxO1xuIFx0XHRsbmstXHUwMDNld3JfcnhfYnVmbGVuID0gU01DX1dSX0JVRl9TSVpFO1xuIFx0fVxuQEAgLTg4Miw2ICYjNDM7OTAwLDcgQEAgaW50IHNtY3JfbGlua19pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbiBcdGlmICghYXRvbWljX2RlY19yZXR1cm4oXHUwMDI2c21jaWJkZXYtXHUwMDNlbG5rX2NudCkpXG4gXHRcdHdha2VfdXAoXHUwMDI2c21jaWJkZXYtXHUwMDNlbG5rc19kZWxldGVkKTtcbiBcdHNtY19sZ3JfcHV0KGxncik7IC8qIGxncl9ob2xkIGFib3ZlICovXG4mIzQzO1x0c21jX2liZGV2X2luaXRfZW5kKHNtY2liZGV2KTtcbiBcdHJldHVybiByYztcbiB9XG4gXG5AQCAtOTk3LDYgJiM0MzsxMDE2LDggQEAgc3RhdGljIGludCBzbWNfbGdyX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbiBcdHNwaW5fbG9ja19iaChsZ3JfbG9jayk7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNmxnci1cdTAwM2VsaXN0LCBsZ3JfbGlzdCk7XG4gXHRzcGluX3VubG9ja19iaChsZ3JfbG9jayk7XG4mIzQzO1x0aWYgKCFpbmktXHUwMDNlaXNfc21jZClcbiYjNDM7XHRcdHNtY19pYmRldl9pbml0X2VuZChsbmstXHUwMDNlc21jaWJkZXYpO1xuIFx0cmV0dXJuIDA7XG4gXG4gZnJlZV93cTpcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmggYi9uZXQvc21jL3NtY19jb3JlLmhcbmluZGV4IDVjMThmMDhhNGM4YTUuLjlmNWE2OWEzMGNiM2YgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2NvcmUuaFxuQEAgLTQwMyw2ICYjNDM7NDAzLDcgQEAgc3RydWN0IHNtY19pbml0X2luZm9fc21jcnYyIHtcbiBcbiBcdC8qIE91dHB1dCBmaWVsZHMgd2hlbiBzYWRkciBpcyBzZXQgKi9cbiBcdHN0cnVjdCBzbWNfaWJfZGV2aWNlXHQqaWJfZGV2X3YyO1xuJiM0MztcdGJvb2xcdFx0XHRpYl9kZXZfdjJfcmVmOyAvKiBvd25zIGFuIHNtY19pYmRldiByZWZlcmVuY2UgKi9cbiBcdHU4XHRcdFx0aWJfcG9ydF92MjtcbiBcdHU4XHRcdFx0aWJfZ2lkX3YyW1NNQ19HSURfU0laRV07XG4gXG5AQCAtNDM4LDYgJiM0Mzs0MzksNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyB7XG4gXHR1OFx0XHRcdHBlZXJfbWFjW0VUSF9BTEVOXTtcbiBcdHU4XHRcdFx0cGVlcl9zeXN0ZW1pZFtTTUNfU1lTVEVNSURfTEVOXTtcbiBcdHN0cnVjdCBzbWNfaWJfZGV2aWNlXHQqaWJfZGV2O1xuJiM0MztcdGJvb2xcdFx0XHRpYl9kZXZfcmVmOyAvKiBvd25zIGFuIHNtY19pYmRldiByZWZlcmVuY2UgKi9cbiBcdHU4XHRcdFx0aWJfZ2lkW1NNQ19HSURfU0laRV07XG4gXHR1OFx0XHRcdGliX3BvcnQ7XG4gXHR1MzJcdFx0XHRpYl9jbGNxcG47XG5AQCAtNTk0LDYgJiM0Mzs1OTYsNyBAQCB2b2lkIHNtY19ydG9rZW5fc2V0MihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgaW50IHJ0b2tfaWR4LCBpbnQgbGlua19pZCxcbiB2b2lkIHNtY19zbmRidWZfc3luY19zZ19mb3JfZGV2aWNlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7XG4gdm9pZCBzbWNfcm1iX3N5bmNfc2dfZm9yX2NwdShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pO1xuIGludCBzbWNfdmxhbl9ieV90Y3BzayhzdHJ1Y3Qgc29ja2V0ICpjbGNzb2NrLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKTtcbiYjNDM7dm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG4gXG4gdm9pZCBzbWNfY29ubl9mcmVlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7XG4gaW50IHNtY19jb25uX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuYyBiL25ldC9zbWMvc21jX2liLmNcbmluZGV4IDliYjQ5NTcwNzQ0NWUuLmQ4NTg0NTNjNjRkOTIgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19pYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19pYi5jXG5AQCAtOTM0LDYgJiM0Mzs5MzQsNDQgQEAgdm9pZCBzbWNfaWJfbmRldl9jaGFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpXG4gXHRtdXRleF91bmxvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgc21jX2liZGV2X3JlbGVhc2Uoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxuJiM0Mzt7XG4mIzQzO1x0cHV0X2RldmljZShcdTAwMjZzbWNpYmRldi1cdTAwM2VpYmRldi1cdTAwM2VkZXYpO1xuJiM0MztcdGtmcmVlKHNtY2liZGV2KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7dm9pZCBzbWNfaWJkZXZfZ2V0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbiYjNDM7e1xuJiM0MztcdHJlZmNvdW50X2luYyhcdTAwMjZzbWNpYmRldi1cdTAwM2VyZWZjbnQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZzbWNpYmRldi1cdTAwM2VyZWZjbnQpKVxuJiM0MztcdFx0c21jX2liZGV2X3JlbGVhc2Uoc21jaWJkZXYpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbnQgc21jX2liZGV2X2luaXRfYmVnaW4oc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJjID0gMDtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4mIzQzO1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2c21jaWJkZXYtXHUwMDNlbGlzdCkpXG4mIzQzO1x0XHRyYyA9IC1FTk9ERVY7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0YXRvbWljX2luYyhcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnNtY19pYl9kZXZpY2VzLm11dGV4KTtcbiYjNDM7XHRyZXR1cm4gcmM7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbiYjNDM7e1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuJiM0MztcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNnNtY2liZGV2LVx1MDAzZWluaXRfY250KSlcbiYjNDM7XHRcdHdha2VfdXAoXHUwMDI2c21jaWJkZXYtXHUwMDNlaW5pdF93YWl0KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpYl9yZWdpc3Rlcl9jbGllbnQoKSAqL1xuIHN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpXG4ge1xuQEAgLTk0OSw3ICYjNDM7OTg3LDExIEBAIHN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0c21jaWJkZXYtXHUwMDNlaWJkZXYgPSBpYmRldjtcbiYjNDM7XHRnZXRfZGV2aWNlKFx1MDAyNmliZGV2LVx1MDAzZWRldik7XG4mIzQzO1x0cmVmY291bnRfc2V0KFx1MDAyNnNtY2liZGV2LVx1MDAzZXJlZmNudCwgMSk7XG4gXHRJTklUX1dPUksoXHUwMDI2c21jaWJkZXYtXHUwMDNlcG9ydF9ldmVudF93b3JrLCBzbWNfaWJfcG9ydF9ldmVudF93b3JrKTtcbiYjNDM7XHRhdG9taWNfc2V0KFx1MDAyNnNtY2liZGV2LVx1MDAzZWluaXRfY250LCAwKTtcbiYjNDM7XHRpbml0X3dhaXRxdWV1ZV9oZWFkKFx1MDAyNnNtY2liZGV2LVx1MDAzZWluaXRfd2FpdCk7XG4gXHRhdG9taWNfc2V0KFx1MDAyNnNtY2liZGV2LVx1MDAzZWxua19jbnQsIDApO1xuIFx0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2VsbmtzX2RlbGV0ZWQpO1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZzbWNpYmRldi1cdTAwM2VtdXRleCk7XG5AQCAtMTAwMCwxMSAmIzQzOzEwNDIsMTQgQEAgc3RhdGljIHZvaWQgc21jX2liX3JlbW92ZV9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHZvaWQgKmNsaWVudF9kYXRhKVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNtY19pYl9kZXZpY2VzLm11dGV4KTtcbiBcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXCYjMzQ7c21jOiByZW1vdmluZyBpYiBkZXZpY2UgJXNcXG5cJiMzNDssXG4gXHRcdFx0ICAgIHNtY2liZGV2LVx1MDAzZWliZGV2LVx1MDAzZW5hbWUpO1xuJiM0MztcdGlmIChhdG9taWNfcmVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpXG4mIzQzO1x0XHR3YWl0X2V2ZW50KHNtY2liZGV2LVx1MDAzZWluaXRfd2FpdCxcbiYjNDM7XHRcdFx0ICAgIWF0b21pY19yZWFkKFx1MDAyNnNtY2liZGV2LVx1MDAzZWluaXRfY250KSk7XG4gXHRzbWNfc21jcl90ZXJtaW5hdGVfYWxsKHNtY2liZGV2KTtcbiBcdHNtY19pYl9jbGVhbnVwX3Blcl9pYmRldihzbWNpYmRldik7XG4gXHRpYl91bnJlZ2lzdGVyX2V2ZW50X2hhbmRsZXIoXHUwMDI2c21jaWJkZXYtXHUwMDNlZXZlbnRfaGFuZGxlcik7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnNtY2liZGV2LVx1MDAzZXBvcnRfZXZlbnRfd29yayk7XG4tXHRrZnJlZShzbWNpYmRldik7XG4mIzQzO1x0c21jX2liZGV2X3B1dChzbWNpYmRldik7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgaWJfY2xpZW50IHNtY19pYl9jbGllbnQgPSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuaCBiL25ldC9zbWMvc21jX2liLmhcbmluZGV4IGVmOGFjMmI3NTQ2ZGYuLmQzMjU0NzM1MGU4YjggMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19pYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19pYi5oXG5AQCAtMTUsNiAmIzQzOzE1LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX2V0aGVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93YWl0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NyZG1hL2liX3ZlcmJzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvc21jLmhcdTAwM2VcbkBAIC01MSw2ICYjNDM7NTIsOSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7XHRcdFx0XHQvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqL1xuIFx0c3RydWN0IHdvcmtfc3RydWN0XHRwb3J0X2V2ZW50X3dvcms7XG4gXHR1bnNpZ25lZCBsb25nXHRcdHBvcnRfZXZlbnRfbWFzaztcbiBcdERFQ0xBUkVfQklUTUFQKHBvcnRzX2dvaW5nX2F3YXksIFNNQ19NQVhfUE9SVFMpO1xuJiM0MztcdHJlZmNvdW50X3RcdFx0cmVmY250O1x0XHQvKiBvYmplY3QgbGlmZXRpbWUgKi9cbiYjNDM7XHRhdG9taWNfdFx0XHRpbml0X2NudDtcdC8qIHVucHVibGlzaGVkIGxpbmsgaW5pdGlhbGl6YXRpb25zICovXG4mIzQzO1x0d2FpdF9xdWV1ZV9oZWFkX3RcdGluaXRfd2FpdDtcdC8qIHdhaXQgZm9yIGxpbmtzIHRvIGJlIHB1Ymxpc2hlZCAqL1xuIFx0YXRvbWljX3RcdFx0bG5rX2NudDtcdC8qIG51bWJlciBvZiBsaW5rcyBvbiBpYmRldiAqL1xuIFx0d2FpdF9xdWV1ZV9oZWFkX3RcdGxua3NfZGVsZXRlZDtcdC8qIHdhaXQgNCByZW1vdmFsIG9mIGFsbCBsaW5rcyovXG4gXHRzdHJ1Y3QgbXV0ZXhcdFx0bXV0ZXg7XHRcdC8qIHByb3RlY3QgZGV2IHNldHVwJiM0MztjbGVhbnVwICovXG5AQCAtNTksNiAmIzQzOzYzLDExIEBAIHN0cnVjdCBzbWNfaWJfZGV2aWNlIHtcdFx0XHRcdC8qIGliLWRldmljZSBpbmZvcyBmb3Igc21jICovXG4gXHRpbnRcdFx0XHRuZGV2X2lmaWR4W1NNQ19NQVhfUE9SVFNdOyAvKiBuZGV2IGlmIGluZGV4ZXMgKi9cbiB9O1xuIFxuJiM0Mzt2b2lkIHNtY19pYmRldl9nZXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbiYjNDM7dm9pZCBzbWNfaWJkZXZfcHV0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7XG4mIzQzO2ludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpO1xuJiM0Mzt2b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpO1xuJiM0MztcbiBzdGF0aWMgaW5saW5lIF9fYmUzMiBzbWNfaWJfZ2lkX3RvX2lwdjQodTggZ2lkW1NNQ19HSURfU0laRV0pXG4ge1xuIFx0c3RydWN0IGluNl9hZGRyICphZGRyNiA9IChzdHJ1Y3QgaW42X2FkZHIgKilnaWQ7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfbGxjLmMgYi9uZXQvc21jL3NtY19sbGMuY1xuaW5kZXggYzljY2Q4NDgwMzY5Yy4uZTE2YWFhNTE0MzY4YSAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX2xsYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19sbGMuY1xuQEAgLTExMDgsNiAmIzQzOzExMDgsNyBAQCBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbiBcdHJjID0gc21jcl9saW5rX2luaXQobGdyLCBsbmtfbmV3LCBsbmtfaWR4LCBpbmkpO1xuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dF9yZWplY3Q7XG4mIzQzO1x0c21jX2liZGV2X2luaXRfZW5kKGxua19uZXctXHUwMDNlc21jaWJkZXYpO1xuIFx0c21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obG5rX25ldywgbGxjKTtcbiBcdGxua19uZXctXHUwMDNlbGlua19pZCA9IGxsYy1cdTAwM2VsaW5rX251bTtcdC8qIFNNQyBzZXJ2ZXIgYXNzaWducyBsaW5rIGlkICovXG4gXHRzbWNfbGxjX2xpbmtfc2V0X3VpZChsbmtfbmV3KTtcbkBAIC0xMTQzLDcgJiM0MzsxMTQ0LDcgQEAgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4gb3V0X3JlamVjdDpcbiBcdHNtY19sbGNfY2xpX2FkZF9saW5rX3JlamVjdChxZW50cnkpO1xuIG91dDpcbi1cdGtmcmVlKGluaSk7XG4mIzQzO1x0c21jX2luaXRfaW5mb19mcmVlKGluaSk7XG4gXHRrZnJlZShxZW50cnkpO1xuIFx0cmV0dXJuIHJjO1xuIH1cbkBAIC0xMjE3LDcgJiM0MzsxMjE4LDcgQEAgc3RhdGljIHZvaWQgc21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdHNtY19sbGNfc2VuZF9hZGRfbGluayhsaW5rLCBpbmktXHUwMDNlaWJfZGV2LVx1MDAzZW1hY1tpbmktXHUwMDNlaWJfcG9ydCAtIDFdLFxuIFx0XHRcdCAgICAgIGluaS1cdTAwM2VpYl9naWQsIE5VTEwsIFNNQ19MTENfUkVRKTtcbiBvdXQ6XG4tXHRrZnJlZShpbmkpO1xuJiM0MztcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0a2ZyZWUocWVudHJ5KTtcbiB9XG4gXG5AQCAtMTQ4Nyw2ICYjNDM7MTQ4OCw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHRpZiAocmMpXG4gXHRcdGdvdG8gb3V0O1xuIFx0bGlua19uZXcgPSBcdTAwMjZsZ3ItXHUwMDNlbG5rW2xua19pZHhdO1xuJiM0MztcdHNtY19pYmRldl9pbml0X2VuZChsaW5rX25ldy1cdTAwM2VzbWNpYmRldik7XG4gXG4gXHRyYyA9IHNtY3JfYnVmX21hcF9sZ3IobGlua19uZXcpO1xuIFx0aWYgKHJjKVxuQEAgLTE1NDQsNyAmIzQzOzE1NDYsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0fVxuIG91dDpcbiBcdGtmcmVlKHFlbnRyeSk7XG4tXHRrZnJlZShpbmkpO1xuJiM0MztcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0aWYgKHNlbmRfcmVxX2FkZF9saW5rX3Jlc3ApXG4gXHRcdHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2UocmVxX3FlbnRyeSk7XG4gXHRyZXR1cm4gcmM7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfcG5ldC5jIGIvbmV0L3NtYy9zbWNfcG5ldC5jXG5pbmRleCA2M2UyODZlMmRmYWE4Li5iZTFmNTEzN2M4ZWU3IDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfcG5ldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19wbmV0LmNcbkBAIC05ODAsMTQgJiM0Mzs5ODAsMjIgQEAgc3RhdGljIGludCBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICppYmRldiwgaW50IGksXG4gXHRpZiAoIWluaS1cdTAwM2VjaGVja19zbWNydjIgXHUwMDI2XHUwMDI2XG4gXHQgICAgIXNtY19pYl9kZXRlcm1pbmVfZ2lkKGliZGV2LCBpLCBpbmktXHUwMDNldmxhbl9pZCwgaW5pLVx1MDAzZWliX2dpZCwgTlVMTCxcbiBcdFx0XHRcdCAgTlVMTCkpIHtcbiYjNDM7XHRcdGlmIChpbmktXHUwMDNlaWJfZGV2X3JlZilcbiYjNDM7XHRcdFx0c21jX2liZGV2X3B1dChpbmktXHUwMDNlaWJfZGV2KTtcbiYjNDM7XHRcdHNtY19pYmRldl9nZXQoaWJkZXYpO1xuIFx0XHRpbmktXHUwMDNlaWJfZGV2ID0gaWJkZXY7XG4mIzQzO1x0XHRpbmktXHUwMDNlaWJfZGV2X3JlZiA9IHRydWU7XG4gXHRcdGluaS1cdTAwM2VpYl9wb3J0ID0gaTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXHRpZiAoaW5pLVx1MDAzZWNoZWNrX3NtY3J2MiBcdTAwMjZcdTAwMjZcbiBcdCAgICAhc21jX2liX2RldGVybWluZV9naWQoaWJkZXYsIGksIGluaS1cdTAwM2V2bGFuX2lkLCBpbmktXHUwMDNlc21jcnYyLmliX2dpZF92MixcbiBcdFx0XHRcdCAgTlVMTCwgXHUwMDI2aW5pLVx1MDAzZXNtY3J2MikpIHtcbiYjNDM7XHRcdGlmIChpbmktXHUwMDNlc21jcnYyLmliX2Rldl92Ml9yZWYpXG4mIzQzO1x0XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIpO1xuJiM0MztcdFx0c21jX2liZGV2X2dldChpYmRldik7XG4gXHRcdGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyID0gaWJkZXY7XG4mIzQzO1x0XHRpbmktXHUwMDNlc21jcnYyLmliX2Rldl92Ml9yZWYgPSB0cnVlO1xuIFx0XHRpbmktXHUwMDNlc21jcnYyLmliX3BvcnRfdjIgPSBpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7LAogICAgJiMzNDtESUJTX0xPJiMzNDssCiAgICAmIzM0O1JETUFfUlhFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jcl9saW5rX2luaXQmIzM0OywKICAgICYjMzQ7c21jX2xsY19jbGlfYWRkX2xpbmsmIzM0OywKICAgICYjMzQ7c21jX2xsY19zcnZfYWRkX2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgbGVhayBvZiBgc21jX2liX2RldmljZWAgaW4gdGhlIFNNQyBzdWJzeXN0ZW0gYnkgaW50cm9kdWNpbmcgYHNtY19pbml0X2luZm9fZnJlZWAgYW5kIHByb3Blcmx5IG1hbmFnaW5nIHRoZSBvYmplY3QgbGlmZXRpbWUgd2l0aCByZWZlcmVuY2UgY291bnRpbmcgKGBzbWNfaWJkZXZfZ2V0YC9gcHV0YCkuIEl0IGFsc28gYWRkcyBhbiBpbml0aWFsaXphdGlvbiBjb3VudGVyIChgaW5pdF9jbnRgKSB0byB0cmFjayB1bnB1Ymxpc2hlZCBsaW5rIGluaXRpYWxpemF0aW9ucy4gVGhlIGNoYW5nZXMgYWZmZWN0IGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoYF9fc21jX2Nvbm5lY3RgLCBgc21jX2xpc3Rlbl93b3JrYCkgYW5kIExMQyBsaW5rIG1hbmFnZW1lbnQgKGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2ApLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzb2NrZXQgb3BlcmF0aW9ucyBhbmQgaW5jb21pbmcgbmV0d29yayBwYWNrZXRzLiBUbyBwcm9wZXJseSB0ZXN0IHRoaXMsIHdlIG5lZWQgdG8gZW5hYmxlIFNNQywgSW5maW5pQmFuZCwgYW5kIHNvZnR3YXJlLWVtdWxhdGVkIFJETUEvRElCUyBkZXZpY2VzIChgUkRNQV9SWEVgLCBgRElCU19MT2ApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzc3ZjMwNzE1YzZkNTA1NDRkNmY4MGMwMzBhYjViYmIxMWM5MTQyYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIzIDA3OjM4OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9hZl9zbWMuYyBiL25ldC9zbWMvYWZfc21jLmMKaW5kZXggZTlmOTNiM2FiNDM1Yi4uZDc4MWRlZTFiMzI5MyAxMDA2NDQKLS0tIGEvbmV0L3NtYy9hZl9zbWMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL2FmX3NtYy5jCkBAIC0xMjI1LDcgJiM0MzsxMjI1LDcgQEAgdm9pZCBzbWNfZmlsbF9naWRfbGlzdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwKIAkgICAgICAgU01DX0dJRF9TSVpFKTsKIAogb3V0OgotCWtmcmVlKGFsdF9pbmkpOwomIzQzOwlzbWNfaW5pdF9pbmZvX2ZyZWUoYWx0X2luaSk7CiB9CiAKIHN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfcmRtYV92Ml9wcmVwYXJlKHN0cnVjdCBzbWNfc29jayAqc21jLApAQCAtMTU5NiwxNCAmIzQzOzE1OTYsMTQgQEAgc3RhdGljIGludCBfX3NtY19jb25uZWN0KHN0cnVjdCBzbWNfc29jayAqc21jKQogCVNNQ19TVEFUX0NMTlRfU1VDQ19JTkMoc29ja19uZXQoc21jLSZndDtjbGNzb2NrLSZndDtzayksIGFjbGMpOwogCXNtY19jb25uZWN0X2lzbV92bGFuX2NsZWFudXAoaW5pKTsKIAlrZnJlZShidWYpOwotCWtmcmVlKGluaSk7CiYjNDM7CXNtY19pbml0X2luZm9fZnJlZShpbmkpOwogCXJldHVybiAwOwogCiB2bGFuX2NsZWFudXA6CiAJc21jX2Nvbm5lY3RfaXNtX3ZsYW5fY2xlYW51cChpbmkpOwogCWtmcmVlKGJ1Zik7CiBmYWxsYmFjazoKLQlrZnJlZShpbmkpOwomIzQzOwlzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTsKIAlyZXR1cm4gc21jX2Nvbm5lY3RfZGVjbGluZV9mYWxsYmFjayhzbWMsIHJjLCB2ZXJzaW9uKTsKIH0KIApAQCAtMjM0NCw3ICYjNDM7MjM0NCwxMCBAQCBzdGF0aWMgdm9pZCBzbWNfZmluZF9yZG1hX3YyX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYywKIAogbm90X2ZvdW5kOgogCWluaS0mZ3Q7c21jcl92ZXJzaW9uICZhbXA7PSB+U01DX1YyOwomIzQzOwlpZiAoaW5pLSZndDtzbWNydjIuaWJfZGV2X3YyX3JlZikKJiM0MzsJCXNtY19pYmRldl9wdXQoaW5pLSZndDtzbWNydjIuaWJfZGV2X3YyKTsKIAlpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjIgPSBOVUxMOwomIzQzOwlpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjJfcmVmID0gZmFsc2U7CiAJaW5pLSZndDtjaGVja19zbWNydjIgPSBmYWxzZTsKIH0KIApAQCAtMjU4OCw3ICYjNDM7MjU5MSw3IEBAIHN0YXRpYyB2b2lkIHNtY19saXN0ZW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJc21jX2xpc3Rlbl9kZWNsaW5lKG5ld19zbWMsIHJjLCBpbmkgPyBpbmktJmd0O2ZpcnN0X2NvbnRhY3RfbG9jYWwgOiAwLAogCQkJICAgcHJvcG9zYWxfdmVyc2lvbik7CiBvdXRfZnJlZToKLQlrZnJlZShpbmkpOwomIzQzOwlzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTsKIAlrZnJlZShidWYpOwogfQogCmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmMgYi9uZXQvc21jL3NtY19jb3JlLmMKaW5kZXggMTgxNjQ3OTgyNDkwYi4uZDk3YmM3MzIzMTA2OSAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2NvcmUuYwpAQCAtNTUsNiAmIzQzOzU1LDE3IEBAIHN0YXRpYyB2b2lkIF9fc21jX2xncl90ZXJtaW5hdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgc29mdCk7CiAKIHN0YXRpYyB2b2lkIHNtY19saW5rX2Rvd25fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwogCiYjNDM7dm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSkKJiM0Mzt7CiYjNDM7CWlmICghaW5pKQomIzQzOwkJcmV0dXJuOwomIzQzOwlpZiAoaW5pLSZndDtpYl9kZXZfcmVmKQomIzQzOwkJc21jX2liZGV2X3B1dChpbmktJmd0O2liX2Rldik7CiYjNDM7CWlmIChpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjJfcmVmKQomIzQzOwkJc21jX2liZGV2X3B1dChpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjIpOwomIzQzOwlrZnJlZShpbmkpOwomIzQzO30KJiM0MzsKIC8qIHJldHVybiBoZWFkIG9mIGxpbmsgZ3JvdXAgbGlzdCBhbmQgaXRzIGxvY2sgZm9yIGEgZ2l2ZW4gbGluayBncm91cCAqLwogc3RhdGljIGlubGluZSBzdHJ1Y3QgbGlzdF9oZWFkICpzbWNfbGdyX2xpc3RfaGVhZChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwKIAkJCQkJCSAgc3BpbmxvY2tfdCAqKmxncl9sb2NrKQpAQCAtNzkzLDE0ICYjNDM7ODA0LDIxIEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssCiAJaW50IHJjOwogCiAJaWYgKGxnci0mZ3Q7c21jX3ZlcnNpb24gPT0gU01DX1YyKSB7Ci0JCWxuay0mZ3Q7c21jaWJkZXYgPSBpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjI7CiYjNDM7CQlzbWNpYmRldiA9IGluaS0mZ3Q7c21jcnYyLmliX2Rldl92MjsKIAkJbG5rLSZndDtpYnBvcnQgPSBpbmktJmd0O3NtY3J2Mi5pYl9wb3J0X3YyOwotCQlsbmstJmd0O3dyX3J4X3NnZV9jbnQgPSBsbmstJmd0O3NtY2liZGV2LSZndDtpYmRldi0mZ3Q7YXR0cnMubWF4X3JlY3Zfc2dlICZsdDsgMiA/IDEgOiAyOwomIzQzOwl9IGVsc2UgewomIzQzOwkJc21jaWJkZXYgPSBpbmktJmd0O2liX2RldjsKJiM0MzsJCWxuay0mZ3Q7aWJwb3J0ID0gaW5pLSZndDtpYl9wb3J0OwomIzQzOwl9CiYjNDM7CXJjID0gc21jX2liZGV2X2luaXRfYmVnaW4oc21jaWJkZXYpOwomIzQzOwlpZiAocmMpCiYjNDM7CQlyZXR1cm4gcmM7CiYjNDM7CWxuay0mZ3Q7c21jaWJkZXYgPSBzbWNpYmRldjsKJiM0MzsJaWYgKGxnci0mZ3Q7c21jX3ZlcnNpb24gPT0gU01DX1YyKSB7CiYjNDM7CQlsbmstJmd0O3dyX3J4X3NnZV9jbnQgPSBzbWNpYmRldi0mZ3Q7aWJkZXYtJmd0O2F0dHJzLm1heF9yZWN2X3NnZSAmbHQ7IDIgPyAxIDogMjsKIAkJbG5rLSZndDt3cl9yeF9idWZsZW4gPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobG5rKSA/CiAJCQlTTUNfV1JfQlVGX1NJWkUgOiBTTUNfV1JfQlVGX1YyX1NJWkU7CiAJfSBlbHNlIHsKLQkJbG5rLSZndDtzbWNpYmRldiA9IGluaS0mZ3Q7aWJfZGV2OwotCQlsbmstJmd0O2licG9ydCA9IGluaS0mZ3Q7aWJfcG9ydDsKIAkJbG5rLSZndDt3cl9yeF9zZ2VfY250ID0gMTsKIAkJbG5rLSZndDt3cl9yeF9idWZsZW4gPSBTTUNfV1JfQlVGX1NJWkU7CiAJfQpAQCAtODgyLDYgJiM0Mzs5MDAsNyBAQCBpbnQgc21jcl9saW5rX2luaXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfbGluayAqbG5rLAogCWlmICghYXRvbWljX2RlY19yZXR1cm4oJmFtcDtzbWNpYmRldi0mZ3Q7bG5rX2NudCkpCiAJCXdha2VfdXAoJmFtcDtzbWNpYmRldi0mZ3Q7bG5rc19kZWxldGVkKTsKIAlzbWNfbGdyX3B1dChsZ3IpOyAvKiBsZ3JfaG9sZCBhYm92ZSAqLwomIzQzOwlzbWNfaWJkZXZfaW5pdF9lbmQoc21jaWJkZXYpOwogCXJldHVybiByYzsKIH0KIApAQCAtOTk3LDYgJiM0MzsxMDE2LDggQEAgc3RhdGljIGludCBzbWNfbGdyX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSkKIAlzcGluX2xvY2tfYmgobGdyX2xvY2spOwogCWxpc3RfYWRkX3RhaWwoJmFtcDtsZ3ItJmd0O2xpc3QsIGxncl9saXN0KTsKIAlzcGluX3VubG9ja19iaChsZ3JfbG9jayk7CiYjNDM7CWlmICghaW5pLSZndDtpc19zbWNkKQomIzQzOwkJc21jX2liZGV2X2luaXRfZW5kKGxuay0mZ3Q7c21jaWJkZXYpOwogCXJldHVybiAwOwogCiBmcmVlX3dxOgpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY29yZS5oIGIvbmV0L3NtYy9zbWNfY29yZS5oCmluZGV4IDVjMThmMDhhNGM4YTUuLjlmNWE2OWEzMGNiM2YgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19jb3JlLmgKQEAgLTQwMyw2ICYjNDM7NDAzLDcgQEAgc3RydWN0IHNtY19pbml0X2luZm9fc21jcnYyIHsKIAogCS8qIE91dHB1dCBmaWVsZHMgd2hlbiBzYWRkciBpcyBzZXQgKi8KIAlzdHJ1Y3Qgc21jX2liX2RldmljZQkqaWJfZGV2X3YyOwomIzQzOwlib29sCQkJaWJfZGV2X3YyX3JlZjsgLyogb3ducyBhbiBzbWNfaWJkZXYgcmVmZXJlbmNlICovCiAJdTgJCQlpYl9wb3J0X3YyOwogCXU4CQkJaWJfZ2lkX3YyW1NNQ19HSURfU0laRV07CiAKQEAgLTQzOCw2ICYjNDM7NDM5LDcgQEAgc3RydWN0IHNtY19pbml0X2luZm8gewogCXU4CQkJcGVlcl9tYWNbRVRIX0FMRU5dOwogCXU4CQkJcGVlcl9zeXN0ZW1pZFtTTUNfU1lTVEVNSURfTEVOXTsKIAlzdHJ1Y3Qgc21jX2liX2RldmljZQkqaWJfZGV2OwomIzQzOwlib29sCQkJaWJfZGV2X3JlZjsgLyogb3ducyBhbiBzbWNfaWJkZXYgcmVmZXJlbmNlICovCiAJdTgJCQlpYl9naWRbU01DX0dJRF9TSVpFXTsKIAl1OAkJCWliX3BvcnQ7CiAJdTMyCQkJaWJfY2xjcXBuOwpAQCAtNTk0LDYgJiM0Mzs1OTYsNyBAQCB2b2lkIHNtY19ydG9rZW5fc2V0MihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgaW50IHJ0b2tfaWR4LCBpbnQgbGlua19pZCwKIHZvaWQgc21jX3NuZGJ1Zl9zeW5jX3NnX2Zvcl9kZXZpY2Uoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKTsKIHZvaWQgc21jX3JtYl9zeW5jX3NnX2Zvcl9jcHUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKTsKIGludCBzbWNfdmxhbl9ieV90Y3BzayhzdHJ1Y3Qgc29ja2V0ICpjbGNzb2NrLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKTsKJiM0Mzt2b2lkIHNtY19pbml0X2luZm9fZnJlZShzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKTsKIAogdm9pZCBzbWNfY29ubl9mcmVlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7CiBpbnQgc21jX2Nvbm5fY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKTsKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2liLmMgYi9uZXQvc21jL3NtY19pYi5jCmluZGV4IDliYjQ5NTcwNzQ0NWUuLmQ4NTg0NTNjNjRkOTIgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2liLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfaWIuYwpAQCAtOTM0LDYgJiM0Mzs5MzQsNDQgQEAgdm9pZCBzbWNfaWJfbmRldl9jaGFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpCiAJbXV0ZXhfdW5sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgc21jX2liZGV2X3JlbGVhc2Uoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KQomIzQzO3sKJiM0MzsJcHV0X2RldmljZSgmYW1wO3NtY2liZGV2LSZndDtpYmRldi0mZ3Q7ZGV2KTsKJiM0MzsJa2ZyZWUoc21jaWJkZXYpOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHNtY19pYmRldl9nZXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KQomIzQzO3sKJiM0MzsJcmVmY291bnRfaW5jKCZhbXA7c21jaWJkZXYtJmd0O3JlZmNudCk7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgc21jX2liZGV2X3B1dChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCiYjNDM7ewomIzQzOwlpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KCZhbXA7c21jaWJkZXYtJmd0O3JlZmNudCkpCiYjNDM7CQlzbWNfaWJkZXZfcmVsZWFzZShzbWNpYmRldik7CiYjNDM7fQomIzQzOwomIzQzO2ludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCiYjNDM7ewomIzQzOwlpbnQgcmMgPSAwOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwomIzQzOwlpZiAobGlzdF9lbXB0eSgmYW1wO3NtY2liZGV2LSZndDtsaXN0KSkKJiM0MzsJCXJjID0gLUVOT0RFVjsKJiM0MzsJZWxzZQomIzQzOwkJYXRvbWljX2luYygmYW1wO3NtY2liZGV2LSZndDtpbml0X2NudCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3NtY19pYl9kZXZpY2VzLm11dGV4KTsKJiM0MzsJcmV0dXJuIHJjOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCiYjNDM7ewomIzQzOwltdXRleF9sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwomIzQzOwlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmYW1wO3NtY2liZGV2LSZndDtpbml0X2NudCkpCiYjNDM7CQl3YWtlX3VwKCZhbXA7c21jaWJkZXYtJmd0O2luaXRfd2FpdCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3NtY19pYl9kZXZpY2VzLm11dGV4KTsKJiM0Mzt9CiYjNDM7CiAvKiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgaWJfcmVnaXN0ZXJfY2xpZW50KCkgKi8KIHN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpCiB7CkBAIC05NDksNyAmIzQzOzk4NywxMSBAQCBzdGF0aWMgaW50IHNtY19pYl9hZGRfZGV2KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2KQogCQlyZXR1cm4gLUVOT01FTTsKIAogCXNtY2liZGV2LSZndDtpYmRldiA9IGliZGV2OwomIzQzOwlnZXRfZGV2aWNlKCZhbXA7aWJkZXYtJmd0O2Rldik7CiYjNDM7CXJlZmNvdW50X3NldCgmYW1wO3NtY2liZGV2LSZndDtyZWZjbnQsIDEpOwogCUlOSVRfV09SSygmYW1wO3NtY2liZGV2LSZndDtwb3J0X2V2ZW50X3dvcmssIHNtY19pYl9wb3J0X2V2ZW50X3dvcmspOwomIzQzOwlhdG9taWNfc2V0KCZhbXA7c21jaWJkZXYtJmd0O2luaXRfY250LCAwKTsKJiM0MzsJaW5pdF93YWl0cXVldWVfaGVhZCgmYW1wO3NtY2liZGV2LSZndDtpbml0X3dhaXQpOwogCWF0b21pY19zZXQoJmFtcDtzbWNpYmRldi0mZ3Q7bG5rX2NudCwgMCk7CiAJaW5pdF93YWl0cXVldWVfaGVhZCgmYW1wO3NtY2liZGV2LSZndDtsbmtzX2RlbGV0ZWQpOwogCW11dGV4X2luaXQoJmFtcDtzbWNpYmRldi0mZ3Q7bXV0ZXgpOwpAQCAtMTAwMCwxMSAmIzQzOzEwNDIsMTQgQEAgc3RhdGljIHZvaWQgc21jX2liX3JlbW92ZV9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHZvaWQgKmNsaWVudF9kYXRhKQogCW11dGV4X3VubG9jaygmYW1wO3NtY19pYl9kZXZpY2VzLm11dGV4KTsKIAlwcl93YXJuX3JhdGVsaW1pdGVkKCYjMzQ7c21jOiByZW1vdmluZyBpYiBkZXZpY2UgJXNcbiYjMzQ7LAogCQkJICAgIHNtY2liZGV2LSZndDtpYmRldi0mZ3Q7bmFtZSk7CiYjNDM7CWlmIChhdG9taWNfcmVhZCgmYW1wO3NtY2liZGV2LSZndDtpbml0X2NudCkpCiYjNDM7CQl3YWl0X2V2ZW50KHNtY2liZGV2LSZndDtpbml0X3dhaXQsCiYjNDM7CQkJICAgIWF0b21pY19yZWFkKCZhbXA7c21jaWJkZXYtJmd0O2luaXRfY250KSk7CiAJc21jX3NtY3JfdGVybWluYXRlX2FsbChzbWNpYmRldik7CiAJc21jX2liX2NsZWFudXBfcGVyX2liZGV2KHNtY2liZGV2KTsKIAlpYl91bnJlZ2lzdGVyX2V2ZW50X2hhbmRsZXIoJmFtcDtzbWNpYmRldi0mZ3Q7ZXZlbnRfaGFuZGxlcik7CiAJY2FuY2VsX3dvcmtfc3luYygmYW1wO3NtY2liZGV2LSZndDtwb3J0X2V2ZW50X3dvcmspOwotCWtmcmVlKHNtY2liZGV2KTsKJiM0MzsJc21jX2liZGV2X3B1dChzbWNpYmRldik7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgaWJfY2xpZW50IHNtY19pYl9jbGllbnQgPSB7CmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19pYi5oIGIvbmV0L3NtYy9zbWNfaWIuaAppbmRleCBlZjhhYzJiNzU0NmRmLi5kMzI1NDczNTBlOGI4IDEwMDY0NAotLS0gYS9uZXQvc21jL3NtY19pYi5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2liLmgKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaWZfZXRoZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tdXRleC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZjb3VudC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3dhaXQuaCZndDsKICNpbmNsdWRlICZsdDtyZG1hL2liX3ZlcmJzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3NtYy5oJmd0OwpAQCAtNTEsNiAmIzQzOzUyLDkgQEAgc3RydWN0IHNtY19pYl9kZXZpY2UgewkJCQkvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqLwogCXN0cnVjdCB3b3JrX3N0cnVjdAlwb3J0X2V2ZW50X3dvcms7CiAJdW5zaWduZWQgbG9uZwkJcG9ydF9ldmVudF9tYXNrOwogCURFQ0xBUkVfQklUTUFQKHBvcnRzX2dvaW5nX2F3YXksIFNNQ19NQVhfUE9SVFMpOwomIzQzOwlyZWZjb3VudF90CQlyZWZjbnQ7CQkvKiBvYmplY3QgbGlmZXRpbWUgKi8KJiM0MzsJYXRvbWljX3QJCWluaXRfY250OwkvKiB1bnB1Ymxpc2hlZCBsaW5rIGluaXRpYWxpemF0aW9ucyAqLwomIzQzOwl3YWl0X3F1ZXVlX2hlYWRfdAlpbml0X3dhaXQ7CS8qIHdhaXQgZm9yIGxpbmtzIHRvIGJlIHB1Ymxpc2hlZCAqLwogCWF0b21pY190CQlsbmtfY250OwkvKiBudW1iZXIgb2YgbGlua3Mgb24gaWJkZXYgKi8KIAl3YWl0X3F1ZXVlX2hlYWRfdAlsbmtzX2RlbGV0ZWQ7CS8qIHdhaXQgNCByZW1vdmFsIG9mIGFsbCBsaW5rcyovCiAJc3RydWN0IG11dGV4CQltdXRleDsJCS8qIHByb3RlY3QgZGV2IHNldHVwJiM0MztjbGVhbnVwICovCkBAIC01OSw2ICYjNDM7NjMsMTEgQEAgc3RydWN0IHNtY19pYl9kZXZpY2UgewkJCQkvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqLwogCWludAkJCW5kZXZfaWZpZHhbU01DX01BWF9QT1JUU107IC8qIG5kZXYgaWYgaW5kZXhlcyAqLwogfTsKIAomIzQzO3ZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpOwomIzQzO3ZvaWQgc21jX2liZGV2X3B1dChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpOwomIzQzO2ludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpOwomIzQzO3ZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7CiYjNDM7CiBzdGF0aWMgaW5saW5lIF9fYmUzMiBzbWNfaWJfZ2lkX3RvX2lwdjQodTggZ2lkW1NNQ19HSURfU0laRV0pCiB7CiAJc3RydWN0IGluNl9hZGRyICphZGRyNiA9IChzdHJ1Y3QgaW42X2FkZHIgKilnaWQ7CmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19sbGMuYyBiL25ldC9zbWMvc21jX2xsYy5jCmluZGV4IGM5Y2NkODQ4MDM2OWMuLmUxNmFhYTUxNDM2OGEgMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2xsYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2xsYy5jCkBAIC0xMTA4LDYgJiM0MzsxMTA4LDcgQEAgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpCiAJcmMgPSBzbWNyX2xpbmtfaW5pdChsZ3IsIGxua19uZXcsIGxua19pZHgsIGluaSk7CiAJaWYgKHJjKQogCQlnb3RvIG91dF9yZWplY3Q7CiYjNDM7CXNtY19pYmRldl9pbml0X2VuZChsbmtfbmV3LSZndDtzbWNpYmRldik7CiAJc21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obG5rX25ldywgbGxjKTsKIAlsbmtfbmV3LSZndDtsaW5rX2lkID0gbGxjLSZndDtsaW5rX251bTsJLyogU01DIHNlcnZlciBhc3NpZ25zIGxpbmsgaWQgKi8KIAlzbWNfbGxjX2xpbmtfc2V0X3VpZChsbmtfbmV3KTsKQEAgLTExNDMsNyAmIzQzOzExNDQsNyBAQCBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSkKIG91dF9yZWplY3Q6CiAJc21jX2xsY19jbGlfYWRkX2xpbmtfcmVqZWN0KHFlbnRyeSk7CiBvdXQ6Ci0Ja2ZyZWUoaW5pKTsKJiM0MzsJc21jX2luaXRfaW5mb19mcmVlKGluaSk7CiAJa2ZyZWUocWVudHJ5KTsKIAlyZXR1cm4gcmM7CiB9CkBAIC0xMjE3LDcgJiM0MzsxMjE4LDcgQEAgc3RhdGljIHZvaWQgc21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAlzbWNfbGxjX3NlbmRfYWRkX2xpbmsobGluaywgaW5pLSZndDtpYl9kZXYtJmd0O21hY1tpbmktJmd0O2liX3BvcnQgLSAxXSwKIAkJCSAgICAgIGluaS0mZ3Q7aWJfZ2lkLCBOVUxMLCBTTUNfTExDX1JFUSk7CiBvdXQ6Ci0Ja2ZyZWUoaW5pKTsKJiM0MzsJc21jX2luaXRfaW5mb19mcmVlKGluaSk7CiAJa2ZyZWUocWVudHJ5KTsKIH0KIApAQCAtMTQ4Nyw2ICYjNDM7MTQ4OCw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssCiAJaWYgKHJjKQogCQlnb3RvIG91dDsKIAlsaW5rX25ldyA9ICZhbXA7bGdyLSZndDtsbmtbbG5rX2lkeF07CiYjNDM7CXNtY19pYmRldl9pbml0X2VuZChsaW5rX25ldy0mZ3Q7c21jaWJkZXYpOwogCiAJcmMgPSBzbWNyX2J1Zl9tYXBfbGdyKGxpbmtfbmV3KTsKIAlpZiAocmMpCkBAIC0xNTQ0LDcgJiM0MzsxNTQ2LDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAl9CiBvdXQ6CiAJa2ZyZWUocWVudHJ5KTsKLQlrZnJlZShpbmkpOwomIzQzOwlzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTsKIAlpZiAoc2VuZF9yZXFfYWRkX2xpbmtfcmVzcCkKIAkJc21jX2xsY19zZW5kX3JlcV9hZGRfbGlua19yZXNwb25zZShyZXFfcWVudHJ5KTsKIAlyZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19wbmV0LmMgYi9uZXQvc21jL3NtY19wbmV0LmMKaW5kZXggNjNlMjg2ZTJkZmFhOC4uYmUxZjUxMzdjOGVlNyAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfcG5ldC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX3BuZXQuYwpAQCAtOTgwLDE0ICYjNDM7OTgwLDIyIEBAIHN0YXRpYyBpbnQgc21jX3BuZXRfZGV0ZXJtaW5lX2dpZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqaWJkZXYsIGludCBpLAogCWlmICghaW5pLSZndDtjaGVja19zbWNydjIgJmFtcDsmYW1wOwogCSAgICAhc21jX2liX2RldGVybWluZV9naWQoaWJkZXYsIGksIGluaS0mZ3Q7dmxhbl9pZCwgaW5pLSZndDtpYl9naWQsIE5VTEwsCiAJCQkJICBOVUxMKSkgewomIzQzOwkJaWYgKGluaS0mZ3Q7aWJfZGV2X3JlZikKJiM0MzsJCQlzbWNfaWJkZXZfcHV0KGluaS0mZ3Q7aWJfZGV2KTsKJiM0MzsJCXNtY19pYmRldl9nZXQoaWJkZXYpOwogCQlpbmktJmd0O2liX2RldiA9IGliZGV2OwomIzQzOwkJaW5pLSZndDtpYl9kZXZfcmVmID0gdHJ1ZTsKIAkJaW5pLSZndDtpYl9wb3J0ID0gaTsKIAkJcmV0dXJuIDA7CiAJfQogCWlmIChpbmktJmd0O2NoZWNrX3NtY3J2MiAmYW1wOyZhbXA7CiAJICAgICFzbWNfaWJfZGV0ZXJtaW5lX2dpZChpYmRldiwgaSwgaW5pLSZndDt2bGFuX2lkLCBpbmktJmd0O3NtY3J2Mi5pYl9naWRfdjIsCiAJCQkJICBOVUxMLCAmYW1wO2luaS0mZ3Q7c21jcnYyKSkgewomIzQzOwkJaWYgKGluaS0mZ3Q7c21jcnYyLmliX2Rldl92Ml9yZWYpCiYjNDM7CQkJc21jX2liZGV2X3B1dChpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjIpOwomIzQzOwkJc21jX2liZGV2X2dldChpYmRldik7CiAJCWluaS0mZ3Q7c21jcnYyLmliX2Rldl92MiA9IGliZGV2OwomIzQzOwkJaW5pLSZndDtzbWNydjIuaWJfZGV2X3YyX3JlZiA9IHRydWU7CiAJCWluaS0mZ3Q7c21jcnYyLmliX3BvcnRfdjIgPSBpOwogCQlyZXR1cm4gMDsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMDIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBUaGlzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYSBkZWNlbnQgY2h1bmsgb2YgdGhlIFNNQyBjb2RlIOKAkyBgYWZfc21jLmNgLCBgc21jX2NvcmUuY2AsIGBzbWNfY29yZS5oYCwgYHNtY19pYi5jYCwgYHNtY19pYi5oYCwgYHNtY19sbGMuY2AsIGFuZCBgc21jX3BuZXQuY2AuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCYjMzk7cyBxdWl0ZSBhIHdpZGUgc2NvcGUsIHNvIEkgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbXBsaWNhdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgcHJvcGVybHkgZnJlZWluZyB0aGUgYHN0cnVjdCBzbWNfaW5pdF9pbmZvYCBzdHJ1Y3R1cmUgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIGBzbWNfaW5pdF9pbmZvX2ZyZWVgLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiBmb3IgcHJldmVudGluZyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLiBJIHNlZSB0aGUgcGF0Y2ggYWxzbyBpbmNsdWRlcyBtYW5hZ2luZyB0aGUgYHNtY19pYl9kZXZpY2VgIHdpdGggcmVmZXJlbmNlIGNvdW50aW5nIChgcmVmY250YCkgYW5kIGFuIGluaXRpYWxpemF0aW9uIGNvdW50ZXIgKGBpbml0X2NudGApLCBhbG9uZyB3aXRoIHVzaW5nIGBzbWNfaWJkZXZfcHV0YCwgd2hpY2ggaW5kaWNhdGVzIHRoZXkmIzM5O3JlIGFkZHJlc3NpbmcgaG93IHRoZXNlIGRldmljZXMgYXJlIG1hbmFnZWQuCgpTaW5jZSB0aGlzIGlzIGluIHRoZSBTTUMgc3Vic3lzdGVtLCBJIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gU01DIGlzIHJlbGV2YW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggbWVhbnMgaXQgY2FuIGJlIHJ1bm5pbmcgb3ZlciBUQ1AvSVAgb3IgUkRNQSBlbXVsYXRvcnMsIGxpa2Ugc2l3IG9yIHJ4ZS4gSSYjMzk7bSBhbHNvIHJlbWVtYmVyaW5nIHRoYXQgU01DIGNhbiB1dGlsaXplIFJvQ0Ugb3IgSVNNLCBhbmQgdGhhdCBzb2Z0LVJvQ0UgKFJYRSkgaXMgZXZlbiBhdmFpbGFibGUgaW4gUUVNVS4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYmVjYXVzZSBpdCBtZWFucyB3ZSBjb3VsZCBwb3RlbnRpYWxseSBmdXp6IHRoaXMuCgpOb3csIG15IG5leHQgbW92ZSBpcyB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX1NNQ2AgaXMgc2V0IGNvcnJlY3RseS4gSSYjMzk7bGwgYWxzbyBjaGVjayBgbmV0L3NtYy9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIG9wdGlvbnMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZiBvciBtaWdodCBuZWVkIHRvIGNvbmZpZ3VyZSBmb3IgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU01DJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xubmV0L3NtYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuLS1cbm5ldC9zbWMvS2NvbmZpZy0xMy1cbm5ldC9zbWMvS2NvbmZpZzoxNDpjb25maWcgU01DX0RJQUdcbm5ldC9zbWMvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O1NNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTIyLVxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcbm5ldC9zbWMvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4OTUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYENPTkZJR19TTUNgIERlcGVuZGVuY2llcyoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBgQ09ORklHX1NNQ2AuLi4gd2hhdCAqZXhhY3RseSogaXMgdGhhdCB0aWVkIHRvPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIG1ha2luZyBhbnkgbW9kaWZpY2F0aW9ucyBvciBpbnRlZ3JhdGlvbnMuIEl0JiMzOTtzIGEgcXVpY2sgcmVmbGV4LCByZWFsbHksIGEgbWVudGFsIGNoZWNrbGlzdCBvZiBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLiBJJiMzOTttIGVzc2VudGlhbGx5IHJ1bm5pbmcgYSBkZXBlbmRlbmN5IGFuYWx5c2lzIGluIG15IGhlYWQuIFdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMsIGRyaXZlcnMsIG9yIGV2ZW4gaGlnaGVyLWxldmVsIGZlYXR1cmVzIG1pZ2h0IHJlbHkgb24gdGhlIGZ1bmN0aW9uYWxpdHkgZW5hYmxlZCBieSB0aGF0IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24/IElzIGl0IGEgY29yZSBjb21wb25lbnQsIG9yIHNvbWV0aGluZyBtb3JlIHBlcmlwaGVyYWw/IE15IGFpbSBpcyB0byBidWlsZCBhIGNvbXBsZXRlIG1lbnRhbCBtYXAgb2YgdGhlIGNvbmZpZ3VyYXRpb24mIzM5O3MgcmVhY2guIEkgd2FudCB0byBtaW5pbWl6ZSB1bmZvcmVzZWVuIGNvbnNlcXVlbmNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZz0yPWNvbmZpZyBTTUNcbm5ldC9zbWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcJiMzNDtcbm5ldC9zbWMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG5uZXQvc21jL0tjb25maWctNS1cdGhlbHBcbi0tXG5uZXQvc21jL0tjb25maWc9MTQ9Y29uZmlnIFNNQ19ESUFHXG5uZXQvc21jL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xubmV0L3NtYy9LY29uZmlnOjE2Olx0ZGVwZW5kcyBvbiBTTUNcbm5ldC9zbWMvS2NvbmZpZy0xNy1cdGhlbHBcbi0tXG5uZXQvc21jL0tjb25maWc9MjM9Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxubmV0L3NtYy9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG5uZXQvc21jL0tjb25maWc6MjU6XHRkZXBlbmRzIG9uIFNNQyBcdTAwMjZcdTAwMjYgQlBGX0pJVCBcdTAwMjZcdTAwMjYgQlBGX1NZU0NBTExcbm5ldC9zbWMvS2NvbmZpZy0yNi1cdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzNTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWNvZGluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gVGhpcyBkZXBlbmRlbmN5IGNoYWluLi4uIGBkZXBlbmRzIG9uIElORVQgJmFtcDsmYW1wOyBJTkZJTklCQU5EICZhbXA7JmFtcDsgRElCU2AuLi4gRElCUz8gVGhhdCBkb2VzbiYjMzk7dCBpbW1lZGlhdGVseSByaW5nIGEgYmVsbC4gTXkgaW5pdGlhbCByZWFkaW5nIG1pZ2h0IGhhdmUgYmVlbiBvZmYsIG9yIHBlcmhhcHMgdGhlcmUmIzM5O3MgYSB0eXBvIGluIG15IG1lbnRhbCBwcm9jZXNzaW5nLiBMZXQgbWUgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFJpZ2h0LCBsZXQgbWUgcHVsbCB1cCBgbmV0L3NtYy9LY29uZmlnYCwgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBmaXJzdCB0ZW4gbGluZXMuIFRoYXQgc2hvdWxkIGNsZWFyIHRoaXMgdXAgcXVpY2tseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTTUNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElORklOSUJBTkQgXHUwMDI2XHUwMDI2IERJQlNcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgU01DLVIgcHJvdmlkZXMgYSBcJiMzNDtzb2NrZXRzIG92ZXIgUkRNQVwmIzM0OyBzb2x1dGlvbiBtYWtpbmcgdXNlIG9mXG4gICA3Olx0XHQgIFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQgKFJvQ0UpIHRlY2hub2xvZ3kgdG8gdXBncmFkZVxuICAgODpcdFx0ICBBRl9JTkVUIFRDUCBjb25uZWN0aW9ucyB0cmFuc3BhcmVudGx5LlxuICAgOTpcdFx0ICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNNQy1SIHNvbHV0aW9uIGlzIGRlc2lnbmVkIGFzXG4gIDEwOlx0XHQgIGEgc2VwYXJhdGUgc29ja2V0IGZhbWlseSBTTUMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODcyMQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVGhpcyAmIzM0O0RJQlMmIzM0OyBCdXNpbmVzcyoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiAmIzM0O0RJQlMmIzM0Oz8gVGhhdCB0ZXJtJiMzOTtzIHRocm93aW5nIG1lIGZvciBhIGxvb3AuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayDigJMgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzbiYjMzk7dCBzb21lIG9ic2N1cmUgdHlwbyBzbmVha2luZyBpbnRvIHRoZSBrZXJuZWwgdHJlZS4gTWF5YmUgdGhlcmUmIzM5O3MgYSBuZXcgY29tbWl0IHRoYXQgc2xpcHBlZCB0aHJvdWdoPyBBaCwgbm9wZSwgc3RpbGwgJiMzNDtESUJTJiMzNDsuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3RlcCBiYWNrLCBtYXliZSBJJiMzOTttIGxvb2tpbmcgYXQgaXQgd3JvbmcuICYjMzQ7RElCUyYjMzQ7Li4uIGlzIHRoaXMgcmVsYXRlZCB0byBJUHY2IHNvbWVob3c/IE1heWJlIGl0JiMzOTtzIGEgY29uZmlndXJhdGlvbiBvcHRpb24/IFRoZSBLY29uZmlnIGZpbGVzIGFyZSBteSBuZXh0IHN0b3AuIFRpbWUgdG8gcnVuIGEgZ3JlcCBhbmQgc2VlIHdoYXQgdGhpcyBteXN0ZXJ5ICYjMzQ7RElCUyYjMzQ7IGlzIGFsbCBhYm91dCBpbiB0aGUgY29udGV4dCBvZiB0aGUga2VybmVsIGNvbmZpZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERJQlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cbmRyaXZlcnMvZGlicy9LY29uZmlnOjE0OmNvbmZpZyBESUJTX0xPXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xNS1cdGJvb2wgXCYjMzQ7SW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNjkKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiA1NzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFNNQyBDb25maWd1cmF0aW9uIGFuZCBDb2RlIENoYW5nZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgRElCU2AgaXMgYW4gaW50ZXJuYWwgcGllY2Ugd2l0aGluIHRoaXMga2VybmVsIHRyZWUuIGBTTUNgIGNsZWFybHkgZGVwZW5kcyBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kLCBvZiBjb3Vyc2UsIGBESUJTYC4gU28sIHRvIGVuYWJsZSBgU01DYCwgYWxsIHRocmVlIGRlcGVuZGVuY2llcyBtdXN0IGJlIGVuYWJsZWQuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIGBJTkZJTklCQU5EYCwgdGhlIFJETUEgc3Vic3lzdGVtLCBoYXMgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gYWRkIGBTTUNgLCBgSU5GSU5JQkFORGAsIGFuZCBgRElCU2AgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIGVuYWJsZWQuCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgY29kZSBjaGFuZ2VzLiBJJiMzOTt2ZSBnb3QgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZDogYHNtY19maWxsX2dpZF9saXN0YCwgYHNtY19jb25uZWN0X3JkbWFfdjJfcHJlcGFyZWAsIGBfX3NtY19jb25uZWN0YCwgYHNtY19maW5kX3JkbWFfdjJfZGV2aWNlX3NlcnZgLCBgc21jX2xpc3Rlbl93b3JrYCwgYHNtY19pbml0X2luZm9fZnJlZWAsIGBzbWNyX2xpbmtfaW5pdGAsIGBzbWNfbGdyX2NyZWF0ZWAsIGBzbWNfaWJfbmRldl9jaGFuZ2VgLCBgc21jX2liZGV2X3JlbGVhc2VgLCBgc21jX2liZGV2X2dldGAsIGBzbWNfaWJkZXZfcHV0YCwgYHNtY19pYmRldl9pbml0X2JlZ2luYCwgYHNtY19pYmRldl9pbml0X2VuZGAsIGBzbWNfaWJfYWRkX2RldmAsIGBzbWNfaWJfcmVtb3ZlX2RldmAsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX2NsaV9hZGRfbGlua19pbnZpdGVgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBhbmQgYHNtY19wbmV0X2RldGVybWluZV9naWRgLgoKTG9va2luZyBhdCB0aGF0IGxpc3QsIEkmIzM5O2xsIG5lZWQgdG8gY29uY2VudHJhdGUgb24gdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBiZSBtb3N0IGltcGFjdGVkIGJ5IHRoZSBjaGFuZ2VzOyB0aG9zZSBhcmUgYF9fc21jX2Nvbm5lY3RgLCBgc21jX2xpc3Rlbl93b3JrYCwgYHNtY19pYl9hZGRfZGV2YCwgYHNtY19pYl9yZW1vdmVfZGV2YCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYW5kIGBzbWNyX2xpbmtfaW5pdGAuCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLCBgX19zbWNfY29ubmVjdGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaGVscHMgbmFycm93IHRoaW5ncyBkb3duLCB3aGljaCBtZWFucyBpdCBsaWtlbHkgaGFzIHNvbWUgc2NvcGUgcmVzdHJpY3Rpb25zLiBMZXQmIzM5O3MgY2hlY2sgYHNtY19jb25uZWN0YCwgYHNtY19saXN0ZW5gLCBhbmQgYHNtY19saXN0ZW5fd29ya2AuIEl0IGxvb2tzIGxpa2UgYHNtY19jb25uZWN0YCBpcyB0aGUgYGNvbm5lY3RgIHN5c2NhbGwgaGFuZGxlciBmb3IgQUZfU01DLiBgc21jX2xpc3RlbmAgbXVzdCBiZSB0aGUgYGxpc3RlbmAgc3lzY2FsbCBoYW5kbGVyLiBgc21jX2liX2FkZF9kZXZgIGlzIGNhbGxlZCB3aGVuIGFuIElCIGRldmljZSBpcyBhZGRlZCwgYW5kIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AgaXMgY2FsbGVkIHdoZW4gYW4gTExDIEFERF9MSU5LIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuIE5vdyBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uIHRob3NlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGZvciBhIG1vcmUgZGV0YWlsZWQgcmV2aWV3LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKGludHx2b2lkfHN0YXRpYyBpbnR8c3RhdGljIHZvaWQpIFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfaWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19pYi5jPTQ1PXU4IGxvY2FsX3N5c3RlbWlkW1NNQ19TWVNURU1JRF9MRU5dO1x0XHQvKiB1bmlxdWUgc3lzdGVtIGlkZW50aWZpZXIgKi9cbm5ldC9zbWMvc21jX2liLmMtNDYtXG5uZXQvc21jL3NtY19pYi5jOjQ3OnN0YXRpYyBpbnQgc21jX2liX21vZGlmeV9xcF9pbml0KHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfaWIuYy00OC17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy02MS1cbm5ldC9zbWMvc21jX2liLmM6NjI6c3RhdGljIGludCBzbWNfaWJfbW9kaWZ5X3FwX3J0cihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2liLmMtNjMte1xuLS1cbm5ldC9zbWMvc21jX2liLmMtOTQtXG5uZXQvc21jL3NtY19pYi5jOjk1OmludCBzbWNfaWJfbW9kaWZ5X3FwX3J0cyhzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2liLmMtOTYte1xuLS1cbm5ldC9zbWMvc21jX2liLmMtMTEzLVxubmV0L3NtYy9zbWNfaWIuYzoxMTQ6aW50IHNtY19pYl9tb2RpZnlfcXBfZXJyb3Ioc3RydWN0IHNtY19saW5rICpsbmspXG5uZXQvc21jL3NtY19pYi5jLTExNS17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy0xMjItXG5uZXQvc21jL3NtY19pYi5jOjEyMzppbnQgc21jX2liX3JlYWR5X2xpbmsoc3RydWN0IHNtY19saW5rICpsbmspXG5uZXQvc21jL3NtY19pYi5jLTEyNC17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy0xNTQtXG5uZXQvc21jL3NtY19pYi5jOjE1NTpzdGF0aWMgaW50IHNtY19pYl9maWxsX21hYyhzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsIHU4IGlicG9ydClcbm5ldC9zbWMvc21jX2liLmMtMTU2LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jPTE4MT1ib29sIHNtY19pYl9pc192YWxpZF9sb2NhbF9zeXN0ZW1pZCh2b2lkKVxuLS1cbm5ldC9zbWMvc21jX2liLmMtMTg1LVxubmV0L3NtYy9zbWNfaWIuYzoxODY6c3RhdGljIHZvaWQgc21jX2liX2luaXRfbG9jYWxfc3lzdGVtaWQodm9pZClcbm5ldC9zbWMvc21jX2liLmMtMTg3LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jPTE5MT1ib29sIHNtY19pYl9wb3J0X2FjdGl2ZShzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsIHU4IGlicG9ydClcbi0tXG5uZXQvc21jL3NtY19pYi5jLTE5NS1cbm5ldC9zbWMvc21jX2liLmM6MTk2OmludCBzbWNfaWJfZmluZF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsIF9fYmUzMiBzYWRkciwgX19iZTMyIGRhZGRyLFxubmV0L3NtYy9zbWNfaWIuYy0xOTctXHRcdCAgICAgIHU4IG5leHRob3BfbWFjW10sIHU4ICp1c2VzX2dhdGV3YXkpXG4tLVxubmV0L3NtYy9zbWNfaWIuYy0yMjctXG5uZXQvc21jL3NtY19pYi5jOjIyODpzdGF0aWMgaW50IHNtY19pYl9kZXRlcm1pbmVfZ2lkX3JjdShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbm5ldC9zbWMvc21jX2liLmMtMjI5LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBpYl9naWRfYXR0ciAqYXR0cixcbi0tXG5uZXQvc21jL3NtY19pYi5jLTI3My0vKiBkZXRlcm1pbmUgdGhlIGdpZCBmb3IgYW4gaWItZGV2aWNlIHBvcnQgYW5kIHZsYW4gaWQgKi9cbm5ldC9zbWMvc21jX2liLmM6Mjc0OmludCBzbWNfaWJfZGV0ZXJtaW5lX2dpZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsIHU4IGlicG9ydCxcbm5ldC9zbWMvc21jX2liLmMtMjc1LVx0XHRcdCB1bnNpZ25lZCBzaG9ydCB2bGFuX2lkLCB1OCBnaWRbXSwgdTggKnNnaWRfaW5kZXgsXG4tLVxubmV0L3NtYy9zbWNfaWIuYz0zMDc9c3RhdGljIGJvb2wgc21jX2liX2NoZWNrX2xpbmtfZ2lkKHU4IGdpZFtTTUNfR0lEX1NJWkVdLCBib29sIHNtY3J2Mixcbi0tXG5uZXQvc21jL3NtY19pYi5jLTMzMi0vKiBjaGVjayBhbGwgbGlua3MgaWYgdGhlIGdpZCBpcyBzdGlsbCBkZWZpbmVkIG9uIHNtY2liZGV2ICovXG5uZXQvc21jL3NtY19pYi5jOjMzMzpzdGF0aWMgdm9pZCBzbWNfaWJfZ2lkX2NoZWNrKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgdTggaWJwb3J0KVxubmV0L3NtYy9zbWNfaWIuYy0zMzQte1xuLS1cbm5ldC9zbWMvc21jX2liLmMtMzU3LVxubmV0L3NtYy9zbWNfaWIuYzozNTg6c3RhdGljIGludCBzbWNfaWJfcmVtZW1iZXJfcG9ydF9hdHRyKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgdTggaWJwb3J0KVxubmV0L3NtYy9zbWNfaWIuYy0zNTkte1xuLS1cbm5ldC9zbWMvc21jX2liLmMtMzgwLS8qIHByb2Nlc3MgY29udGV4dCB3cmFwcGVyIGZvciBtaWdodF9zbGVlcCBzbWNfaWJfcmVtZW1iZXJfcG9ydF9hdHRyICovXG5uZXQvc21jL3NtY19pYi5jOjM4MTpzdGF0aWMgdm9pZCBzbWNfaWJfcG9ydF9ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zbWMvc21jX2liLmMtMzgyLXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTQwMS0vKiBjYW4gYmUgY2FsbGVkIGluIElSUSBjb250ZXh0ICovXG5uZXQvc21jL3NtY19pYi5jOjQwMjpzdGF0aWMgdm9pZCBzbWNfaWJfZ2xvYmFsX2V2ZW50X2hhbmRsZXIoc3RydWN0IGliX2V2ZW50X2hhbmRsZXIgKmhhbmRsZXIsXG5uZXQvc21jL3NtY19pYi5jLTQwMy1cdFx0XHRcdFx0c3RydWN0IGliX2V2ZW50ICppYmV2ZW50KVxuLS1cbm5ldC9zbWMvc21jX2liLmMtNDUwLVxubmV0L3NtYy9zbWNfaWIuYzo0NTE6dm9pZCBzbWNfaWJfZGVhbGxvY19wcm90ZWN0aW9uX2RvbWFpbihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2liLmMtNDUyLXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTQ1Ny1cbm5ldC9zbWMvc21jX2liLmM6NDU4OmludCBzbWNfaWJfY3JlYXRlX3Byb3RlY3Rpb25fZG9tYWluKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfaWIuYy00NTkte1xuLS1cbm5ldC9zbWMvc21jX2liLmM9NDY5PXN0YXRpYyBib29sIHNtY3JfZGlhZ19pc19kZXZfY3JpdGljYWwoc3RydWN0IHNtY19sZ3JfbGlzdCAqc21jX2xncixcbi0tXG5uZXQvc21jL3NtY19pYi5jLTQ5NS1cbm5ldC9zbWMvc21jX2liLmM6NDk2OnN0YXRpYyBpbnQgc21jX25sX2hhbmRsZV9kZXZfcG9ydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3NtYy9zbWNfaWIuYy00OTctXHRcdFx0XHQgIHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LFxuLS1cbm5ldC9zbWMvc21jX2liLmM9NTM2PXN0YXRpYyBib29sIHNtY19ubF9oYW5kbGVfcGNpX3ZhbHVlcyhjb25zdCBzdHJ1Y3Qgc21jX3BjaV9kZXYgKnNtY19wY2lfZGV2LFxuLS1cbm5ldC9zbWMvc21jX2liLmMtNTUxLVxubmV0L3NtYy9zbWNfaWIuYzo1NTI6c3RhdGljIGludCBzbWNfbmxfaGFuZGxlX3NtY3JfZGV2KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldixcbm5ldC9zbWMvc21jX2liLmMtNTUzLVx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zbWMvc21jX2liLmMtNjA0LVxubmV0L3NtYy9zbWNfaWIuYzo2MDU6c3RhdGljIHZvaWQgc21jX25sX3ByZXBfc21jcl9kZXYoc3RydWN0IHNtY19pYl9kZXZpY2VzICpkZXZfbGlzdCxcbm5ldC9zbWMvc21jX2liLmMtNjA2LVx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NtYy9zbWNfaWIuYy02MjctXG5uZXQvc21jL3NtY19pYi5jOjYyODppbnQgc21jcl9ubF9nZXRfZGV2aWNlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9zbWMvc21jX2liLmMtNjI5LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTYzMy1cbm5ldC9zbWMvc21jX2liLmM6NjM0OnN0YXRpYyB2b2lkIHNtY19pYl9xcF9ldmVudF9oYW5kbGVyKHN0cnVjdCBpYl9ldmVudCAqaWJldmVudCwgdm9pZCAqcHJpdilcbm5ldC9zbWMvc21jX2liLmMtNjM1LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTY1NC1cbm5ldC9zbWMvc21jX2liLmM6NjU1OnZvaWQgc21jX2liX2Rlc3Ryb3lfcXVldWVfcGFpcihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2liLmMtNjU2LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTY2Mi0vKiBjcmVhdGUgYSBxdWV1ZSBwYWlyIHdpdGhpbiB0aGUgcHJvdGVjdGlvbiBkb21haW4gZm9yIGEgbGluayAqL1xubmV0L3NtYy9zbWNfaWIuYzo2NjM6aW50IHNtY19pYl9jcmVhdGVfcXVldWVfcGFpcihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2liLmMtNjY0LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTY5NC1cbm5ldC9zbWMvc21jX2liLmM6Njk1OnZvaWQgc21jX2liX3B1dF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBpYl9tciAqbXIpXG5uZXQvc21jL3NtY19pYi5jLTY5Ni17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy02OTktXG5uZXQvc21jL3NtY19pYi5jOjcwMDpzdGF0aWMgaW50IHNtY19pYl9tYXBfbXJfc2coc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX3Nsb3QsIHU4IGxpbmtfaWR4KVxubmV0L3NtYy9zbWNfaWIuYy03MDEte1xuLS1cbm5ldC9zbWMvc21jX2liLmMtNzE0LS8qIEFsbG9jYXRlIGEgbWVtb3J5IHJlZ2lvbiBhbmQgbWFwIHRoZSBkbWEgbWFwcGVkIFNHIGxpc3Qgb2YgYnVmX3Nsb3QgKi9cbm5ldC9zbWMvc21jX2liLmM6NzE1OmludCBzbWNfaWJfZ2V0X21lbW9yeV9yZWdpb24oc3RydWN0IGliX3BkICpwZCwgaW50IGFjY2Vzc19mbGFncyxcbm5ldC9zbWMvc21jX2liLmMtNzE2LVx0XHRcdCAgICAgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX3Nsb3QsIHU4IGxpbmtfaWR4KVxuLS1cbm5ldC9zbWMvc21jX2liLmM9NzM4PWJvb2wgc21jX2liX2lzX3NnX25lZWRfc3luYyhzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbi0tXG5uZXQvc21jL3NtY19pYi5jLTc2NC0vKiBzeW5jaHJvbml6ZSBidWZmZXIgdXNhZ2UgZm9yIGNwdSBhY2Nlc3MgKi9cbm5ldC9zbWMvc21jX2liLmM6NzY1OnZvaWQgc21jX2liX3N5bmNfc2dfZm9yX2NwdShzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbm5ldC9zbWMvc21jX2liLmMtNzY2LVx0XHRcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfc2xvdCxcbi0tXG5uZXQvc21jL3NtY19pYi5jLTc4Ny0vKiBzeW5jaHJvbml6ZSBidWZmZXIgdXNhZ2UgZm9yIGRldmljZSBhY2Nlc3MgKi9cbm5ldC9zbWMvc21jX2liLmM6Nzg4OnZvaWQgc21jX2liX3N5bmNfc2dfZm9yX2RldmljZShzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbm5ldC9zbWMvc21jX2liLmMtNzg5LVx0XHRcdCAgICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfc2xvdCxcbi0tXG5uZXQvc21jL3NtY19pYi5jLTgxMC0vKiBNYXAgYSBuZXcgVFggb3IgUlggYnVmZmVyIFNHLXRhYmxlIHRvIERNQSAqL1xubmV0L3NtYy9zbWNfaWIuYzo4MTE6aW50IHNtY19pYl9idWZfbWFwX3NnKHN0cnVjdCBzbWNfbGluayAqbG5rLFxubmV0L3NtYy9zbWNfaWIuYy04MTItXHRcdCAgICAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9zbG90LFxuLS1cbm5ldC9zbWMvc21jX2liLmMtODI2LVxubmV0L3NtYy9zbWNfaWIuYzo4Mjc6dm9pZCBzbWNfaWJfYnVmX3VubWFwX3NnKHN0cnVjdCBzbWNfbGluayAqbG5rLFxubmV0L3NtYy9zbWNfaWIuYy04MjgtXHRcdFx0IHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9zbG90LFxuLS1cbm5ldC9zbWMvc21jX2liLmM9ODQxPWxvbmcgc21jX2liX3NldHVwX3Blcl9pYmRldihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4tLVxubmV0L3NtYy9zbWNfaWIuYy04ODMtXG5uZXQvc21jL3NtY19pYi5jOjg4NDpzdGF0aWMgdm9pZCBzbWNfaWJfY2xlYW51cF9wZXJfaWJkZXYoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxubmV0L3NtYy9zbWNfaWIuYy04ODUte1xuLS1cbm5ldC9zbWMvc21jX2liLmM9ODk3PXN0YXRpYyBzdHJ1Y3QgaWJfY2xpZW50IHNtY19pYl9jbGllbnQ7XG5uZXQvc21jL3NtY19pYi5jLTg5OC1cbm5ldC9zbWMvc21jX2liLmM6ODk5OnN0YXRpYyB2b2lkIHNtY19jb3B5X25ldGRldl9pZmluZGV4KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgaW50IHBvcnQpXG5uZXQvc21jL3NtY19pYi5jLTkwMC17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy05MTAtXG5uZXQvc21jL3NtY19pYi5jOjkxMTp2b2lkIHNtY19pYl9uZGV2X2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdW5zaWduZWQgbG9uZyBldmVudClcbm5ldC9zbWMvc21jX2liLmMtOTEyLXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTkzNi1cbm5ldC9zbWMvc21jX2liLmM6OTM3OnN0YXRpYyB2b2lkIHNtY19pYmRldl9yZWxlYXNlKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbm5ldC9zbWMvc21jX2liLmMtOTM4LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTk0Mi1cbm5ldC9zbWMvc21jX2liLmM6OTQzOnZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG5uZXQvc21jL3NtY19pYi5jLTk0NC17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy05NDctXG5uZXQvc21jL3NtY19pYi5jOjk0ODp2b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxubmV0L3NtYy9zbWNfaWIuYy05NDkte1xuLS1cbm5ldC9zbWMvc21jX2liLmMtOTUzLVxubmV0L3NtYy9zbWNfaWIuYzo5NTQ6aW50IHNtY19pYmRldl9pbml0X2JlZ2luKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbm5ldC9zbWMvc21jX2liLmMtOTU1LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTk2Ni1cbm5ldC9zbWMvc21jX2liLmM6OTY3OnZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbm5ldC9zbWMvc21jX2liLmMtOTY4LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jLTk3NS0vKiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgaWJfcmVnaXN0ZXJfY2xpZW50KCkgKi9cbm5ldC9zbWMvc21jX2liLmM6OTc2OnN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpXG5uZXQvc21jL3NtY19pYi5jLTk3Ny17XG4tLVxubmV0L3NtYy9zbWNfaWIuYy0xMDM1LS8qIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpYl91bnJlZ2lzdGVyX2NsaWVudCgpICovXG5uZXQvc21jL3NtY19pYi5jOjEwMzY6c3RhdGljIHZvaWQgc21jX2liX3JlbW92ZV9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHZvaWQgKmNsaWVudF9kYXRhKVxubmV0L3NtYy9zbWNfaWIuYy0xMDM3LXtcbi0tXG5uZXQvc21jL3NtY19pYi5jPTEwNjE9aW50IF9faW5pdCBzbWNfaWJfcmVnaXN0ZXJfY2xpZW50KHZvaWQpXG4tLVxubmV0L3NtYy9zbWNfaWIuYy0xMDY2LVxubmV0L3NtYy9zbWNfaWIuYzoxMDY3OnZvaWQgc21jX2liX3VucmVnaXN0ZXJfY2xpZW50KHZvaWQpXG5uZXQvc21jL3NtY19pYi5jLTEwNjgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDE4MAoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNNQyBJQiBEZXZpY2UgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFNNQyBjb2RlIGFuZCBpbW1lZGlhdGVseSBub3RpY2UgdGhhdCBgc21jX2liX2FkZF9kZXZgIGFuZCBgc21jX2liX3JlbW92ZV9kZXZgIGFyZSBzdGF0aWMuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgcHJhY3RpY2UsIGJ1dCBnb29kIHRvIGtlZXAgaW4gbWluZCBmb3Igc2NvcGluZy4gV2FpdCBhIG1pbnV0ZS4uLiBgc21jX2liX2FkZF9kZXZgIGlzIGFjdHVhbGx5IGEgY2FsbGJhY2shIEl0JiMzOTtzIGludm9rZWQgYnkgYGliX3JlZ2lzdGVyX2NsaWVudCgpYCB3aGVuIGFuIEluZmluaUJhbmQgZGV2aWNlIGlzIGFkZGVkLiBUaGF0IG1ha2VzIG1vcmUgc2Vuc2U7IGl0IGhhcyB0byBiZSBob3cgdGhlIFNNQyBsYXllciBob29rcyBpbnRvIHRoZSBJQiBzdWJzeXN0ZW0uIE5vdywgd2hhdCYjMzk7cyB0aGlzIGBzbWNfbGlzdGVuX3dvcmtgIGZ1bmN0aW9uPyBBaCwgaXQmIzM5O3MgYSB3b3JrcXVldWUgZnVuY3Rpb24uIFRoYXQgaGludHMgYXQgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcsIHdoaWNoIGlzIG9mdGVuIGNydWNpYWwgZm9yIG5ldHdvcmsgaW50ZXJhY3Rpb25zLiBGaW5hbGx5LCBgc21jX2Nvbm5lY3RgIGFuZCBgc21jX2xpc3RlbmAgYXJlIHRoZSByZWFsIHN5c2NhbGwgZW50cnkgcG9pbnRzLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byBgbmV0L3NtYy9hZl9zbWMuY2AgdG8gc2VlIGhvdyB0aG9zZSBhcmUgaW1wbGVtZW50ZWQgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggZXZlcnl0aGluZyBlbHNlIEkmIzM5O3ZlIGp1c3QgaWRlbnRpZmllZC4gVGltZSB0byBkaXZlIGRlZXBlciBhbmQgc2VlIGhvdyB0aGUgcGllY2VzIGZpdCB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihpbnR8dm9pZHxzdGF0aWMgaW50fHN0YXRpYyB2b2lkKSBbYS16QS1aMC05X10mIzQzO1xcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvYWZfc21jLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9hZl9zbWMuYz03MT1zdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdFx0KnNtY19jbG9zZV93cTtcdC8qIHdxIGZvciBjbG9zZSB3b3JrICovXG5uZXQvc21jL2FmX3NtYy5jLTcyLVxubmV0L3NtYy9hZl9zbWMuYzo3MzpzdGF0aWMgdm9pZCBzbWNfdGNwX2xpc3Rlbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqKTtcbm5ldC9zbWMvYWZfc21jLmM6NzQ6c3RhdGljIHZvaWQgc21jX2Nvbm5lY3Rfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7XG5uZXQvc21jL2FmX3NtYy5jLTc1LVxubmV0L3NtYy9hZl9zbWMuYzo3NjppbnQgc21jX25sX2R1bXBfaHNfbGltaXRhdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG5uZXQvc21jL2FmX3NtYy5jLTc3LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTEwMi1cbm5ldC9zbWMvYWZfc21jLmM6MTAzOmludCBzbWNfbmxfZW5hYmxlX2hzX2xpbWl0YXRpb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC9zbWMvYWZfc21jLmMtMTA0LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTEwOC1cbm5ldC9zbWMvYWZfc21jLmM6MTA5OmludCBzbWNfbmxfZGlzYWJsZV9oc19saW1pdGF0aW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvc21jL2FmX3NtYy5jLTExMC17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xMTQtXG5uZXQvc21jL2FmX3NtYy5jOjExNTpzdGF0aWMgdm9pZCBzbWNfc2V0X2tlZXBhbGl2ZShzdHJ1Y3Qgc29jayAqc2ssIGludCB2YWwpXG5uZXQvc21jL2FmX3NtYy5jLTExNi17XG4tLVxubmV0L3NtYy9hZl9zbWMuYz0xOTQ9c3RydWN0IHNtY19oYXNoaW5mbyBzbWNfdjZfaGFzaGluZm8gPSB7XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xOTgtXG5uZXQvc21jL2FmX3NtYy5jOjE5OTppbnQgc21jX2hhc2hfc2soc3RydWN0IHNvY2sgKnNrKVxubmV0L3NtYy9hZl9zbWMuYy0yMDAte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjEzLVxubmV0L3NtYy9hZl9zbWMuYzoyMTQ6dm9pZCBzbWNfdW5oYXNoX3NrKHN0cnVjdCBzb2NrICpzaylcbm5ldC9zbWMvYWZfc21jLmMtMjE1LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTIyNy0gKi9cbm5ldC9zbWMvYWZfc21jLmM6MjI4OnZvaWQgc21jX3JlbGVhc2VfY2Ioc3RydWN0IHNvY2sgKnNrKVxubmV0L3NtYy9hZl9zbWMuYy0yMjkte1xuLS1cbm5ldC9zbWMvYWZfc21jLmM9MjYyPUVYUE9SVF9TWU1CT0xfR1BMKHNtY19wcm90bzYpO1xubmV0L3NtYy9hZl9zbWMuYy0yNjMtXG5uZXQvc21jL2FmX3NtYy5jOjI2NDpzdGF0aWMgdm9pZCBzbWNfZmJhY2tfcmVzdG9yZV9jYWxsYmFja3Moc3RydWN0IHNtY19zb2NrICpzbWMpXG5uZXQvc21jL2FmX3NtYy5jLTI2NS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yNzgtXG5uZXQvc21jL2FmX3NtYy5jOjI3OTpzdGF0aWMgdm9pZCBzbWNfcmVzdG9yZV9mYWxsYmFja19jaGFuZ2VzKHN0cnVjdCBzbWNfc29jayAqc21jKVxubmV0L3NtYy9hZl9zbWMuYy0yODAte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjg3LVxubmV0L3NtYy9hZl9zbWMuYzoyODg6c3RhdGljIGludCBfX3NtY19yZWxlYXNlKHN0cnVjdCBzbWNfc29jayAqc21jKVxubmV0L3NtYy9hZl9zbWMuYy0yODkte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzI3LVxubmV0L3NtYy9hZl9zbWMuYzozMjg6aW50IHNtY19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG5uZXQvc21jL2FmX3NtYy5jLTMyOS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0zNzMtXG5uZXQvc21jL2FmX3NtYy5jOjM3NDpzdGF0aWMgdm9pZCBzbWNfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxubmV0L3NtYy9hZl9zbWMuYy0zNzUte1xuLS1cbm5ldC9zbWMvYWZfc21jLmM9MzkzPXN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgc21jX3Nsb2NrX2tleTtcbm5ldC9zbWMvYWZfc21jLmMtMzk0LVxubmV0L3NtYy9hZl9zbWMuYzozOTU6dm9pZCBzbWNfc2tfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgaW50IHByb3RvY29sKVxubmV0L3NtYy9hZl9zbWMuYy0zOTYte1xuLS1cbm5ldC9zbWMvYWZfc21jLmM9NDIxPXN0YXRpYyBzdHJ1Y3Qgc29jayAqc21jX3NvY2tfYWxsb2Moc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNDM3LVxubmV0L3NtYy9hZl9zbWMuYzo0Mzg6aW50IHNtY19iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcbm5ldC9zbWMvYWZfc21jLmMtNDM5LVx0ICAgICBpbnQgYWRkcl9sZW4pXG4tLVxubmV0L3NtYy9hZl9zbWMuYy01MDAtLyogaWYgc2V0LCB1c2UgdmFsdWUgc2V0IGJ5IHNldHNvY2tvcHQoKSAtIGVsc2UgdXNlIElQdjQgb3IgU01DIHN5c2N0bCB2YWx1ZSAqL1xubmV0L3NtYy9hZl9zbWMuYzo1MDE6c3RhdGljIHZvaWQgc21jX2FkanVzdF9zb2NrX2J1ZnNpemVzKHN0cnVjdCBzb2NrICpuc2ssIHN0cnVjdCBzb2NrICpvc2ssXG5uZXQvc21jL2FmX3NtYy5jLTUwMi1cdFx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyBtYXNrKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNTEwLVxubmV0L3NtYy9hZl9zbWMuYzo1MTE6c3RhdGljIHZvaWQgc21jX2NvcHlfc29ja19zZXR0aW5ncyhzdHJ1Y3Qgc29jayAqbnNrLCBzdHJ1Y3Qgc29jayAqb3NrLFxubmV0L3NtYy9hZl9zbWMuYy01MTItXHRcdFx0XHQgICB1bnNpZ25lZCBsb25nIG1hc2spXG4tLVxubmV0L3NtYy9hZl9zbWMuYy01MjktXG5uZXQvc21jL2FmX3NtYy5jOjUzMDpzdGF0aWMgdm9pZCBzbWNfY29weV9zb2NrX3NldHRpbmdzX3RvX2NsYyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbm5ldC9zbWMvYWZfc21jLmMtNTMxLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTUzOS0vKiBjb3B5IG9ubHkgc2V0dGluZ3MgYW5kIGZsYWdzIHJlbGV2YW50IGZvciBzbWMgZnJvbSBjbGMgdG8gc21jIHNvY2tldCAqL1xubmV0L3NtYy9hZl9zbWMuYzo1NDA6c3RhdGljIHZvaWQgc21jX2NvcHlfc29ja19zZXR0aW5nc190b19zbWMoc3RydWN0IHNtY19zb2NrICpzbWMpXG5uZXQvc21jL2FmX3NtYy5jLTU0MS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy01NDUtLyogcmVnaXN0ZXIgdGhlIG5ldyB2emFsbG9jZWQgc25kYnVmIG9uIGFsbCBsaW5rcyAqL1xubmV0L3NtYy9hZl9zbWMuYzo1NDY6c3RhdGljIGludCBzbWNyX2xncl9yZWdfc25kYnVmcyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL2FmX3NtYy5jLTU0Ny1cdFx0XHRcdHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNuZF9kZXNjKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNTY4LS8qIHJlZ2lzdGVyIHRoZSBuZXcgcm1iIG9uIGFsbCBsaW5rcyAqL1xubmV0L3NtYy9hZl9zbWMuYzo1Njk6c3RhdGljIGludCBzbWNyX2xncl9yZWdfcm1icyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL2FmX3NtYy5jLTU3MC1cdFx0XHQgICAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNjE3LVxubmV0L3NtYy9hZl9zbWMuYzo2MTg6c3RhdGljIGludCBzbWNyX2NsbnRfY29uZl9maXJzdF9saW5rKHN0cnVjdCBzbWNfc29jayAqc21jKVxubmV0L3NtYy9hZl9zbWMuYy02MTkte1xuLS1cbm5ldC9zbWMvYWZfc21jLmM9NjkwPXN0YXRpYyBib29sIHNtY19pc2FzY2lpKGNoYXIgKmhvc3RuYW1lKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNjk5LVxubmV0L3NtYy9hZl9zbWMuYzo3MDA6c3RhdGljIHZvaWQgc21jX2Nvbm5fc2F2ZV9wZWVyX2luZm9fZmNlKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9hZl9zbWMuYy03MDEtXHRcdFx0XHRcdHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqY2xjKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNzI2LVxubmV0L3NtYy9hZl9zbWMuYzo3Mjc6c3RhdGljIHZvaWQgc21jcl9jb25uX3NhdmVfcGVlcl9pbmZvKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9hZl9zbWMuYy03MjgtXHRcdFx0XHQgICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqY2xjKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNzM4LVxubmV0L3NtYy9hZl9zbWMuYzo3Mzk6c3RhdGljIHZvaWQgc21jZF9jb25uX3NhdmVfcGVlcl9pbmZvKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9hZl9zbWMuYy03NDAtXHRcdFx0XHQgICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqY2xjKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNzUxLVxubmV0L3NtYy9hZl9zbWMuYzo3NTI6c3RhdGljIHZvaWQgc21jX2Nvbm5fc2F2ZV9wZWVyX2luZm8oc3RydWN0IHNtY19zb2NrICpzbWMsXG5uZXQvc21jL2FmX3NtYy5jLTc1My1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX2NsY19tc2dfYWNjZXB0X2NvbmZpcm0gKmNsYylcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTc2MS1cbm5ldC9zbWMvYWZfc21jLmM6NzYyOnN0YXRpYyB2b2lkIHNtY19saW5rX3NhdmVfcGVlcl9pbmZvKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvYWZfc21jLmMtNzYzLVx0XHRcdFx0ICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqY2xjLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtNzcyLVxubmV0L3NtYy9hZl9zbWMuYzo3NzM6c3RhdGljIHZvaWQgc21jX3N0YXRfaW5jX2ZiYWNrX3Jzbl9jbnQoc3RydWN0IHNtY19zb2NrICpzbWMsXG5uZXQvc21jL2FmX3NtYy5jLTc3NC1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc21jX3N0YXRzX2ZiYWNrICpmYmFja19hcnIpXG4tLVxubmV0L3NtYy9hZl9zbWMuYy03OTAtXG5uZXQvc21jL2FmX3NtYy5jOjc5MTpzdGF0aWMgdm9pZCBzbWNfc3RhdF9mYWxsYmFjayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbm5ldC9zbWMvYWZfc21jLmMtNzkyLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTgwNi0vKiBtdXN0IGJlIGNhbGxlZCB1bmRlciByY3UgcmVhZCBsb2NrICovXG5uZXQvc21jL2FmX3NtYy5jOjgwNzpzdGF0aWMgdm9pZCBzbWNfZmJhY2tfd2FrZXVwX3dhaXRxdWV1ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgdm9pZCAqa2V5KVxubmV0L3NtYy9hZl9zbWMuYy04MDgte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtODMwLVxubmV0L3NtYy9hZl9zbWMuYzo4MzE6c3RhdGljIGludCBzbWNfZmJhY2tfbWFya193b2tlbih3YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsXG5uZXQvc21jL2FmX3NtYy5jLTgzMi1cdFx0XHRcdHVuc2lnbmVkIGludCBtb2RlLCBpbnQgc3luYywgdm9pZCAqa2V5KVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtODQxLVxubmV0L3NtYy9hZl9zbWMuYzo4NDI6c3RhdGljIHZvaWQgc21jX2ZiYWNrX2ZvcndhcmRfd2FrZXVwKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc29jayAqY2xjc2ssXG5uZXQvc21jL2FmX3NtYy5jLTg0My1cdFx0XHRcdCAgICAgdm9pZCAoKmNsY3NvY2tfY2FsbGJhY2spKHN0cnVjdCBzb2NrICpzaykpXG4tLVxubmV0L3NtYy9hZl9zbWMuYy04NjMtXG5uZXQvc21jL2FmX3NtYy5jOjg2NDpzdGF0aWMgdm9pZCBzbWNfZmJhY2tfc3RhdGVfY2hhbmdlKHN0cnVjdCBzb2NrICpjbGNzaylcbm5ldC9zbWMvYWZfc21jLmMtODY1LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTg3NS1cbm5ldC9zbWMvYWZfc21jLmM6ODc2OnN0YXRpYyB2b2lkIHNtY19mYmFja19kYXRhX3JlYWR5KHN0cnVjdCBzb2NrICpjbGNzaylcbm5ldC9zbWMvYWZfc21jLmMtODc3LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTg4Ny1cbm5ldC9zbWMvYWZfc21jLmM6ODg4OnN0YXRpYyB2b2lkIHNtY19mYmFja193cml0ZV9zcGFjZShzdHJ1Y3Qgc29jayAqY2xjc2spXG5uZXQvc21jL2FmX3NtYy5jLTg4OS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy04OTktXG5uZXQvc21jL2FmX3NtYy5jOjkwMDpzdGF0aWMgdm9pZCBzbWNfZmJhY2tfZXJyb3JfcmVwb3J0KHN0cnVjdCBzb2NrICpjbGNzaylcbm5ldC9zbWMvYWZfc21jLmMtOTAxLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTkxMS1cbm5ldC9zbWMvYWZfc21jLmM6OTEyOnN0YXRpYyB2b2lkIHNtY19mYmFja19yZXBsYWNlX2NhbGxiYWNrcyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbm5ldC9zbWMvYWZfc21jLmMtOTEzLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTkzMC1cbm5ldC9zbWMvYWZfc21jLmM6OTMxOnN0YXRpYyBpbnQgc21jX3N3aXRjaF90b19mYWxsYmFjayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgaW50IHJlYXNvbl9jb2RlKVxubmV0L3NtYy9hZl9zbWMuYy05MzIte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtOTYzLS8qIGZhbGwgYmFjayBkdXJpbmcgY29ubmVjdCAqL1xubmV0L3NtYy9hZl9zbWMuYzo5NjQ6c3RhdGljIGludCBzbWNfY29ubmVjdF9mYWxsYmFjayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgaW50IHJlYXNvbl9jb2RlKVxubmV0L3NtYy9hZl9zbWMuYy05NjUte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtOTgzLS8qIGRlY2xpbmUgYW5kIGZhbGwgYmFjayBkdXJpbmcgY29ubmVjdCAqL1xubmV0L3NtYy9hZl9zbWMuYzo5ODQ6c3RhdGljIGludCBzbWNfY29ubmVjdF9kZWNsaW5lX2ZhbGxiYWNrKHN0cnVjdCBzbWNfc29jayAqc21jLCBpbnQgcmVhc29uX2NvZGUsXG5uZXQvc21jL2FmX3NtYy5jLTk4NS1cdFx0XHRcdFx0dTggdmVyc2lvbilcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTEwMDctXG5uZXQvc21jL2FmX3NtYy5jOjEwMDg6c3RhdGljIHZvaWQgc21jX2Nvbm5fYWJvcnQoc3RydWN0IHNtY19zb2NrICpzbWMsIGludCBsb2NhbF9maXJzdClcbm5ldC9zbWMvYWZfc21jLmMtMTAwOS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xMDIzLS8qIGNhbGxlZCBmb3IgY29ubmVjdCBhbmQgbGlzdGVuICovXG5uZXQvc21jL2FmX3NtYy5jOjEwMjQ6c3RhdGljIGludCBzbWNfZmluZF9yZG1hX2RldmljZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbm5ldC9zbWMvYWZfc21jLmMtMTAyNS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xMDM5LS8qIGNhbGxlZCBmb3IgY29ubmVjdCBhbmQgbGlzdGVuICovXG5uZXQvc21jL2FmX3NtYy5jOjEwNDA6c3RhdGljIGludCBzbWNfZmluZF9pc21fZGV2aWNlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxubmV0L3NtYy9hZl9zbWMuYy0xMDQxLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTEwNTI9c3RhdGljIGJvb2wgc21jX2ZpbmRfaXNtX3YyX2lzX3VuaXF1ZV9jaGlkKHUxNiBjaGlkLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTA2NS0gKi9cbm5ldC9zbWMvYWZfc21jLmM6MTA2NjpzdGF0aWMgaW50IHNtY19maW5kX2lzbV92Ml9kZXZpY2VfY2xudChzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbm5ldC9zbWMvYWZfc21jLmMtMTA2Ny1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTExMi0vKiBDaGVjayBmb3IgVkxBTiBJRCBhbmQgcmVnaXN0ZXIgaXQgb24gSVNNIGRldmljZSBqdXN0IGZvciBDTEMgaGFuZHNoYWtlICovXG5uZXQvc21jL2FmX3NtYy5jOjExMTM6c3RhdGljIGludCBzbWNfY29ubmVjdF9pc21fdmxhbl9zZXR1cChzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxubmV0L3NtYy9hZl9zbWMuYy0xMTE0LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTExMTktXG5uZXQvc21jL2FmX3NtYy5jOjExMjA6c3RhdGljIGludCBzbWNfZmluZF9wcm9wb3NhbF9kZXZpY2VzKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9hZl9zbWMuYy0xMTIxLVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTE3Mi0gKi9cbm5ldC9zbWMvYWZfc21jLmM6MTE3MzpzdGF0aWMgaW50IHNtY19jb25uZWN0X2lzbV92bGFuX2NsZWFudXAoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbm5ldC9zbWMvYWZfc21jLmMtMTE3NC17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xMTg3LS8qIENMQyBoYW5kc2hha2UgZHVyaW5nIGNvbm5lY3QgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTE4ODpzdGF0aWMgaW50IHNtY19jb25uZWN0X2NsYyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcbm5ldC9zbWMvYWZfc21jLmMtMTE4OS1cdFx0XHQgICBzdHJ1Y3Qgc21jX2NsY19tc2dfYWNjZXB0X2NvbmZpcm0gKmFjbGMsXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xMjAyLVxubmV0L3NtYy9hZl9zbWMuYzoxMjAzOnZvaWQgc21jX2ZpbGxfZ2lkX2xpc3Qoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL2FmX3NtYy5jLTEyMDQtXHRcdCAgICAgICBzdHJ1Y3Qgc21jX2dpZGxpc3QgKmdpZGxpc3QsXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xMjMwLVxubmV0L3NtYy9hZl9zbWMuYzoxMjMxOnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfcmRtYV92Ml9wcmVwYXJlKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9hZl9zbWMuYy0xMjMyLVx0XHRcdFx0ICAgICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTEyNjYtLyogc2V0dXAgZm9yIFJETUEgY29ubmVjdGlvbiBvZiBjbGllbnQgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTI2NzpzdGF0aWMgaW50IHNtY19jb25uZWN0X3JkbWEoc3RydWN0IHNtY19zb2NrICpzbWMsXG5uZXQvc21jL2FmX3NtYy5jLTEyNjgtXHRcdFx0ICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTEzOTk9c21jX3YyX2RldGVybWluZV9hY2NlcHRlZF9jaGlkKHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE0MTUtLyogc2V0dXAgZm9yIElTTSBjb25uZWN0aW9uIG9mIGNsaWVudCAqL1xubmV0L3NtYy9hZl9zbWMuYzoxNDE2OnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfaXNtKHN0cnVjdCBzbWNfc29jayAqc21jLFxubmV0L3NtYy9hZl9zbWMuYy0xNDE3LVx0XHRcdCAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE0OTgtLyogY2hlY2sgaWYgcmVjZWl2ZWQgYWNjZXB0IHR5cGUgYW5kIHZlcnNpb24gbWF0Y2hlcyBhIHByb3Bvc2VkIG9uZSAqL1xubmV0L3NtYy9hZl9zbWMuYzoxNDk5OnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfY2hlY2tfYWNsYyhzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxubmV0L3NtYy9hZl9zbWMuYy0xNTAwLVx0XHRcdFx0ICBzdHJ1Y3Qgc21jX2NsY19tc2dfYWNjZXB0X2NvbmZpcm0gKmFjbGMpXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xNTE5LS8qIHBlcmZvcm0gc3RlcHMgYmVmb3JlIGFjdHVhbGx5IGNvbm5lY3RpbmcgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTUyMDpzdGF0aWMgaW50IF9fc21jX2Nvbm5lY3Qoc3RydWN0IHNtY19zb2NrICpzbWMpXG5uZXQvc21jL2FmX3NtYy5jLTE1MjEte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTYwOS1cbm5ldC9zbWMvYWZfc21jLmM6MTYxMDpzdGF0aWMgdm9pZCBzbWNfY29ubmVjdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zbWMvYWZfc21jLmMtMTYxMS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xNjU1LVxubmV0L3NtYy9hZl9zbWMuYzoxNjU2OmludCBzbWNfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkcixcbm5ldC9zbWMvYWZfc21jLmMtMTY1Ny1cdFx0aW50IGFsZW4sIGludCBmbGFncylcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE3MzYtXG5uZXQvc21jL2FmX3NtYy5jOjE3Mzc6c3RhdGljIGludCBzbWNfY2xjc29ja19hY2NlcHQoc3RydWN0IHNtY19zb2NrICpsc21jLCBzdHJ1Y3Qgc21jX3NvY2sgKipuZXdfc21jKVxubmV0L3NtYy9hZl9zbWMuYy0xNzM4LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE3OTctICovXG5uZXQvc21jL2FmX3NtYy5jOjE3OTg6c3RhdGljIHZvaWQgc21jX2FjY2VwdF9lbnF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsIHN0cnVjdCBzb2NrICpzaylcbm5ldC9zbWMvYWZfc21jLmMtMTc5OS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xODA5LS8qIHJlbW92ZSBhIHNvY2tldCBmcm9tIHRoZSBhY2NlcHQgcXVldWUgb2YgaXRzIHBhcmVudGFsIGxpc3RlbmluZyBzb2NrZXQgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTgxMDpzdGF0aWMgdm9pZCBzbWNfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spXG5uZXQvc21jL2FmX3NtYy5jLTE4MTEte1xuLS1cbm5ldC9zbWMvYWZfc21jLmM9MTgyND1zdHJ1Y3Qgc29jayAqc21jX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xODU2LS8qIGNsZWFuIHVwIGZvciBhIGNyZWF0ZWQgYnV0IG5ldmVyIGFjY2VwdGVkIHNvY2sgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTg1Nzp2b2lkIHNtY19jbG9zZV9ub25fYWNjZXB0ZWQoc3RydWN0IHNvY2sgKnNrKVxubmV0L3NtYy9hZl9zbWMuYy0xODU4LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE4NzEtXG5uZXQvc21jL2FmX3NtYy5jOjE4NzI6c3RhdGljIGludCBzbWNyX3NlcnZfY29uZl9maXJzdF9saW5rKHN0cnVjdCBzbWNfc29jayAqc21jKVxubmV0L3NtYy9hZl9zbWMuYy0xODczLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE5MjQtLyogbGlzdGVuIHdvcmtlcjogZmluaXNoICovXG5uZXQvc21jL2FmX3NtYy5jOjE5MjU6c3RhdGljIHZvaWQgc21jX2xpc3Rlbl9vdXQoc3RydWN0IHNtY19zb2NrICpuZXdfc21jKVxubmV0L3NtYy9hZl9zbWMuYy0xOTI2LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE5NDgtLyogbGlzdGVuIHdvcmtlcjogZmluaXNoIGluIHN0YXRlIGNvbm5lY3RlZCAqL1xubmV0L3NtYy9hZl9zbWMuYzoxOTQ5OnN0YXRpYyB2b2lkIHNtY19saXN0ZW5fb3V0X2Nvbm5lY3RlZChzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMpXG5uZXQvc21jL2FmX3NtYy5jLTE5NTAte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTk1OS0vKiBsaXN0ZW4gd29ya2VyOiBmaW5pc2ggaW4gZXJyb3Igc3RhdGUgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTk2MDpzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX291dF9lcnIoc3RydWN0IHNtY19zb2NrICpuZXdfc21jKVxubmV0L3NtYy9hZl9zbWMuYy0xOTYxLXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE5NzMtLyogbGlzdGVuIHdvcmtlcjogZGVjbGluZSBhbmQgZmFsbCBiYWNrIGlmIHBvc3NpYmxlICovXG5uZXQvc21jL2FmX3NtYy5jOjE5NzQ6c3RhdGljIHZvaWQgc21jX2xpc3Rlbl9kZWNsaW5lKHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYywgaW50IHJlYXNvbl9jb2RlLFxubmV0L3NtYy9hZl9zbWMuYy0xOTc1LVx0XHRcdCAgICAgICBpbnQgbG9jYWxfZmlyc3QsIHU4IHZlcnNpb24pXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0xOTk0LS8qIGxpc3RlbiB3b3JrZXI6IHZlcnNpb24gY2hlY2tpbmcgKi9cbm5ldC9zbWMvYWZfc21jLmM6MTk5NTpzdGF0aWMgaW50IHNtY19saXN0ZW5fdjJfY2hlY2soc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxubmV0L3NtYy9hZl9zbWMuYy0xOTk2LVx0XHRcdCAgICAgICBzdHJ1Y3Qgc21jX2NsY19tc2dfcHJvcG9zYWwgKnBjbGMsXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yMDU2LS8qIGxpc3RlbiB3b3JrZXI6IGNoZWNrIHByZWZpeGVzICovXG5uZXQvc21jL2FmX3NtYy5jOjIwNTc6c3RhdGljIGludCBzbWNfbGlzdGVuX3ByZnhfY2hlY2soc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxubmV0L3NtYy9hZl9zbWMuYy0yMDU4LVx0XHRcdFx0IHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYylcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTIwNzQtLyogbGlzdGVuIHdvcmtlcjogaW5pdGlhbGl6ZSBjb25uZWN0aW9uIGFuZCBidWZmZXJzICovXG5uZXQvc21jL2FmX3NtYy5jOjIwNzU6c3RhdGljIGludCBzbWNfbGlzdGVuX3JkbWFfaW5pdChzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXG5uZXQvc21jL2FmX3NtYy5jLTIwNzYtXHRcdFx0XHRzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjA5NC0vKiBsaXN0ZW4gd29ya2VyOiBpbml0aWFsaXplIGNvbm5lY3Rpb24gYW5kIGJ1ZmZlcnMgZm9yIFNNQy1EICovXG5uZXQvc21jL2FmX3NtYy5jOjIwOTU6c3RhdGljIGludCBzbWNfbGlzdGVuX2lzbV9pbml0KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcbm5ldC9zbWMvYWZfc21jLmMtMjA5Ni1cdFx0XHQgICAgICAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTIxMTU9c3RhdGljIGJvb2wgc21jX2lzX2FscmVhZHlfc2VsZWN0ZWQoc3RydWN0IHNtY2RfZGV2ICpzbWNkLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjEyOC0vKiBjaGVjayBmb3IgSVNNIGRldmljZXMgbWF0Y2hpbmcgcHJvcG9zZWQgSVNNIGRldmljZXMgKi9cbm5ldC9zbWMvYWZfc21jLmM6MjEyOTpzdGF0aWMgdm9pZCBzbWNfY2hlY2tfaXNtX3YyX21hdGNoKHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmksXG5uZXQvc21jL2FmX3NtYy5jLTIxMzAtXHRcdFx0XHQgICB1MTYgcHJvcG9zZWRfY2hpZCxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTIxNTQtXG5uZXQvc21jL2FmX3NtYy5jOjIxNTU6c3RhdGljIHZvaWQgc21jX2luaXRfaW5mb19zdG9yZV9yYyh1MzIgcmMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXG5uZXQvc21jL2FmX3NtYy5jLTIxNTYte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjE2MC1cbm5ldC9zbWMvYWZfc21jLmM6MjE2MTpzdGF0aWMgdm9pZCBzbWNfZmluZF9pc21fdjJfZGV2aWNlX3NlcnYoc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxubmV0L3NtYy9hZl9zbWMuYy0yMTYyLVx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2NsY19tc2dfcHJvcG9zYWwgKnBjbGMsXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yMjUwLVxubmV0L3NtYy9hZl9zbWMuYzoyMjUxOnN0YXRpYyB2b2lkIHNtY19maW5kX2lzbV92MV9kZXZpY2Vfc2VydihzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXG5uZXQvc21jL2FmX3NtYy5jLTIyNTItXHRcdFx0XHRcdHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTIyODEtLyogbGlzdGVuIHdvcmtlcjogcmVnaXN0ZXIgYnVmZmVycyAqL1xubmV0L3NtYy9hZl9zbWMuYzoyMjgyOnN0YXRpYyBpbnQgc21jX2xpc3Rlbl9yZG1hX3JlZyhzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsIGJvb2wgbG9jYWxfZmlyc3QpXG5uZXQvc21jL2FmX3NtYy5jLTIyODMte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjI5OS1cbm5ldC9zbWMvYWZfc21jLmM6MjMwMDpzdGF0aWMgdm9pZCBzbWNfZmluZF9yZG1hX3YyX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcbm5ldC9zbWMvYWZfc21jLmMtMjMwMS1cdFx0XHRcdFx0IHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTIzNTMtXG5uZXQvc21jL2FmX3NtYy5jOjIzNTQ6c3RhdGljIGludCBzbWNfZmluZF9yZG1hX3YxX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcbm5ldC9zbWMvYWZfc21jLmMtMjM1NS1cdFx0XHRcdFx0c3RydWN0IHNtY19jbGNfbXNnX3Byb3Bvc2FsICpwY2xjLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjM3OC0vKiBkZXRlcm1pbmUgdGhlIGxvY2FsIGRldmljZSBtYXRjaGluZyB0byBwcm9wb3NhbCAqL1xubmV0L3NtYy9hZl9zbWMuYzoyMzc5OnN0YXRpYyBpbnQgc21jX2xpc3Rlbl9maW5kX2RldmljZShzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXG5uZXQvc21jL2FmX3NtYy5jLTIzODAtXHRcdFx0XHQgIHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYyxcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTI0MjYtLyogbGlzdGVuIHdvcmtlcjogZmluaXNoIFJETUEgc2V0dXAgKi9cbm5ldC9zbWMvYWZfc21jLmM6MjQyNzpzdGF0aWMgaW50IHNtY19saXN0ZW5fcmRtYV9maW5pc2goc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxubmV0L3NtYy9hZl9zbWMuYy0yNDI4LVx0XHRcdFx0ICBzdHJ1Y3Qgc21jX2NsY19tc2dfYWNjZXB0X2NvbmZpcm0gKmNjbGMsXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yNDUyLS8qIHNldHVwIGZvciBjb25uZWN0aW9uIG9mIHNlcnZlciAqL1xubmV0L3NtYy9hZl9zbWMuYzoyNDUzOnN0YXRpYyB2b2lkIHNtY19saXN0ZW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc21jL2FmX3NtYy5jLTI0NTQte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjU5Ny1cbm5ldC9zbWMvYWZfc21jLmM6MjU5ODpzdGF0aWMgdm9pZCBzbWNfdGNwX2xpc3Rlbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zbWMvYWZfc21jLmMtMjU5OS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yNjMyLVxubmV0L3NtYy9hZl9zbWMuYzoyNjMzOnN0YXRpYyB2b2lkIHNtY19jbGNzb2NrX2RhdGFfcmVhZHkoc3RydWN0IHNvY2sgKmxpc3Rlbl9jbGNzb2NrKVxubmV0L3NtYy9hZl9zbWMuYy0yNjM0LXtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTI2NTAtXG5uZXQvc21jL2FmX3NtYy5jOjI2NTE6aW50IHNtY19saXN0ZW4oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGJhY2tsb2cpXG5uZXQvc21jL2FmX3NtYy5jLTI2NTIte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjcxNi1cbm5ldC9zbWMvYWZfc21jLmM6MjcxNzppbnQgc21jX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdfc29jayxcbm5ldC9zbWMvYWZfc21jLmMtMjcxOC1cdCAgICAgICBzdHJ1Y3QgcHJvdG9fYWNjZXB0X2FyZyAqYXJnKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjc4NS1cbm5ldC9zbWMvYWZfc21jLmM6Mjc4NjppbnQgc21jX2dldG5hbWUoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICphZGRyLFxubmV0L3NtYy9hZl9zbWMuYy0yNzg3LVx0XHRpbnQgcGVlcilcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTI3OTktXG5uZXQvc21jL2FmX3NtYy5jOjI4MDA6aW50IHNtY19zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbm5ldC9zbWMvYWZfc21jLmMtMjgwMS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yODM3LVxubmV0L3NtYy9hZl9zbWMuYzoyODM4OmludCBzbWNfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG5uZXQvc21jL2FmX3NtYy5jLTI4MzktXHRcdGludCBmbGFncylcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTI4ODg9X19wb2xsX3Qgc21jX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0yOTQ3LVxubmV0L3NtYy9hZl9zbWMuYzoyOTQ4OmludCBzbWNfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc29jaywgaW50IGhvdylcbm5ldC9zbWMvYWZfc21jLmMtMjk0OS17XG4tLVxubmV0L3NtYy9hZl9zbWMuYy0zMDIyLVxubmV0L3NtYy9hZl9zbWMuYzozMDIzOnN0YXRpYyBpbnQgX19zbWNfZ2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxubmV0L3NtYy9hZl9zbWMuYy0zMDI0LVx0XHRcdCAgICBjaGFyIF9fdXNlciAqb3B0dmFsLCBpbnQgX191c2VyICpvcHRsZW4pXG4tLVxubmV0L3NtYy9hZl9zbWMuYy0zMDU0LVxubmV0L3NtYy9hZl9zbWMuYzozMDU1OnN0YXRpYyBpbnQgX19zbWNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxubmV0L3NtYy9hZl9zbWMuYy0zMDU2LVx0XHRcdCAgICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzA4Ni1cbm5ldC9zbWMvYWZfc21jLmM6MzA4NzppbnQgc21jX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9zbWMvYWZfc21jLmMtMzA4OC1cdFx0ICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTMxNzMtXG5uZXQvc21jL2FmX3NtYy5jOjMxNzQ6aW50IHNtY19nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG5uZXQvc21jL2FmX3NtYy5jLTMxNzUtXHRcdCAgIGNoYXIgX191c2VyICpvcHR2YWwsIGludCBfX3VzZXIgKm9wdGxlbilcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTMxOTktXG5uZXQvc21jL2FmX3NtYy5jOjMyMDA6aW50IHNtY19pb2N0bChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCB1bnNpZ25lZCBpbnQgY21kLFxubmV0L3NtYy9hZl9zbWMuYy0zMjAxLVx0ICAgICAgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxubmV0L3NtYy9hZl9zbWMuYz0zMzM1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNtY19zb2NrX29wcyA9IHtcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTMzNTUtXG5uZXQvc21jL2FmX3NtYy5jOjMzNTY6aW50IHNtY19jcmVhdGVfY2xjc2soc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIGludCBmYW1pbHkpXG5uZXQvc21jL2FmX3NtYy5jLTMzNTcte1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzM3NS1cbm5ldC9zbWMvYWZfc21jLmM6MzM3NjpzdGF0aWMgaW50IHNtY19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsXG5uZXQvc21jL2FmX3NtYy5jLTMzNzctXHRcdCAgICAgIGludCBrZXJuKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzEwNAoJCQkJCQkJb3V0cHV0OiA1NQoJCQkJCQkJdGhvdWdodHM6IDMwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU01DIFN1YnN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHByZXR0eSBjcml0aWNhbCBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZSB3aXRoaW4gdGhlIFNNQyBzdWJzeXN0ZW0uIEl0IGxvb2tzIGxpa2UgYHNtY19pbml0X2luZm9gIHdhcyBiZWluZyBmcmVlZCB3aXRoIGBrZnJlZWAgaW5zdGVhZCBvZiB0aGUgcHJvcGVyIGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBsZWFrLCBzcGVjaWZpY2FsbHkgbGVha2luZyByZWZlcmVuY2VzIHRvIGBzbWNfaWJfZGV2aWNlYC4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIGZpeCB0aGF0LgoKQmV5b25kIHRoZSBidWcgZml4LCB0aGVyZSYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGggdGhlIGFkZGl0aW9uIG9mIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAgYW5kIGBzbWNfaWJkZXZfaW5pdF9lbmRgLCBwcmVzdW1hYmx5IHRvIG1hbmFnZSB0aGUgaW5pdGlhbCBzZXR1cCBvZiB1bnB1Ymxpc2hlZCBsaW5rcy4gSW50ZXJlc3RpbmcuCgpOb3csIGxldCYjMzk7cyBzZWUgd2hpY2ggZnVuY3Rpb25zIGFyZSBhZmZlY3RlZC4gSSBzZWUgYF9fc21jX2Nvbm5lY3RgLCBgc21jX2xpc3Rlbl93b3JrYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYHNtY3JfbGlua19pbml0YCwgYW5kIGBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgdmlhIHRoZSB0eXBpY2FsIHVzZXItc3BhY2UgYWNjZXNzIG9mIGBjb25uZWN0YCwgYGxpc3RlbmAsIG9yLCBpbmRpcmVjdGx5LCB0aHJvdWdoIG5ldHdvcmsgcGFja2V0cyBsaWtlIHRoZSBMTEMgbWVzc2FnZXMuCgpTaW5jZSB0aGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSwgSSYjMzk7bGwgbmVlZCB0byBtYWtlIHN1cmUgdG8gaW5jbHVkZSBgc21jX2Nvbm5lY3RgLCBgc21jX2xpc3RlbmAsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGFuZCBgc21jX2xsY19zcnZfYWRkX2xpbmtgIGluIGBGb2N1c1N5bWJvbHNgLiBXYWl0IGEgbWludXRlLCBgc21jX2Nvbm5lY3RgIGFuZCBgc21jX2xpc3RlbmAgYXJlIHRoZSBhY3R1YWwgc3lzY2FsbCBlbnRyeSBwb2ludHMsIGFyZW4mIzM5O3QgdGhleT8gQW5kIHRoZSBMTEMgZnVuY3Rpb25zIGhhbmRsZSB0aG9zZSBpbmNvbWluZyBuZXR3b3JrIG1lc3NhZ2VzLiBJIHNob3VsZCBjaGVjayBgbmV0L3NtYy9zbWNfbGxjLmNgIHRvIGNvbmZpcm0gd2hldGhlciBgc21jX2xsY19jbGlfYWRkX2xpbmtgIGFuZCBgc21jX2xsY19zcnZfYWRkX2xpbmtgIGFyZSBzdGF0aWMuIEdvdHRhIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oaW50fHZvaWR8c3RhdGljIGludHxzdGF0aWMgdm9pZCkgW2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL3NtY19sbGMuYz0yMTc9c3RydWN0IHNtY19sbGNfcWVudHJ5IHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjQtXG5uZXQvc21jL3NtY19sbGMuYzoyMjU6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNi1cdFx0XHQgICAgdTMyIGJ5dGVfbGVuKTtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0yMjg9c3RydWN0IHNtY19sbGNfcWVudHJ5ICpzbWNfbGxjX2Zsb3dfcWVudHJ5X2NscihzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIzNS1cbm5ldC9zbWMvc21jX2xsYy5jOjIzNjp2b2lkIHNtY19sbGNfZmxvd19xZW50cnlfZGVsKHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG5uZXQvc21jL3NtY19sbGMuYy0yMzcte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTI0Nz1zdGF0aWMgaW5saW5lIHZvaWQgc21jX2xsY19mbG93X3FlbnRyeV9zZXQoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yNTItXG5uZXQvc21jL3NtY19sbGMuYzoyNTM6c3RhdGljIHZvaWQgc21jX2xsY19mbG93X3BhcmFsbGVsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCB1OCBmbG93X3R5cGUsXG5uZXQvc21jL3NtY19sbGMuYy0yNTQtXHRcdFx0XHQgIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTI3NT1zdGF0aWMgYm9vbCBzbWNfbGxjX2Zsb3dfc3RhcnQoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0zMDYtLyogc3RhcnQgYSBuZXcgbG9jYWwgbGxjIGZsb3csIHdhaXQgdGlsbCBjdXJyZW50IGZsb3cgZmluaXNoZWQgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjMwNzppbnQgc21jX2xsY19mbG93X2luaXRpYXRlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfbGxjLmMtMzA4LVx0XHRcdCAgZW51bSBzbWNfbGxjX2Zsb3d0eXBlIHR5cGUpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMzQwLS8qIGZpbmlzaCB0aGUgY3VycmVudCBsbGMgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MzQxOnZvaWQgc21jX2xsY19mbG93X3N0b3Aoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXG5uZXQvc21jL3NtY19sbGMuYy0zNDIte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jPTM5OD1zdHJ1Y3Qgc21jX2xsY190eF9wZW5kIHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy00MDEtLyogaGFuZGxlciBmb3Igc2VuZC90cmFuc21pc3Npb24gY29tcGxldGlvbiBvZiBhbiBMTEMgbXNnICovXG5uZXQvc21jL3NtY19sbGMuYzo0MDI6c3RhdGljIHZvaWQgc21jX2xsY190eF9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICpwZW5kLFxubmV0L3NtYy9zbWNfbGxjLmMtNDAzLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtNDIxLSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NDIyOnN0YXRpYyBpbnQgc21jX2xsY19hZGRfcGVuZGluZ19zZW5kKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTQyMy1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqKndyX2J1Zixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy00NDMtXG5uZXQvc21jL3NtY19sbGMuYzo0NDQ6c3RhdGljIGludCBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRfdjIoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNDQ1LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBzbWNfd3JfdjJfYnVmICoqd3JfYnVmLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTQ1NS1cbm5ldC9zbWMvc21jX2xsYy5jOjQ1NjpzdGF0aWMgdm9pZCBzbWNfbGxjX2luaXRfbXNnX2hkcihzdHJ1Y3Qgc21jX2xsY19oZHIgKmhkcixcbm5ldC9zbWMvc21jX2xsYy5jLTQ1Ny1cdFx0XHRcdCBzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc2l6ZV90IGxlbilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy00NjgtLyogaGlnaC1sZXZlbCBBUEkgdG8gc2VuZCBMTEMgY29uZmlybSBsaW5rICovXG5uZXQvc21jL3NtY19sbGMuYzo0Njk6aW50IHNtY19sbGNfc2VuZF9jb25maXJtX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNDcwLVx0XHRcdCAgICAgIGVudW0gc21jX2xsY19yZXFyZXNwIHJlcXJlc3ApXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtNTA4LS8qIHNlbmQgTExDIGNvbmZpcm0gcmtleSByZXF1ZXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzo1MDk6c3RhdGljIGludCBzbWNfbGxjX3NlbmRfY29uZmlybV9ya2V5KHN0cnVjdCBzbWNfbGluayAqc2VuZF9saW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtNTEwLVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy01NTctLyogc2VuZCBMTEMgZGVsZXRlIHJrZXkgcmVxdWVzdCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NTU4OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTU1OS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYz02MTg9c3RhdGljIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNtY19sbGNfZ2V0X2ZpcnN0X3JtYihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbi0tXG5uZXQvc21jL3NtY19sbGMuYy02MjQtXG5uZXQvc21jL3NtY19sbGMuYzo2MjU6c3RhdGljIGludCBzbWNfbGxjX2ZpbGxfZXh0X3YyKHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGlua192Ml9leHQgKmV4dCxcbm5ldC9zbWMvc21jX2xsYy5jLTYyNi1cdFx0XHQgICAgICAgc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTY2NC0vKiBzZW5kIEFERCBMSU5LIHJlcXVlc3Qgb3IgcmVzcG9uc2UgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjY2NTppbnQgc21jX2xsY19zZW5kX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggbWFjW10sIHU4IGdpZFtdLFxubmV0L3NtYy9zbWNfbGxjLmMtNjY2LVx0XHRcdCAgc3RydWN0IHNtY19saW5rICpsaW5rX25ldyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy03MjUtLyogc2VuZCBERUxFVEUgTElOSyByZXF1ZXN0IG9yIHJlc3BvbnNlICovXG5uZXQvc21jL3NtY19sbGMuYzo3MjY6aW50IHNtY19sbGNfc2VuZF9kZWxldGVfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IGxpbmtfZGVsX2lkLFxubmV0L3NtYy9zbWNfbGxjLmMtNzI3LVx0XHRcdCAgICAgZW51bSBzbWNfbGxjX3JlcXJlc3AgcmVxcmVzcCwgYm9vbCBvcmRlcmx5LFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTc2MS0vKiBzZW5kIExMQyB0ZXN0IGxpbmsgcmVxdWVzdCAqL1xubmV0L3NtYy9zbWNfbGxjLmM6NzYyOnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX3Rlc3RfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IHVzZXJfZGF0YVsxNl0pXG5uZXQvc21jL3NtY19sbGMuYy03NjMte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTc4Ni0vKiBzY2hlZHVsZSBhbiBsbGMgc2VuZCBvbiBsaW5rLCBtYXkgd2FpdCBmb3IgYnVmZmVycyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6Nzg3OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX21lc3NhZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLCB2b2lkICpsbGNidWYpXG5uZXQvc21jL3NtY19sbGMuYy03ODgte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTgwOC0gKi9cbm5ldC9zbWMvc21jX2xsYy5jOjgwOTpzdGF0aWMgaW50IHNtY19sbGNfc2VuZF9tZXNzYWdlX3dhaXQoc3RydWN0IHNtY19saW5rICpsaW5rLCB2b2lkICpsbGNidWYpXG5uZXQvc21jL3NtY19sbGMuYy04MTAte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTgyOC1cbm5ldC9zbWMvc21jX2xsYy5jOjgyOTpzdGF0aWMgaW50IHNtY19sbGNfYWxsb2NfYWx0X2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL3NtY19sbGMuYy04MzAtXHRcdFx0XHQgIGVudW0gc21jX2xncl90eXBlIGxncl9uZXdfdClcbi0tXG5uZXQvc21jL3NtY19sbGMuYy04NTMtLyogc2VuZCBvbmUgYWRkX2xpbmtfY29udGludWUgbXNnICovXG5uZXQvc21jL3NtY19sbGMuYzo4NTQ6c3RhdGljIGludCBzbWNfbGxjX2FkZF9saW5rX2NvbnQoc3RydWN0IHNtY19saW5rICpsaW5rLFxubmV0L3NtYy9zbWNfbGxjLmMtODU1LVx0XHRcdFx0IHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsIHU4ICpudW1fcmtleXNfdG9kbyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy05MDgtXG5uZXQvc21jL3NtY19sbGMuYzo5MDk6c3RhdGljIGludCBzbWNfbGxjX2NsaV9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTkxMC1cdFx0XHRcdCAgICAgc3RydWN0IHNtY19saW5rICpsaW5rX25ldylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy05NTItLyogcHJlcGFyZSBhbmQgc2VuZCBhbiBhZGQgbGluayByZWplY3QgcmVzcG9uc2UgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjk1MzpzdGF0aWMgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rX3JlamVjdChzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbm5ldC9zbWMvc21jX2xsYy5jLTk1NC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtOTYyLVxubmV0L3NtYy9zbWNfbGxjLmM6OTYzOnN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTk2NC1cdFx0XHRcdCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwMjAtXG5uZXQvc21jL3NtY19sbGMuYzoxMDIxOnN0YXRpYyB2b2lkIHNtY19sbGNfc2F2ZV9hZGRfbGlua19ya2V5cyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMDIyLVx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwNDYtXG5uZXQvc21jL3NtY19sbGMuYzoxMDQ3OnN0YXRpYyB2b2lkIHNtY19sbGNfc2F2ZV9hZGRfbGlua19pbmZvKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTEwNDgtXHRcdFx0XHQgICAgICAgc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rICphZGRfbGxjKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwNTctLyogYXMgYW4gU01DIGNsaWVudCwgcHJvY2VzcyBhbiBhZGQgbGluayByZXF1ZXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzoxMDU4OmludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTA1OS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTE1MS1cbm5ldC9zbWMvc21jX2xsYy5jOjExNTI6c3RhdGljIHZvaWQgc21jX2xsY19zZW5kX3JlcXVlc3RfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMTE1My17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTE5MC0vKiBhcyBhbiBTTUMgY2xpZW50LCBpbnZpdGUgc2VydmVyIHRvIHN0YXJ0IHRoZSBhZGRfbGluayBwcm9jZXNzaW5nICovXG5uZXQvc21jL3NtY19sbGMuYzoxMTkxOnN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMTkyLVx0XHRcdFx0XHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMjM1PXN0YXRpYyBib29sIHNtY19sbGNfaXNfbG9jYWxfYWRkX2xpbmsodW5pb24gc21jX2xsY19tc2cgKmxsYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xMjQyLVxubmV0L3NtYy9zbWNfbGxjLmM6MTI0MzpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3NfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTI0NC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTI1Ni1cbm5ldC9zbWMvc21jX2xsYy5jOjEyNTc6c3RhdGljIGludCBzbWNfbGxjX2FjdGl2ZV9saW5rX2NvdW50KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTI1OC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MTI3MD1zdGF0aWMgc3RydWN0IHNtY19saW5rICpzbWNfbGxjX2ZpbmRfYXN5bV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzMTMtXG5uZXQvc21jL3NtY19sbGMuYzoxMzE0OnN0YXRpYyB2b2lkIHNtY19sbGNfZGVsZXRlX2FzeW1fbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbm5ldC9zbWMvc21jX2xsYy5jLTEzMTUte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzNDctXG5uZXQvc21jL3NtY19sbGMuYzoxMzQ4OnN0YXRpYyBpbnQgc21jX2xsY19zcnZfcmtleV9leGNoYW5nZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0xMzQ5LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEzODgtXG5uZXQvc21jL3NtY19sbGMuYzoxMzg5OnN0YXRpYyBpbnQgc21jX2xsY19zcnZfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTEzOTAtXHRcdFx0XHQgc3RydWN0IHNtY19saW5rICpsaW5rX25ldyxcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNDIyLVxubmV0L3NtYy9zbWNfbGxjLmM6MTQyMzpzdGF0aWMgdm9pZCBzbWNfbGxjX3NlbmRfcmVxX2FkZF9saW5rX3Jlc3BvbnNlKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTQyNC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTQzMS1cbm5ldC9zbWMvc21jX2xsYy5jOjE0MzI6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTE0MzMtXHRcdFx0IHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcmVxX3FlbnRyeSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNTU0LVxubmV0L3NtYy9zbWNfbGxjLmM6MTU1NTpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3Nfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTU1Ni17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU3My0vKiBlbnF1ZXVlIGEgbG9jYWwgYWRkX2xpbmsgcmVxIHRvIHRyaWdnZXIgYSBuZXcgYWRkX2xpbmsgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTU3NDp2b2lkIHNtY19sbGNfYWRkX2xpbmtfbG9jYWwoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMTU3NS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTU4NS0vKiB3b3JrZXIgdG8gcHJvY2VzcyBhbiBhZGQgbGluayBtZXNzYWdlICovXG5uZXQvc21jL3NtY19sbGMuYzoxNTg2OnN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc21jL3NtY19sbGMuYy0xNTg3LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNjA4LSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTYwOTp2b2lkIHNtY19sbGNfc3J2X2RlbGV0ZV9saW5rX2xvY2FsKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggZGVsX2xpbmtfaWQpXG5uZXQvc21jL3NtY19sbGMuYy0xNjEwLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNjIxLVxubmV0L3NtYy9zbWNfbGxjLmM6MTYyMjpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3NfY2xpX2RlbGV0ZV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTYyMy17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTY3OS0gKi9cbm5ldC9zbWMvc21jX2xsYy5jOjE2ODA6dm9pZCBzbWNfbGxjX3NlbmRfbGlua19kZWxldGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIG9yZCwgdTMyIHJzbilcbm5ldC9zbWMvc21jX2xsYy5jLTE2ODEte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE2OTktXG5uZXQvc21jL3NtY19sbGMuYzoxNzAwOnN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19zcnZfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0xNzAxLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xNzY3LVxubmV0L3NtYy9zbWNfbGxjLmM6MTc2ODpzdGF0aWMgdm9pZCBzbWNfbGxjX2RlbGV0ZV9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3NtYy9zbWNfbGxjLmMtMTc2OS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTc4Ny0vKiBwcm9jZXNzIGEgY29uZmlybV9ya2V5IHJlcXVlc3QgZnJvbSBwZWVyLCByZW1vdGUgZmxvdyAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTc4ODpzdGF0aWMgdm9pZCBzbWNfbGxjX3JtdF9jb25mX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0xNzg5LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xODI3LS8qIHByb2Nlc3MgYSBkZWxldGVfcmtleSByZXF1ZXN0IGZyb20gcGVlciwgcmVtb3RlIGZsb3cgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjE4Mjg6c3RhdGljIHZvaWQgc21jX2xsY19ybXRfZGVsZXRlX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0xODI5LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0xODg5LVxubmV0L3NtYy9zbWNfbGxjLmM6MTg5MDpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb3RvY29sX3Zpb2xhdGlvbihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgdTggdHlwZSlcbm5ldC9zbWMvc21jX2xsYy5jLTE4OTEte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTE4OTktLyogZmx1c2ggdGhlIGxsYyBldmVudCBxdWV1ZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MTkwMDpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2ZsdXNoKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfbGxjLmMtMTkwMS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTkxMS1cbm5ldC9zbWMvc21jX2xsYy5jOjE5MTI6c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF9oYW5kbGVyKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMTkxMy17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjAzMy0vKiB3b3JrZXIgdG8gcHJvY2VzcyBsbGMgbWVzc2FnZXMgb24gdGhlIGV2ZW50IHF1ZXVlICovXG5uZXQvc21jL3NtY19sbGMuYzoyMDM0OnN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc21jL3NtY19sbGMuYy0yMDM1LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMDYyLS8qIHByb2Nlc3MgbGxjIHJlc3BvbnNlcyBpbiB0YXNrbGV0IGNvbnRleHQgKi9cbm5ldC9zbWMvc21jX2xsYy5jOjIwNjM6c3RhdGljIHZvaWQgc21jX2xsY19yeF9yZXNwb25zZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG5uZXQvc21jL3NtY19sbGMuYy0yMDY0LVx0XHRcdFx0c3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmM9MjEwNz1zdGF0aWMgdTMyIHNtY19sbGNfbWF4X2JvZHlfbGVuKHVuaW9uIHNtY19sbGNfbXNnICpsbGMpXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjEyMS1cbm5ldC9zbWMvc21jX2xsYy5jOjIxMjI6c3RhdGljIHZvaWQgc21jX2xsY19lbnF1ZXVlKHN0cnVjdCBzbWNfbGluayAqbGluaywgdW5pb24gc21jX2xsY19tc2cgKmxsYyxcbm5ldC9zbWMvc21jX2xsYy5jLTIxMjMtXHRcdFx0ICAgIHUzMiBieXRlX2xlbilcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTY3LS8qIGNvcHkgcmVjZWl2ZWQgbXNnIGFuZCBhZGQgaXQgdG8gdGhlIGV2ZW50IHF1ZXVlICovXG5uZXQvc21jL3NtY19sbGMuYzoyMTY4OnN0YXRpYyB2b2lkIHNtY19sbGNfcnhfaGFuZGxlcihzdHJ1Y3QgaWJfd2MgKndjLCB2b2lkICpidWYpXG5uZXQvc21jL3NtY19sbGMuYy0yMTY5LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMTg3LVxubmV0L3NtYy9zbWNfbGxjLmM6MjE4ODpzdGF0aWMgdm9pZCBzbWNfbGxjX3Rlc3RsaW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3NtYy9zbWNfbGxjLmMtMjE4OS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjIxOS1cbm5ldC9zbWMvc21jX2xsYy5jOjIyMjA6dm9pZCBzbWNfbGxjX2xncl9pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbm5ldC9zbWMvc21jX2xsYy5jLTIyMjEte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyMzgtLyogY2FsbGVkIGFmdGVyIGxnciB3YXMgcmVtb3ZlZCBmcm9tIGxncl9saXN0ICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjM5OnZvaWQgc21jX2xsY19sZ3JfY2xlYXIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19sbGMuYy0yMjQwLXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjUyLVxubmV0L3NtYy9zbWNfbGxjLmM6MjI1MzppbnQgc21jX2xsY19saW5rX2luaXQoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfbGxjLmMtMjI1NC17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjI1OS1cbm5ldC9zbWMvc21jX2xsYy5jOjIyNjA6dm9pZCBzbWNfbGxjX2xpbmtfYWN0aXZlKHN0cnVjdCBzbWNfbGluayAqbGluaylcbm5ldC9zbWMvc21jX2xsYy5jLTIyNjEte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIyNzctLyogY2FsbGVkIGluIHdvcmtlciBjb250ZXh0ICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjc4OnZvaWQgc21jX2xsY19saW5rX2NsZWFyKHN0cnVjdCBzbWNfbGluayAqbGluaywgYm9vbCBsb2cpXG5uZXQvc21jL3NtY19sbGMuYy0yMjc5LXtcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMjkyLS8qIHJlZ2lzdGVyIGEgbmV3IHJ0b2tlbiBhdCB0aGUgcmVtb3RlIHBlZXIgKGZvciBhbGwgbGlua3MpICovXG5uZXQvc21jL3NtY19sbGMuYzoyMjkzOmludCBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcbm5ldC9zbWMvc21jX2xsYy5jLTIyOTQtXHRcdFx0ICAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIzMTQtLyogdW5yZWdpc3RlciBhbiBydG9rZW4gYXQgdGhlIHJlbW90ZSBwZWVyICovXG5uZXQvc21jL3NtY19sbGMuYzoyMzE1OmludCBzbWNfbGxjX2RvX2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfbGxjLmMtMjMxNi1cdFx0XHQgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcbi0tXG5uZXQvc21jL3NtY19sbGMuYy0yMzQwLVxubmV0L3NtYy9zbWNfbGxjLmM6MjM0MTp2b2lkIHNtY19sbGNfbGlua19zZXRfdWlkKHN0cnVjdCBzbWNfbGluayAqbGluaylcbm5ldC9zbWMvc21jX2xsYy5jLTIzNDIte1xuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTIzNDktLyogc2F2ZSBwZWVycyBsaW5rIHVzZXIgaWQsIHVzZWQgZm9yIGRlYnVnIHB1cnBvc2VzICovXG5uZXQvc21jL3NtY19sbGMuYzoyMzUwOnZvaWQgc21jX2xsY19zYXZlX3BlZXJfdWlkKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxubmV0L3NtYy9zbWNfbGxjLmMtMjM1MS17XG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMjM1Ni0vKiBldmFsdWF0ZSBjb25maXJtIGxpbmsgcmVxdWVzdCBvciByZXNwb25zZSAqL1xubmV0L3NtYy9zbWNfbGxjLmM6MjM1NzppbnQgc21jX2xsY19ldmFsX2NvbmZfbGluayhzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSxcbm5ldC9zbWMvc21jX2xsYy5jLTIzNTgtXHRcdFx0ICAgZW51bSBzbWNfbGxjX3JlcXJlc3AgdHlwZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyNDAKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhpbmdzOgoKKipBbmFseXppbmcgU01DIExpbmsgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gYHNtY19sbGNfY2xpX2FkZF9saW5rYCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYCBhcmVuJiMzOTt0IHN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIGlzIGltcG9ydGFudCB0byByZW1lbWJlci4gVGhhdCBwcm9iYWJseSBtZWFucyB0aGV5JiMzOTtyZSBzdWJqZWN0IHRvIHNvbWUgc29ydCBvZiBkeW5hbWljIGJlaGF2aW9yLCB3aGljaCBuZWVkcyB1bmRlcnN0YW5kaW5nLiBSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHRyYWNrIGRvd24gZXhhY3RseSBob3cgdGhlc2UgbGlua3MgYXJlIGluaXRpYWxpemVkLiBUaGUgb2J2aW91cyBwbGFjZSB0byBzdGFydCBpcyBgbmV0L3NtYy9zbWNfY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBgc21jcl9saW5rX2luaXRgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgYW5kIHNlZWluZyB3aGF0IGluZmx1ZW5jZXMgdGhlc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oaW50fHZvaWR8c3RhdGljIGludHxzdGF0aWMgdm9pZCkgW2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfY29yZS5jPTUwPXN0YXRpYyBERUNMQVJFX1dBSVRfUVVFVUVfSEVBRChsZ3JzX2RlbGV0ZWQpO1xubmV0L3NtYy9zbWNfY29yZS5jLTUxLVxubmV0L3NtYy9zbWNfY29yZS5jOjUyOnN0YXRpYyB2b2lkIHNtY19idWZfZnJlZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBpc19ybWIsXG5uZXQvc21jL3NtY19jb3JlLmMtNTMtXHRcdFx0IHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjKTtcbm5ldC9zbWMvc21jX2NvcmUuYzo1NDpzdGF0aWMgdm9pZCBfX3NtY19sZ3JfdGVybWluYXRlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIHNvZnQpO1xubmV0L3NtYy9zbWNfY29yZS5jLTU1LVxubmV0L3NtYy9zbWNfY29yZS5jOjU2OnN0YXRpYyB2b2lkIHNtY19saW5rX2Rvd25fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xubmV0L3NtYy9zbWNfY29yZS5jLTU3LVxubmV0L3NtYy9zbWNfY29yZS5jOjU4OnZvaWQgc21jX2luaXRfaW5mb19mcmVlKHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXG5uZXQvc21jL3NtY19jb3JlLmMtNTkte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz03MD1zdGF0aWMgaW5saW5lIHN0cnVjdCBsaXN0X2hlYWQgKnNtY19sZ3JfbGlzdF9oZWFkKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy04MS1cbm5ldC9zbWMvc21jX2NvcmUuYzo4MjpzdGF0aWMgdm9pZCBzbWNfaWJkZXZfY250X2luYyhzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2NvcmUuYy04My17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTg2LVxubmV0L3NtYy9zbWNfY29yZS5jOjg3OnN0YXRpYyB2b2lkIHNtY19pYmRldl9jbnRfZGVjKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTg4LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtOTEtXG5uZXQvc21jL3NtY19jb3JlLmM6OTI6c3RhdGljIHZvaWQgc21jX2xncl9zY2hlZHVsZV9mcmVlX3dvcmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19jb3JlLmMtOTMte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xMTEtICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTEyOnN0YXRpYyB2b2lkIHNtY19sZ3JfYWRkX2FsZXJ0X3Rva2VuKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTMte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xMzMtLyogYXNzaWduIGFuIFNNQy1SIGxpbmsgdG8gdGhlIGNvbm5lY3Rpb24gKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoxMzQ6c3RhdGljIGludCBzbWNyX2xncl9jb25uX2Fzc2lnbl9saW5rKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwgYm9vbCBmaXJzdClcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzUte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNzctICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTc4OnN0YXRpYyBpbnQgc21jX2xncl9yZWdpc3Rlcl9jb25uKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwgYm9vbCBmaXJzdClcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzkte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yMDYtICovXG5uZXQvc21jL3NtY19jb3JlLmM6MjA3OnN0YXRpYyB2b2lkIF9fc21jX2xncl91bnJlZ2lzdGVyX2Nvbm4oc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxubmV0L3NtYy9zbWNfY29yZS5jLTIwOC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTIyMS0gKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoyMjI6c3RhdGljIHZvaWQgc21jX2xncl91bnJlZ2lzdGVyX2Nvbm4oc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxubmV0L3NtYy9zbWNfY29yZS5jLTIyMy17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTIzNC1cbm5ldC9zbWMvc21jX2NvcmUuYzoyMzU6c3RhdGljIHZvaWQgc21jX2xncl9idWZfbGlzdF9hZGQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL3NtY19jb3JlLmMtMjM2LVx0XHRcdFx0IGJvb2wgaXNfcm1iLFxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNDktXG5uZXQvc21jL3NtY19jb3JlLmM6MjUwOnN0YXRpYyB2b2lkIHNtY19sZ3JfYnVmX2xpc3RfZGVsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfY29yZS5jLTI1MS1cdFx0XHRcdCBib29sIGlzX3JtYixcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjYzLVxubmV0L3NtYy9zbWNfY29yZS5jOjI2NDppbnQgc21jX25sX2dldF9zeXNfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG5uZXQvc21jL3NtY19jb3JlLmMtMjY1LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMzE5LS8qIEZpbGwgU01DX05MQV9MR1JfRF9WMl9DT01NT04vU01DX05MQV9MR1JfUl9WMl9DT01NT04gbmVzdGVkIGF0dHJpYnV0ZXMgKi9cbm5ldC9zbWMvc21jX2NvcmUuYzozMjA6c3RhdGljIGludCBzbWNfbmxfZmlsbF9sZ3JfdjJfY29tbW9uKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfY29yZS5jLTMyMS1cdFx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMzUwLVxubmV0L3NtYy9zbWNfY29yZS5jOjM1MTpzdGF0aWMgaW50IHNtY19ubF9maWxsX3NtY3JfbGdyX3YyKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxubmV0L3NtYy9zbWNfY29yZS5jLTM1Mi1cdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTM3NS1cbm5ldC9zbWMvc21jX2NvcmUuYzozNzY6c3RhdGljIGludCBzbWNfbmxfZmlsbF9sZ3Ioc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL3NtY19jb3JlLmMtMzc3LVx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTQyNy1cbm5ldC9zbWMvc21jX2NvcmUuYzo0Mjg6c3RhdGljIGludCBzbWNfbmxfZmlsbF9sZ3JfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbm5ldC9zbWMvc21jX2NvcmUuYy00MjktXHRcdFx0XHRzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTQ4OC1cbm5ldC9zbWMvc21jX2NvcmUuYzo0ODk6c3RhdGljIGludCBzbWNfbmxfaGFuZGxlX2xncihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbm5ldC9zbWMvc21jX2NvcmUuYy00OTAtXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy01MjItXG5uZXQvc21jL3NtY19jb3JlLmM6NTIzOnN0YXRpYyB2b2lkIHNtY19ubF9maWxsX2xncl9saXN0KHN0cnVjdCBzbWNfbGdyX2xpc3QgKnNtY19sZ3IsXG5uZXQvc21jL3NtY19jb3JlLmMtNTI0LVx0XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTU0Ni1cbm5ldC9zbWMvc21jX2NvcmUuYzo1NDc6c3RhdGljIGludCBzbWNfbmxfZmlsbF9zbWNkX2xncihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbm5ldC9zbWMvc21jX2NvcmUuYy01NDgtXHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy02MTYtXG5uZXQvc21jL3NtY19jb3JlLmM6NjE3OnN0YXRpYyBpbnQgc21jX25sX2hhbmRsZV9zbWNkX2xncihzdHJ1Y3Qgc21jZF9kZXYgKmRldixcbm5ldC9zbWMvc21jX2NvcmUuYy02MTgtXHRcdFx0XHQgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTY0My1cbm5ldC9zbWMvc21jX2NvcmUuYzo2NDQ6c3RhdGljIGludCBzbWNfbmxfZmlsbF9zbWNkX2RldihzdHJ1Y3Qgc21jZF9kZXZfbGlzdCAqZGV2X2xpc3QsXG5uZXQvc21jL3NtY19jb3JlLmMtNjQ1LVx0XHRcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtNjcwLVxubmV0L3NtYy9zbWNfY29yZS5jOjY3MTppbnQgc21jcl9ubF9nZXRfbGdyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9zbWMvc21jX2NvcmUuYy02NzIte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy02NzgtXG5uZXQvc21jL3NtY19jb3JlLmM6Njc5OmludCBzbWNyX25sX2dldF9saW5rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9zbWMvc21jX2NvcmUuYy02ODAte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy02ODYtXG5uZXQvc21jL3NtY19jb3JlLmM6Njg3OmludCBzbWNkX25sX2dldF9sZ3Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxubmV0L3NtYy9zbWNfY29yZS5jLTY4OC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTY5Mi1cbm5ldC9zbWMvc21jX2NvcmUuYzo2OTM6dm9pZCBzbWNfbGdyX2NsZWFudXBfZWFybHkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19jb3JlLmMtNjk0LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtNzA4LVxubmV0L3NtYy9zbWNfY29yZS5jOjcwOTpzdGF0aWMgdm9pZCBzbWNyX2xncl9saW5rX2RlYWN0aXZhdGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfY29yZS5jLTcxMC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTcyMi1cbm5ldC9zbWMvc21jX2NvcmUuYzo3MjM6c3RhdGljIHZvaWQgc21jX2xncl9mcmVlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKTtcbm5ldC9zbWMvc21jX2NvcmUuYy03MjQtXG5uZXQvc21jL3NtY19jb3JlLmM6NzI1OnN0YXRpYyB2b2lkIHNtY19sZ3JfZnJlZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zbWMvc21jX2NvcmUuYy03MjYte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy03NjAtXG5uZXQvc21jL3NtY19jb3JlLmM6NzYxOnN0YXRpYyB2b2lkIHNtY19sZ3JfdGVybWluYXRlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3NtYy9zbWNfY29yZS5jLTc2Mi17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jPTc3MD1zdGF0aWMgdTggc21jcl9uZXh0X2xpbmtfaWQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTc4OS1cbm5ldC9zbWMvc21jX2NvcmUuYzo3OTA6c3RhdGljIHZvaWQgc21jcl9jb3B5X2Rldl9pbmZvX3RvX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTc5MS17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTc5OC1cbm5ldC9zbWMvc21jX2NvcmUuYzo3OTk6aW50IHNtY3JfbGlua19pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbm5ldC9zbWMvc21jX2NvcmUuYy04MDAtXHRcdCAgIHU4IGxpbmtfaWR4LCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy05MDctLyogY3JlYXRlIGEgbmV3IFNNQyBsaW5rIGdyb3VwICovXG5uZXQvc21jL3NtY19jb3JlLmM6OTA4OnN0YXRpYyBpbnQgc21jX2xncl9jcmVhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXG5uZXQvc21jL3NtY19jb3JlLmMtOTA5LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTAzOS1cbm5ldC9zbWMvc21jX2NvcmUuYzoxMDQwOnN0YXRpYyBpbnQgc21jX3dyaXRlX3NwYWNlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NvcmUuYy0xMDQxLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTA1My1cbm5ldC9zbWMvc21jX2NvcmUuYzoxMDU0OnN0YXRpYyBpbnQgc21jX3N3aXRjaF9jdXJzb3Ioc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfY2RjX3R4X3BlbmQgKnBlbmQsXG5uZXQvc21jL3NtY19jb3JlLmMtMTA1NS1cdFx0XHQgICAgIHN0cnVjdCBzbWNfd3JfYnVmICp3cl9idWYpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTExMDMtXG5uZXQvc21jL3NtY19jb3JlLmM6MTEwNDp2b2lkIHNtY19zd2l0Y2hfbGlua19hbmRfY291bnQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxubmV0L3NtYy9zbWNfY29yZS5jLTExMDUtXHRcdFx0ICAgICAgIHN0cnVjdCBzbWNfbGluayAqdG9fbG5rKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz0xMTE2PXN0cnVjdCBzbWNfbGluayAqc21jX3N3aXRjaF9jb25ucyhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTE5My1cbm5ldC9zbWMvc21jX2NvcmUuYzoxMTk0OnN0YXRpYyB2b2lkIHNtY3JfYnVmX3VudXNlKHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjLCBib29sIGlzX3JtYixcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTk1LVx0XHRcdCAgIHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xMjI4LVxubmV0L3NtYy9zbWNfY29yZS5jOjEyMjk6c3RhdGljIHZvaWQgc21jZF9idWZfZGV0YWNoKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NvcmUuYy0xMjMwLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTI0NC1cbm5ldC9zbWMvc21jX2NvcmUuYzoxMjQ1OnN0YXRpYyB2b2lkIHNtY19idWZfdW51c2Uoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxubmV0L3NtYy9zbWNfY29yZS5jLTEyNDYtXHRcdFx0ICBzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTI3NS0vKiByZW1vdmUgYSBmaW5pc2hlZCBjb25uZWN0aW9uIGZyb20gaXRzIGxpbmsgZ3JvdXAgKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoxMjc2OnZvaWQgc21jX2Nvbm5fZnJlZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXG5uZXQvc21jL3NtY19jb3JlLmMtMTI3Ny17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTEzMTYtLyogdW5yZWdpc3RlciBhIGxpbmsgZnJvbSBhIGJ1Zl9kZXNjICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTMxNzpzdGF0aWMgdm9pZCBzbWNyX2J1Zl91bm1hcF9saW5rKHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjLCBib29sIGlzX3JtYixcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzE4LVx0XHRcdFx0c3RydWN0IHNtY19saW5rICpsbmspXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTEzMzktLyogdW5tYXAgYWxsIGJ1ZmZlcnMgb2YgbGdyIGZvciBhIGRlbGV0ZWQgbGluayAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjEzNDA6c3RhdGljIHZvaWQgc21jcl9idWZfdW5tYXBfbGdyKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTEzNDEte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xMzU5LVxubmV0L3NtYy9zbWNfY29yZS5jOjEzNjA6c3RhdGljIHZvaWQgc21jcl9ydG9rZW5fY2xlYXJfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzYxLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTM3MC1cbm5ldC9zbWMvc21jX2NvcmUuYzoxMzcxOnN0YXRpYyB2b2lkIF9fc21jcl9saW5rX2NsZWFyKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTEzNzIte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xMzg3LS8qIG11c3QgYmUgY2FsbGVkIHVuZGVyIGxnci1cdTAwM2VsbGNfY29uZl9tdXRleCBsb2NrICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTM4ODp2b2lkIHNtY3JfbGlua19jbGVhcihzdHJ1Y3Qgc21jX2xpbmsgKmxuaywgYm9vbCBsb2cpXG5uZXQvc21jL3NtY19jb3JlLmMtMTM4OS17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE0MDQtXG5uZXQvc21jL3NtY19jb3JlLmM6MTQwNTp2b2lkIHNtY3JfbGlua19ob2xkKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTE0MDYte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNDA5LVxubmV0L3NtYy9zbWNfY29yZS5jOjE0MTA6dm9pZCBzbWNyX2xpbmtfcHV0KHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTE0MTEte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNDE1LVxubmV0L3NtYy9zbWNfY29yZS5jOjE0MTY6c3RhdGljIHZvaWQgc21jcl9idWZfZnJlZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBpc19ybWIsXG5uZXQvc21jL3NtY19jb3JlLmMtMTQxNy1cdFx0XHQgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNDMwLVxubmV0L3NtYy9zbWNfY29yZS5jOjE0MzE6c3RhdGljIHZvaWQgc21jZF9idWZfZnJlZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBpc19kbWIsXG5uZXQvc21jL3NtY19jb3JlLmMtMTQzMi1cdFx0XHQgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNDQzLVxubmV0L3NtYy9zbWNfY29yZS5jOjE0NDQ6c3RhdGljIHZvaWQgc21jX2J1Zl9mcmVlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIGlzX3JtYixcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDQ1LVx0XHRcdCBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfZGVzYylcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ1Mi1cbm5ldC9zbWMvc21jX2NvcmUuYzoxNDUzOnN0YXRpYyB2b2lkIF9fc21jX2xncl9mcmVlX2J1ZnMoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgaXNfcm1iKVxubmV0L3NtYy9zbWNfY29yZS5jLTE0NTQte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNDcxLVxubmV0L3NtYy9zbWNfY29yZS5jOjE0NzI6c3RhdGljIHZvaWQgc21jX2xncl9mcmVlX2J1ZnMoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ3My17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE0ODAtLyogd29uJiMzOTt0IGJlIGZyZWVkIHVudGlsIG5vIG9uZSBhY2Nlc3NlcyB0byBsZ3IgYW55bW9yZSAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE0ODE6c3RhdGljIHZvaWQgX19zbWNfbGdyX2ZyZWUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ4Mi17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE0OTUtLyogcmVtb3ZlIGEgbGluayBncm91cCAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE0OTY6c3RhdGljIHZvaWQgc21jX2xncl9mcmVlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfY29yZS5jLTE0OTcte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNTE3LVxubmV0L3NtYy9zbWNfY29yZS5jOjE1MTg6dm9pZCBzbWNfbGdyX2hvbGQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXG5uZXQvc21jL3NtY19jb3JlLmMtMTUxOS17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE1MjItXG5uZXQvc21jL3NtY19jb3JlLmM6MTUyMzp2b2lkIHNtY19sZ3JfcHV0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfY29yZS5jLTE1MjQte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNTI4LVxubmV0L3NtYy9zbWNfY29yZS5jOjE1Mjk6c3RhdGljIHZvaWQgc21jX3NrX3dha2VfdXBzKHN0cnVjdCBzbWNfc29jayAqc21jKVxubmV0L3NtYy9zbWNfY29yZS5jLTE1MzAte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNTM2LS8qIGtpbGwgYSBjb25uZWN0aW9uICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTUzNzpzdGF0aWMgdm9pZCBzbWNfY29ubl9raWxsKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwgYm9vbCBzb2Z0KVxubmV0L3NtYy9zbWNfY29yZS5jLTE1Mzgte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNTYyLVxubmV0L3NtYy9zbWNfY29yZS5jOjE1NjM6c3RhdGljIHZvaWQgc21jX2xncl9jbGVhbnVwKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxubmV0L3NtYy9zbWNfY29yZS5jLTE1NjQte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNTgwLSAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE1ODE6c3RhdGljIHZvaWQgX19zbWNfbGdyX3Rlcm1pbmF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBzb2Z0KVxubmV0L3NtYy9zbWNfY29yZS5jLTE1ODIte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xNjEzLS8qIHVubGluayBsaW5rIGdyb3VwIGFuZCBzY2hlZHVsZSB0ZXJtaW5hdGlvbiAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE2MTQ6dm9pZCBzbWNfbGdyX3Rlcm1pbmF0ZV9zY2hlZChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcbm5ldC9zbWMvc21jX2NvcmUuYy0xNjE1LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTYzMC0vKiBDYWxsZWQgd2hlbiBwZWVyIGxnciBzaHV0ZG93biAocmVndWxhcmx5IG9yIGFibm9ybWFsbHkpIGlzIHJlY2VpdmVkICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTYzMTp2b2lkIHNtY19zbWNkX3Rlcm1pbmF0ZShzdHJ1Y3Qgc21jZF9kZXYgKmRldiwgc3RydWN0IHNtY2RfZ2lkICpwZWVyX2dpZCxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNjMyLVx0XHRcdHVuc2lnbmVkIHNob3J0IHZsYW4pXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE2NjAtLyogQ2FsbGVkIHdoZW4gYW4gU01DRCBkZXZpY2UgaXMgcmVtb3ZlZCBvciB0aGUgc21jIG1vZHVsZSBpcyB1bmxvYWRlZCAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE2NjE6dm9pZCBzbWNfc21jZF90ZXJtaW5hdGVfYWxsKHN0cnVjdCBzbWNkX2RldiAqc21jZClcbm5ldC9zbWMvc21jX2NvcmUuYy0xNjYyLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTY4NC0gKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoxNjg1OnZvaWQgc21jX3NtY3JfdGVybWluYXRlX2FsbChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG5uZXQvc21jL3NtY19jb3JlLmMtMTY4Ni17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE3MjItLyogc2V0IG5ldyBsZ3IgdHlwZSBhbmQgY2xlYXIgYWxsIGFzeW1tZXRyaWMgbGluayB0YWdnaW5nICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTcyMzp2b2lkIHNtY3JfbGdyX3NldF90eXBlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBlbnVtIHNtY19sZ3JfdHlwZSBuZXdfdHlwZSlcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzI0LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTc1Ny0vKiBzZXQgbmV3IGxnciB0eXBlIGFuZCB0YWcgYSBsaW5rIGFzIGFzeW1tZXRyaWMgKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoxNzU4OnZvaWQgc21jcl9sZ3Jfc2V0X3R5cGVfYXN5bShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzU5LVx0XHRcdCAgICBlbnVtIHNtY19sZ3JfdHlwZSBuZXdfdHlwZSwgaW50IGFzeW1fbG5rX2lkeClcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTc2NS0vKiBhYm9ydCBjb25uZWN0aW9uLCBhYm9ydF93b3JrIHNjaGVkdWxlZCBmcm9tIHRhc2tsZXQgY29udGV4dCAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE3NjY6c3RhdGljIHZvaWQgc21jX2Nvbm5fYWJvcnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvc21jL3NtY19jb3JlLmMtMTc2Ny17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE3NzgtXG5uZXQvc21jL3NtY19jb3JlLmM6MTc3OTp2b2lkIHNtY3JfcG9ydF9hZGQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2LCB1OCBpYnBvcnQpXG5uZXQvc21jL3NtY19jb3JlLmMtMTc4MC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE4MDctICovXG5uZXQvc21jL3NtY19jb3JlLmM6MTgwODpzdGF0aWMgdm9pZCBzbWNyX2xpbmtfZG93bihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2NvcmUuYy0xODA5LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTg0OC0vKiBtdXN0IGJlIGNhbGxlZCB1bmRlciBsZ3ItXHUwMDNlbGxjX2NvbmZfbXV0ZXggbG9jayAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE4NDk6dm9pZCBzbWNyX2xpbmtfZG93bl9jb25kKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTE4NTAte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xODU3LS8qIHdpbGwgZ2V0IHRoZSBsZ3ItXHUwMDNlbGxjX2NvbmZfbXV0ZXggbG9jayAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE4NTg6dm9pZCBzbWNyX2xpbmtfZG93bl9jb25kX3NjaGVkKHN0cnVjdCBzbWNfbGluayAqbG5rKVxubmV0L3NtYy9zbWNfY29yZS5jLTE4NTkte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xODY3LVxubmV0L3NtYy9zbWNfY29yZS5jOjE4Njg6dm9pZCBzbWNyX3BvcnRfZXJyKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgdTggaWJwb3J0KVxubmV0L3NtYy9zbWNfY29yZS5jLTE4Njkte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xODg4LVxubmV0L3NtYy9zbWNfY29yZS5jOjE4ODk6c3RhdGljIHZvaWQgc21jX2xpbmtfZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbm5ldC9zbWMvc21jX2NvcmUuYy0xODkwLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMTkwNS1cbm5ldC9zbWMvc21jX2NvcmUuYzoxOTA2OnN0YXRpYyBpbnQgc21jX3ZsYW5fYnlfdGNwc2tfd2FsayhzdHJ1Y3QgbmV0X2RldmljZSAqbG93ZXJfZGV2LFxubmV0L3NtYy9zbWNfY29yZS5jLTE5MDctXHRcdFx0XHQgIHN0cnVjdCBuZXRkZXZfbmVzdGVkX3ByaXYgKnByaXYpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTE5MTktLyogRGV0ZXJtaW5lIHZsYW4gb2YgaW50ZXJuYWwgVENQIHNvY2tldC4gKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoxOTIwOmludCBzbWNfdmxhbl9ieV90Y3BzayhzdHJ1Y3Qgc29ja2V0ICpjbGNzb2NrLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxubmV0L3NtYy9zbWNfY29yZS5jLTE5MjEte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz0xOTgyPXN0YXRpYyBib29sIHNtY2RfbGdyX21hdGNoKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0xOTk3LS8qIGNyZWF0ZSBhIG5ldyBTTUMgY29ubmVjdGlvbiAoYW5kIGEgbmV3IGxpbmsgZ3JvdXAgaWYgbmVjZXNzYXJ5KSAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjE5OTg6aW50IHNtY19jb25uX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbm5ldC9zbWMvc21jX2NvcmUuYy0xOTk5LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmM9MjEwND1zdGF0aWMgdTggc21jX2NvbXByZXNzX2J1ZnNpemUoaW50IHNpemUsIGJvb2wgaXNfc21jZCwgYm9vbCBpc19ybWIpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTIxMjQtLyogY29udmVydCB0aGUgUk1CIHNpemUgZnJvbSBjb21wcmVzc2VkIG5vdGF0aW9uIGludG8gaW50ZWdlciAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjIxMjU6aW50IHNtY191bmNvbXByZXNzX2J1ZnNpemUodTggY29tcHJlc3NlZClcbm5ldC9zbWMvc21jX2NvcmUuYy0yMTI2LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmM9MjE1Nj1zdGF0aWMgaW5saW5lIGludCBzbWNfcm1iX3duZF91cGRhdGVfbGltaXQoaW50IHJtYmVfc2l6ZSlcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjE2MS0vKiBtYXAgYW4gYnVmIHRvIGEgbGluayAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjIxNjI6c3RhdGljIGludCBzbWNyX2J1Zl9tYXBfbGluayhzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfZGVzYywgYm9vbCBpc19ybWIsXG5uZXQvc21jL3NtY19jb3JlLmMtMjE2My1cdFx0XHQgICAgIHN0cnVjdCBzbWNfbGluayAqbG5rKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yMjM4LSAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjIyMzk6aW50IHNtY3JfbGlua19yZWdfYnVmKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX2Rlc2MpXG5uZXQvc21jL3NtY19jb3JlLmMtMjI0MC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTIyNTYtXG5uZXQvc21jL3NtY19jb3JlLmM6MjI1NzpzdGF0aWMgaW50IF9zbWNyX2J1Zl9tYXBfbGdyKHN0cnVjdCBzbWNfbGluayAqbG5rLCBzdHJ1Y3Qgcndfc2VtYXBob3JlICpsb2NrLFxubmV0L3NtYy9zbWNfY29yZS5jLTIyNTgtXHRcdFx0ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpsc3QsIGJvb2wgaXNfcm1iKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yMjc2LS8qIG1hcCBhbGwgdXNlZCBidWZmZXJzIG9mIGxnciBmb3IgYSBuZXcgbGluayAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjIyNzc6aW50IHNtY3JfYnVmX21hcF9sZ3Ioc3RydWN0IHNtY19saW5rICpsbmspXG5uZXQvc21jL3NtY19jb3JlLmMtMjI3OC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTIyOTctICovXG5uZXQvc21jL3NtY19jb3JlLmM6MjI5ODppbnQgc21jcl9idWZfcmVnX2xncihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcbm5ldC9zbWMvc21jX2NvcmUuYy0yMjk5LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmM9MjMzOT1zdGF0aWMgc3RydWN0IHNtY19idWZfZGVzYyAqc21jcl9uZXdfYnVmX2NyZWF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjM4Ni0gKi9cbm5ldC9zbWMvc21jX2NvcmUuYzoyMzg3OnN0YXRpYyBpbnQgc21jcl9idWZfbWFwX3VzYWJsZV9saW5rcyhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcbm5ldC9zbWMvc21jX2NvcmUuYy0yMzg4LVx0XHRcdFx0ICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfZGVzYywgYm9vbCBpc19ybWIpXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jPTI0MTI9c3RhdGljIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNtY2RfbmV3X2J1Zl9jcmVhdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTI0NDctXG5uZXQvc21jL3NtY19jb3JlLmM6MjQ0ODpzdGF0aWMgaW50IF9fc21jX2J1Zl9jcmVhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIGJvb2wgaXNfc21jZCwgYm9vbCBpc19ybWIpXG5uZXQvc21jL3NtY19jb3JlLmMtMjQ0OS17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTI1MzktXG5uZXQvc21jL3NtY19jb3JlLmM6MjU0MDp2b2lkIHNtY19zbmRidWZfc3luY19zZ19mb3JfZGV2aWNlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcbm5ldC9zbWMvc21jX2NvcmUuYy0yNTQxLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjU0OS1cbm5ldC9zbWMvc21jX2NvcmUuYzoyNTUwOnZvaWQgc21jX3JtYl9zeW5jX3NnX2Zvcl9jcHUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKVxubmV0L3NtYy9zbWNfY29yZS5jLTI1NTEte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNTcxLSAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjI1NzI6aW50IHNtY19idWZfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBib29sIGlzX3NtY2QpXG5uZXQvc21jL3NtY19jb3JlLmMtMjU3My17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTI1OTgtXG5uZXQvc21jL3NtY19jb3JlLmM6MjU5OTppbnQgc21jZF9idWZfYXR0YWNoKHN0cnVjdCBzbWNfc29jayAqc21jKVxubmV0L3NtYy9zbWNfY29yZS5jLTI2MDAte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz0yNjM0PXN0YXRpYyBpbmxpbmUgaW50IHNtY19ybWJfcmVzZXJ2ZV9ydG9rZW5faWR4KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNjQ0LVxubmV0L3NtYy9zbWNfY29yZS5jOjI2NDU6c3RhdGljIGludCBzbWNfcnRva2VuX2ZpbmRfYnlfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgaW50IGxua19pZHgsXG5uZXQvc21jL3NtY19jb3JlLmMtMjY0Ni1cdFx0XHRcdCAgIHUzMiBya2V5KVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNjU4LS8qIHNldCBydG9rZW4gZm9yIGEgbmV3IGxpbmsgdG8gYW4gZXhpc3Rpbmcgcm1iICovXG5uZXQvc21jL3NtY19jb3JlLmM6MjY1OTp2b2lkIHNtY19ydG9rZW5fc2V0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBpbnQgbGlua19pZHgsIGludCBsaW5rX2lkeF9uZXcsXG5uZXQvc21jL3NtY19jb3JlLmMtMjY2MC1cdFx0ICAgIF9fYmUzMiBud19ya2V5X2tub3duLCBfX2JlNjQgbndfdmFkZHIsIF9fYmUzMiBud19ya2V5KVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNjcxLS8qIHNldCBydG9rZW4gZm9yIGEgbmV3IGxpbmsgd2hvc2UgbGlua19pZCBpcyBnaXZlbiAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjI2NzI6dm9pZCBzbWNfcnRva2VuX3NldDIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGludCBydG9rX2lkeCwgaW50IGxpbmtfaWQsXG5uZXQvc21jL3NtY19jb3JlLmMtMjY3My1cdFx0ICAgICBfX2JlNjQgbndfdmFkZHIsIF9fYmUzMiBud19ya2V5KVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNjkyLS8qIGFkZCBhIG5ldyBydG9rZW4gZnJvbSBwZWVyICovXG5uZXQvc21jL3NtY19jb3JlLmM6MjY5MzppbnQgc21jX3J0b2tlbl9hZGQoc3RydWN0IHNtY19saW5rICpsbmssIF9fYmU2NCBud192YWRkciwgX19iZTMyIG53X3JrZXkpXG5uZXQvc21jL3NtY19jb3JlLmMtMjY5NC17XG4tLVxubmV0L3NtYy9zbWNfY29yZS5jLTI3MTYtLyogZGVsZXRlIGFuIHJ0b2tlbiBmcm9tIGFsbCBsaW5rcyAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjI3MTc6aW50IHNtY19ydG9rZW5fZGVsZXRlKHN0cnVjdCBzbWNfbGluayAqbG5rLCBfX2JlMzIgbndfcmtleSlcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzE4LXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjczNy0vKiBzYXZlIHJrZXkgYW5kIGRtYV9hZGRyIHJlY2VpdmVkIGZyb20gcGVlciBkdXJpbmcgY2xjIGhhbmRzaGFrZSAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjI3Mzg6aW50IHNtY19ybWJfcnRva2VuX2hhbmRsaW5nKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubixcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzM5LVx0XHRcdCAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjc0OC1cbm5ldC9zbWMvc21jX2NvcmUuYzoyNzQ5OnN0YXRpYyB2b2lkIHNtY19jb3JlX2dvaW5nX2F3YXkodm9pZClcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzUwLXtcbi0tXG5uZXQvc21jL3NtY19jb3JlLmMtMjc3MC0vKiBDbGVhbiB1cCBhbGwgU01DIGxpbmsgZ3JvdXBzICovXG5uZXQvc21jL3NtY19jb3JlLmM6Mjc3MTpzdGF0aWMgdm9pZCBzbWNfbGdyc19zaHV0ZG93bih2b2lkKVxubmV0L3NtYy9zbWNfY29yZS5jLTI3NzIte1xuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yNzg0LVxubmV0L3NtYy9zbWNfY29yZS5jOjI3ODU6c3RhdGljIGludCBzbWNfY29yZV9yZWJvb3RfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLFxubmV0L3NtYy9zbWNfY29yZS5jLTI3ODYtXHRcdFx0XHQgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYz0yNzk4PWludCBfX2luaXQgc21jX2NvcmVfaW5pdCh2b2lkKVxuLS1cbm5ldC9zbWMvc21jX2NvcmUuYy0yODAzLS8qIENhbGxlZCAoZnJvbSBzbWNfZXhpdCkgd2hlbiBtb2R1bGUgaXMgcmVtb3ZlZCAqL1xubmV0L3NtYy9zbWNfY29yZS5jOjI4MDQ6dm9pZCBzbWNfY29yZV9leGl0KHZvaWQpXG5uZXQvc21jL3NtY19jb3JlLmMtMjgwNS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NTA5CgkJCQkJCQlvdXRwdXQ6IDU1CgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IFNlbGVjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB0YXJnZXRzIGZvciBmdXp6aW5nIHRoaXMgU01DIGNvZGUuIEkgc2VlIHRoYXQgYHNtY3JfbGlua19pbml0YCwgYHNtY19pYmRldl9pbml0X2JlZ2luYCwgYHNtY19pYmRldl9pbml0X2VuZGAsIGBzbWNfaWJkZXZfZ2V0YCwgYHNtY19pYmRldl9wdXRgLCBhbmQgYHNtY19pbml0X2luZm9fZnJlZWAgYXJlIGFsbCBub24tc3RhdGljLiBHb29kLCB0aGF0IGJyb2FkZW5zIHRoZSBzY29wZSBmb3IgcG90ZW50aWFsIGluc3RydW1lbnRhdGlvbi4KCkhvd2V2ZXIsIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoaWNoIG9uZXMgYXJlICppbnRlcmVzdGluZyogZm9yIGZ1enppbmcuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIG9uZXMgdGhhdCByZXByZXNlbnQga2V5IGxvZ2ljIG9yIGFyZSBsaWtlbHkgdG8gaGF2ZSBjb21wbGV4IHN0YXRlIHRyYW5zaXRpb25zLiBJJiMzOTttIHRoaW5raW5nIGBzbWNfY29ubmVjdGAsIGBzbWNfbGlzdGVuYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYW5kIGBzbWNyX2xpbmtfaW5pdGAgYXJlIHRoZSBwcmltZSBjYW5kaWRhdGVzLgoKQnV0IHdhaXQgYSBtaW51dGUuLi4gYHNtY19jb25uZWN0YCBhbmQgYHNtY19saXN0ZW5gIGFyZSBzdGFuZGFyZCBzeXNjYWxscywgcmlnaHQ/IFRoZXkmIzM5O3JlIGdvaW5nIHRvIGJlIGhlYXZpbHkgZXhlcmNpc2VkIHBhdGhzIGZvciBhbnkgc29ja2V0LWJhc2VkIGNvbW11bmljYXRpb24uIEkmIzM5O20gcHJvYmFibHkgZ29pbmcgdG8gZmluZCB0b25zIG9mIGV4aXN0aW5nIGZ1enppbmcgb24gdGhvc2UsIGFuZCB0aGUgU01DLXNwZWNpZmljIGxvZ2ljIGVtYmVkZGVkIHRoZXJlIG1pZ2h0IGJlIG1pbmltYWwuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGZvY3VzaW5nIG9uIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGFuZCBgc21jcl9saW5rX2luaXRgIHdpbGwgZ2l2ZSBtZSBtb3JlICYjMzQ7YmFuZyBmb3IgbXkgYnVjay4mIzM0OyBUaGV5IHNlZW0gbW9yZSBTTUMtc3BlY2lmaWMgYW5kIGxlc3MgbGlrZWx5IHRvIGJlIHNhdHVyYXRlZCB3aXRoIHN0YW5kYXJkIHNvY2tldCBmdXp6aW5nLgoKTm93LCBJJiMzOTttIGFsc28gc2VlaW5nIHRoYXQgYHNtY19wbmV0X2RldGVybWluZV9naWRgIGhhcyBiZWVuIG1vZGlmaWVkLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIHRoYXQmIzM5O3Mgc3RhdGljLCBiZWNhdXNlIEkgY291bGQmIzM5O3ZlIG1pc3NlZCBpdCBhdCB0aGUgc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oaW50fHZvaWR8c3RhdGljIGludHxzdGF0aWMgdm9pZCkgW2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jL3NtY19wbmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NtYy9zbWNfcG5ldC5jPTg1PXN0YXRpYyBib29sIHNtY19wbmV0X21hdGNoKHU4ICpwbmV0aWQxLCB1OCAqcG5ldGlkMilcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMTAwLSAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjEwMTpzdGF0aWMgaW50IHNtY19wbmV0X3JlbW92ZV9ieV9wbmV0aWQoc3RydWN0IG5ldCAqbmV0LCBjaGFyICpwbmV0X25hbWUpXG5uZXQvc21jL3NtY19wbmV0LmMtMTAyLXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMTg0LSAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjE4NTpzdGF0aWMgaW50IHNtY19wbmV0X2FkZF9ieV9uZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxubmV0L3NtYy9zbWNfcG5ldC5jLTE4Ni17XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTIxNi0gKi9cbm5ldC9zbWMvc21jX3BuZXQuYzoyMTc6c3RhdGljIGludCBzbWNfcG5ldF9yZW1vdmVfYnlfbmRldihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbm5ldC9zbWMvc21jX3BuZXQuYy0yMTgte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYz0zMjk9c3RhdGljIHN0cnVjdCBzbWNkX2RldiAqc21jX3BuZXRfZmluZF9zbWNkKGNoYXIgKnNtY2RfbmFtZSlcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMzQ3LVxubmV0L3NtYy9zbWNfcG5ldC5jOjM0ODpzdGF0aWMgaW50IHNtY19wbmV0X2FkZF9ldGgoc3RydWN0IHNtY19wbmV0dGFibGUgKnBuZXR0YWJsZSwgc3RydWN0IG5ldCAqbmV0LFxubmV0L3NtYy9zbWNfcG5ldC5jLTM0OS1cdFx0XHQgICAgY2hhciAqZXRoX25hbWUsIGNoYXIgKnBuZXRfbmFtZSlcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtNDEwLVxubmV0L3NtYy9zbWNfcG5ldC5jOjQxMTpzdGF0aWMgaW50IHNtY19wbmV0X2FkZF9pYihzdHJ1Y3Qgc21jX3BuZXR0YWJsZSAqcG5ldHRhYmxlLCBjaGFyICppYl9uYW1lLFxubmV0L3NtYy9zbWNfcG5ldC5jLTQxMi1cdFx0XHQgICB1OCBpYl9wb3J0LCBjaGFyICpwbmV0X25hbWUpXG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTQ3Ni0gKi9cbm5ldC9zbWMvc21jX3BuZXQuYzo0Nzc6c3RhdGljIGludCBzbWNfcG5ldF9lbnRlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5uZXQvc21jL3NtY19wbmV0LmMtNDc4LXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtNTMzLS8qIENvbnZlcnQgYW4gc21jX3BuZXRlbnRyeSB0byBhIG5ldGxpbmsgYXR0cmlidXRlIHNlcXVlbmNlICovXG5uZXQvc21jL3NtY19wbmV0LmM6NTM0OnN0YXRpYyBpbnQgc21jX3BuZXRfc2V0X25sYShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxubmV0L3NtYy9zbWNfcG5ldC5jLTUzNS1cdFx0XHQgICAgc3RydWN0IHNtY19wbmV0ZW50cnkgKnBuZXRlbGVtKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy01NTktXG5uZXQvc21jL3NtY19wbmV0LmM6NTYwOnN0YXRpYyBpbnQgc21jX3BuZXRfYWRkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvc21jL3NtY19wbmV0LmMtNTYxLXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtNTY2LVxubmV0L3NtYy9zbWNfcG5ldC5jOjU2NzpzdGF0aWMgaW50IHNtY19wbmV0X2RlbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3NtYy9zbWNfcG5ldC5jLTU2OC17XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTU3Ni1cbm5ldC9zbWMvc21jX3BuZXQuYzo1Nzc6c3RhdGljIGludCBzbWNfcG5ldF9kdW1wX3N0YXJ0KHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9zbWMvc21jX3BuZXQuYy01Nzgte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy01ODItXG5uZXQvc21jL3NtY19wbmV0LmM6NTgzOnN0YXRpYyBpbnQgc21jX3BuZXRfZHVtcGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9zbWMvc21jX3BuZXQuYy01ODQtXHRcdFx0ICAgICB1MzIgcG9ydGlkLCB1MzIgc2VxLCB1MzIgZmxhZ3MsXG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTYwMC1cbm5ldC9zbWMvc21jX3BuZXQuYzo2MDE6c3RhdGljIGludCBfc21jX3BuZXRfZHVtcChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBwb3J0aWQsXG5uZXQvc21jL3NtY19wbmV0LmMtNjAyLVx0XHRcdCAgdTMyIHNlcSwgdTggKnBuZXRpZCwgaW50IHN0YXJ0X2lkeClcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtNjMyLVxubmV0L3NtYy9zbWNfcG5ldC5jOjYzMzpzdGF0aWMgaW50IHNtY19wbmV0X2R1bXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxubmV0L3NtYy9zbWNfcG5ldC5jLTYzNC17XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTY0NS0vKiBSZXRyaWV2ZSBvbmUgUE5FVElEIGVudHJ5ICovXG5uZXQvc21jL3NtY19wbmV0LmM6NjQ2OnN0YXRpYyBpbnQgc21jX3BuZXRfZ2V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvc21jL3NtY19wbmV0LmMtNjQ3LXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtNjczLSAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjY3NDpzdGF0aWMgaW50IHNtY19wbmV0X2ZsdXNoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvc21jL3NtY19wbmV0LmMtNjc1LXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmM9NzI2PWJvb2wgc21jX3BuZXRfaXNfbmRldl9wbmV0aWQoc3RydWN0IG5ldCAqbmV0LCB1OCAqcG5ldGlkKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy03NDQtXG5uZXQvc21jL3NtY19wbmV0LmM6NzQ1OnN0YXRpYyBpbnQgc21jX3BuZXRfYWRkX3BuZXRpZChzdHJ1Y3QgbmV0ICpuZXQsIHU4ICpwbmV0aWQpXG5uZXQvc21jL3NtY19wbmV0LmMtNzQ2LXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtNzcwLVxubmV0L3NtYy9zbWNfcG5ldC5jOjc3MTpzdGF0aWMgdm9pZCBzbWNfcG5ldF9yZW1vdmVfcG5ldGlkKHN0cnVjdCBuZXQgKm5ldCwgdTggKnBuZXRpZClcbm5ldC9zbWMvc21jX3BuZXQuYy03NzIte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy03ODgtXG5uZXQvc21jL3NtY19wbmV0LmM6Nzg5OnN0YXRpYyB2b2lkIHNtY19wbmV0X2FkZF9iYXNlX3BuZXRpZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvc21jL3NtY19wbmV0LmMtNzkwLVx0XHRcdFx0ICAgICB1OCAqbmRldl9wbmV0aWQpXG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTgwMy0vKiBjcmVhdGUgaW5pdGlhbCBsaXN0IG9mIG5ldGRldmljZSBwbmV0aWRzICovXG5uZXQvc21jL3NtY19wbmV0LmM6ODA0OnN0YXRpYyB2b2lkIHNtY19wbmV0X2NyZWF0ZV9wbmV0aWRzX2xpc3Qoc3RydWN0IG5ldCAqbmV0KVxubmV0L3NtYy9zbWNfcG5ldC5jLTgwNS17XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTgyNS0vKiBjbGVhbiB1cCBsaXN0IG9mIG5ldGRldmljZSBwbmV0aWRzICovXG5uZXQvc21jL3NtY19wbmV0LmM6ODI2OnN0YXRpYyB2b2lkIHNtY19wbmV0X2Rlc3Ryb3lfcG5ldGlkc19saXN0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC9zbWMvc21jX3BuZXQuYy04Mjcte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy04MzgtXG5uZXQvc21jL3NtY19wbmV0LmM6ODM5OnN0YXRpYyBpbnQgc21jX3BuZXRfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcbm5ldC9zbWMvc21jX3BuZXQuYy04NDAtXHRcdFx0XHQgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYz04NzI9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBzbWNfbmV0ZGV2X25vdGlmaWVyID0ge1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy04NzYtLyogaW5pdCBuZXR3b3JrIG5hbWVzcGFjZSAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjg3NzppbnQgc21jX3BuZXRfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L3NtYy9zbWNfcG5ldC5jLTg3OC17XG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jPTg5Mz1pbnQgX19pbml0IHNtY19wbmV0X2luaXQodm9pZClcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtOTA3LS8qIGV4aXQgbmV0d29yayBuYW1lc3BhY2UgKi9cbm5ldC9zbWMvc21jX3BuZXQuYzo5MDg6dm9pZCBzbWNfcG5ldF9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvc21jL3NtY19wbmV0LmMtOTA5LXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtOTE0LVxubmV0L3NtYy9zbWNfcG5ldC5jOjkxNTp2b2lkIHNtY19wbmV0X2V4aXQodm9pZClcbm5ldC9zbWMvc21jX3BuZXQuYy05MTYte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYz05NDM9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICpwbmV0X2ZpbmRfYmFzZV9uZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy05NTAtXG5uZXQvc21jL3NtY19wbmV0LmM6OTUxOnN0YXRpYyBpbnQgc21jX3BuZXRfZmluZF9uZGV2X3BuZXRpZF9ieV90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbm5ldC9zbWMvc21jX3BuZXQuYy05NTItXHRcdFx0XHRcdCAgICAgIHU4ICpwbmV0aWQpXG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTk3Ni1cbm5ldC9zbWMvc21jX3BuZXQuYzo5Nzc6c3RhdGljIGludCBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICppYmRldiwgaW50IGksXG5uZXQvc21jL3NtY19wbmV0LmMtOTc4LVx0XHRcdFx0ICBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy0xMDA1LS8qIGZpbmQgYSByb2NlIGRldmljZSBmb3IgdGhlIGdpdmVuIHBuZXRpZCAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjEwMDY6c3RhdGljIHZvaWQgX3NtY19wbmV0X2ZpbmRfcm9jZV9ieV9wbmV0aWQodTggKnBuZXRfaWQsXG5uZXQvc21jL3NtY19wbmV0LmMtMTAwNy1cdFx0XHRcdFx0ICBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy0xMDM0LS8qIGZpbmQgYWx0ZXJuYXRlIHJvY2UgZGV2aWNlIHdpdGggc2FtZSBwbmV0X2lkLCB2bGFuX2lkIGFuZCBuZXQgbmFtZXNwYWNlICovXG5uZXQvc21jL3NtY19wbmV0LmM6MTAzNTp2b2lkIHNtY19wbmV0X2ZpbmRfYWx0X3JvY2Uoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG5uZXQvc21jL3NtY19wbmV0LmMtMTAzNi1cdFx0XHQgICAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSxcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMTA0Ni0gKi9cbm5ldC9zbWMvc21jX3BuZXQuYzoxMDQ3OnN0YXRpYyB2b2lkIHNtY19wbmV0X2ZpbmRfcmRtYV9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDQ4LVx0XHRcdFx0ICAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMTA4NS0gKi9cbm5ldC9zbWMvc21jX3BuZXQuYzoxMDg2OnN0YXRpYyB2b2lkIHNtY19wbmV0X2ZpbmRfcm9jZV9ieV9wbmV0aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5uZXQvc21jL3NtY19wbmV0LmMtMTA4Ny1cdFx0XHRcdFx0IHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXG4tLVxubmV0L3NtYy9zbWNfcG5ldC5jLTExMDQtXG5uZXQvc21jL3NtY19wbmV0LmM6MTEwNTpzdGF0aWMgdm9pZCBzbWNfcG5ldF9maW5kX2lzbV9ieV9wbmV0aWQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5uZXQvc21jL3NtY19wbmV0LmMtMTEwNi1cdFx0XHRcdFx0c3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMTEzNC0gKi9cbm5ldC9zbWMvc21jX3BuZXQuYzoxMTM1OnZvaWQgc21jX3BuZXRfZmluZF9yb2NlX3Jlc291cmNlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbm5ldC9zbWMvc21jX3BuZXQuYy0xMTM2LXtcbi0tXG5uZXQvc21jL3NtY19wbmV0LmMtMTE1MS1cbm5ldC9zbWMvc21jX3BuZXQuYzoxMTUyOnZvaWQgc21jX3BuZXRfZmluZF9pc21fcmVzb3VyY2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxubmV0L3NtYy9zbWNfcG5ldC5jLTExNTMte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy0xMTcyLSAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjExNzM6aW50IHNtY19wbmV0aWRfYnlfdGFibGVfaWIoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2LCB1OCBpYl9wb3J0KVxubmV0L3NtYy9zbWNfcG5ldC5jLTExNzQte1xuLS1cbm5ldC9zbWMvc21jX3BuZXQuYy0xMjAxLSAqL1xubmV0L3NtYy9zbWNfcG5ldC5jOjEyMDI6aW50IHNtY19wbmV0aWRfYnlfdGFibGVfc21jZChzdHJ1Y3Qgc21jZF9kZXYgKnNtY2RkZXYpXG5uZXQvc21jL3NtY19wbmV0LmMtMTIwMy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNTczCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgVGFyZ2V0IExpc3QgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIG5hcnJvdyBkb3duIHRoZSBiZXN0IGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gYHNtY19wbmV0X2RldGVybWluZV9naWRgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgaXQmIzM5O3Mgbm90IGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSBvdXRzaWRlIGl0cyBjb21waWxhdGlvbiB1bml0IOKAkyB0aGF0JiMzOTtzIG9mZiB0aGUgdGFibGUuIE5vdywgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBvbmUgYXJlIHRoZSBvbmVzIEkmIzM5O20gaW50ZXJlc3RlZCBpbi4KCkZpcnN0IHBhc3M6IEkmIzM5O3ZlIGlkZW50aWZpZWQgYHNtY3JfbGlua19pbml0YCwgYHNtY19pYmRldl9pbml0X2JlZ2luYCwgYHNtY19pYmRldl9pbml0X2VuZGAsIGBzbWNfaWJkZXZfZ2V0YCwgYHNtY19pYmRldl9wdXRgLCBgc21jX2luaXRfaW5mb19mcmVlYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYW5kIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AuIEkgbmVlZCB0byBzb3J0IHRoZXNlLgoKQXJlIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAgYW5kIGBzbWNfaWJkZXZfaW5pdF9lbmRgIGFjdHVhbGx5IGV4cG9ydGVkPyBBaCwgbm8sIHRoZXkmIzM5O3JlIGp1c3Qgbm9uLXN0YXRpYywgc28gdGhlIHNhbWUgc2NvcGluZyBydWxlcyBzdGlsbCBhcHBseS4gVGhhdCBtYWtlcyBgc21jX2xsY19jbGlfYWRkX2xpbmtgIGFuZCBgc21jX2xsY19zcnZfYWRkX2xpbmtgIGF0dHJhY3RpdmUgY2FuZGlkYXRlcyBiZWNhdXNlIHRoZXkmIzM5O3JlIGxpa2VseSBpbnZvbHZlZCBpbiBoYW5kbGluZyBuZXR3b3JrIGNvbW11bmljYXRpb24sIHdoaWNoIGlzIGEgY29tbW9uIGZ1enppbmcgdGFyZ2V0LiBgc21jcl9saW5rX2luaXRgIGFsc28gc2VlbXMgcHJvbWlzaW5nIGFzIGEgY29yZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gYHNtY19pbml0X2luZm9fZnJlZWAgbG9va3MgbGlrZSBhIGNsZWFudXAgZnVuY3Rpb24sIHNvIEkmIzM5O2xsIGtlZXAgYW4gZXllIG9uIGl0LCBidXQgaXQgbWlnaHQgbm90IGJlIHRoZSAqYmVzdCogc3RhcnRpbmcgcG9pbnQuCgpJJiMzOTtsbCBjb25maXJtIHRoZSByZWFjaGFiaWxpdHkgb2YgYHNtY19sbGNfY2xpX2FkZF9saW5rYC4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYHNtY19sbGNfcHJvY2Vzc19jbGlfYWRkX2xpbmtgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgc21jX2xsY19ldmVudF9oYW5kbGVyYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHNtY19sbGNfZXZlbnRfd29ya2AuIFRoYXQgY2hhaW4gdGVsbHMgbWUgdGhpcyBnZXRzIHRyaWdnZXJlZCBieSBpbmNvbWluZyBuZXR3b3JrIHRyYWZmaWMuIERlZmluaXRlbHkgcmVhY2hhYmxlLCBzbyBnb29kLgoKTGV0JiMzOTtzIHN1bW1hcml6ZSB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IEkgYW0gY29uc2lkZXJpbmcgZm9yIGZ1enppbmc6IGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNyX2xpbmtfaW5pdGAsIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAsIGFuZCBgc21jX2liZGV2X2luaXRfZW5kYC4KCkhvbGQgb24uLi4gSSYjMzk7bSBsb29raW5nIGF0IGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAgYW5kIGBzbWNfaWJkZXZfaW5pdF9lbmRgLiBUaGV5JiMzOTtyZSBzaW1wbGUgd3JhcHBlcnMgd2l0aCBtdXRleCBsb2NrcyBhbmQgYXRvbWljIG9wZXJhdGlvbnM6CgpgYGBjCmludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCnsKCWludCByYyA9IDA7CgoJbXV0ZXhfbG9jaygmYW1wO3NtY19pYl9kZXZpY2VzLm11dGV4KTsKCWlmIChsaXN0X2VtcHR5KCZhbXA7c21jaWJkZXYtJmd0O2xpc3QpKQoJCXJjID0gLUVOT0RFVjsKCWVsc2UKCQlhdG9taWNfaW5jKCZhbXA7c21jaWJkZXYtJmd0O2luaXRfY250KTsKCW11dGV4X3VubG9jaygmYW1wO3NtY19pYl9kZXZpY2VzLm11dGV4KTsKCXJldHVybiByYzsKfQoKdm9pZCBzbWNfaWJkZXZfaW5pdF9lbmQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KQp7CgltdXRleF9sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwoJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmFtcDtzbWNpYmRldi0mZ3Q7aW5pdF9jbnQpKQoJCXdha2VfdXAoJmFtcDtzbWNpYmRldi0mZ3Q7aW5pdF93YWl0KTsKCW11dGV4X3VubG9jaygmYW1wO3NtY19pYl9kZXZpY2VzLm11dGV4KTsKfQpgYGAKClRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHRvbyBzaW1wbGUgdG8gb2ZmZXIgbWVhbmluZ2Z1bCBmdXp6aW5nIHRhcmdldHMuIFNvLCBJJiMzOTtsbCBkcm9wIHRoZXNlIGZyb20gdGhlIHByaW1hcnkgbGlzdC4gYHNtY3JfbGlua19pbml0YCBhcHBlYXJzIGJldHRlciBiZWNhdXNlIGl0IGlzIG1vcmUgY29tcGxleCB0aGFuIHRoZSBwcmV2aW91cyB0d28uIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AgYW5kIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AgYXJlIHN0aWxsIHNvbGlkIGNob2ljZXMuCgpMZXQmIzM5O3MgbWFrZSBzdXJlIEkgZGlkbiYjMzk7dCBtaXNzIGFueSBvdGhlciBmdW5jdGlvbnMgbW9kaWZpZWQgaW4gdGhpcyBhcmVhLiBPaCwgYHNtY19pYl9uZGV2X2NoYW5nZWAgaXMgbW9kaWZpZWQuCgpgYGBjCnZvaWQgc21jX2liX25kZXZfY2hhbmdlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50KQpgYGAKCk5vLCB3YWl0LiBUaGF0IG1vZGlmaWNhdGlvbiBsb29rcyBsaWtlIGNvbnRleHQsIG5vdCBmdW5jdGlvbmFsaXR5LiBBbmQgdGhlIGRpZmYgc2hvd3MgYSBzdGF0aWMgYHNtY19pYmRldl9yZWxlYXNlYCBiZWluZyBpbnRyb2R1Y2VkLiBUaGF0JiMzOTtzIG5vdCB0aGUgcHJpbWFyeSBmb2N1cyBoZXJlLgoKV2hhdCBhYm91dCB0aGUgbmV3IGZ1bmN0aW9ucywgYHNtY19pYmRldl9nZXRgIGFuZCBgc21jX2liZGV2X3B1dGA/CgpgYGBjCnZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCnZvaWQgc21jX2liZGV2X3B1dChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCmBgYAoKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWc9Mj1jb25maWcgU01DXG5uZXQvc21jL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XCYjMzQ7XG5uZXQvc21jL0tjb25maWc6NDpcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU1xubmV0L3NtYy9LY29uZmlnLTUtXHRoZWxwXG4tLVxubmV0L3NtYy9LY29uZmlnPTE0PWNvbmZpZyBTTUNfRElBR1xubmV0L3NtYy9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbm5ldC9zbWMvS2NvbmZpZzoxNjpcdGRlcGVuZHMgb24gU01DXG5uZXQvc21jL0tjb25maWctMTctXHRoZWxwXG4tLVxubmV0L3NtYy9LY29uZmlnPTIzPWNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcbm5ldC9zbWMvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1wmIzM0O1xubmV0L3NtYy9LY29uZmlnOjI1Olx0ZGVwZW5kcyBvbiBTTUMgXHUwMDI2XHUwMDI2IEJQRl9KSVQgXHUwMDI2XHUwMDI2IEJQRl9TWVNDQUxMXG5uZXQvc21jL0tjb25maWctMjYtXHRkZWZhdWx0IHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU5OTcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTt2ZSBnb3QgYERJQlNgIHBlZ2dlZCBhcyBhIGRlcGVuZGVuY3ksIG5vIHN1cnByaXNlcyB0aGVyZS4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCBvdGhlciBwYWNrYWdlcyBvciBsaWJyYXJpZXMgYXJlIHJlbHlpbmcgb24gdGhhdCwgZXNwZWNpYWxseSBhcyBpdCByZWxhdGVzIHRvIG15IGBJTkZJTklCQU5EYCBpbXBsZW1lbnRhdGlvbj8gVGltZSB0byBkaXZlIGludG8gdGhlIGRlcGVuZGVuY3kgdHJlZSBhbmQgbWFwIG91dCB3aGF0IEkmIzM5O20gZGVhbGluZyB3aXRoLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgY3JlYXRlcyBhIHRhbmdsZSBvciBpZiBpdCYjMzk7cyBmYWlybHkgc3RyYWlnaHRmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5GSU5JQkFORCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyOm1lbnVjb25maWcgSU5GSU5JQkFORFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTE2PWlmIElORklOSUJBTkRcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTE3LVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6MTg6Y29uZmlnIElORklOSUJBTkRfVVNFUl9NQURcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCB1c2Vyc3BhY2UgTUFEIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjI4OmNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgdXNlcnNwYWNlIGFjY2VzcyAodmVyYnMgYW5kIENNKVwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTM5LVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDA6Y29uZmlnIElORklOSUJBTkRfVVNFUl9BQ0NFU1NfQ09SRVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDEtXHRib29sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDMtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NDpjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDUtXHRib29sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNTAtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MTpjb25maWcgSU5GSU5JQkFORF9PTl9ERU1BTkRfUEFHSU5HXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01Mi1cdGJvb2wgXCYjMzQ7SW5maW5pQmFuZCBvbi1kZW1hbmQgcGFnaW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02My1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjY0OmNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTY1LVx0Ym9vbCBcJiMzNDtSRE1BL0NNXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNzEtXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo3Mjpjb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TX0NPTkZJR0ZTXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03My1cdGJvb2xcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy04MC1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjgxOmNvbmZpZyBJTkZJTklCQU5EX1ZJUlRfRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy04Mi1cdGRlZl9ib29sICFISUdITUVNXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NzM5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDaGVja2luZyBJbmZpbmliYW5kIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbWV0aWN1bG91c2x5IHZlcmlmeSB0aGUgYElORklOSUJBTkRgIGRlcGVuZGVuY2llcy4gVGhpcyBpc24mIzM5O3QganVzdCBhIHN1cmZhY2UtbGV2ZWwgc2NhbjsgSSBuZWVkIHRvIGVuc3VyZSBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGNvbXBvbmVudHMgYXJlIGludGVyY29ubmVjdGVkLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBoYXJkd2FyZSwgZmlybXdhcmUgdmVyc2lvbnMsIGRyaXZlciBjb21wYXRpYmlsaXR5IGFjcm9zcyB0aGUgc3RhY2ssIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgaW5zdGFsbGVkIHNvZnR3YXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvcnJlY3QgZmFicmljIGNvbmZpZ3VyYXRpb24sIGZvY3VzaW5nIG9uIGxpbmsgc3BlZWRzLCByb3V0aW5nIHRhYmxlcywgYW5kIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3MuIEZ1cnRoZXIsIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgc29mdHdhcmUgbGF5ZXI6IGFyZSB0aGUgbmVjZXNzYXJ5IGxpYnJhcmllcyBpbnN0YWxsZWQ/IEFyZSB0aGV5IHRoZSBjb3JyZWN0IHZlcnNpb25zPyBEb2VzIHRoZSBhcHBsaWNhdGlvbiBlbnZpcm9ubWVudCBjb3JyZWN0bHkgYWNjb3VudCBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBJbmZpbmlCYW5kIGZhYnJpYz8gSSBzaG91bGQgYmUgbG9va2luZyBhdCB0aGUgT1MgbW9kdWxlcywgdGhlIE1QSSBpbXBsZW1lbnRhdGlvbiAoaWYgYXBwbGljYWJsZSksIGFuZCBhbnkgY3VzdG9tIGRyaXZlcnMgaW52b2x2ZWQuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBpbXBhY3Qgb2YgYW55IHJlY2VudCBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCB0aGF0IG1heSBhZmZlY3QgdGhlIEluZmluaUJhbmQgc2V0dXAuIEFueSBrZXJuZWwgdXBncmFkZXMgb3IgZHJpdmVyIHVwZGF0ZXMgd291bGQgbmVlZCBzcGVjaWFsIGF0dGVudGlvbi4gVWx0aW1hdGVseSwgYSBzbW9vdGggYW5kIHJlbGlhYmxlIEluZmluaUJhbmQgY29uZmlndXJhdGlvbiBpcyBwYXJhbW91bnQgZm9yIHBlYWsgc3lzdGVtIHBlcmZvcm1hbmNlLCBzbyBhIHJpZ29yb3VzIGFuZCB3ZWxsLWNvbnNpZGVyZWQgaW52ZXN0aWdhdGlvbiBpcyBlc3NlbnRpYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0yPW1lbnVjb25maWcgSU5GSU5JQkFORFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDpcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjY6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjc6XHRkZXBlbmRzIG9uICFBTFBIQVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctOC1cdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTE4PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUFEXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgdXNlcnNwYWNlIE1BRCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyMDpcdGRlcGVuZHMgb24gSU5GSU5JQkFORFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMjEtXHRoZWxwXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc9Mjg9Y29uZmlnIElORklOSUJBTkRfVVNFUl9BQ0NFU1NcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7SW5maW5pQmFuZCB1c2Vyc3BhY2UgYWNjZXNzICh2ZXJicyBhbmQgQ00pXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzozMDpcdGRlcGVuZHMgb24gTU1VXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0zMS1cdGhlbHBcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz00ND1jb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDUtXHRib29sXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NjpcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX0FDQ0VTUyAhPSBuXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NzpcdGRlcGVuZHMgb24gTU1VXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00OC1cdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTUxPWNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTUyLVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG9uLWRlbWFuZCBwYWdpbmcgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NTM6XHRkZXBlbmRzIG9uIElORklOSUJBTkRfVVNFUl9NRU1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTU0LVx0c2VsZWN0IE1NVV9OT1RJRklFUlxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTY0PWNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTY1LVx0Ym9vbCBcJiMzNDtSRE1BL0NNXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo2NjpcdGRlcGVuZHMgb24gSU5GSU5JQkFORFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNjctXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz03Mj1jb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TX0NPTkZJR0ZTXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03My1cdGJvb2xcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjc0Olx0ZGVwZW5kcyBvbiBJTkZJTklCQU5EX0FERFJfVFJBTlMgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTIFx1MDAyNlx1MDAyNiAhKElORklOSUJBTkQ9eSBcdTAwMjZcdTAwMjYgQ09ORklHRlNfRlM9bSlcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTc1LVx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NzQ4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gUXVhbmRhcnkqKgoKQWxyaWdodCwgbGV0IG1lIG1hcCB0aGlzIG91dC4gVG8gZ2V0IGBJTkZJTklCQU5EYCB3b3JraW5nLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgTkVUYCwgYW5kIGBJTkVUYCBlbmFibGVkLCBhbmQsIGltcG9ydGFudGx5LCB0aGF0IEkgKmRvbiYjMzk7dCogaGF2ZSBhbiBgQUxQSEFgIGFyY2hpdGVjdHVyZS4gU28sIGJhc2VkIG9uIHRob3NlIGRlcGVuZGVuY2llcywgbXkgYEVuYWJsZUNvbmZpZ3NgIHNob3VsZCBhYnNvbHV0ZWx5IGluY2x1ZGUgYFNNQ2AsIGBJTkZJTklCQU5EYCwgYW5kIGBESUJTYC4KCkhhbmcgb24gYSBzZWNvbmTigKYgRG9lcyBgU01DYCByZXF1aXJlIGBTTUNfRElBR2A/IE5vcGUsIHNjcmF0Y2ggdGhhdC4gSXQgZG9lc24mIzM5O3QuIEFuZCBJIHJlY2FsbCB0aGF0IGBTTUNgIHdvcmtzIHdpdGgga2VybmVsLXNwYWNlIFJETUEsIHNvIGl0IGRvZXNuJiMzOTt0IG5lZWQgYElORklOSUJBTkRfVVNFUl9BQ0NFU1NgLiBSaWdodC4gCgpOb3csIGlmIEkmIzM5O20gdHJ5aW5nIHRvIHRlc3QgYFNNQ2Agb3ZlciBSRE1BIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dCwgSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0byBzaW11bGF0ZSBhbiBSRE1BIGVudmlyb25tZW50LiBUaGF0IG1lYW5zIGNvbnNpZGVyaW5nIHdoZXRoZXIgYFJETUFfUlhFYCAoU29mdCBSb0NFKSwgYFNNQ19MT2AgKGxvb3BiYWNrKSwgb3IgYElTTWAgKGR1bW15IElTTSkgYXJlIHJlbGV2YW50LiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSYjMzk7cyBhIGR1bW15IElTTSBvciBsb29wYmFjayBhdmFpbGFibGUsIGJlY2F1c2UgdGhhdCB3aWxsIGFsbG93IGZvciBhIGZ1bGx5IGNvbnRhaW5lZCwgc2ltdWxhdGVkIGVudmlyb25tZW50LiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggYXBwcm9hY2ggaXMgYmVzdCBzdWl0ZWQgdG8gbXkgdGVzdCBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU01DJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NtYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L3NtYy9LY29uZmlnOjI6Y29uZmlnIFNNQ1xubmV0L3NtYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuLS1cbm5ldC9zbWMvS2NvbmZpZy0xMy1cbm5ldC9zbWMvS2NvbmZpZzoxNDpjb25maWcgU01DX0RJQUdcbm5ldC9zbWMvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O1NNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3NtYy9LY29uZmlnLTIyLVxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcbm5ldC9zbWMvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODQxMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqUmV2aXNpdGluZyB0aGUgU01DIEtjb25maWcqKgoKT2theSwgdGltZSB0byBjaXJjbGUgYmFjayBhbmQgZ2l2ZSBgbmV0L3NtYy9LY29uZmlnYCBhbm90aGVyIGxvb2suIEkmIzM5O3ZlIGJlZW4gZm9jdXNpbmcgb24gW21lbnRpb24gdGhlIHJlbGV2YW50IGFyZWEgb3IgdGFzaywgZS5nLiwgdGhlIHJlY2VudCBSRE1BIGltcHJvdmVtZW50cywgYSBzcGVjaWZpYyBidWcsIGEgcGVyZm9ybWFuY2UgaXNzdWUsIG9yIGEgbmV3IGZlYXR1cmVdLiBHaXZlbiB0aGUgY29tcGxleGl0aWVzIG9mIFNNQyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjaywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsIGluIHRoYXQgY29uZmlndXJhdGlvbiBmaWxlLiBUaGVyZSBjb3VsZCBiZSBzdWJ0bGUgZGVwZW5kZW5jaWVzLCBvcHRpb25zIEkgb3Zlcmxvb2tlZCwgb3IgaW1wbGljYXRpb25zIHJlbGF0ZWQgdG8gW21lbnRpb24gYSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gb3Igc3Vic3lzdGVtXS4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBLY29uZmlnIGlzIGNvcnJlY3RseSByZWZsZWN0aW5nIGFueSBjaGFuZ2VzIEkmIzM5O3ZlIG1hZGUsIGFuZCBoYXNuJiMzOTt0IGludHJvZHVjZWQgYW55IHJlZ3Jlc3Npb25zIG9yIGNvbmZsaWN0cy4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnl0aGluZyBJIG5lZWQgdG8gZXhwbGljaXRseSBlbmFibGUsIGRpc2FibGUsIG9yIGFkanVzdCwgb3IgaWYgYW55IG5ldyBvcHRpb25zIGhhdmUgYmVlbiBhZGRlZC4gVGltZSB0byBkaXZlIGJhY2sgaW4gYW5kIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc21jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU01DXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBESUJTXG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIFNNQy1SIHByb3ZpZGVzIGEgXCYjMzQ7c29ja2V0cyBvdmVyIFJETUFcJiMzNDsgc29sdXRpb24gbWFraW5nIHVzZSBvZlxuICAgNzpcdFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcbiAgIDg6XHRcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cbiAgIDk6XHRcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xuICAxMDpcdFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxuICAxMTpcdFxuICAxMjpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFNNQ19ESUFHXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBTTUNcbiAgMTc6XHRcdGhlbHBcbiAgMTg6XHRcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcbiAgMTk6XHRcdCAgc21jc3MuXG4gIDIwOlx0XG4gIDIxOlx0XHQgIGlmIHVuc3VyZSwgc2F5IFkuXG4gIDIyOlx0XG4gIDIzOlx0Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxuICAyNDpcdFx0Ym9vbCBcJiMzNDtHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XCYjMzQ7XG4gIDI1Olx0XHRkZXBlbmRzIG9uIFNNQyBcdTAwMjZcdTAwMjYgQlBGX0pJVCBcdTAwMjZcdTAwMjYgQlBGX1NZU0NBTExcbiAgMjY6XHRcdGRlZmF1bHQgeVxuICAyNzpcdFx0aGVscFxuICAyODpcdFx0ICBTTUNfSFNfQ1RSTF9CUEYgZW5hYmxlcyBzdXBwb3J0IHRvIHJlZ2lzdGVyIGdlbmVyaWMgZUJQRiBob29rIGZvciBTTUNcbiAgMjk6XHRcdCAgaGFuZHNoYWtlIGZsb3csIHdoaWNoIG9mZmVyIG11Y2ggZ3JlYXRlciBmbGV4aWJpbGl0eSBpbiBtb2RpZnlpbmcgdGhlIGJlaGF2aW9yXG4gIDMwOlx0XHQgIG9mIHRoZSBTTUMgcHJvdG9jb2wgc3RhY2sgY29tcGFyZWQgdG8gYSBjb21wbGV0ZSBrZXJuZWwtYmFzZWQgYXBwcm9hY2guIFNlbGVjdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTA5NwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXM6CgoqKkludmVzdGlnYXRpbmcgdGhlIFNNQy9ESUJTIERlcGVuZGVuY3kqKgoKQWxyaWdodCwgc28gYFNNQ2AmIzM5O3MgZnVuY3Rpb25hbGl0eSBoaW5nZXMgb24gYERJQlNgLiBUaW1lIHRvIGRpdmUgZGVlcGVyIGFuZCBzZWUgZXhhY3RseSBob3cgdGhhdCByZWxhdGlvbnNoaXAgaXMgZGVmaW5lZC4gTXkgaW1tZWRpYXRlIGNvdXJzZSBvZiBhY3Rpb24/IExldCYjMzk7cyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlIOKAkyBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYGRyaXZlcnMvZGlicy9LY29uZmlnYCB0byBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jeSBpcy4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBnaXZlbiBteSBleHBlcmllbmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBpbnRlcmFjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9kaWJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0Y29uZmlnIERJQlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0RpcmVjdCBJbnRlcm5hbCBCdWZmZXIgU2hhcmluZyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IG5cbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcbiAgIDc6XHRcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcbiAgIDg6XHRcdCAgaW50byBhIHJlbW90ZSBidWZmZXIuXG4gICA5Olx0XG4gIDEwOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBwcm92aWRlIHRoZSBhYnN0cmFjdGlvbiBsYXllciBiZXR3ZWVuXG4gIDExOlx0XHQgIGRpYnMgZGV2aWNlcyBhbmQgZGlicyBjbGllbnRzIGxpa2UgdGhlIFNNQyBwcm90b2NvbC5cbiAgMTI6XHRcdCAgVGhlIG1vZHVsZSBuYW1lIGlzIGRpYnMuXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIERJQlNfTE9cbiAgMTU6XHRcdGJvb2wgXCYjMzQ7SW50cmEtT1Mgc2hvcnRjdXQgd2l0aCBkaWJzIGxvb3BiYWNrXCYjMzQ7XG4gIDE2Olx0XHRkZXBlbmRzIG9uIERJQlNcbiAgMTc6XHRcdGRlZmF1bHQgblxuICAxODpcdFx0aGVscFxuICAxOTpcdFx0ICBESUJTX0xPIGVuYWJsZXMgdGhlIGNyZWF0aW9uIG9mIGFuIHNvZnR3YXJlLWVtdWxhdGVkIGRpYnMgZGV2aWNlXG4gIDIwOlx0XHQgIG5hbWVkIGxvIHdoaWNoIGNhbiBiZSB1c2VkIGZvciB0cmFuc2ZlcnJpbmcgZGF0YSB3aGVuIGNvbW11bmljYXRpb25cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1NDMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIERldmljZSBFbXVsYXRpb24gYW5kIE5ldHdvcmsgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzeXN0ZW0gc2V0dXAsIGFuZCB0aGUgcG90ZW50aWFsIGZvciBzb21lIHNlcmlvdXMgdGVzdGluZyBwb3BzIHJpZ2h0IGludG8gbXkgaGVhZC4gVGhlIGZhY3QgdGhhdCB3ZSBoYXZlIGBESUJTX0xPYCBhdmFpbGFibGUgaGVyZSwgYW5kIHRoYXQgaXQmIzM5O3MgYSAqc29mdHdhcmUtZW11bGF0ZWQqIGRpYnMgZGV2aWNlLCBpbW1lZGlhdGVseSBzdWdnZXN0cyBhIGtleSBzdHJhdGVneTogZW5hYmxlIHRoYXQgdGhpbmchIFdoeT8gQmVjYXVzZSBnZXR0aW5nIFNNQyBmdXp6ZWQgb3ZlciBsb29wYmFjayBpcyBqdXN0IGdvb2QgcHJhY3RpY2UsIGFuZCB0aGlzIHNlZW1zIGxpa2UgdGhlIHBlcmZlY3QsIGxvdy1oYW5naW5nIGZydWl0IG9wcG9ydHVuaXR5LiBXZSBjYW4gZ2FpbiB2YWx1YWJsZSBpbnNpZ2h0cyBpbnRvIHRoZSBoYW5kbGluZyBvZiBTTUMgdHJhZmZpYyBpbiBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQuCgpUaGVuLCBtb3Zpbmcgb24gdG8gdGhlIFJvQ0Ugc2lkZSBvZiB0aGluZ3MsIGBSRE1BX1JYRWAsIFNvZnQgUm9DRSwgbmF0dXJhbGx5IGNhdGNoZXMgbXkgZXllLiBJdCYjMzk7cyB0aGUgc2FtZSBwcmluY2lwbGUgYXMgdGhlIGBESUJTX0xPYCDigJMgYSBzb2Z0d2FyZS1iYXNlZCBpbXBsZW1lbnRhdGlvbi4gRW5hYmxpbmcgdGhhdCBpcyBhIG11c3QuIFRoaXMgYWxsb3dzIHVzIHRvIGFzc2VzcyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHN5c3RlbS4gSSYjMzk7bSBhbHJlYWR5IGVudmlzaW9uaW5nIHRoZSB0ZXN0IGNhc2VzIHdlIGNhbiBidWlsZCBhcm91bmQgdGhpcyBzZXR1cCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJETUFfUlhFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnOjI6Y29uZmlnIFJETUFfUlhFXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NvZnR3YXJlIFJETUEgb3ZlciBFdGhlcm5ldCAoUm9DRSkgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5OTU0CgkJCQkJCQlvdXRwdXQ6IDI3MQoJCQkJCQkJdGhvdWdodHM6IDEyMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFNNQyBTdWJzeXN0ZW0gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGFyZWFzIHRoaXMgcGF0Y2ggbW9kaWZpZXMgd2l0aGluIHRoZSBTTUMgc3Vic3lzdGVtLiBJIHN0YXJ0ZWQgYnkgbG9va2luZyBhdCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGFuZCB0aGVuIHRoZSByZWxldmFudCBmdW5jdGlvbnMuCgpUaGUgYEVuYWJsZUNvbmZpZ3NgIGFyZTogYFNNQ2AsIGBJTkZJTklCQU5EYCwgYERJQlNgLCBgRElCU19MT2AsIGFuZCBgUkRNQV9SWEVgLiBUaGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zLCBJIHJlYWxpemUgYERJQlNfTE9gIGlzIGEgYm9vbGVhbiwgd2hpbGUgYERJQlNgLCBgUkRNQV9SWEVgLCBgU01DYCwgYW5kIGBJTkZJTklCQU5EYCBhcmUgdHJpc3RhdGVzLiBHb29kIHRvIGtlZXAgaW4gbWluZCBmb3IgdGVzdGluZyBsYXRlci4KCk5vdywgdGhlIGltcG9ydGFudCBmdW5jdGlvbnMuIEluaXRpYWxseSwgSSBjb25zaWRlcmVkIHNldmVyYWw6IGBzbWNyX2xpbmtfaW5pdGAsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AsIGBzbWNfaW5pdF9pbmZvX2ZyZWVgLCBgc21jX2liZGV2X2luaXRfYmVnaW5gLCBhbmQgYHNtY19pYmRldl9pbml0X2VuZGAuIEkgcXVpY2tseSBkaXNjb3VudGVkIGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGFuZCB0aGUgYGliZGV2YCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgYXMgdGhlc2UgYXJlIG9ubHkgY2xlYW51cCBhbmQgdmVyeSBzaW1wbGUgaW5pdGlhbGl6YXRpb25zLCByZXNwZWN0aXZlbHksIG5vdCBjb21wbGV4IGxvZ2ljIHBhdGhzLiBJIGFsc28gY2hlY2tlZCBgc21jX3BuZXRfZGV0ZXJtaW5lX2dpZGAsIGBzbWNfbGlzdGVuX3dvcmtgLCBgX19zbWNfY29ubmVjdGAsIGFuZCBgc21jX2ZpbmRfcmRtYV92Ml9kZXZpY2Vfc2VydmAsIHdoaWNoIGFyZSBhbGwgc3RhdGljLiBXaGlsZSB0aGVzZSBhcmUgcmVsZXZhbnQsIGBfX3NtY19jb25uZWN0YCBpcyBjYWxsZWQgYnkgYHNtY19jb25uZWN0X3dvcmtgIGFuZCBgc21jX2Nvbm5lY3RgIChzeXNjYWxsIGhhbmRsZXIpIGFuZCBgc21jX2xpc3Rlbl93b3JrYCBpcyBhIHdvcmtxdWV1ZSBoYW5kbGVyLiBUaGUgc3lzY2FsbHMgYXJlIGxpa2VseSB0byBiZSBmdXp6ZWQgYnkgZGVmYXVsdCBhbmQgdGhlIExMQyBmdW5jdGlvbnMgbG9vayBsaWtlIHRoZXkgd2lsbCBiZSBoYW5kbGluZyBpbmNvbWluZyBwYWNrZXRzLCBzbyB0aGVzZSBhcmUgYWxsIGdvb2QgdG8gdGVzdC4KCkkgYWxzbyBjaGVja2VkIGBzbWNfaWJkZXZfZ2V0YCBhbmQgYHNtY19pYmRldl9wdXRgLCBidXQgdGhlc2UgYXJlIGp1c3QgcmVmY291bnQgd3JhcHBlcnMgc28gbm90IHRoZSBmb2N1cy4KClNvLCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uOgoqICAgYHNtY3JfbGlua19pbml0YAoqICAgYHNtY19sbGNfY2xpX2FkZF9saW5rYAoqICAgYHNtY19sbGNfc3J2X2FkZF9saW5rYAoKVGhlc2UgYXJlIG5vbi1zdGF0aWMgYW5kIGhhbmRsZSBsaW5rIGluaXRpYWxpemF0aW9uIGFuZCBtYW5hZ2VtZW50LCBjcnVjaWFsIGZvciB0ZXN0aW5nIHRoZSBjb25uZWN0aW9uIHBhdGhzLgoKRmluYWxseSwgYSBxdWljayByZXZpZXcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBjb25maXJtZWQgdGhhdCBib3RoIGBESUJTYCBhbmQgYERJQlNfTE9gIGFyZSBwcmVzZW50IGluIHRoZSB0cmVlIHVuZGVyIGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AuCgpOb3csIEkgY2FuIGNsZWFybHkgYXJ0aWN1bGF0ZSB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhdGNoLiBUaGUgbWFpbiBpc3N1ZSBpcyBhIHJlZmVyZW5jZSBsZWFrIG9mIHRoZSBgc21jX2liX2RldmljZWAuIFRoaXMgcGF0Y2ggZml4ZXMgdGhhdCB3aXRoIGEgbmV3IGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGZ1bmN0aW9uIGFuZCBjYXJlZnVsIHJlZmNvdW50aW5nIHdpdGggYHNtY19pYmRldl9nZXRgL2BwdXRgLCBhbG9uZyB3aXRoIGFuIGBpbml0X2NudGAgdG8gbW9uaXRvciB1bnB1Ymxpc2hlZCBpbml0aWFsaXphdGlvbnMuIFRoZSBjaGFuZ2VzIGNvdmVyIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAobGlua2VkIHRvIGBfX3NtY19jb25uZWN0YCBhbmQgYHNtY19saXN0ZW5fd29ya2AsIHdoaWNoIGluIHR1cm4gY2FsbCB0aGUgZnVuY3Rpb25zIEkmIzM5O3ZlIGlkZW50aWZpZWQpIGFuZCBMTEMgbGluayBtYW5hZ2VtZW50IChgc21jX2xsY19jbGlfYWRkX2xpbmtgIGFuZCBgc21jX2xsY19zcnZfYWRkX2xpbmtgKS4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgYW5kIG5ldHdvcmsgcGFja2V0cywgd2hpY2ggaXMgaWRlYWwgZm9yIHRlc3RpbmcuIFRvIHRlc3QgY29tcHJlaGVuc2l2ZWx5LCBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSB0aGUgU01DLCBJbmZpbmlCYW5kLCBhbmQgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIFJETUEvRElCUyBkZXZpY2VzIChgUkRNQV9SWEVgIGFuZCBgRElCU19MT2ApLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U01DJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkQmIzM0OywKICAgICYjMzQ7RElCUyYjMzQ7LAogICAgJiMzNDtESUJTX0xPJiMzNDssCiAgICAmIzM0O1JETUFfUlhFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c21jcl9saW5rX2luaXQmIzM0OywKICAgICYjMzQ7c21jX2xsY19jbGlfYWRkX2xpbmsmIzM0OywKICAgICYjMzQ7c21jX2xsY19zcnZfYWRkX2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZWZlcmVuY2UgbGVhayBvZiBgc21jX2liX2RldmljZWAgaW4gdGhlIFNNQyBzdWJzeXN0ZW0gYnkgaW50cm9kdWNpbmcgYHNtY19pbml0X2luZm9fZnJlZWAgYW5kIHByb3Blcmx5IG1hbmFnaW5nIHRoZSBvYmplY3QgbGlmZXRpbWUgd2l0aCByZWZlcmVuY2UgY291bnRpbmcgKGBzbWNfaWJkZXZfZ2V0YC9gcHV0YCkuIEl0IGFsc28gYWRkcyBhbiBpbml0aWFsaXphdGlvbiBjb3VudGVyIChgaW5pdF9jbnRgKSB0byB0cmFjayB1bnB1Ymxpc2hlZCBsaW5rIGluaXRpYWxpemF0aW9ucy4gVGhlIGNoYW5nZXMgYWZmZWN0IGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoYF9fc21jX2Nvbm5lY3RgLCBgc21jX2xpc3Rlbl93b3JrYCkgYW5kIExMQyBsaW5rIG1hbmFnZW1lbnQgKGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGBzbWNfbGxjX3Nydl9hZGRfbGlua2ApLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzb2NrZXQgb3BlcmF0aW9ucyBhbmQgaW5jb21pbmcgbmV0d29yayBwYWNrZXRzLiBUbyBwcm9wZXJseSB0ZXN0IHRoaXMsIHdlIG5lZWQgdG8gZW5hYmxlIFNNQywgSW5maW5pQmFuZCwgYW5kIHNvZnR3YXJlLWVtdWxhdGVkIFJETUEvRElCUyBkZXZpY2VzIChgUkRNQV9SWEVgLCBgRElCU19MT2ApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTTUMmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORCYjMzQ7LAogICAgJiMzNDtESUJTJiMzNDssCiAgICAmIzM0O0RJQlNfTE8mIzM0OywKICAgICYjMzQ7UkRNQV9SWEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzbWNyX2xpbmtfaW5pdCYjMzQ7LAogICAgJiMzNDtzbWNfbGxjX2NsaV9hZGRfbGluayYjMzQ7LAogICAgJiMzNDtzbWNfbGxjX3Nydl9hZGRfbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlZmVyZW5jZSBsZWFrIG9mIGBzbWNfaWJfZGV2aWNlYCBpbiB0aGUgU01DIHN1YnN5c3RlbSBieSBpbnRyb2R1Y2luZyBgc21jX2luaXRfaW5mb19mcmVlYCBhbmQgcHJvcGVybHkgbWFuYWdpbmcgdGhlIG9iamVjdCBsaWZldGltZSB3aXRoIHJlZmVyZW5jZSBjb3VudGluZyAoYHNtY19pYmRldl9nZXRgL2BwdXRgKS4gSXQgYWxzbyBhZGRzIGFuIGluaXRpYWxpemF0aW9uIGNvdW50ZXIgKGBpbml0X2NudGApIHRvIHRyYWNrIHVucHVibGlzaGVkIGxpbmsgaW5pdGlhbGl6YXRpb25zLiBUaGUgY2hhbmdlcyBhZmZlY3QgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChgX19zbWNfY29ubmVjdGAsIGBzbWNfbGlzdGVuX3dvcmtgKSBhbmQgTExDIGxpbmsgbWFuYWdlbWVudCAoYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNvY2tldCBvcGVyYXRpb25zIGFuZCBpbmNvbWluZyBuZXR3b3JrIHBhY2tldHMuIFRvIHByb3Blcmx5IHRlc3QgdGhpcywgd2UgbmVlZCB0byBlbmFibGUgU01DLCBJbmZpbmlCYW5kLCBhbmQgc29mdHdhcmUtZW11bGF0ZWQgUkRNQS9ESUJTIGRldmljZXMgKGBSRE1BX1JYRWAsIGBESUJTX0xPYCkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMDc6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyByZWZlcmVuY2UgY291bnRpbmcgZm9yIGBzbWNfaWJfZGV2aWNlYCBvYmplY3RzIHRvIGZpeCBvYmplY3QgbGlmZXRpbWUgaXNzdWVzIChsaWtlbHkgdXNlLWFmdGVyLWZyZWUpLiBJdCByZXBsYWNlcyBga2ZyZWUoaW5pKWAgd2l0aCBgc21jX2luaXRfaW5mb19mcmVlKGluaSlgLCB3aGljaCBkcm9wcyB0aGUgcmVmZXJlbmNlcyBpZiB0aGV5IHdlcmUgYWNxdWlyZWQuIFRoZSBuZXcgYm9vbGVhbiBmaWVsZHMgYGliX2Rldl9yZWZgIGFuZCBgaWJfZGV2X3YyX3JlZmAgYXJlIGFkZGVkIHRvIGBzdHJ1Y3Qgc21jX2luaXRfaW5mb2AsIHdoaWNoIGlzIGFsd2F5cyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgICh2aWEgYGt6YWxsb2Nfb2JqYCksIGVuc3VyaW5nIHRoZXkgYXJlIHByb3Blcmx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIHRoaXMgcGF0Y2ggYWRkcmVzc2VzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3NzdmMzA3MTVjNmQ1MDU0NGQ2ZjgwYzAzMGFiNWJiYjExYzkxNDJiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMjMgMDc6Mzg6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc21jL2FmX3NtYy5jIGIvbmV0L3NtYy9hZl9zbWMuYwppbmRleCBlOWY5M2IzYWI0MzViLi5kNzgxZGVlMWIzMjkzIDEwMDY0NAotLS0gYS9uZXQvc21jL2FmX3NtYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvYWZfc21jLmMKQEAgLTEyMjUsNyAmIzQzOzEyMjUsNyBAQCB2b2lkIHNtY19maWxsX2dpZF9saXN0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLAogCSAgICAgICBTTUNfR0lEX1NJWkUpOwogCiBvdXQ6Ci0Ja2ZyZWUoYWx0X2luaSk7CiYjNDM7CXNtY19pbml0X2luZm9fZnJlZShhbHRfaW5pKTsKIH0KIAogc3RhdGljIGludCBzbWNfY29ubmVjdF9yZG1hX3YyX3ByZXBhcmUoc3RydWN0IHNtY19zb2NrICpzbWMsCkBAIC0xNTk2LDE0ICYjNDM7MTU5NiwxNCBAQCBzdGF0aWMgaW50IF9fc21jX2Nvbm5lY3Qoc3RydWN0IHNtY19zb2NrICpzbWMpCiAJU01DX1NUQVRfQ0xOVF9TVUNDX0lOQyhzb2NrX25ldChzbWMtJmd0O2NsY3NvY2stJmd0O3NrKSwgYWNsYyk7CiAJc21jX2Nvbm5lY3RfaXNtX3ZsYW5fY2xlYW51cChpbmkpOwogCWtmcmVlKGJ1Zik7Ci0Ja2ZyZWUoaW5pKTsKJiM0MzsJc21jX2luaXRfaW5mb19mcmVlKGluaSk7CiAJcmV0dXJuIDA7CiAKIHZsYW5fY2xlYW51cDoKIAlzbWNfY29ubmVjdF9pc21fdmxhbl9jbGVhbnVwKGluaSk7CiAJa2ZyZWUoYnVmKTsKIGZhbGxiYWNrOgotCWtmcmVlKGluaSk7CiYjNDM7CXNtY19pbml0X2luZm9fZnJlZShpbmkpOwogCXJldHVybiBzbWNfY29ubmVjdF9kZWNsaW5lX2ZhbGxiYWNrKHNtYywgcmMsIHZlcnNpb24pOwogfQogCkBAIC0yMzQ0LDcgJiM0MzsyMzQ0LDEwIEBAIHN0YXRpYyB2b2lkIHNtY19maW5kX3JkbWFfdjJfZGV2aWNlX3NlcnYoc3RydWN0IHNtY19zb2NrICpuZXdfc21jLAogCiBub3RfZm91bmQ6CiAJaW5pLSZndDtzbWNyX3ZlcnNpb24gJmFtcDs9IH5TTUNfVjI7CiYjNDM7CWlmIChpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjJfcmVmKQomIzQzOwkJc21jX2liZGV2X3B1dChpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjIpOwogCWluaS0mZ3Q7c21jcnYyLmliX2Rldl92MiA9IE5VTEw7CiYjNDM7CWluaS0mZ3Q7c21jcnYyLmliX2Rldl92Ml9yZWYgPSBmYWxzZTsKIAlpbmktJmd0O2NoZWNrX3NtY3J2MiA9IGZhbHNlOwogfQogCkBAIC0yNTg4LDcgJiM0MzsyNTkxLDcgQEAgc3RhdGljIHZvaWQgc21jX2xpc3Rlbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzbWNfbGlzdGVuX2RlY2xpbmUobmV3X3NtYywgcmMsIGluaSA/IGluaS0mZ3Q7Zmlyc3RfY29udGFjdF9sb2NhbCA6IDAsCiAJCQkgICBwcm9wb3NhbF92ZXJzaW9uKTsKIG91dF9mcmVlOgotCWtmcmVlKGluaSk7CiYjNDM7CXNtY19pbml0X2luZm9fZnJlZShpbmkpOwogCWtmcmVlKGJ1Zik7CiB9CiAKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NvcmUuYyBiL25ldC9zbWMvc21jX2NvcmUuYwppbmRleCAxODE2NDc5ODI0OTBiLi5kOTdiYzczMjMxMDY5IDEwMDY0NAotLS0gYS9uZXQvc21jL3NtY19jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfY29yZS5jCkBAIC01NSw2ICYjNDM7NTUsMTcgQEAgc3RhdGljIHZvaWQgX19zbWNfbGdyX3Rlcm1pbmF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBzb2Z0KTsKIAogc3RhdGljIHZvaWQgc21jX2xpbmtfZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKJiM0Mzt2b2lkIHNtY19pbml0X2luZm9fZnJlZShzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKQomIzQzO3sKJiM0MzsJaWYgKCFpbmkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CWlmIChpbmktJmd0O2liX2Rldl9yZWYpCiYjNDM7CQlzbWNfaWJkZXZfcHV0KGluaS0mZ3Q7aWJfZGV2KTsKJiM0MzsJaWYgKGluaS0mZ3Q7c21jcnYyLmliX2Rldl92Ml9yZWYpCiYjNDM7CQlzbWNfaWJkZXZfcHV0KGluaS0mZ3Q7c21jcnYyLmliX2Rldl92Mik7CiYjNDM7CWtmcmVlKGluaSk7CiYjNDM7fQomIzQzOwogLyogcmV0dXJuIGhlYWQgb2YgbGluayBncm91cCBsaXN0IGFuZCBpdHMgbG9jayBmb3IgYSBnaXZlbiBsaW5rIGdyb3VwICovCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXN0X2hlYWQgKnNtY19sZ3JfbGlzdF9oZWFkKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLAogCQkJCQkJICBzcGlubG9ja190ICoqbGdyX2xvY2spCkBAIC03OTMsMTQgJiM0Mzs4MDQsMjEgQEAgaW50IHNtY3JfbGlua19pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xpbmsgKmxuaywKIAlpbnQgcmM7CiAKIAlpZiAobGdyLSZndDtzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHsKLQkJbG5rLSZndDtzbWNpYmRldiA9IGluaS0mZ3Q7c21jcnYyLmliX2Rldl92MjsKJiM0MzsJCXNtY2liZGV2ID0gaW5pLSZndDtzbWNydjIuaWJfZGV2X3YyOwogCQlsbmstJmd0O2licG9ydCA9IGluaS0mZ3Q7c21jcnYyLmliX3BvcnRfdjI7Ci0JCWxuay0mZ3Q7d3Jfcnhfc2dlX2NudCA9IGxuay0mZ3Q7c21jaWJkZXYtJmd0O2liZGV2LSZndDthdHRycy5tYXhfcmVjdl9zZ2UgJmx0OyAyID8gMSA6IDI7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlzbWNpYmRldiA9IGluaS0mZ3Q7aWJfZGV2OwomIzQzOwkJbG5rLSZndDtpYnBvcnQgPSBpbmktJmd0O2liX3BvcnQ7CiYjNDM7CX0KJiM0MzsJcmMgPSBzbWNfaWJkZXZfaW5pdF9iZWdpbihzbWNpYmRldik7CiYjNDM7CWlmIChyYykKJiM0MzsJCXJldHVybiByYzsKJiM0MzsJbG5rLSZndDtzbWNpYmRldiA9IHNtY2liZGV2OwomIzQzOwlpZiAobGdyLSZndDtzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHsKJiM0MzsJCWxuay0mZ3Q7d3Jfcnhfc2dlX2NudCA9IHNtY2liZGV2LSZndDtpYmRldi0mZ3Q7YXR0cnMubWF4X3JlY3Zfc2dlICZsdDsgMiA/IDEgOiAyOwogCQlsbmstJmd0O3dyX3J4X2J1ZmxlbiA9IHNtY19saW5rX3NoYXJlZF92Ml9yeGJ1ZihsbmspID8KIAkJCVNNQ19XUl9CVUZfU0laRSA6IFNNQ19XUl9CVUZfVjJfU0laRTsKIAl9IGVsc2UgewotCQlsbmstJmd0O3NtY2liZGV2ID0gaW5pLSZndDtpYl9kZXY7Ci0JCWxuay0mZ3Q7aWJwb3J0ID0gaW5pLSZndDtpYl9wb3J0OwogCQlsbmstJmd0O3dyX3J4X3NnZV9jbnQgPSAxOwogCQlsbmstJmd0O3dyX3J4X2J1ZmxlbiA9IFNNQ19XUl9CVUZfU0laRTsKIAl9CkBAIC04ODIsNiAmIzQzOzkwMCw3IEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssCiAJaWYgKCFhdG9taWNfZGVjX3JldHVybigmYW1wO3NtY2liZGV2LSZndDtsbmtfY250KSkKIAkJd2FrZV91cCgmYW1wO3NtY2liZGV2LSZndDtsbmtzX2RlbGV0ZWQpOwogCXNtY19sZ3JfcHV0KGxncik7IC8qIGxncl9ob2xkIGFib3ZlICovCiYjNDM7CXNtY19pYmRldl9pbml0X2VuZChzbWNpYmRldik7CiAJcmV0dXJuIHJjOwogfQogCkBAIC05OTcsNiAmIzQzOzEwMTYsOCBAQCBzdGF0aWMgaW50IHNtY19sZ3JfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKQogCXNwaW5fbG9ja19iaChsZ3JfbG9jayk7CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2xnci0mZ3Q7bGlzdCwgbGdyX2xpc3QpOwogCXNwaW5fdW5sb2NrX2JoKGxncl9sb2NrKTsKJiM0MzsJaWYgKCFpbmktJmd0O2lzX3NtY2QpCiYjNDM7CQlzbWNfaWJkZXZfaW5pdF9lbmQobG5rLSZndDtzbWNpYmRldik7CiAJcmV0dXJuIDA7CiAKIGZyZWVfd3E6CmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmggYi9uZXQvc21jL3NtY19jb3JlLmgKaW5kZXggNWMxOGYwOGE0YzhhNS4uOWY1YTY5YTMwY2IzZiAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zbWMvc21jX2NvcmUuaApAQCAtNDAzLDYgJiM0Mzs0MDMsNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mb19zbWNydjIgewogCiAJLyogT3V0cHV0IGZpZWxkcyB3aGVuIHNhZGRyIGlzIHNldCAqLwogCXN0cnVjdCBzbWNfaWJfZGV2aWNlCSppYl9kZXZfdjI7CiYjNDM7CWJvb2wJCQlpYl9kZXZfdjJfcmVmOyAvKiBvd25zIGFuIHNtY19pYmRldiByZWZlcmVuY2UgKi8KIAl1OAkJCWliX3BvcnRfdjI7CiAJdTgJCQlpYl9naWRfdjJbU01DX0dJRF9TSVpFXTsKIApAQCAtNDM4LDYgJiM0Mzs0MzksNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyB7CiAJdTgJCQlwZWVyX21hY1tFVEhfQUxFTl07CiAJdTgJCQlwZWVyX3N5c3RlbWlkW1NNQ19TWVNURU1JRF9MRU5dOwogCXN0cnVjdCBzbWNfaWJfZGV2aWNlCSppYl9kZXY7CiYjNDM7CWJvb2wJCQlpYl9kZXZfcmVmOyAvKiBvd25zIGFuIHNtY19pYmRldiByZWZlcmVuY2UgKi8KIAl1OAkJCWliX2dpZFtTTUNfR0lEX1NJWkVdOwogCXU4CQkJaWJfcG9ydDsKIAl1MzIJCQlpYl9jbGNxcG47CkBAIC01OTQsNiAmIzQzOzU5Niw3IEBAIHZvaWQgc21jX3J0b2tlbl9zZXQyKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBpbnQgcnRva19pZHgsIGludCBsaW5rX2lkLAogdm9pZCBzbWNfc25kYnVmX3N5bmNfc2dfZm9yX2RldmljZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pOwogdm9pZCBzbWNfcm1iX3N5bmNfc2dfZm9yX2NwdShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pOwogaW50IHNtY192bGFuX2J5X3RjcHNrKHN0cnVjdCBzb2NrZXQgKmNsY3NvY2ssIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpOwomIzQzO3ZvaWQgc21jX2luaXRfaW5mb19mcmVlKHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpOwogCiB2b2lkIHNtY19jb25uX2ZyZWUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKTsKIGludCBzbWNfY29ubl9jcmVhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpOwpkaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuYyBiL25ldC9zbWMvc21jX2liLmMKaW5kZXggOWJiNDk1NzA3NDQ1ZS4uZDg1ODQ1M2M2NGQ5MiAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfaWIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc21jL3NtY19pYi5jCkBAIC05MzQsNiAmIzQzOzkzNCw0NCBAQCB2b2lkIHNtY19pYl9uZGV2X2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdW5zaWduZWQgbG9uZyBldmVudCkKIAltdXRleF91bmxvY2soJmFtcDtzbWNfaWJfZGV2aWNlcy5tdXRleCk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBzbWNfaWJkZXZfcmVsZWFzZShzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCiYjNDM7ewomIzQzOwlwdXRfZGV2aWNlKCZhbXA7c21jaWJkZXYtJmd0O2liZGV2LSZndDtkZXYpOwomIzQzOwlrZnJlZShzbWNpYmRldik7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpCiYjNDM7ewomIzQzOwlyZWZjb3VudF9pbmMoJmFtcDtzbWNpYmRldi0mZ3Q7cmVmY250KTsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBzbWNfaWJkZXZfcHV0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldikKJiM0Mzt7CiYjNDM7CWlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoJmFtcDtzbWNpYmRldi0mZ3Q7cmVmY250KSkKJiM0MzsJCXNtY19pYmRldl9yZWxlYXNlKHNtY2liZGV2KTsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IHNtY19pYmRldl9pbml0X2JlZ2luKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldikKJiM0Mzt7CiYjNDM7CWludCByYyA9IDA7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtzbWNfaWJfZGV2aWNlcy5tdXRleCk7CiYjNDM7CWlmIChsaXN0X2VtcHR5KCZhbXA7c21jaWJkZXYtJmd0O2xpc3QpKQomIzQzOwkJcmMgPSAtRU5PREVWOwomIzQzOwllbHNlCiYjNDM7CQlhdG9taWNfaW5jKCZhbXA7c21jaWJkZXYtJmd0O2luaXRfY250KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwomIzQzOwlyZXR1cm4gcmM7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldikKJiM0Mzt7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtzbWNfaWJfZGV2aWNlcy5tdXRleCk7CiYjNDM7CWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZhbXA7c21jaWJkZXYtJmd0O2luaXRfY250KSkKJiM0MzsJCXdha2VfdXAoJmFtcDtzbWNpYmRldi0mZ3Q7aW5pdF93YWl0KTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwomIzQzO30KJiM0MzsKIC8qIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpYl9yZWdpc3Rlcl9jbGllbnQoKSAqLwogc3RhdGljIGludCBzbWNfaWJfYWRkX2RldihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldikKIHsKQEAgLTk0OSw3ICYjNDM7OTg3LDExIEBAIHN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJc21jaWJkZXYtJmd0O2liZGV2ID0gaWJkZXY7CiYjNDM7CWdldF9kZXZpY2UoJmFtcDtpYmRldi0mZ3Q7ZGV2KTsKJiM0MzsJcmVmY291bnRfc2V0KCZhbXA7c21jaWJkZXYtJmd0O3JlZmNudCwgMSk7CiAJSU5JVF9XT1JLKCZhbXA7c21jaWJkZXYtJmd0O3BvcnRfZXZlbnRfd29yaywgc21jX2liX3BvcnRfZXZlbnRfd29yayk7CiYjNDM7CWF0b21pY19zZXQoJmFtcDtzbWNpYmRldi0mZ3Q7aW5pdF9jbnQsIDApOwomIzQzOwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZhbXA7c21jaWJkZXYtJmd0O2luaXRfd2FpdCk7CiAJYXRvbWljX3NldCgmYW1wO3NtY2liZGV2LSZndDtsbmtfY250LCAwKTsKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZhbXA7c21jaWJkZXYtJmd0O2xua3NfZGVsZXRlZCk7CiAJbXV0ZXhfaW5pdCgmYW1wO3NtY2liZGV2LSZndDttdXRleCk7CkBAIC0xMDAwLDExICYjNDM7MTA0MiwxNCBAQCBzdGF0aWMgdm9pZCBzbWNfaWJfcmVtb3ZlX2RldihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdm9pZCAqY2xpZW50X2RhdGEpCiAJbXV0ZXhfdW5sb2NrKCZhbXA7c21jX2liX2RldmljZXMubXV0ZXgpOwogCXByX3dhcm5fcmF0ZWxpbWl0ZWQoJiMzNDtzbWM6IHJlbW92aW5nIGliIGRldmljZSAlc1xuJiMzNDssCiAJCQkgICAgc21jaWJkZXYtJmd0O2liZGV2LSZndDtuYW1lKTsKJiM0MzsJaWYgKGF0b21pY19yZWFkKCZhbXA7c21jaWJkZXYtJmd0O2luaXRfY250KSkKJiM0MzsJCXdhaXRfZXZlbnQoc21jaWJkZXYtJmd0O2luaXRfd2FpdCwKJiM0MzsJCQkgICAhYXRvbWljX3JlYWQoJmFtcDtzbWNpYmRldi0mZ3Q7aW5pdF9jbnQpKTsKIAlzbWNfc21jcl90ZXJtaW5hdGVfYWxsKHNtY2liZGV2KTsKIAlzbWNfaWJfY2xlYW51cF9wZXJfaWJkZXYoc21jaWJkZXYpOwogCWliX3VucmVnaXN0ZXJfZXZlbnRfaGFuZGxlcigmYW1wO3NtY2liZGV2LSZndDtldmVudF9oYW5kbGVyKTsKIAljYW5jZWxfd29ya19zeW5jKCZhbXA7c21jaWJkZXYtJmd0O3BvcnRfZXZlbnRfd29yayk7Ci0Ja2ZyZWUoc21jaWJkZXYpOwomIzQzOwlzbWNfaWJkZXZfcHV0KHNtY2liZGV2KTsKIH0KIAogc3RhdGljIHN0cnVjdCBpYl9jbGllbnQgc21jX2liX2NsaWVudCA9IHsKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2liLmggYi9uZXQvc21jL3NtY19pYi5oCmluZGV4IGVmOGFjMmI3NTQ2ZGYuLmQzMjU0NzM1MGU4YjggMTAwNjQ0Ci0tLSBhL25ldC9zbWMvc21jX2liLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfaWIuaApAQCAtMTUsNiAmIzQzOzE1LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9pbnRlcnJ1cHQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pZl9ldGhlci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L211dGV4LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3JlZmNvdW50LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvd2FpdC5oJmd0OwogI2luY2x1ZGUgJmx0O3JkbWEvaWJfdmVyYnMuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvc21jLmgmZ3Q7CkBAIC01MSw2ICYjNDM7NTIsOSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7CQkJCS8qIGliLWRldmljZSBpbmZvcyBmb3Igc21jICovCiAJc3RydWN0IHdvcmtfc3RydWN0CXBvcnRfZXZlbnRfd29yazsKIAl1bnNpZ25lZCBsb25nCQlwb3J0X2V2ZW50X21hc2s7CiAJREVDTEFSRV9CSVRNQVAocG9ydHNfZ29pbmdfYXdheSwgU01DX01BWF9QT1JUUyk7CiYjNDM7CXJlZmNvdW50X3QJCXJlZmNudDsJCS8qIG9iamVjdCBsaWZldGltZSAqLwomIzQzOwlhdG9taWNfdAkJaW5pdF9jbnQ7CS8qIHVucHVibGlzaGVkIGxpbmsgaW5pdGlhbGl6YXRpb25zICovCiYjNDM7CXdhaXRfcXVldWVfaGVhZF90CWluaXRfd2FpdDsJLyogd2FpdCBmb3IgbGlua3MgdG8gYmUgcHVibGlzaGVkICovCiAJYXRvbWljX3QJCWxua19jbnQ7CS8qIG51bWJlciBvZiBsaW5rcyBvbiBpYmRldiAqLwogCXdhaXRfcXVldWVfaGVhZF90CWxua3NfZGVsZXRlZDsJLyogd2FpdCA0IHJlbW92YWwgb2YgYWxsIGxpbmtzKi8KIAlzdHJ1Y3QgbXV0ZXgJCW11dGV4OwkJLyogcHJvdGVjdCBkZXYgc2V0dXAmIzQzO2NsZWFudXAgKi8KQEAgLTU5LDYgJiM0Mzs2MywxMSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7CQkJCS8qIGliLWRldmljZSBpbmZvcyBmb3Igc21jICovCiAJaW50CQkJbmRldl9pZmlkeFtTTUNfTUFYX1BPUlRTXTsgLyogbmRldiBpZiBpbmRleGVzICovCiB9OwogCiYjNDM7dm9pZCBzbWNfaWJkZXZfZ2V0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7CiYjNDM7dm9pZCBzbWNfaWJkZXZfcHV0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7CiYjNDM7aW50IHNtY19pYmRldl9pbml0X2JlZ2luKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7CiYjNDM7dm9pZCBzbWNfaWJkZXZfaW5pdF9lbmQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTsKJiM0MzsKIHN0YXRpYyBpbmxpbmUgX19iZTMyIHNtY19pYl9naWRfdG9faXB2NCh1OCBnaWRbU01DX0dJRF9TSVpFXSkKIHsKIAlzdHJ1Y3QgaW42X2FkZHIgKmFkZHI2ID0gKHN0cnVjdCBpbjZfYWRkciAqKWdpZDsKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2xsYy5jIGIvbmV0L3NtYy9zbWNfbGxjLmMKaW5kZXggYzljY2Q4NDgwMzY5Yy4uZTE2YWFhNTE0MzY4YSAxMDA2NDQKLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfbGxjLmMKQEAgLTExMDgsNiAmIzQzOzExMDgsNyBAQCBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSkKIAlyYyA9IHNtY3JfbGlua19pbml0KGxnciwgbG5rX25ldywgbG5rX2lkeCwgaW5pKTsKIAlpZiAocmMpCiAJCWdvdG8gb3V0X3JlamVjdDsKJiM0MzsJc21jX2liZGV2X2luaXRfZW5kKGxua19uZXctJmd0O3NtY2liZGV2KTsKIAlzbWNfbGxjX3NhdmVfYWRkX2xpbmtfaW5mbyhsbmtfbmV3LCBsbGMpOwogCWxua19uZXctJmd0O2xpbmtfaWQgPSBsbGMtJmd0O2xpbmtfbnVtOwkvKiBTTUMgc2VydmVyIGFzc2lnbnMgbGluayBpZCAqLwogCXNtY19sbGNfbGlua19zZXRfdWlkKGxua19uZXcpOwpAQCAtMTE0Myw3ICYjNDM7MTE0NCw3IEBAIGludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KQogb3V0X3JlamVjdDoKIAlzbWNfbGxjX2NsaV9hZGRfbGlua19yZWplY3QocWVudHJ5KTsKIG91dDoKLQlrZnJlZShpbmkpOwomIzQzOwlzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTsKIAlrZnJlZShxZW50cnkpOwogCXJldHVybiByYzsKIH0KQEAgLTEyMTcsNyAmIzQzOzEyMTgsNyBAQCBzdGF0aWMgdm9pZCBzbWNfbGxjX2NsaV9hZGRfbGlua19pbnZpdGUoc3RydWN0IHNtY19saW5rICpsaW5rLAogCXNtY19sbGNfc2VuZF9hZGRfbGluayhsaW5rLCBpbmktJmd0O2liX2Rldi0mZ3Q7bWFjW2luaS0mZ3Q7aWJfcG9ydCAtIDFdLAogCQkJICAgICAgaW5pLSZndDtpYl9naWQsIE5VTEwsIFNNQ19MTENfUkVRKTsKIG91dDoKLQlrZnJlZShpbmkpOwomIzQzOwlzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTsKIAlrZnJlZShxZW50cnkpOwogfQogCkBAIC0xNDg3LDYgJiM0MzsxNDg4LDcgQEAgaW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywKIAlpZiAocmMpCiAJCWdvdG8gb3V0OwogCWxpbmtfbmV3ID0gJmFtcDtsZ3ItJmd0O2xua1tsbmtfaWR4XTsKJiM0MzsJc21jX2liZGV2X2luaXRfZW5kKGxpbmtfbmV3LSZndDtzbWNpYmRldik7CiAKIAlyYyA9IHNtY3JfYnVmX21hcF9sZ3IobGlua19uZXcpOwogCWlmIChyYykKQEAgLTE1NDQsNyAmIzQzOzE1NDYsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLAogCX0KIG91dDoKIAlrZnJlZShxZW50cnkpOwotCWtmcmVlKGluaSk7CiYjNDM7CXNtY19pbml0X2luZm9fZnJlZShpbmkpOwogCWlmIChzZW5kX3JlcV9hZGRfbGlua19yZXNwKQogCQlzbWNfbGxjX3NlbmRfcmVxX2FkZF9saW5rX3Jlc3BvbnNlKHJlcV9xZW50cnkpOwogCXJldHVybiByYzsKZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3BuZXQuYyBiL25ldC9zbWMvc21jX3BuZXQuYwppbmRleCA2M2UyODZlMmRmYWE4Li5iZTFmNTEzN2M4ZWU3IDEwMDY0NAotLS0gYS9uZXQvc21jL3NtY19wbmV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NtYy9zbWNfcG5ldC5jCkBAIC05ODAsMTQgJiM0Mzs5ODAsMjIgQEAgc3RhdGljIGludCBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICppYmRldiwgaW50IGksCiAJaWYgKCFpbmktJmd0O2NoZWNrX3NtY3J2MiAmYW1wOyZhbXA7CiAJICAgICFzbWNfaWJfZGV0ZXJtaW5lX2dpZChpYmRldiwgaSwgaW5pLSZndDt2bGFuX2lkLCBpbmktJmd0O2liX2dpZCwgTlVMTCwKIAkJCQkgIE5VTEwpKSB7CiYjNDM7CQlpZiAoaW5pLSZndDtpYl9kZXZfcmVmKQomIzQzOwkJCXNtY19pYmRldl9wdXQoaW5pLSZndDtpYl9kZXYpOwomIzQzOwkJc21jX2liZGV2X2dldChpYmRldik7CiAJCWluaS0mZ3Q7aWJfZGV2ID0gaWJkZXY7CiYjNDM7CQlpbmktJmd0O2liX2Rldl9yZWYgPSB0cnVlOwogCQlpbmktJmd0O2liX3BvcnQgPSBpOwogCQlyZXR1cm4gMDsKIAl9CiAJaWYgKGluaS0mZ3Q7Y2hlY2tfc21jcnYyICZhbXA7JmFtcDsKIAkgICAgIXNtY19pYl9kZXRlcm1pbmVfZ2lkKGliZGV2LCBpLCBpbmktJmd0O3ZsYW5faWQsIGluaS0mZ3Q7c21jcnYyLmliX2dpZF92MiwKIAkJCQkgIE5VTEwsICZhbXA7aW5pLSZndDtzbWNydjIpKSB7CiYjNDM7CQlpZiAoaW5pLSZndDtzbWNydjIuaWJfZGV2X3YyX3JlZikKJiM0MzsJCQlzbWNfaWJkZXZfcHV0KGluaS0mZ3Q7c21jcnYyLmliX2Rldl92Mik7CiYjNDM7CQlzbWNfaWJkZXZfZ2V0KGliZGV2KTsKIAkJaW5pLSZndDtzbWNydjIuaWJfZGV2X3YyID0gaWJkZXY7CiYjNDM7CQlpbmktJmd0O3NtY3J2Mi5pYl9kZXZfdjJfcmVmID0gdHJ1ZTsKIAkJaW5pLSZndDtzbWNydjIuaWJfcG9ydF92MiA9IGk7CiAJCXJldHVybiAwOwogCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5OTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTTUMgU3Vic3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgdGhlIGBuZXQvc21jL2Agc3Vic3lzdGVtIHdpdGhpbiB0aGUgTGludXgga2VybmVsLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGBzbWNfaWJfZGV2aWNlYCBvYmplY3RzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgcmF0aGVyIHN0cmFpZ2h0Zm9yd2FyZCwgYWxiZWl0IGNyaXRpY2FsLCBmaXguIEl0JiMzOTtzIGFsbCBhYm91dCBib2xzdGVyaW5nIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgdGhlc2UgYHNtY19pYl9kZXZpY2VgIGluc3RhbmNlcy4KClRoZSBrZXkgY2hhbmdlIEkgc2VlIGlzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYSBtb3JlIHJvYnVzdCBsaWZlY3ljbGUgbWFuYWdlbWVudCBzeXN0ZW0uIFRoZXkmIzM5O3JlIGRpdGNoaW5nIHRoZSBkaXJlY3QgYGtmcmVlKGluaSlgIGNhbGwgaW4gZmF2b3Igb2YgYHNtY19pbml0X2luZm9fZnJlZShpbmkpYC4gVGhpcyBmdW5jdGlvbiBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVuczsgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSByZWZlcmVuY2VzIHRvIGBpYl9kZXZgIGFuZCBgaWJfZGV2X3YyYC4gVGhlIGludHJvZHVjdGlvbiBvZiBgc21jX2liZGV2X2dldGAsIGBzbWNfaWJkZXZfcHV0YCwgYHNtY19pYmRldl9pbml0X2JlZ2luYCwgYW5kIGBzbWNfaWJkZXZfaW5pdF9lbmRgIGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzIG5ldyBhcHByb2FjaC4gSXQmIzM5O3MgYSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgd2UmIzM5O3JlIG1vdmluZyB0b3dhcmRzIGEgbW9yZSBzdHJ1Y3R1cmVkIGFuZCBsZXNzIGVycm9yLXByb25lIHdheSBvZiBtYW5hZ2luZyB0aGUgb2JqZWN0JiMzOTtzIGRlcGVuZGVuY2llcy4gQW5kIGJ5IGFkZGluZyBgaWJfZGV2X3JlZmAgYW5kIGBpYl9kZXZfdjJfcmVmYCB0byB0aGUgYHNtY19pbml0X2luZm9gLCBpdCBhcHBlYXJzIHRoYXQgdGhlIHN5c3RlbSB0cmFja3MgdGhlIG93bmVyc2hpcCBvZiB0aG9zZSByZWZlcmVuY2VzIGJ5IHRoZSBgc21jX2luaXRfaW5mb2AuCgpJdCYjMzk7cyBldmlkZW50IHRoaXMgaXMgYSByZXNwb25zZSB0byBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciwgbW9yZSBnZW5lcmFsbHksIGFuIG9iamVjdCBsaWZldGltZSBtYW5hZ2VtZW50IHByb2JsZW0gcmVsYXRlZCB0byBgc21jX2liX2RldmljZWAuIFRoZSBnb29kIG5ld3MgaXMgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBuZXcgc3RydWN0dXJlcyBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIHNvIHRoYXQmIzM5O3Mgb25lIGxlc3MgYXJlYSB0byB3b3JyeSBhYm91dCBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUuIFRoZXJlJiMzOTtzIGFsc28gbm8gaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgYmVpbmcgYWRkcmVzc2VkIG9yIGV4cG9zZWQsIHdoaWNoIGlzIGEgZ29vZCBzaWduLiBUaGUgZm9jdXMgaGVyZSBpcyBzb2xlbHkgb24gcmVmZXJlbmNlIGNvdW50aW5nIGFuZCBvYmplY3QgbGlmZXRpbWUuCgpIb3dldmVyLCBJIG5lZWQgdG8gZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgZm9yIHBvc3NpYmxlIHJlZ3Jlc3Npb25zLiBJdCYjMzk7cyBhIGdvb2QgcHJhY3RpY2UsIGFuZCBJJiMzOTttIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIFNpbmNlIGBzbWNfaW5pdF9pbmZvYCBpcyBsaWtlbHkgYWxsb2NhdGVkLCBwcm9iYWJseSB0aHJvdWdoIGBremFsbG9jYCwgdGhlcmUgaXMgYSByaXNrIHRoYXQgdGhlIGFkZGVkIGZpZWxkcywgYGliX2Rldl9yZWZgIGFuZCBgaWJfZGV2X3YyX3JlZmAsIG1pZ2h0IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4gSWYgYHNtY19pbml0X2luZm9gIGlzbiYjMzk7dCB6ZXJvLWluaXRpYWxpemVkLCB0aGVzZSBib29sZWFuIGZsYWdzIGNvdWxkIGJlIGxlZnQgaW4gYW4gdW5kZWZpbmVkIHN0YXRlLCBsZWFkaW5nIHRvIGluY29ycmVjdCBjYWxscyB0byBgc21jX2liZGV2X3B1dGAuIEkgc2hvdWxkIHZlcmlmeSBob3cgYHNtY19pbml0X2luZm9gIGlzIGFjdHVhbGx5IGFsbG9jYXRlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIGNvbmNlcm4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWxsb2MuKnNtY19pbml0X2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc21jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NTcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqSHVudGluZyBmb3IgSW5pdGlhbGl6YXRpb24gTWFnaWMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgd2hlcmUgdGhlIGBpbmkgPSBgIGFzc2lnbm1lbnRzIG9yIHRoZSBgc3RydWN0IHNtY19pbml0X2luZm9gIGFsbG9jYXRpb25zIGFyZSBoYXBwZW5pbmcuIFRoYXQmIzM5O3MgbXkgc3RhcnRpbmcgcG9pbnQuIFRob3NlIHdpbGwgYmUgY3J1Y2lhbCBiZWNhdXNlIHRoZXkmIzM5O3JlIHRoZSBwbGFjZXMgd2hlcmUgdGhlIGluaXRpYWwgcGFyYW1ldGVycyBvciB0aGUgc3RydWN0dXJlIGRlZmluaW5nIGFuIFNNQyAoU3lzdGVtIE1hbmFnZW1lbnQgQ29udHJvbGxlcikgb3Igc2ltaWxhciBkZXZpY2UgaXMgZGVmaW5lZCwgb3IgaW5pdGlhbGl6ZWQuIEZpbmRpbmcgdGhvc2Ugd2lsbCBsZWFkIG1lIHRvIHRoZSBrZXkgY29uZmlndXJhdGlvbiBkYXRhLiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgdGhpcyBpbml0aWFsaXphdGlvbiBpcyBwcmV0dHkgaW1wb3J0YW50IHRvIHRoZSBzeXN0ZW0gYXMgYSB3aG9sZSwgc28ga25vd2luZyB0aGUgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBpcyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbmkgPSBrLiphbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zbWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zbWMvYWZfc21jLmM9MTIwMz12b2lkIHNtY19maWxsX2dpZF9saXN0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMTIxMS1cbm5ldC9zbWMvYWZfc21jLmM6MTIxMjpcdGFsdF9pbmkgPSBremFsbG9jX29iaigqYWx0X2luaSk7XG5uZXQvc21jL2FmX3NtYy5jLTEyMTMtXHRpZiAoIWFsdF9pbmkpXG4tLVxubmV0L3NtYy9hZl9zbWMuYz0xNTIwPXN0YXRpYyBpbnQgX19zbWNfY29ubmVjdChzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcbi0tXG5uZXQvc21jL2FmX3NtYy5jLTE1MzktXG5uZXQvc21jL2FmX3NtYy5jOjE1NDA6XHRpbmkgPSBremFsbG9jX29iaigqaW5pKTtcbm5ldC9zbWMvYWZfc21jLmMtMTU0MS1cdGlmICghaW5pKVxuLS1cbm5ldC9zbWMvYWZfc21jLmM9MjQ1Mz1zdGF0aWMgdm9pZCBzbWNfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9zbWMvYWZfc21jLmMtMjUwNy1cbm5ldC9zbWMvYWZfc21jLmM6MjUwODpcdGluaSA9IGt6YWxsb2Nfb2JqKCppbmkpO1xubmV0L3NtYy9hZl9zbWMuYy0yNTA5LVx0aWYgKCFpbmkpIHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMDU4PWludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxuLS1cbm5ldC9zbWMvc21jX2xsYy5jLTEwNjktXG5uZXQvc21jL3NtY19sbGMuYzoxMDcwOlx0aW5pID0ga3phbGxvY19vYmooKmluaSk7XG5uZXQvc21jL3NtY19sbGMuYy0xMDcxLVx0aWYgKCFpbmkpIHtcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xMTkxPXN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTIwOC1cbm5ldC9zbWMvc21jX2xsYy5jOjEyMDk6XHRpbmkgPSBremFsbG9jX29iaigqaW5pKTtcbm5ldC9zbWMvc21jX2xsYy5jLTEyMTAtXHRpZiAoIWluaSlcbi0tXG5uZXQvc21jL3NtY19sbGMuYz0xNDMyPWludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4tLVxubmV0L3NtYy9zbWNfbGxjLmMtMTQ0Ny1cbm5ldC9zbWMvc21jX2xsYy5jOjE0NDg6XHRpbmkgPSBremFsbG9jX29iaigqaW5pKTtcbm5ldC9zbWMvc21jX2xsYy5jLTE0NDktXHRpZiAoIWluaSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODQ2CgkJCQkJCQlvdXRwdXQ6IDE4NQoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBga3phbGxvY19vYmpgIGlzIGFsbW9zdCBjZXJ0YWlubHkganVzdCBhIG1hY3JvIHRoYXQmIzM5O3MgYSB3cmFwcGVyIGZvciBga3phbGxvY2AuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgcHJhY3RpY2UsIGFuZCBpdCBtYWtlcyB0aGUgY29kZSBjbGVhbmVyLiBUaGUga2V5IGhlcmUsIHRob3VnaCwgaXMgdGhhdCBga3phbGxvY2AgemVyb2VzIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LiBLbm93aW5nIHRoYXQsIEkgY2FuIHF1aWNrbHkgY29uZmlybSB0aGF0IGBpYl9kZXZfcmVmYCBhbmQgYGliX2Rldl92Ml9yZWZgIHdpbGwgYmUgY29ycmVjdGx5IGluaXRpYWxpemVkIHRvIGBmYWxzZWAsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgdGhlIG92ZXJhbGwgc3RhdGUgb2YgdGhlc2Ugb2JqZWN0cy4KClRoaXMgcGF0Y2ggaXMgb2J2aW91c2x5IGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIHJlbGF0ZWQgb2JqZWN0IGxpZmV0aW1lIHByb2JsZW0uIENvbnNpZGVyaW5nIHRoZSB6ZXJvLWluaXRpYWxpemF0aW9uLCB0aGVyZSYjMzk7cyBubyB3YXkgdGhhdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyB0aGUgcm9vdCBjYXVzZS4gTXkgZXhwZXJ0aXNlIGlzIHRoYXQgdGhlIHplcm8tYWxsb2NhdGlvbiBwcm92aWRlcyBhbiBpbXBvcnRhbnQgZ3VhcmFudGVlIHRoYXQgbWl0aWdhdGVzIHRoZSBtb3N0IGNvbW1vbiByaXNrcy4KCkdpdmVuIHRoZSBmb2N1cyBvbiB1c2UtYWZ0ZXItZnJlZSwgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGRldGVjdGluZyB0aGlzIGtpbmQgb2YgYnVnLiBXZSByZWFsbHkgZG9uJiMzOTt0IG5lZWQgdG8gaW52b2x2ZSBLTVNBTiBmb3IgdGhpcyBzcGVjaWZpYyBpc3N1ZS4gS0FTQU4gaXMgcGVyZmVjdGx5IHN1ZmZpY2llbnQgZm9yIGNhdGNoaW5nIHRoZSBraW5kcyBvZiBtZW1vcnkgYWNjZXNzIGVycm9ycyB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgYHNtY19pYl9kZXZpY2VgIG9iamVjdHMgdG8gZml4IG9iamVjdCBsaWZldGltZSBpc3N1ZXMgKGxpa2VseSB1c2UtYWZ0ZXItZnJlZSkuIEl0IHJlcGxhY2VzIGBrZnJlZShpbmkpYCB3aXRoIGBzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKWAsIHdoaWNoIGRyb3BzIHRoZSByZWZlcmVuY2VzIGlmIHRoZXkgd2VyZSBhY3F1aXJlZC4gVGhlIG5ldyBib29sZWFuIGZpZWxkcyBgaWJfZGV2X3JlZmAgYW5kIGBpYl9kZXZfdjJfcmVmYCBhcmUgYWRkZWQgdG8gYHN0cnVjdCBzbWNfaW5pdF9pbmZvYCwgd2hpY2ggaXMgYWx3YXlzIGFsbG9jYXRlZCB1c2luZyBga3phbGxvY2AgKHZpYSBga3phbGxvY19vYmpgKSwgZW5zdXJpbmcgdGhleSBhcmUgcHJvcGVybHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdXNlLWFmdGVyLWZyZWUgYnVncywgd2hpY2ggdGhpcyBwYXRjaCBhZGRyZXNzZXMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgYHNtY19pYl9kZXZpY2VgIG9iamVjdHMgdG8gZml4IG9iamVjdCBsaWZldGltZSBpc3N1ZXMgKGxpa2VseSB1c2UtYWZ0ZXItZnJlZSkuIEl0IHJlcGxhY2VzIGBrZnJlZShpbmkpYCB3aXRoIGBzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKWAsIHdoaWNoIGRyb3BzIHRoZSByZWZlcmVuY2VzIGlmIHRoZXkgd2VyZSBhY3F1aXJlZC4gVGhlIG5ldyBib29sZWFuIGZpZWxkcyBgaWJfZGV2X3JlZmAgYW5kIGBpYl9kZXZfdjJfcmVmYCBhcmUgYWRkZWQgdG8gYHN0cnVjdCBzbWNfaW5pdF9pbmZvYCwgd2hpY2ggaXMgYWx3YXlzIGFsbG9jYXRlZCB1c2luZyBga3phbGxvY2AgKHZpYSBga3phbGxvY19vYmpgKSwgZW5zdXJpbmcgdGhleSBhcmUgcHJvcGVybHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdXNlLWFmdGVyLWZyZWUgYnVncywgd2hpY2ggdGhpcyBwYXRjaCBhZGRyZXNzZXMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM4OjUxLjE1ODUwNDUwOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTQ2NDk4MTYwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIixcbiAgICBcIlJETUFfUlhFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jcl9saW5rX2luaXRcIixcbiAgICBcInNtY19sbGNfY2xpX2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyByZWZlcmVuY2UgY291bnRpbmcgZm9yIGBzbWNfaWJfZGV2aWNlYCBvYmplY3RzIHRvIGZpeCBvYmplY3QgbGlmZXRpbWUgaXNzdWVzIChsaWtlbHkgdXNlLWFmdGVyLWZyZWUpLiBJdCByZXBsYWNlcyBga2ZyZWUoaW5pKWAgd2l0aCBgc21jX2luaXRfaW5mb19mcmVlKGluaSlgLCB3aGljaCBkcm9wcyB0aGUgcmVmZXJlbmNlcyBpZiB0aGV5IHdlcmUgYWNxdWlyZWQuIFRoZSBuZXcgYm9vbGVhbiBmaWVsZHMgYGliX2Rldl9yZWZgIGFuZCBgaWJfZGV2X3YyX3JlZmAgYXJlIGFkZGVkIHRvIGBzdHJ1Y3Qgc21jX2luaXRfaW5mb2AsIHdoaWNoIGlzIGFsd2F5cyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgICh2aWEgYGt6YWxsb2Nfb2JqYCksIGVuc3VyaW5nIHRoZXkgYXJlIHByb3Blcmx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIHRoaXMgcGF0Y2ggYWRkcmVzc2VzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGxlYWsgb2YgYHNtY19pYl9kZXZpY2VgIGluIHRoZSBTTUMgc3Vic3lzdGVtIGJ5IGludHJvZHVjaW5nIGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGFuZCBwcm9wZXJseSBtYW5hZ2luZyB0aGUgb2JqZWN0IGxpZmV0aW1lIHdpdGggcmVmZXJlbmNlIGNvdW50aW5nIChgc21jX2liZGV2X2dldGAvYHB1dGApLiBJdCBhbHNvIGFkZHMgYW4gaW5pdGlhbGl6YXRpb24gY291bnRlciAoYGluaXRfY250YCkgdG8gdHJhY2sgdW5wdWJsaXNoZWQgbGluayBpbml0aWFsaXphdGlvbnMuIFRoZSBjaGFuZ2VzIGFmZmVjdCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgKGBfX3NtY19jb25uZWN0YCwgYHNtY19saXN0ZW5fd29ya2ApIGFuZCBMTEMgbGluayBtYW5hZ2VtZW50IChgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgKS4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgYW5kIGluY29taW5nIG5ldHdvcmsgcGFja2V0cy4gVG8gcHJvcGVybHkgdGVzdCB0aGlzLCB3ZSBuZWVkIHRvIGVuYWJsZSBTTUMsIEluZmluaUJhbmQsIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBSRE1BL0RJQlMgZGV2aWNlcyAoYFJETUFfUlhFYCwgYERJQlNfTE9gKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzg6NTEuMTU4NTA5OTk5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDMxODk2NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3NzdmMzA3MTVjNmQ1MDU0NGQ2ZjgwYzAzMGFiNWJiYjExYzkxNDJiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIzIDA3OjM4OjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvYWZfc21jLmMgYi9uZXQvc21jL2FmX3NtYy5jXFxuaW5kZXggZTlmOTNiM2FiNDM1Yi4uZDc4MWRlZTFiMzI5MyAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL2FmX3NtYy5jXFxuKysrIGIvbmV0L3NtYy9hZl9zbWMuY1xcbkBAIC0xMjI1LDcgKzEyMjUsNyBAQCB2b2lkIHNtY19maWxsX2dpZF9saXN0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbiBcXHQgICAgICAgU01DX0dJRF9TSVpFKTtcXG4gXFxuIG91dDpcXG4tXFx0a2ZyZWUoYWx0X2luaSk7XFxuK1xcdHNtY19pbml0X2luZm9fZnJlZShhbHRfaW5pKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBzbWNfY29ubmVjdF9yZG1hX3YyX3ByZXBhcmUoc3RydWN0IHNtY19zb2NrICpzbWMsXFxuQEAgLTE1OTYsMTQgKzE1OTYsMTQgQEAgc3RhdGljIGludCBfX3NtY19jb25uZWN0KHN0cnVjdCBzbWNfc29jayAqc21jKVxcbiBcXHRTTUNfU1RBVF9DTE5UX1NVQ0NfSU5DKHNvY2tfbmV0KHNtYy1cXHUwMDNlY2xjc29jay1cXHUwMDNlc2spLCBhY2xjKTtcXG4gXFx0c21jX2Nvbm5lY3RfaXNtX3ZsYW5fY2xlYW51cChpbmkpO1xcbiBcXHRrZnJlZShidWYpO1xcbi1cXHRrZnJlZShpbmkpO1xcbitcXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiB2bGFuX2NsZWFudXA6XFxuIFxcdHNtY19jb25uZWN0X2lzbV92bGFuX2NsZWFudXAoaW5pKTtcXG4gXFx0a2ZyZWUoYnVmKTtcXG4gZmFsbGJhY2s6XFxuLVxcdGtmcmVlKGluaSk7XFxuK1xcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xcbiBcXHRyZXR1cm4gc21jX2Nvbm5lY3RfZGVjbGluZV9mYWxsYmFjayhzbWMsIHJjLCB2ZXJzaW9uKTtcXG4gfVxcbiBcXG5AQCAtMjM0NCw3ICsyMzQ0LDEwIEBAIHN0YXRpYyB2b2lkIHNtY19maW5kX3JkbWFfdjJfZGV2aWNlX3NlcnYoc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxcbiBcXG4gbm90X2ZvdW5kOlxcbiBcXHRpbmktXFx1MDAzZXNtY3JfdmVyc2lvbiBcXHUwMDI2PSB+U01DX1YyO1xcbitcXHRpZiAoaW5pLVxcdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZilcXG4rXFx0XFx0c21jX2liZGV2X3B1dChpbmktXFx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIpO1xcbiBcXHRpbmktXFx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIgPSBOVUxMO1xcbitcXHRpbmktXFx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmID0gZmFsc2U7XFxuIFxcdGluaS1cXHUwMDNlY2hlY2tfc21jcnYyID0gZmFsc2U7XFxuIH1cXG4gXFxuQEAgLTI1ODgsNyArMjU5MSw3IEBAIHN0YXRpYyB2b2lkIHNtY19saXN0ZW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHNtY19saXN0ZW5fZGVjbGluZShuZXdfc21jLCByYywgaW5pID8gaW5pLVxcdTAwM2VmaXJzdF9jb250YWN0X2xvY2FsIDogMCxcXG4gXFx0XFx0XFx0ICAgcHJvcG9zYWxfdmVyc2lvbik7XFxuIG91dF9mcmVlOlxcbi1cXHRrZnJlZShpbmkpO1xcbitcXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcXG4gXFx0a2ZyZWUoYnVmKTtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfY29yZS5jIGIvbmV0L3NtYy9zbWNfY29yZS5jXFxuaW5kZXggMTgxNjQ3OTgyNDkwYi4uZDk3YmM3MzIzMTA2OSAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmNcXG4rKysgYi9uZXQvc21jL3NtY19jb3JlLmNcXG5AQCAtNTUsNiArNTUsMTcgQEAgc3RhdGljIHZvaWQgX19zbWNfbGdyX3Rlcm1pbmF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBzb2Z0KTtcXG4gXFxuIHN0YXRpYyB2b2lkIHNtY19saW5rX2Rvd25fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbiBcXG4rdm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG4re1xcbitcXHRpZiAoIWluaSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHRpZiAoaW5pLVxcdTAwM2VpYl9kZXZfcmVmKVxcbitcXHRcXHRzbWNfaWJkZXZfcHV0KGluaS1cXHUwMDNlaWJfZGV2KTtcXG4rXFx0aWYgKGluaS1cXHUwMDNlc21jcnYyLmliX2Rldl92Ml9yZWYpXFxuK1xcdFxcdHNtY19pYmRldl9wdXQoaW5pLVxcdTAwM2VzbWNydjIuaWJfZGV2X3YyKTtcXG4rXFx0a2ZyZWUoaW5pKTtcXG4rfVxcbitcXG4gLyogcmV0dXJuIGhlYWQgb2YgbGluayBncm91cCBsaXN0IGFuZCBpdHMgbG9jayBmb3IgYSBnaXZlbiBsaW5rIGdyb3VwICovXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGxpc3RfaGVhZCAqc21jX2xncl9saXN0X2hlYWQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgc3BpbmxvY2tfdCAqKmxncl9sb2NrKVxcbkBAIC03OTMsMTQgKzgwNCwyMSBAQCBpbnQgc21jcl9saW5rX2luaXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfbGluayAqbG5rLFxcbiBcXHRpbnQgcmM7XFxuIFxcbiBcXHRpZiAobGdyLVxcdTAwM2VzbWNfdmVyc2lvbiA9PSBTTUNfVjIpIHtcXG4tXFx0XFx0bG5rLVxcdTAwM2VzbWNpYmRldiA9IGluaS1cXHUwMDNlc21jcnYyLmliX2Rldl92MjtcXG4rXFx0XFx0c21jaWJkZXYgPSBpbmktXFx1MDAzZXNtY3J2Mi5pYl9kZXZfdjI7XFxuIFxcdFxcdGxuay1cXHUwMDNlaWJwb3J0ID0gaW5pLVxcdTAwM2VzbWNydjIuaWJfcG9ydF92MjtcXG4tXFx0XFx0bG5rLVxcdTAwM2V3cl9yeF9zZ2VfY250ID0gbG5rLVxcdTAwM2VzbWNpYmRldi1cXHUwMDNlaWJkZXYtXFx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSBcXHUwMDNjIDIgPyAxIDogMjtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0c21jaWJkZXYgPSBpbmktXFx1MDAzZWliX2RldjtcXG4rXFx0XFx0bG5rLVxcdTAwM2VpYnBvcnQgPSBpbmktXFx1MDAzZWliX3BvcnQ7XFxuK1xcdH1cXG4rXFx0cmMgPSBzbWNfaWJkZXZfaW5pdF9iZWdpbihzbWNpYmRldik7XFxuK1xcdGlmIChyYylcXG4rXFx0XFx0cmV0dXJuIHJjO1xcbitcXHRsbmstXFx1MDAzZXNtY2liZGV2ID0gc21jaWJkZXY7XFxuK1xcdGlmIChsZ3ItXFx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xcbitcXHRcXHRsbmstXFx1MDAzZXdyX3J4X3NnZV9jbnQgPSBzbWNpYmRldi1cXHUwMDNlaWJkZXYtXFx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSBcXHUwMDNjIDIgPyAxIDogMjtcXG4gXFx0XFx0bG5rLVxcdTAwM2V3cl9yeF9idWZsZW4gPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobG5rKSA/XFxuIFxcdFxcdFxcdFNNQ19XUl9CVUZfU0laRSA6IFNNQ19XUl9CVUZfVjJfU0laRTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0bG5rLVxcdTAwM2VzbWNpYmRldiA9IGluaS1cXHUwMDNlaWJfZGV2O1xcbi1cXHRcXHRsbmstXFx1MDAzZWlicG9ydCA9IGluaS1cXHUwMDNlaWJfcG9ydDtcXG4gXFx0XFx0bG5rLVxcdTAwM2V3cl9yeF9zZ2VfY250ID0gMTtcXG4gXFx0XFx0bG5rLVxcdTAwM2V3cl9yeF9idWZsZW4gPSBTTUNfV1JfQlVGX1NJWkU7XFxuIFxcdH1cXG5AQCAtODgyLDYgKzkwMCw3IEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssXFxuIFxcdGlmICghYXRvbWljX2RlY19yZXR1cm4oXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VsbmtfY250KSlcXG4gXFx0XFx0d2FrZV91cChcXHUwMDI2c21jaWJkZXYtXFx1MDAzZWxua3NfZGVsZXRlZCk7XFxuIFxcdHNtY19sZ3JfcHV0KGxncik7IC8qIGxncl9ob2xkIGFib3ZlICovXFxuK1xcdHNtY19pYmRldl9pbml0X2VuZChzbWNpYmRldik7XFxuIFxcdHJldHVybiByYztcXG4gfVxcbiBcXG5AQCAtOTk3LDYgKzEwMTYsOCBAQCBzdGF0aWMgaW50IHNtY19sZ3JfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbiBcXHRzcGluX2xvY2tfYmgobGdyX2xvY2spO1xcbiBcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZsZ3ItXFx1MDAzZWxpc3QsIGxncl9saXN0KTtcXG4gXFx0c3Bpbl91bmxvY2tfYmgobGdyX2xvY2spO1xcbitcXHRpZiAoIWluaS1cXHUwMDNlaXNfc21jZClcXG4rXFx0XFx0c21jX2liZGV2X2luaXRfZW5kKGxuay1cXHUwMDNlc21jaWJkZXYpO1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIGZyZWVfd3E6XFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2NvcmUuaCBiL25ldC9zbWMvc21jX2NvcmUuaFxcbmluZGV4IDVjMThmMDhhNGM4YTUuLjlmNWE2OWEzMGNiM2YgMTAwNjQ0XFxuLS0tIGEvbmV0L3NtYy9zbWNfY29yZS5oXFxuKysrIGIvbmV0L3NtYy9zbWNfY29yZS5oXFxuQEAgLTQwMyw2ICs0MDMsNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mb19zbWNydjIge1xcbiBcXG4gXFx0LyogT3V0cHV0IGZpZWxkcyB3aGVuIHNhZGRyIGlzIHNldCAqL1xcbiBcXHRzdHJ1Y3Qgc21jX2liX2RldmljZVxcdCppYl9kZXZfdjI7XFxuK1xcdGJvb2xcXHRcXHRcXHRpYl9kZXZfdjJfcmVmOyAvKiBvd25zIGFuIHNtY19pYmRldiByZWZlcmVuY2UgKi9cXG4gXFx0dThcXHRcXHRcXHRpYl9wb3J0X3YyO1xcbiBcXHR1OFxcdFxcdFxcdGliX2dpZF92MltTTUNfR0lEX1NJWkVdO1xcbiBcXG5AQCAtNDM4LDYgKzQzOSw3IEBAIHN0cnVjdCBzbWNfaW5pdF9pbmZvIHtcXG4gXFx0dThcXHRcXHRcXHRwZWVyX21hY1tFVEhfQUxFTl07XFxuIFxcdHU4XFx0XFx0XFx0cGVlcl9zeXN0ZW1pZFtTTUNfU1lTVEVNSURfTEVOXTtcXG4gXFx0c3RydWN0IHNtY19pYl9kZXZpY2VcXHQqaWJfZGV2O1xcbitcXHRib29sXFx0XFx0XFx0aWJfZGV2X3JlZjsgLyogb3ducyBhbiBzbWNfaWJkZXYgcmVmZXJlbmNlICovXFxuIFxcdHU4XFx0XFx0XFx0aWJfZ2lkW1NNQ19HSURfU0laRV07XFxuIFxcdHU4XFx0XFx0XFx0aWJfcG9ydDtcXG4gXFx0dTMyXFx0XFx0XFx0aWJfY2xjcXBuO1xcbkBAIC01OTQsNiArNTk2LDcgQEAgdm9pZCBzbWNfcnRva2VuX3NldDIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGludCBydG9rX2lkeCwgaW50IGxpbmtfaWQsXFxuIHZvaWQgc21jX3NuZGJ1Zl9zeW5jX3NnX2Zvcl9kZXZpY2Uoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKTtcXG4gdm9pZCBzbWNfcm1iX3N5bmNfc2dfZm9yX2NwdShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pO1xcbiBpbnQgc21jX3ZsYW5fYnlfdGNwc2soc3RydWN0IHNvY2tldCAqY2xjc29jaywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XFxuK3ZvaWQgc21jX2luaXRfaW5mb19mcmVlKHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpO1xcbiBcXG4gdm9pZCBzbWNfY29ubl9mcmVlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7XFxuIGludCBzbWNfY29ubl9jcmVhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpO1xcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19pYi5jIGIvbmV0L3NtYy9zbWNfaWIuY1xcbmluZGV4IDliYjQ5NTcwNzQ0NWUuLmQ4NTg0NTNjNjRkOTIgMTAwNjQ0XFxuLS0tIGEvbmV0L3NtYy9zbWNfaWIuY1xcbisrKyBiL25ldC9zbWMvc21jX2liLmNcXG5AQCAtOTM0LDYgKzkzNCw0NCBAQCB2b2lkIHNtY19pYl9uZGV2X2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdW5zaWduZWQgbG9uZyBldmVudClcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHNtY19pYmRldl9yZWxlYXNlKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcXG4re1xcbitcXHRwdXRfZGV2aWNlKFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlaWJkZXYtXFx1MDAzZWRldik7XFxuK1xcdGtmcmVlKHNtY2liZGV2KTtcXG4rfVxcbitcXG4rdm9pZCBzbWNfaWJkZXZfZ2V0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcXG4re1xcbitcXHRyZWZjb3VudF9pbmMoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VyZWZjbnQpO1xcbit9XFxuK1xcbit2b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxcbit7XFxuK1xcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VyZWZjbnQpKVxcbitcXHRcXHRzbWNfaWJkZXZfcmVsZWFzZShzbWNpYmRldik7XFxuK31cXG4rXFxuK2ludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXFxuK3tcXG4rXFx0aW50IHJjID0gMDtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnNtY19pYl9kZXZpY2VzLm11dGV4KTtcXG4rXFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VsaXN0KSlcXG4rXFx0XFx0cmMgPSAtRU5PREVWO1xcbitcXHRlbHNlXFxuK1xcdFxcdGF0b21pY19pbmMoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2Vpbml0X2NudCk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xcbitcXHRyZXR1cm4gcmM7XFxuK31cXG4rXFxuK3ZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XFxuK1xcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlaW5pdF9jbnQpKVxcbitcXHRcXHR3YWtlX3VwKFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlaW5pdF93YWl0KTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XFxuK31cXG4rXFxuIC8qIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpYl9yZWdpc3Rlcl9jbGllbnQoKSAqL1xcbiBzdGF0aWMgaW50IHNtY19pYl9hZGRfZGV2KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2KVxcbiB7XFxuQEAgLTk0OSw3ICs5ODcsMTEgQEAgc3RhdGljIGludCBzbWNfaWJfYWRkX2RldihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldilcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRzbWNpYmRldi1cXHUwMDNlaWJkZXYgPSBpYmRldjtcXG4rXFx0Z2V0X2RldmljZShcXHUwMDI2aWJkZXYtXFx1MDAzZWRldik7XFxuK1xcdHJlZmNvdW50X3NldChcXHUwMDI2c21jaWJkZXYtXFx1MDAzZXJlZmNudCwgMSk7XFxuIFxcdElOSVRfV09SSyhcXHUwMDI2c21jaWJkZXYtXFx1MDAzZXBvcnRfZXZlbnRfd29yaywgc21jX2liX3BvcnRfZXZlbnRfd29yayk7XFxuK1xcdGF0b21pY19zZXQoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2Vpbml0X2NudCwgMCk7XFxuK1xcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2Vpbml0X3dhaXQpO1xcbiBcXHRhdG9taWNfc2V0KFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlbG5rX2NudCwgMCk7XFxuIFxcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VsbmtzX2RlbGV0ZWQpO1xcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlbXV0ZXgpO1xcbkBAIC0xMDAwLDExICsxMDQyLDE0IEBAIHN0YXRpYyB2b2lkIHNtY19pYl9yZW1vdmVfZGV2KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LCB2b2lkICpjbGllbnRfZGF0YSlcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XFxuIFxcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXFxcInNtYzogcmVtb3ZpbmcgaWIgZGV2aWNlICVzXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHQgICAgc21jaWJkZXYtXFx1MDAzZWliZGV2LVxcdTAwM2VuYW1lKTtcXG4rXFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZzbWNpYmRldi1cXHUwMDNlaW5pdF9jbnQpKVxcbitcXHRcXHR3YWl0X2V2ZW50KHNtY2liZGV2LVxcdTAwM2Vpbml0X3dhaXQsXFxuK1xcdFxcdFxcdCAgICFhdG9taWNfcmVhZChcXHUwMDI2c21jaWJkZXYtXFx1MDAzZWluaXRfY250KSk7XFxuIFxcdHNtY19zbWNyX3Rlcm1pbmF0ZV9hbGwoc21jaWJkZXYpO1xcbiBcXHRzbWNfaWJfY2xlYW51cF9wZXJfaWJkZXYoc21jaWJkZXYpO1xcbiBcXHRpYl91bnJlZ2lzdGVyX2V2ZW50X2hhbmRsZXIoXFx1MDAyNnNtY2liZGV2LVxcdTAwM2VldmVudF9oYW5kbGVyKTtcXG4gXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2c21jaWJkZXYtXFx1MDAzZXBvcnRfZXZlbnRfd29yayk7XFxuLVxcdGtmcmVlKHNtY2liZGV2KTtcXG4rXFx0c21jX2liZGV2X3B1dChzbWNpYmRldik7XFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgaWJfY2xpZW50IHNtY19pYl9jbGllbnQgPSB7XFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2liLmggYi9uZXQvc21jL3NtY19pYi5oXFxuaW5kZXggZWY4YWMyYjc1NDZkZi4uZDMyNTQ3MzUwZThiOCAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19pYi5oXFxuKysrIGIvbmV0L3NtYy9zbWNfaWIuaFxcbkBAIC0xNSw2ICsxNSw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lmX2V0aGVyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dhaXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY3JkbWEvaWJfdmVyYnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9zbWMuaFxcdTAwM2VcXG5AQCAtNTEsNiArNTIsOSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7XFx0XFx0XFx0XFx0LyogaWItZGV2aWNlIGluZm9zIGZvciBzbWMgKi9cXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0XFx0cG9ydF9ldmVudF93b3JrO1xcbiBcXHR1bnNpZ25lZCBsb25nXFx0XFx0cG9ydF9ldmVudF9tYXNrO1xcbiBcXHRERUNMQVJFX0JJVE1BUChwb3J0c19nb2luZ19hd2F5LCBTTUNfTUFYX1BPUlRTKTtcXG4rXFx0cmVmY291bnRfdFxcdFxcdHJlZmNudDtcXHRcXHQvKiBvYmplY3QgbGlmZXRpbWUgKi9cXG4rXFx0YXRvbWljX3RcXHRcXHRpbml0X2NudDtcXHQvKiB1bnB1Ymxpc2hlZCBsaW5rIGluaXRpYWxpemF0aW9ucyAqL1xcbitcXHR3YWl0X3F1ZXVlX2hlYWRfdFxcdGluaXRfd2FpdDtcXHQvKiB3YWl0IGZvciBsaW5rcyB0byBiZSBwdWJsaXNoZWQgKi9cXG4gXFx0YXRvbWljX3RcXHRcXHRsbmtfY250O1xcdC8qIG51bWJlciBvZiBsaW5rcyBvbiBpYmRldiAqL1xcbiBcXHR3YWl0X3F1ZXVlX2hlYWRfdFxcdGxua3NfZGVsZXRlZDtcXHQvKiB3YWl0IDQgcmVtb3ZhbCBvZiBhbGwgbGlua3MqL1xcbiBcXHRzdHJ1Y3QgbXV0ZXhcXHRcXHRtdXRleDtcXHRcXHQvKiBwcm90ZWN0IGRldiBzZXR1cCtjbGVhbnVwICovXFxuQEAgLTU5LDYgKzYzLDExIEBAIHN0cnVjdCBzbWNfaWJfZGV2aWNlIHtcXHRcXHRcXHRcXHQvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqL1xcbiBcXHRpbnRcXHRcXHRcXHRuZGV2X2lmaWR4W1NNQ19NQVhfUE9SVFNdOyAvKiBuZGV2IGlmIGluZGV4ZXMgKi9cXG4gfTtcXG4gXFxuK3ZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpO1xcbit2b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcXG4raW50IHNtY19pYmRldl9pbml0X2JlZ2luKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7XFxuK3ZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldik7XFxuK1xcbiBzdGF0aWMgaW5saW5lIF9fYmUzMiBzbWNfaWJfZ2lkX3RvX2lwdjQodTggZ2lkW1NNQ19HSURfU0laRV0pXFxuIHtcXG4gXFx0c3RydWN0IGluNl9hZGRyICphZGRyNiA9IChzdHJ1Y3QgaW42X2FkZHIgKilnaWQ7XFxuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX2xsYy5jIGIvbmV0L3NtYy9zbWNfbGxjLmNcXG5pbmRleCBjOWNjZDg0ODAzNjljLi5lMTZhYWE1MTQzNjhhIDEwMDY0NFxcbi0tLSBhL25ldC9zbWMvc21jX2xsYy5jXFxuKysrIGIvbmV0L3NtYy9zbWNfbGxjLmNcXG5AQCAtMTEwOCw2ICsxMTA4LDcgQEAgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuIFxcdHJjID0gc21jcl9saW5rX2luaXQobGdyLCBsbmtfbmV3LCBsbmtfaWR4LCBpbmkpO1xcbiBcXHRpZiAocmMpXFxuIFxcdFxcdGdvdG8gb3V0X3JlamVjdDtcXG4rXFx0c21jX2liZGV2X2luaXRfZW5kKGxua19uZXctXFx1MDAzZXNtY2liZGV2KTtcXG4gXFx0c21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obG5rX25ldywgbGxjKTtcXG4gXFx0bG5rX25ldy1cXHUwMDNlbGlua19pZCA9IGxsYy1cXHUwMDNlbGlua19udW07XFx0LyogU01DIHNlcnZlciBhc3NpZ25zIGxpbmsgaWQgKi9cXG4gXFx0c21jX2xsY19saW5rX3NldF91aWQobG5rX25ldyk7XFxuQEAgLTExNDMsNyArMTE0NCw3IEBAIGludCBzbWNfbGxjX2NsaV9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbiBvdXRfcmVqZWN0OlxcbiBcXHRzbWNfbGxjX2NsaV9hZGRfbGlua19yZWplY3QocWVudHJ5KTtcXG4gb3V0Olxcbi1cXHRrZnJlZShpbmkpO1xcbitcXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcXG4gXFx0a2ZyZWUocWVudHJ5KTtcXG4gXFx0cmV0dXJuIHJjO1xcbiB9XFxuQEAgLTEyMTcsNyArMTIxOCw3IEBAIHN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuIFxcdHNtY19sbGNfc2VuZF9hZGRfbGluayhsaW5rLCBpbmktXFx1MDAzZWliX2Rldi1cXHUwMDNlbWFjW2luaS1cXHUwMDNlaWJfcG9ydCAtIDFdLFxcbiBcXHRcXHRcXHQgICAgICBpbmktXFx1MDAzZWliX2dpZCwgTlVMTCwgU01DX0xMQ19SRVEpO1xcbiBvdXQ6XFxuLVxcdGtmcmVlKGluaSk7XFxuK1xcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xcbiBcXHRrZnJlZShxZW50cnkpO1xcbiB9XFxuIFxcbkBAIC0xNDg3LDYgKzE0ODgsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbiBcXHRpZiAocmMpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRsaW5rX25ldyA9IFxcdTAwMjZsZ3ItXFx1MDAzZWxua1tsbmtfaWR4XTtcXG4rXFx0c21jX2liZGV2X2luaXRfZW5kKGxpbmtfbmV3LVxcdTAwM2VzbWNpYmRldik7XFxuIFxcbiBcXHRyYyA9IHNtY3JfYnVmX21hcF9sZ3IobGlua19uZXcpO1xcbiBcXHRpZiAocmMpXFxuQEAgLTE1NDQsNyArMTU0Niw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuIFxcdH1cXG4gb3V0OlxcbiBcXHRrZnJlZShxZW50cnkpO1xcbi1cXHRrZnJlZShpbmkpO1xcbitcXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcXG4gXFx0aWYgKHNlbmRfcmVxX2FkZF9saW5rX3Jlc3ApXFxuIFxcdFxcdHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2UocmVxX3FlbnRyeSk7XFxuIFxcdHJldHVybiByYztcXG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfcG5ldC5jIGIvbmV0L3NtYy9zbWNfcG5ldC5jXFxuaW5kZXggNjNlMjg2ZTJkZmFhOC4uYmUxZjUxMzdjOGVlNyAxMDA2NDRcXG4tLS0gYS9uZXQvc21jL3NtY19wbmV0LmNcXG4rKysgYi9uZXQvc21jL3NtY19wbmV0LmNcXG5AQCAtOTgwLDE0ICs5ODAsMjIgQEAgc3RhdGljIGludCBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICppYmRldiwgaW50IGksXFxuIFxcdGlmICghaW5pLVxcdTAwM2VjaGVja19zbWNydjIgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgICFzbWNfaWJfZGV0ZXJtaW5lX2dpZChpYmRldiwgaSwgaW5pLVxcdTAwM2V2bGFuX2lkLCBpbmktXFx1MDAzZWliX2dpZCwgTlVMTCxcXG4gXFx0XFx0XFx0XFx0ICBOVUxMKSkge1xcbitcXHRcXHRpZiAoaW5pLVxcdTAwM2VpYl9kZXZfcmVmKVxcbitcXHRcXHRcXHRzbWNfaWJkZXZfcHV0KGluaS1cXHUwMDNlaWJfZGV2KTtcXG4rXFx0XFx0c21jX2liZGV2X2dldChpYmRldik7XFxuIFxcdFxcdGluaS1cXHUwMDNlaWJfZGV2ID0gaWJkZXY7XFxuK1xcdFxcdGluaS1cXHUwMDNlaWJfZGV2X3JlZiA9IHRydWU7XFxuIFxcdFxcdGluaS1cXHUwMDNlaWJfcG9ydCA9IGk7XFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuIFxcdGlmIChpbmktXFx1MDAzZWNoZWNrX3NtY3J2MiBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgIXNtY19pYl9kZXRlcm1pbmVfZ2lkKGliZGV2LCBpLCBpbmktXFx1MDAzZXZsYW5faWQsIGluaS1cXHUwMDNlc21jcnYyLmliX2dpZF92MixcXG4gXFx0XFx0XFx0XFx0ICBOVUxMLCBcXHUwMDI2aW5pLVxcdTAwM2VzbWNydjIpKSB7XFxuK1xcdFxcdGlmIChpbmktXFx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmKVxcbitcXHRcXHRcXHRzbWNfaWJkZXZfcHV0KGluaS1cXHUwMDNlc21jcnYyLmliX2Rldl92Mik7XFxuK1xcdFxcdHNtY19pYmRldl9nZXQoaWJkZXYpO1xcbiBcXHRcXHRpbmktXFx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIgPSBpYmRldjtcXG4rXFx0XFx0aW5pLVxcdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZiA9IHRydWU7XFxuIFxcdFxcdGluaS1cXHUwMDNlc21jcnYyLmliX3BvcnRfdjIgPSBpO1xcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozODo1MS42MDIzNjIzNjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDg3ODc4MjE3MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU01DXCIsXG4gICAgXCJJTkZJTklCQU5EXCIsXG4gICAgXCJESUJTXCIsXG4gICAgXCJESUJTX0xPXCIsXG4gICAgXCJSRE1BX1JYRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNtY3JfbGlua19pbml0XCIsXG4gICAgXCJzbWNfbGxjX2NsaV9hZGRfbGlua1wiLFxuICAgIFwic21jX2xsY19zcnZfYWRkX2xpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlZmVyZW5jZSBsZWFrIG9mIGBzbWNfaWJfZGV2aWNlYCBpbiB0aGUgU01DIHN1YnN5c3RlbSBieSBpbnRyb2R1Y2luZyBgc21jX2luaXRfaW5mb19mcmVlYCBhbmQgcHJvcGVybHkgbWFuYWdpbmcgdGhlIG9iamVjdCBsaWZldGltZSB3aXRoIHJlZmVyZW5jZSBjb3VudGluZyAoYHNtY19pYmRldl9nZXRgL2BwdXRgKS4gSXQgYWxzbyBhZGRzIGFuIGluaXRpYWxpemF0aW9uIGNvdW50ZXIgKGBpbml0X2NudGApIHRvIHRyYWNrIHVucHVibGlzaGVkIGxpbmsgaW5pdGlhbGl6YXRpb25zLiBUaGUgY2hhbmdlcyBhZmZlY3QgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChgX19zbWNfY29ubmVjdGAsIGBzbWNfbGlzdGVuX3dvcmtgKSBhbmQgTExDIGxpbmsgbWFuYWdlbWVudCAoYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNvY2tldCBvcGVyYXRpb25zIGFuZCBpbmNvbWluZyBuZXR3b3JrIHBhY2tldHMuIFRvIHByb3Blcmx5IHRlc3QgdGhpcywgd2UgbmVlZCB0byBlbmFibGUgU01DLCBJbmZpbmlCYW5kLCBhbmQgc29mdHdhcmUtZW11bGF0ZWQgUkRNQS9ESUJTIGRldmljZXMgKGBSRE1BX1JYRWAsIGBESUJTX0xPYCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc3N2YzMDcxNWM2ZDUwNTQ0ZDZmODBjMDMwYWI1YmJiMTFjOTE0MmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyMyAwNzozODo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zbWMvYWZfc21jLmMgYi9uZXQvc21jL2FmX3NtYy5jXG5pbmRleCBlOWY5M2IzYWI0MzViLi5kNzgxZGVlMWIzMjkzIDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9hZl9zbWMuY1xuKysrIGIvbmV0L3NtYy9hZl9zbWMuY1xuQEAgLTEyMjUsNyArMTIyNSw3IEBAIHZvaWQgc21jX2ZpbGxfZ2lkX2xpc3Qoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG4gXHQgICAgICAgU01DX0dJRF9TSVpFKTtcbiBcbiBvdXQ6XG4tXHRrZnJlZShhbHRfaW5pKTtcbitcdHNtY19pbml0X2luZm9fZnJlZShhbHRfaW5pKTtcbiB9XG4gXG4gc3RhdGljIGludCBzbWNfY29ubmVjdF9yZG1hX3YyX3ByZXBhcmUoc3RydWN0IHNtY19zb2NrICpzbWMsXG5AQCAtMTU5NiwxNCArMTU5NiwxNCBAQCBzdGF0aWMgaW50IF9fc21jX2Nvbm5lY3Qoc3RydWN0IHNtY19zb2NrICpzbWMpXG4gXHRTTUNfU1RBVF9DTE5UX1NVQ0NfSU5DKHNvY2tfbmV0KHNtYy1cdTAwM2VjbGNzb2NrLVx1MDAzZXNrKSwgYWNsYyk7XG4gXHRzbWNfY29ubmVjdF9pc21fdmxhbl9jbGVhbnVwKGluaSk7XG4gXHRrZnJlZShidWYpO1xuLVx0a2ZyZWUoaW5pKTtcbitcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0cmV0dXJuIDA7XG4gXG4gdmxhbl9jbGVhbnVwOlxuIFx0c21jX2Nvbm5lY3RfaXNtX3ZsYW5fY2xlYW51cChpbmkpO1xuIFx0a2ZyZWUoYnVmKTtcbiBmYWxsYmFjazpcbi1cdGtmcmVlKGluaSk7XG4rXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcbiBcdHJldHVybiBzbWNfY29ubmVjdF9kZWNsaW5lX2ZhbGxiYWNrKHNtYywgcmMsIHZlcnNpb24pO1xuIH1cbiBcbkBAIC0yMzQ0LDcgKzIzNDQsMTAgQEAgc3RhdGljIHZvaWQgc21jX2ZpbmRfcmRtYV92Ml9kZXZpY2Vfc2VydihzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXG4gXG4gbm90X2ZvdW5kOlxuIFx0aW5pLVx1MDAzZXNtY3JfdmVyc2lvbiBcdTAwMjY9IH5TTUNfVjI7XG4rXHRpZiAoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmKVxuK1x0XHRzbWNfaWJkZXZfcHV0KGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyKTtcbiBcdGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyID0gTlVMTDtcbitcdGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZiA9IGZhbHNlO1xuIFx0aW5pLVx1MDAzZWNoZWNrX3NtY3J2MiA9IGZhbHNlO1xuIH1cbiBcbkBAIC0yNTg4LDcgKzI1OTEsNyBAQCBzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c21jX2xpc3Rlbl9kZWNsaW5lKG5ld19zbWMsIHJjLCBpbmkgPyBpbmktXHUwMDNlZmlyc3RfY29udGFjdF9sb2NhbCA6IDAsXG4gXHRcdFx0ICAgcHJvcG9zYWxfdmVyc2lvbik7XG4gb3V0X2ZyZWU6XG4tXHRrZnJlZShpbmkpO1xuK1x0c21jX2luaXRfaW5mb19mcmVlKGluaSk7XG4gXHRrZnJlZShidWYpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmMgYi9uZXQvc21jL3NtY19jb3JlLmNcbmluZGV4IDE4MTY0Nzk4MjQ5MGIuLmQ5N2JjNzMyMzEwNjkgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmNcbisrKyBiL25ldC9zbWMvc21jX2NvcmUuY1xuQEAgLTU1LDYgKzU1LDE3IEBAIHN0YXRpYyB2b2lkIF9fc21jX2xncl90ZXJtaW5hdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgc29mdCk7XG4gXG4gc3RhdGljIHZvaWQgc21jX2xpbmtfZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gXG4rdm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbit7XG4rXHRpZiAoIWluaSlcbitcdFx0cmV0dXJuO1xuK1x0aWYgKGluaS1cdTAwM2VpYl9kZXZfcmVmKVxuK1x0XHRzbWNfaWJkZXZfcHV0KGluaS1cdTAwM2VpYl9kZXYpO1xuK1x0aWYgKGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZilcbitcdFx0c21jX2liZGV2X3B1dChpbmktXHUwMDNlc21jcnYyLmliX2Rldl92Mik7XG4rXHRrZnJlZShpbmkpO1xuK31cbitcbiAvKiByZXR1cm4gaGVhZCBvZiBsaW5rIGdyb3VwIGxpc3QgYW5kIGl0cyBsb2NrIGZvciBhIGdpdmVuIGxpbmsgZ3JvdXAgKi9cbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXN0X2hlYWQgKnNtY19sZ3JfbGlzdF9oZWFkKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuIFx0XHRcdFx0XHRcdCAgc3BpbmxvY2tfdCAqKmxncl9sb2NrKVxuQEAgLTc5MywxNCArODA0LDIxIEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssXG4gXHRpbnQgcmM7XG4gXG4gXHRpZiAobGdyLVx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xuLVx0XHRsbmstXHUwMDNlc21jaWJkZXYgPSBpbmktXHUwMDNlc21jcnYyLmliX2Rldl92MjtcbitcdFx0c21jaWJkZXYgPSBpbmktXHUwMDNlc21jcnYyLmliX2Rldl92MjtcbiBcdFx0bG5rLVx1MDAzZWlicG9ydCA9IGluaS1cdTAwM2VzbWNydjIuaWJfcG9ydF92Mjtcbi1cdFx0bG5rLVx1MDAzZXdyX3J4X3NnZV9jbnQgPSBsbmstXHUwMDNlc21jaWJkZXYtXHUwMDNlaWJkZXYtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlIFx1MDAzYyAyID8gMSA6IDI7XG4rXHR9IGVsc2Uge1xuK1x0XHRzbWNpYmRldiA9IGluaS1cdTAwM2VpYl9kZXY7XG4rXHRcdGxuay1cdTAwM2VpYnBvcnQgPSBpbmktXHUwMDNlaWJfcG9ydDtcbitcdH1cbitcdHJjID0gc21jX2liZGV2X2luaXRfYmVnaW4oc21jaWJkZXYpO1xuK1x0aWYgKHJjKVxuK1x0XHRyZXR1cm4gcmM7XG4rXHRsbmstXHUwMDNlc21jaWJkZXYgPSBzbWNpYmRldjtcbitcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyKSB7XG4rXHRcdGxuay1cdTAwM2V3cl9yeF9zZ2VfY250ID0gc21jaWJkZXYtXHUwMDNlaWJkZXYtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlIFx1MDAzYyAyID8gMSA6IDI7XG4gXHRcdGxuay1cdTAwM2V3cl9yeF9idWZsZW4gPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobG5rKSA/XG4gXHRcdFx0U01DX1dSX0JVRl9TSVpFIDogU01DX1dSX0JVRl9WMl9TSVpFO1xuIFx0fSBlbHNlIHtcbi1cdFx0bG5rLVx1MDAzZXNtY2liZGV2ID0gaW5pLVx1MDAzZWliX2Rldjtcbi1cdFx0bG5rLVx1MDAzZWlicG9ydCA9IGluaS1cdTAwM2VpYl9wb3J0O1xuIFx0XHRsbmstXHUwMDNld3Jfcnhfc2dlX2NudCA9IDE7XG4gXHRcdGxuay1cdTAwM2V3cl9yeF9idWZsZW4gPSBTTUNfV1JfQlVGX1NJWkU7XG4gXHR9XG5AQCAtODgyLDYgKzkwMCw3IEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssXG4gXHRpZiAoIWF0b21pY19kZWNfcmV0dXJuKFx1MDAyNnNtY2liZGV2LVx1MDAzZWxua19jbnQpKVxuIFx0XHR3YWtlX3VwKFx1MDAyNnNtY2liZGV2LVx1MDAzZWxua3NfZGVsZXRlZCk7XG4gXHRzbWNfbGdyX3B1dChsZ3IpOyAvKiBsZ3JfaG9sZCBhYm92ZSAqL1xuK1x0c21jX2liZGV2X2luaXRfZW5kKHNtY2liZGV2KTtcbiBcdHJldHVybiByYztcbiB9XG4gXG5AQCAtOTk3LDYgKzEwMTYsOCBAQCBzdGF0aWMgaW50IHNtY19sZ3JfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuIFx0c3Bpbl9sb2NrX2JoKGxncl9sb2NrKTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bGdyLVx1MDAzZWxpc3QsIGxncl9saXN0KTtcbiBcdHNwaW5fdW5sb2NrX2JoKGxncl9sb2NrKTtcbitcdGlmICghaW5pLVx1MDAzZWlzX3NtY2QpXG4rXHRcdHNtY19pYmRldl9pbml0X2VuZChsbmstXHUwMDNlc21jaWJkZXYpO1xuIFx0cmV0dXJuIDA7XG4gXG4gZnJlZV93cTpcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmggYi9uZXQvc21jL3NtY19jb3JlLmhcbmluZGV4IDVjMThmMDhhNGM4YTUuLjlmNWE2OWEzMGNiM2YgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmhcbisrKyBiL25ldC9zbWMvc21jX2NvcmUuaFxuQEAgLTQwMyw2ICs0MDMsNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mb19zbWNydjIge1xuIFxuIFx0LyogT3V0cHV0IGZpZWxkcyB3aGVuIHNhZGRyIGlzIHNldCAqL1xuIFx0c3RydWN0IHNtY19pYl9kZXZpY2VcdCppYl9kZXZfdjI7XG4rXHRib29sXHRcdFx0aWJfZGV2X3YyX3JlZjsgLyogb3ducyBhbiBzbWNfaWJkZXYgcmVmZXJlbmNlICovXG4gXHR1OFx0XHRcdGliX3BvcnRfdjI7XG4gXHR1OFx0XHRcdGliX2dpZF92MltTTUNfR0lEX1NJWkVdO1xuIFxuQEAgLTQzOCw2ICs0MzksNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyB7XG4gXHR1OFx0XHRcdHBlZXJfbWFjW0VUSF9BTEVOXTtcbiBcdHU4XHRcdFx0cGVlcl9zeXN0ZW1pZFtTTUNfU1lTVEVNSURfTEVOXTtcbiBcdHN0cnVjdCBzbWNfaWJfZGV2aWNlXHQqaWJfZGV2O1xuK1x0Ym9vbFx0XHRcdGliX2Rldl9yZWY7IC8qIG93bnMgYW4gc21jX2liZGV2IHJlZmVyZW5jZSAqL1xuIFx0dThcdFx0XHRpYl9naWRbU01DX0dJRF9TSVpFXTtcbiBcdHU4XHRcdFx0aWJfcG9ydDtcbiBcdHUzMlx0XHRcdGliX2NsY3FwbjtcbkBAIC01OTQsNiArNTk2LDcgQEAgdm9pZCBzbWNfcnRva2VuX3NldDIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGludCBydG9rX2lkeCwgaW50IGxpbmtfaWQsXG4gdm9pZCBzbWNfc25kYnVmX3N5bmNfc2dfZm9yX2RldmljZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pO1xuIHZvaWQgc21jX3JtYl9zeW5jX3NnX2Zvcl9jcHUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKTtcbiBpbnQgc21jX3ZsYW5fYnlfdGNwc2soc3RydWN0IHNvY2tldCAqY2xjc29jaywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG4rdm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG4gXG4gdm9pZCBzbWNfY29ubl9mcmVlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7XG4gaW50IHNtY19jb25uX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuYyBiL25ldC9zbWMvc21jX2liLmNcbmluZGV4IDliYjQ5NTcwNzQ0NWUuLmQ4NTg0NTNjNjRkOTIgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19pYi5jXG4rKysgYi9uZXQvc21jL3NtY19pYi5jXG5AQCAtOTM0LDYgKzkzNCw0NCBAQCB2b2lkIHNtY19pYl9uZGV2X2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdW5zaWduZWQgbG9uZyBldmVudClcbiBcdG11dGV4X3VubG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHNtY19pYmRldl9yZWxlYXNlKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbit7XG4rXHRwdXRfZGV2aWNlKFx1MDAyNnNtY2liZGV2LVx1MDAzZWliZGV2LVx1MDAzZWRldik7XG4rXHRrZnJlZShzbWNpYmRldik7XG4rfVxuK1xuK3ZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0cmVmY291bnRfaW5jKFx1MDAyNnNtY2liZGV2LVx1MDAzZXJlZmNudCk7XG4rfVxuK1xuK3ZvaWQgc21jX2liZGV2X3B1dChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZzbWNpYmRldi1cdTAwM2VyZWZjbnQpKVxuK1x0XHRzbWNfaWJkZXZfcmVsZWFzZShzbWNpYmRldik7XG4rfVxuK1xuK2ludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0aW50IHJjID0gMDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuK1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2c21jaWJkZXYtXHUwMDNlbGlzdCkpXG4rXHRcdHJjID0gLUVOT0RFVjtcbitcdGVsc2VcbitcdFx0YXRvbWljX2luYyhcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuK1x0cmV0dXJuIHJjO1xuK31cbitcbit2b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4rXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpXG4rXHRcdHdha2VfdXAoXHUwMDI2c21jaWJkZXYtXHUwMDNlaW5pdF93YWl0KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4rfVxuK1xuIC8qIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpYl9yZWdpc3Rlcl9jbGllbnQoKSAqL1xuIHN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpXG4ge1xuQEAgLTk0OSw3ICs5ODcsMTEgQEAgc3RhdGljIGludCBzbWNfaWJfYWRkX2RldihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRzbWNpYmRldi1cdTAwM2VpYmRldiA9IGliZGV2O1xuK1x0Z2V0X2RldmljZShcdTAwMjZpYmRldi1cdTAwM2VkZXYpO1xuK1x0cmVmY291bnRfc2V0KFx1MDAyNnNtY2liZGV2LVx1MDAzZXJlZmNudCwgMSk7XG4gXHRJTklUX1dPUksoXHUwMDI2c21jaWJkZXYtXHUwMDNlcG9ydF9ldmVudF93b3JrLCBzbWNfaWJfcG9ydF9ldmVudF93b3JrKTtcbitcdGF0b21pY19zZXQoXHUwMDI2c21jaWJkZXYtXHUwMDNlaW5pdF9jbnQsIDApO1xuK1x0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X3dhaXQpO1xuIFx0YXRvbWljX3NldChcdTAwMjZzbWNpYmRldi1cdTAwM2VsbmtfY250LCAwKTtcbiBcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXHUwMDI2c21jaWJkZXYtXHUwMDNlbG5rc19kZWxldGVkKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2c21jaWJkZXYtXHUwMDNlbXV0ZXgpO1xuQEAgLTEwMDAsMTEgKzEwNDIsMTQgQEAgc3RhdGljIHZvaWQgc21jX2liX3JlbW92ZV9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHZvaWQgKmNsaWVudF9kYXRhKVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNtY19pYl9kZXZpY2VzLm11dGV4KTtcbiBcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXCJzbWM6IHJlbW92aW5nIGliIGRldmljZSAlc1xcblwiLFxuIFx0XHRcdCAgICBzbWNpYmRldi1cdTAwM2VpYmRldi1cdTAwM2VuYW1lKTtcbitcdGlmIChhdG9taWNfcmVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpXG4rXHRcdHdhaXRfZXZlbnQoc21jaWJkZXYtXHUwMDNlaW5pdF93YWl0LFxuK1x0XHRcdCAgICFhdG9taWNfcmVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpO1xuIFx0c21jX3NtY3JfdGVybWluYXRlX2FsbChzbWNpYmRldik7XG4gXHRzbWNfaWJfY2xlYW51cF9wZXJfaWJkZXYoc21jaWJkZXYpO1xuIFx0aWJfdW5yZWdpc3Rlcl9ldmVudF9oYW5kbGVyKFx1MDAyNnNtY2liZGV2LVx1MDAzZWV2ZW50X2hhbmRsZXIpO1xuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZzbWNpYmRldi1cdTAwM2Vwb3J0X2V2ZW50X3dvcmspO1xuLVx0a2ZyZWUoc21jaWJkZXYpO1xuK1x0c21jX2liZGV2X3B1dChzbWNpYmRldik7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgaWJfY2xpZW50IHNtY19pYl9jbGllbnQgPSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuaCBiL25ldC9zbWMvc21jX2liLmhcbmluZGV4IGVmOGFjMmI3NTQ2ZGYuLmQzMjU0NzM1MGU4YjggMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19pYi5oXG4rKysgYi9uZXQvc21jL3NtY19pYi5oXG5AQCAtMTUsNiArMTUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaWZfZXRoZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjcmRtYS9pYl92ZXJicy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3NtYy5oXHUwMDNlXG5AQCAtNTEsNiArNTIsOSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7XHRcdFx0XHQvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqL1xuIFx0c3RydWN0IHdvcmtfc3RydWN0XHRwb3J0X2V2ZW50X3dvcms7XG4gXHR1bnNpZ25lZCBsb25nXHRcdHBvcnRfZXZlbnRfbWFzaztcbiBcdERFQ0xBUkVfQklUTUFQKHBvcnRzX2dvaW5nX2F3YXksIFNNQ19NQVhfUE9SVFMpO1xuK1x0cmVmY291bnRfdFx0XHRyZWZjbnQ7XHRcdC8qIG9iamVjdCBsaWZldGltZSAqL1xuK1x0YXRvbWljX3RcdFx0aW5pdF9jbnQ7XHQvKiB1bnB1Ymxpc2hlZCBsaW5rIGluaXRpYWxpemF0aW9ucyAqL1xuK1x0d2FpdF9xdWV1ZV9oZWFkX3RcdGluaXRfd2FpdDtcdC8qIHdhaXQgZm9yIGxpbmtzIHRvIGJlIHB1Ymxpc2hlZCAqL1xuIFx0YXRvbWljX3RcdFx0bG5rX2NudDtcdC8qIG51bWJlciBvZiBsaW5rcyBvbiBpYmRldiAqL1xuIFx0d2FpdF9xdWV1ZV9oZWFkX3RcdGxua3NfZGVsZXRlZDtcdC8qIHdhaXQgNCByZW1vdmFsIG9mIGFsbCBsaW5rcyovXG4gXHRzdHJ1Y3QgbXV0ZXhcdFx0bXV0ZXg7XHRcdC8qIHByb3RlY3QgZGV2IHNldHVwK2NsZWFudXAgKi9cbkBAIC01OSw2ICs2MywxMSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7XHRcdFx0XHQvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqL1xuIFx0aW50XHRcdFx0bmRldl9pZmlkeFtTTUNfTUFYX1BPUlRTXTsgLyogbmRldiBpZiBpbmRleGVzICovXG4gfTtcbiBcbit2b2lkIHNtY19pYmRldl9nZXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbit2b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbitpbnQgc21jX2liZGV2X2luaXRfYmVnaW4oc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbit2b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpO1xuK1xuIHN0YXRpYyBpbmxpbmUgX19iZTMyIHNtY19pYl9naWRfdG9faXB2NCh1OCBnaWRbU01DX0dJRF9TSVpFXSlcbiB7XG4gXHRzdHJ1Y3QgaW42X2FkZHIgKmFkZHI2ID0gKHN0cnVjdCBpbjZfYWRkciAqKWdpZDtcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19sbGMuYyBiL25ldC9zbWMvc21jX2xsYy5jXG5pbmRleCBjOWNjZDg0ODAzNjljLi5lMTZhYWE1MTQzNjhhIDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmNcbisrKyBiL25ldC9zbWMvc21jX2xsYy5jXG5AQCAtMTEwOCw2ICsxMTA4LDcgQEAgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4gXHRyYyA9IHNtY3JfbGlua19pbml0KGxnciwgbG5rX25ldywgbG5rX2lkeCwgaW5pKTtcbiBcdGlmIChyYylcbiBcdFx0Z290byBvdXRfcmVqZWN0O1xuK1x0c21jX2liZGV2X2luaXRfZW5kKGxua19uZXctXHUwMDNlc21jaWJkZXYpO1xuIFx0c21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obG5rX25ldywgbGxjKTtcbiBcdGxua19uZXctXHUwMDNlbGlua19pZCA9IGxsYy1cdTAwM2VsaW5rX251bTtcdC8qIFNNQyBzZXJ2ZXIgYXNzaWducyBsaW5rIGlkICovXG4gXHRzbWNfbGxjX2xpbmtfc2V0X3VpZChsbmtfbmV3KTtcbkBAIC0xMTQzLDcgKzExNDQsNyBAQCBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbiBvdXRfcmVqZWN0OlxuIFx0c21jX2xsY19jbGlfYWRkX2xpbmtfcmVqZWN0KHFlbnRyeSk7XG4gb3V0OlxuLVx0a2ZyZWUoaW5pKTtcbitcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0a2ZyZWUocWVudHJ5KTtcbiBcdHJldHVybiByYztcbiB9XG5AQCAtMTIxNyw3ICsxMjE4LDcgQEAgc3RhdGljIHZvaWQgc21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdHNtY19sbGNfc2VuZF9hZGRfbGluayhsaW5rLCBpbmktXHUwMDNlaWJfZGV2LVx1MDAzZW1hY1tpbmktXHUwMDNlaWJfcG9ydCAtIDFdLFxuIFx0XHRcdCAgICAgIGluaS1cdTAwM2VpYl9naWQsIE5VTEwsIFNNQ19MTENfUkVRKTtcbiBvdXQ6XG4tXHRrZnJlZShpbmkpO1xuK1x0c21jX2luaXRfaW5mb19mcmVlKGluaSk7XG4gXHRrZnJlZShxZW50cnkpO1xuIH1cbiBcbkBAIC0xNDg3LDYgKzE0ODgsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dDtcbiBcdGxpbmtfbmV3ID0gXHUwMDI2bGdyLVx1MDAzZWxua1tsbmtfaWR4XTtcbitcdHNtY19pYmRldl9pbml0X2VuZChsaW5rX25ldy1cdTAwM2VzbWNpYmRldik7XG4gXG4gXHRyYyA9IHNtY3JfYnVmX21hcF9sZ3IobGlua19uZXcpO1xuIFx0aWYgKHJjKVxuQEAgLTE1NDQsNyArMTU0Niw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHR9XG4gb3V0OlxuIFx0a2ZyZWUocWVudHJ5KTtcbi1cdGtmcmVlKGluaSk7XG4rXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcbiBcdGlmIChzZW5kX3JlcV9hZGRfbGlua19yZXNwKVxuIFx0XHRzbWNfbGxjX3NlbmRfcmVxX2FkZF9saW5rX3Jlc3BvbnNlKHJlcV9xZW50cnkpO1xuIFx0cmV0dXJuIHJjO1xuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3BuZXQuYyBiL25ldC9zbWMvc21jX3BuZXQuY1xuaW5kZXggNjNlMjg2ZTJkZmFhOC4uYmUxZjUxMzdjOGVlNyAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3BuZXQuY1xuKysrIGIvbmV0L3NtYy9zbWNfcG5ldC5jXG5AQCAtOTgwLDE0ICs5ODAsMjIgQEAgc3RhdGljIGludCBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICppYmRldiwgaW50IGksXG4gXHRpZiAoIWluaS1cdTAwM2VjaGVja19zbWNydjIgXHUwMDI2XHUwMDI2XG4gXHQgICAgIXNtY19pYl9kZXRlcm1pbmVfZ2lkKGliZGV2LCBpLCBpbmktXHUwMDNldmxhbl9pZCwgaW5pLVx1MDAzZWliX2dpZCwgTlVMTCxcbiBcdFx0XHRcdCAgTlVMTCkpIHtcbitcdFx0aWYgKGluaS1cdTAwM2VpYl9kZXZfcmVmKVxuK1x0XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZWliX2Rldik7XG4rXHRcdHNtY19pYmRldl9nZXQoaWJkZXYpO1xuIFx0XHRpbmktXHUwMDNlaWJfZGV2ID0gaWJkZXY7XG4rXHRcdGluaS1cdTAwM2VpYl9kZXZfcmVmID0gdHJ1ZTtcbiBcdFx0aW5pLVx1MDAzZWliX3BvcnQgPSBpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcdGlmIChpbmktXHUwMDNlY2hlY2tfc21jcnYyIFx1MDAyNlx1MDAyNlxuIFx0ICAgICFzbWNfaWJfZGV0ZXJtaW5lX2dpZChpYmRldiwgaSwgaW5pLVx1MDAzZXZsYW5faWQsIGluaS1cdTAwM2VzbWNydjIuaWJfZ2lkX3YyLFxuIFx0XHRcdFx0ICBOVUxMLCBcdTAwMjZpbmktXHUwMDNlc21jcnYyKSkge1xuK1x0XHRpZiAoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmKVxuK1x0XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIpO1xuK1x0XHRzbWNfaWJkZXZfZ2V0KGliZGV2KTtcbiBcdFx0aW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIgPSBpYmRldjtcbitcdFx0aW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmID0gdHJ1ZTtcbiBcdFx0aW5pLVx1MDAzZXNtY3J2Mi5pYl9wb3J0X3YyID0gaTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozODo1MS42MDIzNjM3MTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjkxOTQwMzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gVGhpcyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGEgZGVjZW50IGNodW5rIG9mIHRoZSBTTUMgY29kZSDigJMgYGFmX3NtYy5jYCwgYHNtY19jb3JlLmNgLCBgc21jX2NvcmUuaGAsIGBzbWNfaWIuY2AsIGBzbWNfaWIuaGAsIGBzbWNfbGxjLmNgLCBhbmQgYHNtY19wbmV0LmNgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQncyBxdWl0ZSBhIHdpZGUgc2NvcGUsIHNvIEkgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbXBsaWNhdGlvbnMuIEl0IGxvb2tzIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgcHJvcGVybHkgZnJlZWluZyB0aGUgYHN0cnVjdCBzbWNfaW5pdF9pbmZvYCBzdHJ1Y3R1cmUgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIGBzbWNfaW5pdF9pbmZvX2ZyZWVgLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiBmb3IgcHJldmVudGluZyBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzLiBJIHNlZSB0aGUgcGF0Y2ggYWxzbyBpbmNsdWRlcyBtYW5hZ2luZyB0aGUgYHNtY19pYl9kZXZpY2VgIHdpdGggcmVmZXJlbmNlIGNvdW50aW5nIChgcmVmY250YCkgYW5kIGFuIGluaXRpYWxpemF0aW9uIGNvdW50ZXIgKGBpbml0X2NudGApLCBhbG9uZyB3aXRoIHVzaW5nIGBzbWNfaWJkZXZfcHV0YCwgd2hpY2ggaW5kaWNhdGVzIHRoZXkncmUgYWRkcmVzc2luZyBob3cgdGhlc2UgZGV2aWNlcyBhcmUgbWFuYWdlZC5cblxuU2luY2UgdGhpcyBpcyBpbiB0aGUgU01DIHN1YnN5c3RlbSwgSSBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuIFNNQyBpcyByZWxldmFudCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSBydW5uaW5nIG92ZXIgVENQL0lQIG9yIFJETUEgZW11bGF0b3JzLCBsaWtlIHNpdyBvciByeGUuIEknbSBhbHNvIHJlbWVtYmVyaW5nIHRoYXQgU01DIGNhbiB1dGlsaXplIFJvQ0Ugb3IgSVNNLCBhbmQgdGhhdCBzb2Z0LVJvQ0UgKFJYRSkgaXMgZXZlbiBhdmFpbGFibGUgaW4gUUVNVS4gVGhhdCdzIGludGVyZXN0aW5nLCBiZWNhdXNlIGl0IG1lYW5zIHdlIGNvdWxkIHBvdGVudGlhbGx5IGZ1enogdGhpcy5cblxuTm93LCBteSBuZXh0IG1vdmUgaXMgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX1NNQ2AgaXMgc2V0IGNvcnJlY3RseS4gSSdsbCBhbHNvIGNoZWNrIGBuZXQvc21jL0tjb25maWdgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgb3B0aW9ucyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mIG9yIG1pZ2h0IG5lZWQgdG8gY29uZmlndXJlIGZvciB0ZXN0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDAyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzg6NTcuODk0MzA2NzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwODQ1MDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcXG5uZXQvc21jL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMTMtXFxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xcbm5ldC9zbWMvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiU01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMjItXFxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcXG5uZXQvc21jL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzg6NTguMDQ1MTcwMjc1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0MzQ4NjY0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBDT05GSUdfU01DYCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCBgQ09ORklHX1NNQ2AuLi4gd2hhdCAqZXhhY3RseSogaXMgdGhhdCB0aWVkIHRvP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucyBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIG1ha2luZyBhbnkgbW9kaWZpY2F0aW9ucyBvciBpbnRlZ3JhdGlvbnMuIEl0J3MgYSBxdWljayByZWZsZXgsIHJlYWxseSwgYSBtZW50YWwgY2hlY2tsaXN0IG9mIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIEknbSBlc3NlbnRpYWxseSBydW5uaW5nIGEgZGVwZW5kZW5jeSBhbmFseXNpcyBpbiBteSBoZWFkLiBXaGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzLCBkcml2ZXJzLCBvciBldmVuIGhpZ2hlci1sZXZlbCBmZWF0dXJlcyBtaWdodCByZWx5IG9uIHRoZSBmdW5jdGlvbmFsaXR5IGVuYWJsZWQgYnkgdGhhdCBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBJcyBpdCBhIGNvcmUgY29tcG9uZW50LCBvciBzb21ldGhpbmcgbW9yZSBwZXJpcGhlcmFsPyBNeSBhaW0gaXMgdG8gYnVpbGQgYSBjb21wbGV0ZSBtZW50YWwgbWFwIG9mIHRoZSBjb25maWd1cmF0aW9uJ3MgcmVhY2guIEkgd2FudCB0byBtaW5pbWl6ZSB1bmZvcmVzZWVuIGNvbnNlcXVlbmNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg5NSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM5OjAxLjI4ODY1OTc1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTAzNjcyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL0tjb25maWc9Mj1jb25maWcgU01DXFxubmV0L3NtYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbm5ldC9zbWMvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG5uZXQvc21jL0tjb25maWctNS1cXHRoZWxwXFxuLS1cXG5uZXQvc21jL0tjb25maWc9MTQ9Y29uZmlnIFNNQ19ESUFHXFxubmV0L3NtYy9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJTTUM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5uZXQvc21jL0tjb25maWc6MTY6XFx0ZGVwZW5kcyBvbiBTTUNcXG5uZXQvc21jL0tjb25maWctMTctXFx0aGVscFxcbi0tXFxubmV0L3NtYy9LY29uZmlnPTIzPWNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcXG5uZXQvc21jL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG5uZXQvc21jL0tjb25maWc6MjU6XFx0ZGVwZW5kcyBvbiBTTUMgXFx1MDAyNlxcdTAwMjYgQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBCUEZfU1lTQ0FMTFxcbm5ldC9zbWMvS2NvbmZpZy0yNi1cXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzk6MDEuMzMzNzAyMDE0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3MjY0MTgzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWNvZGluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGRlcGVuZGVuY3kgY2hhaW4uLi4gYGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSU5GSU5JQkFORCBcdTAwMjZcdTAwMjYgRElCU2AuLi4gRElCUz8gVGhhdCBkb2Vzbid0IGltbWVkaWF0ZWx5IHJpbmcgYSBiZWxsLiBNeSBpbml0aWFsIHJlYWRpbmcgbWlnaHQgaGF2ZSBiZWVuIG9mZiwgb3IgcGVyaGFwcyB0aGVyZSdzIGEgdHlwbyBpbiBteSBtZW50YWwgcHJvY2Vzc2luZy4gTGV0IG1lIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoYXQuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMuIFJpZ2h0LCBsZXQgbWUgcHVsbCB1cCBgbmV0L3NtYy9LY29uZmlnYCwgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBmaXJzdCB0ZW4gbGluZXMuIFRoYXQgc2hvdWxkIGNsZWFyIHRoaXMgdXAgcXVpY2tseS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM1MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM5OjA0LjkwNjM0Njg3NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNNQ1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQyBzb2NrZXQgcHJvdG9jb2wgZmFtaWx5XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBTTUMtUiBwcm92aWRlcyBhIFxcXCJzb2NrZXRzIG92ZXIgUkRNQVxcXCIgc29sdXRpb24gbWFraW5nIHVzZSBvZlxcbiAgIDc6XFx0XFx0ICBSRE1BIG92ZXIgQ29udmVyZ2VkIEV0aGVybmV0IChSb0NFKSB0ZWNobm9sb2d5IHRvIHVwZ3JhZGVcXG4gICA4OlxcdFxcdCAgQUZfSU5FVCBUQ1AgY29ubmVjdGlvbnMgdHJhbnNwYXJlbnRseS5cXG4gICA5OlxcdFxcdCAgVGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTTUMtUiBzb2x1dGlvbiBpcyBkZXNpZ25lZCBhc1xcbiAgMTA6XFx0XFx0ICBhIHNlcGFyYXRlIHNvY2tldCBmYW1pbHkgU01DLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOTowNC45MDY0MDQ2MjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDMxOTI0Mjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVGhpcyBcIkRJQlNcIiBCdXNpbmVzcyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIFwiRElCU1wiPyBUaGF0IHRlcm0ncyB0aHJvd2luZyBtZSBmb3IgYSBsb29wLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sg4oCTIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpc24ndCBzb21lIG9ic2N1cmUgdHlwbyBzbmVha2luZyBpbnRvIHRoZSBrZXJuZWwgdHJlZS4gTWF5YmUgdGhlcmUncyBhIG5ldyBjb21taXQgdGhhdCBzbGlwcGVkIHRocm91Z2g/IEFoLCBub3BlLCBzdGlsbCBcIkRJQlNcIi5cblxuQWxyaWdodCwgbGV0J3Mgc3RlcCBiYWNrLCBtYXliZSBJJ20gbG9va2luZyBhdCBpdCB3cm9uZy4gXCJESUJTXCIuLi4gaXMgdGhpcyByZWxhdGVkIHRvIElQdjYgc29tZWhvdz8gTWF5YmUgaXQncyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBUaGUgS2NvbmZpZyBmaWxlcyBhcmUgbXkgbmV4dCBzdG9wLiBUaW1lIHRvIHJ1biBhIGdyZXAgYW5kIHNlZSB3aGF0IHRoaXMgbXlzdGVyeSBcIkRJQlNcIiBpcyBhbGwgYWJvdXQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGtlcm5lbCBjb25maWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3MjEsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM5OjA4LjMzODMzMTgzOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4NDUzNzA2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRElCU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoyOmNvbmZpZyBESUJTXFxuZHJpdmVycy9kaWJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL2RpYnMvS2NvbmZpZzoxNDpjb25maWcgRElCU19MT1xcbmRyaXZlcnMvZGlicy9LY29uZmlnLTE1LVxcdGJvb2wgXFxcIkludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzk6MTAuMDIyODc0MzEyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5ODE1MzYzNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFNNQyBDb25maWd1cmF0aW9uIGFuZCBDb2RlIENoYW5nZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgRElCU2AgaXMgYW4gaW50ZXJuYWwgcGllY2Ugd2l0aGluIHRoaXMga2VybmVsIHRyZWUuIGBTTUNgIGNsZWFybHkgZGVwZW5kcyBvbiBgSU5FVGAsIGBJTkZJTklCQU5EYCwgYW5kLCBvZiBjb3Vyc2UsIGBESUJTYC4gU28sIHRvIGVuYWJsZSBgU01DYCwgYWxsIHRocmVlIGRlcGVuZGVuY2llcyBtdXN0IGJlIGVuYWJsZWQuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgYElORklOSUJBTkRgLCB0aGUgUkRNQSBzdWJzeXN0ZW0sIGhhcyBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMsIGp1c3QgdG8gYmUgdGhvcm91Z2guIEknbGwgbWFrZSBzdXJlIHRvIGFkZCBgU01DYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgIHRvIGBFbmFibGVDb25maWdzYCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBlbmFibGVkLlxuXG5Ob3csIGxldCdzIGdldCBpbnRvIHRoZSBjb2RlIGNoYW5nZXMuIEkndmUgZ290IGEgbGlzdCBvZiBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQ6IGBzbWNfZmlsbF9naWRfbGlzdGAsIGBzbWNfY29ubmVjdF9yZG1hX3YyX3ByZXBhcmVgLCBgX19zbWNfY29ubmVjdGAsIGBzbWNfZmluZF9yZG1hX3YyX2RldmljZV9zZXJ2YCwgYHNtY19saXN0ZW5fd29ya2AsIGBzbWNfaW5pdF9pbmZvX2ZyZWVgLCBgc21jcl9saW5rX2luaXRgLCBgc21jX2xncl9jcmVhdGVgLCBgc21jX2liX25kZXZfY2hhbmdlYCwgYHNtY19pYmRldl9yZWxlYXNlYCwgYHNtY19pYmRldl9nZXRgLCBgc21jX2liZGV2X3B1dGAsIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAsIGBzbWNfaWJkZXZfaW5pdF9lbmRgLCBgc21jX2liX2FkZF9kZXZgLCBgc21jX2liX3JlbW92ZV9kZXZgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYW5kIGBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkYC5cblxuTG9va2luZyBhdCB0aGF0IGxpc3QsIEknbGwgbmVlZCB0byBjb25jZW50cmF0ZSBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIG1vc3QgaW1wYWN0ZWQgYnkgdGhlIGNoYW5nZXM7IHRob3NlIGFyZSBgX19zbWNfY29ubmVjdGAsIGBzbWNfbGlzdGVuX3dvcmtgLCBgc21jX2liX2FkZF9kZXZgLCBgc21jX2liX3JlbW92ZV9kZXZgLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBhbmQgYHNtY3JfbGlua19pbml0YC5cblxuT2theSwgbGV0J3Mgc2VlLCBgX19zbWNfY29ubmVjdGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaGVscHMgbmFycm93IHRoaW5ncyBkb3duLCB3aGljaCBtZWFucyBpdCBsaWtlbHkgaGFzIHNvbWUgc2NvcGUgcmVzdHJpY3Rpb25zLiBMZXQncyBjaGVjayBgc21jX2Nvbm5lY3RgLCBgc21jX2xpc3RlbmAsIGFuZCBgc21jX2xpc3Rlbl93b3JrYC4gSXQgbG9va3MgbGlrZSBgc21jX2Nvbm5lY3RgIGlzIHRoZSBgY29ubmVjdGAgc3lzY2FsbCBoYW5kbGVyIGZvciBBRl9TTUMuIGBzbWNfbGlzdGVuYCBtdXN0IGJlIHRoZSBgbGlzdGVuYCBzeXNjYWxsIGhhbmRsZXIuIGBzbWNfaWJfYWRkX2RldmAgaXMgY2FsbGVkIHdoZW4gYW4gSUIgZGV2aWNlIGlzIGFkZGVkLCBhbmQgYHNtY19sbGNfY2xpX2FkZF9saW5rYCBpcyBjYWxsZWQgd2hlbiBhbiBMTEMgQUREX0xJTksgbWVzc2FnZSBpcyByZWNlaXZlZC4gTm93IEknbGwgbmVlZCB0byBmb2N1cyBvbiB0aG9zZSBub24tc3RhdGljIGZ1bmN0aW9ucyBmb3IgYSBtb3JlIGRldGFpbGVkIHJldmlldy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA2OSwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOToxOS4wMDQ0MTMyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk0NTIxNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihpbnR8dm9pZHxzdGF0aWMgaW50fHN0YXRpYyB2b2lkKSBbYS16QS1aMC05X10rXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9zbWNfaWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19pYi5jPTQ1PXU4IGxvY2FsX3N5c3RlbWlkW1NNQ19TWVNURU1JRF9MRU5dO1xcdFxcdC8qIHVuaXF1ZSBzeXN0ZW0gaWRlbnRpZmllciAqL1xcbm5ldC9zbWMvc21jX2liLmMtNDYtXFxubmV0L3NtYy9zbWNfaWIuYzo0NzpzdGF0aWMgaW50IHNtY19pYl9tb2RpZnlfcXBfaW5pdChzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcXG5uZXQvc21jL3NtY19pYi5jLTQ4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNjEtXFxubmV0L3NtYy9zbWNfaWIuYzo2MjpzdGF0aWMgaW50IHNtY19pYl9tb2RpZnlfcXBfcnRyKHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2liLmMtNjMte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy05NC1cXG5uZXQvc21jL3NtY19pYi5jOjk1OmludCBzbWNfaWJfbW9kaWZ5X3FwX3J0cyhzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcXG5uZXQvc21jL3NtY19pYi5jLTk2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtMTEzLVxcbm5ldC9zbWMvc21jX2liLmM6MTE0OmludCBzbWNfaWJfbW9kaWZ5X3FwX2Vycm9yKHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2liLmMtMTE1LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtMTIyLVxcbm5ldC9zbWMvc21jX2liLmM6MTIzOmludCBzbWNfaWJfcmVhZHlfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcXG5uZXQvc21jL3NtY19pYi5jLTEyNC17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTE1NC1cXG5uZXQvc21jL3NtY19pYi5jOjE1NTpzdGF0aWMgaW50IHNtY19pYl9maWxsX21hYyhzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsIHU4IGlicG9ydClcXG5uZXQvc21jL3NtY19pYi5jLTE1Ni17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jPTE4MT1ib29sIHNtY19pYl9pc192YWxpZF9sb2NhbF9zeXN0ZW1pZCh2b2lkKVxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy0xODUtXFxubmV0L3NtYy9zbWNfaWIuYzoxODY6c3RhdGljIHZvaWQgc21jX2liX2luaXRfbG9jYWxfc3lzdGVtaWQodm9pZClcXG5uZXQvc21jL3NtY19pYi5jLTE4Ny17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jPTE5MT1ib29sIHNtY19pYl9wb3J0X2FjdGl2ZShzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsIHU4IGlicG9ydClcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtMTk1LVxcbm5ldC9zbWMvc21jX2liLmM6MTk2OmludCBzbWNfaWJfZmluZF9yb3V0ZShzdHJ1Y3QgbmV0ICpuZXQsIF9fYmUzMiBzYWRkciwgX19iZTMyIGRhZGRyLFxcbm5ldC9zbWMvc21jX2liLmMtMTk3LVxcdFxcdCAgICAgIHU4IG5leHRob3BfbWFjW10sIHU4ICp1c2VzX2dhdGV3YXkpXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTIyNy1cXG5uZXQvc21jL3NtY19pYi5jOjIyODpzdGF0aWMgaW50IHNtY19pYl9kZXRlcm1pbmVfZ2lkX3JjdShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5uZXQvc21jL3NtY19pYi5jLTIyOS1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGliX2dpZF9hdHRyICphdHRyLFxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy0yNzMtLyogZGV0ZXJtaW5lIHRoZSBnaWQgZm9yIGFuIGliLWRldmljZSBwb3J0IGFuZCB2bGFuIGlkICovXFxubmV0L3NtYy9zbWNfaWIuYzoyNzQ6aW50IHNtY19pYl9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgdTggaWJwb3J0LFxcbm5ldC9zbWMvc21jX2liLmMtMjc1LVxcdFxcdFxcdCB1bnNpZ25lZCBzaG9ydCB2bGFuX2lkLCB1OCBnaWRbXSwgdTggKnNnaWRfaW5kZXgsXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jPTMwNz1zdGF0aWMgYm9vbCBzbWNfaWJfY2hlY2tfbGlua19naWQodTggZ2lkW1NNQ19HSURfU0laRV0sIGJvb2wgc21jcnYyLFxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy0zMzItLyogY2hlY2sgYWxsIGxpbmtzIGlmIHRoZSBnaWQgaXMgc3RpbGwgZGVmaW5lZCBvbiBzbWNpYmRldiAqL1xcbm5ldC9zbWMvc21jX2liLmM6MzMzOnN0YXRpYyB2b2lkIHNtY19pYl9naWRfY2hlY2soc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2LCB1OCBpYnBvcnQpXFxubmV0L3NtYy9zbWNfaWIuYy0zMzQte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy0zNTctXFxubmV0L3NtYy9zbWNfaWIuYzozNTg6c3RhdGljIGludCBzbWNfaWJfcmVtZW1iZXJfcG9ydF9hdHRyKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgdTggaWJwb3J0KVxcbm5ldC9zbWMvc21jX2liLmMtMzU5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtMzgwLS8qIHByb2Nlc3MgY29udGV4dCB3cmFwcGVyIGZvciBtaWdodF9zbGVlcCBzbWNfaWJfcmVtZW1iZXJfcG9ydF9hdHRyICovXFxubmV0L3NtYy9zbWNfaWIuYzozODE6c3RhdGljIHZvaWQgc21jX2liX3BvcnRfZXZlbnRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3NtYy9zbWNfaWIuYy0zODIte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy00MDEtLyogY2FuIGJlIGNhbGxlZCBpbiBJUlEgY29udGV4dCAqL1xcbm5ldC9zbWMvc21jX2liLmM6NDAyOnN0YXRpYyB2b2lkIHNtY19pYl9nbG9iYWxfZXZlbnRfaGFuZGxlcihzdHJ1Y3QgaWJfZXZlbnRfaGFuZGxlciAqaGFuZGxlcixcXG5uZXQvc21jL3NtY19pYi5jLTQwMy1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWJfZXZlbnQgKmliZXZlbnQpXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTQ1MC1cXG5uZXQvc21jL3NtY19pYi5jOjQ1MTp2b2lkIHNtY19pYl9kZWFsbG9jX3Byb3RlY3Rpb25fZG9tYWluKHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2liLmMtNDUyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNDU3LVxcbm5ldC9zbWMvc21jX2liLmM6NDU4OmludCBzbWNfaWJfY3JlYXRlX3Byb3RlY3Rpb25fZG9tYWluKHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2liLmMtNDU5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmM9NDY5PXN0YXRpYyBib29sIHNtY3JfZGlhZ19pc19kZXZfY3JpdGljYWwoc3RydWN0IHNtY19sZ3JfbGlzdCAqc21jX2xncixcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNDk1LVxcbm5ldC9zbWMvc21jX2liLmM6NDk2OnN0YXRpYyBpbnQgc21jX25sX2hhbmRsZV9kZXZfcG9ydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9zbWMvc21jX2liLmMtNDk3LVxcdFxcdFxcdFxcdCAgc3RydWN0IGliX2RldmljZSAqaWJkZXYsXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jPTUzNj1zdGF0aWMgYm9vbCBzbWNfbmxfaGFuZGxlX3BjaV92YWx1ZXMoY29uc3Qgc3RydWN0IHNtY19wY2lfZGV2ICpzbWNfcGNpX2RldixcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNTUxLVxcbm5ldC9zbWMvc21jX2liLmM6NTUyOnN0YXRpYyBpbnQgc21jX25sX2hhbmRsZV9zbWNyX2RldihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsXFxubmV0L3NtYy9zbWNfaWIuYy01NTMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy02MDQtXFxubmV0L3NtYy9zbWNfaWIuYzo2MDU6c3RhdGljIHZvaWQgc21jX25sX3ByZXBfc21jcl9kZXYoc3RydWN0IHNtY19pYl9kZXZpY2VzICpkZXZfbGlzdCxcXG5uZXQvc21jL3NtY19pYi5jLTYwNi1cXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNjI3LVxcbm5ldC9zbWMvc21jX2liLmM6NjI4OmludCBzbWNyX25sX2dldF9kZXZpY2Uoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9zbWMvc21jX2liLmMtNjI5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNjMzLVxcbm5ldC9zbWMvc21jX2liLmM6NjM0OnN0YXRpYyB2b2lkIHNtY19pYl9xcF9ldmVudF9oYW5kbGVyKHN0cnVjdCBpYl9ldmVudCAqaWJldmVudCwgdm9pZCAqcHJpdilcXG5uZXQvc21jL3NtY19pYi5jLTYzNS17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTY1NC1cXG5uZXQvc21jL3NtY19pYi5jOjY1NTp2b2lkIHNtY19pYl9kZXN0cm95X3F1ZXVlX3BhaXIoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfaWIuYy02NTYte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy02NjItLyogY3JlYXRlIGEgcXVldWUgcGFpciB3aXRoaW4gdGhlIHByb3RlY3Rpb24gZG9tYWluIGZvciBhIGxpbmsgKi9cXG5uZXQvc21jL3NtY19pYi5jOjY2MzppbnQgc21jX2liX2NyZWF0ZV9xdWV1ZV9wYWlyKHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2liLmMtNjY0LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNjk0LVxcbm5ldC9zbWMvc21jX2liLmM6Njk1OnZvaWQgc21jX2liX3B1dF9tZW1vcnlfcmVnaW9uKHN0cnVjdCBpYl9tciAqbXIpXFxubmV0L3NtYy9zbWNfaWIuYy02OTYte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy02OTktXFxubmV0L3NtYy9zbWNfaWIuYzo3MDA6c3RhdGljIGludCBzbWNfaWJfbWFwX21yX3NnKHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9zbG90LCB1OCBsaW5rX2lkeClcXG5uZXQvc21jL3NtY19pYi5jLTcwMS17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTcxNC0vKiBBbGxvY2F0ZSBhIG1lbW9yeSByZWdpb24gYW5kIG1hcCB0aGUgZG1hIG1hcHBlZCBTRyBsaXN0IG9mIGJ1Zl9zbG90ICovXFxubmV0L3NtYy9zbWNfaWIuYzo3MTU6aW50IHNtY19pYl9nZXRfbWVtb3J5X3JlZ2lvbihzdHJ1Y3QgaWJfcGQgKnBkLCBpbnQgYWNjZXNzX2ZsYWdzLFxcbm5ldC9zbWMvc21jX2liLmMtNzE2LVxcdFxcdFxcdCAgICAgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX3Nsb3QsIHU4IGxpbmtfaWR4KVxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYz03Mzg9Ym9vbCBzbWNfaWJfaXNfc2dfbmVlZF9zeW5jKHN0cnVjdCBzbWNfbGluayAqbG5rLFxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy03NjQtLyogc3luY2hyb25pemUgYnVmZmVyIHVzYWdlIGZvciBjcHUgYWNjZXNzICovXFxubmV0L3NtYy9zbWNfaWIuYzo3NjU6dm9pZCBzbWNfaWJfc3luY19zZ19mb3JfY3B1KHN0cnVjdCBzbWNfbGluayAqbG5rLFxcbm5ldC9zbWMvc21jX2liLmMtNzY2LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfc2xvdCxcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtNzg3LS8qIHN5bmNocm9uaXplIGJ1ZmZlciB1c2FnZSBmb3IgZGV2aWNlIGFjY2VzcyAqL1xcbm5ldC9zbWMvc21jX2liLmM6Nzg4OnZvaWQgc21jX2liX3N5bmNfc2dfZm9yX2RldmljZShzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcXG5uZXQvc21jL3NtY19pYi5jLTc4OS1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX3Nsb3QsXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTgxMC0vKiBNYXAgYSBuZXcgVFggb3IgUlggYnVmZmVyIFNHLXRhYmxlIHRvIERNQSAqL1xcbm5ldC9zbWMvc21jX2liLmM6ODExOmludCBzbWNfaWJfYnVmX21hcF9zZyhzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcXG5uZXQvc21jL3NtY19pYi5jLTgxMi1cXHRcXHQgICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfc2xvdCxcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtODI2LVxcbm5ldC9zbWMvc21jX2liLmM6ODI3OnZvaWQgc21jX2liX2J1Zl91bm1hcF9zZyhzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcXG5uZXQvc21jL3NtY19pYi5jLTgyOC1cXHRcXHRcXHQgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX3Nsb3QsXFxuLS1cXG5uZXQvc21jL3NtY19pYi5jPTg0MT1sb25nIHNtY19pYl9zZXR1cF9wZXJfaWJkZXYoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy04ODMtXFxubmV0L3NtYy9zbWNfaWIuYzo4ODQ6c3RhdGljIHZvaWQgc21jX2liX2NsZWFudXBfcGVyX2liZGV2KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcXG5uZXQvc21jL3NtY19pYi5jLTg4NS17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jPTg5Nz1zdGF0aWMgc3RydWN0IGliX2NsaWVudCBzbWNfaWJfY2xpZW50O1xcbm5ldC9zbWMvc21jX2liLmMtODk4LVxcbm5ldC9zbWMvc21jX2liLmM6ODk5OnN0YXRpYyB2b2lkIHNtY19jb3B5X25ldGRldl9pZmluZGV4KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldiwgaW50IHBvcnQpXFxubmV0L3NtYy9zbWNfaWIuYy05MDAte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy05MTAtXFxubmV0L3NtYy9zbWNfaWIuYzo5MTE6dm9pZCBzbWNfaWJfbmRldl9jaGFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpXFxubmV0L3NtYy9zbWNfaWIuYy05MTIte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy05MzYtXFxubmV0L3NtYy9zbWNfaWIuYzo5Mzc6c3RhdGljIHZvaWQgc21jX2liZGV2X3JlbGVhc2Uoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxcbm5ldC9zbWMvc21jX2liLmMtOTM4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtOTQyLVxcbm5ldC9zbWMvc21jX2liLmM6OTQzOnZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXFxubmV0L3NtYy9zbWNfaWIuYy05NDQte1xcbi0tXFxubmV0L3NtYy9zbWNfaWIuYy05NDctXFxubmV0L3NtYy9zbWNfaWIuYzo5NDg6dm9pZCBzbWNfaWJkZXZfcHV0KHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcXG5uZXQvc21jL3NtY19pYi5jLTk0OS17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTk1My1cXG5uZXQvc21jL3NtY19pYi5jOjk1NDppbnQgc21jX2liZGV2X2luaXRfYmVnaW4oc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxcbm5ldC9zbWMvc21jX2liLmMtOTU1LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtOTY2LVxcbm5ldC9zbWMvc21jX2liLmM6OTY3OnZvaWQgc21jX2liZGV2X2luaXRfZW5kKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcXG5uZXQvc21jL3NtY19pYi5jLTk2OC17XFxuLS1cXG5uZXQvc21jL3NtY19pYi5jLTk3NS0vKiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgaWJfcmVnaXN0ZXJfY2xpZW50KCkgKi9cXG5uZXQvc21jL3NtY19pYi5jOjk3NjpzdGF0aWMgaW50IHNtY19pYl9hZGRfZGV2KHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2KVxcbm5ldC9zbWMvc21jX2liLmMtOTc3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtMTAzNS0vKiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgaWJfdW5yZWdpc3Rlcl9jbGllbnQoKSAqL1xcbm5ldC9zbWMvc21jX2liLmM6MTAzNjpzdGF0aWMgdm9pZCBzbWNfaWJfcmVtb3ZlX2RldihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwgdm9pZCAqY2xpZW50X2RhdGEpXFxubmV0L3NtYy9zbWNfaWIuYy0xMDM3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2liLmM9MTA2MT1pbnQgX19pbml0IHNtY19pYl9yZWdpc3Rlcl9jbGllbnQodm9pZClcXG4tLVxcbm5ldC9zbWMvc21jX2liLmMtMTA2Ni1cXG5uZXQvc21jL3NtY19pYi5jOjEwNjc6dm9pZCBzbWNfaWJfdW5yZWdpc3Rlcl9jbGllbnQodm9pZClcXG5uZXQvc21jL3NtY19pYi5jLTEwNjgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOToxOS4wNTM4NzAxNzVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM0OTQzNjg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNQyBJQiBEZXZpY2UgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBTTUMgY29kZSBhbmQgaW1tZWRpYXRlbHkgbm90aWNlIHRoYXQgYHNtY19pYl9hZGRfZGV2YCBhbmQgYHNtY19pYl9yZW1vdmVfZGV2YCBhcmUgc3RhdGljLiBUaGF0J3Mgc3RhbmRhcmQgcHJhY3RpY2UsIGJ1dCBnb29kIHRvIGtlZXAgaW4gbWluZCBmb3Igc2NvcGluZy4gV2FpdCBhIG1pbnV0ZS4uLiBgc21jX2liX2FkZF9kZXZgIGlzIGFjdHVhbGx5IGEgY2FsbGJhY2shIEl0J3MgaW52b2tlZCBieSBgaWJfcmVnaXN0ZXJfY2xpZW50KClgIHdoZW4gYW4gSW5maW5pQmFuZCBkZXZpY2UgaXMgYWRkZWQuIFRoYXQgbWFrZXMgbW9yZSBzZW5zZTsgaXQgaGFzIHRvIGJlIGhvdyB0aGUgU01DIGxheWVyIGhvb2tzIGludG8gdGhlIElCIHN1YnN5c3RlbS4gTm93LCB3aGF0J3MgdGhpcyBgc21jX2xpc3Rlbl93b3JrYCBmdW5jdGlvbj8gQWgsIGl0J3MgYSB3b3JrcXVldWUgZnVuY3Rpb24uIFRoYXQgaGludHMgYXQgYXN5bmNocm9ub3VzIHByb2Nlc3NpbmcsIHdoaWNoIGlzIG9mdGVuIGNydWNpYWwgZm9yIG5ldHdvcmsgaW50ZXJhY3Rpb25zLiBGaW5hbGx5LCBgc21jX2Nvbm5lY3RgIGFuZCBgc21jX2xpc3RlbmAgYXJlIHRoZSByZWFsIHN5c2NhbGwgZW50cnkgcG9pbnRzLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byBgbmV0L3NtYy9hZl9zbWMuY2AgdG8gc2VlIGhvdyB0aG9zZSBhcmUgaW1wbGVtZW50ZWQgYW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggZXZlcnl0aGluZyBlbHNlIEkndmUganVzdCBpZGVudGlmaWVkLiBUaW1lIHRvIGRpdmUgZGVlcGVyIGFuZCBzZWUgaG93IHRoZSBwaWVjZXMgZml0IHRvZ2V0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDE4MCwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOToyMy40MDMzMDk1NTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzIxMDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oaW50fHZvaWR8c3RhdGljIGludHxzdGF0aWMgdm9pZCkgW2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvYWZfc21jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9hZl9zbWMuYz03MT1zdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdFxcdCpzbWNfY2xvc2Vfd3E7XFx0Lyogd3EgZm9yIGNsb3NlIHdvcmsgKi9cXG5uZXQvc21jL2FmX3NtYy5jLTcyLVxcbm5ldC9zbWMvYWZfc21jLmM6NzM6c3RhdGljIHZvaWQgc21jX3RjcF9saXN0ZW5fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKik7XFxubmV0L3NtYy9hZl9zbWMuYzo3NDpzdGF0aWMgdm9pZCBzbWNfY29ubmVjdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqKTtcXG5uZXQvc21jL2FmX3NtYy5jLTc1LVxcbm5ldC9zbWMvYWZfc21jLmM6NzY6aW50IHNtY19ubF9kdW1wX2hzX2xpbWl0YXRpb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9zbWMvYWZfc21jLmMtNzcte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xMDItXFxubmV0L3NtYy9hZl9zbWMuYzoxMDM6aW50IHNtY19ubF9lbmFibGVfaHNfbGltaXRhdGlvbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9zbWMvYWZfc21jLmMtMTA0LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTA4LVxcbm5ldC9zbWMvYWZfc21jLmM6MTA5OmludCBzbWNfbmxfZGlzYWJsZV9oc19saW1pdGF0aW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3NtYy9hZl9zbWMuYy0xMTAte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xMTQtXFxubmV0L3NtYy9hZl9zbWMuYzoxMTU6c3RhdGljIHZvaWQgc21jX3NldF9rZWVwYWxpdmUoc3RydWN0IHNvY2sgKnNrLCBpbnQgdmFsKVxcbm5ldC9zbWMvYWZfc21jLmMtMTE2LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MTk0PXN0cnVjdCBzbWNfaGFzaGluZm8gc21jX3Y2X2hhc2hpbmZvID0ge1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xOTgtXFxubmV0L3NtYy9hZl9zbWMuYzoxOTk6aW50IHNtY19oYXNoX3NrKHN0cnVjdCBzb2NrICpzaylcXG5uZXQvc21jL2FmX3NtYy5jLTIwMC17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTIxMy1cXG5uZXQvc21jL2FmX3NtYy5jOjIxNDp2b2lkIHNtY191bmhhc2hfc2soc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9zbWMvYWZfc21jLmMtMjE1LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjI3LSAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MjI4OnZvaWQgc21jX3JlbGVhc2VfY2Ioc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9zbWMvYWZfc21jLmMtMjI5LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MjYyPUVYUE9SVF9TWU1CT0xfR1BMKHNtY19wcm90bzYpO1xcbm5ldC9zbWMvYWZfc21jLmMtMjYzLVxcbm5ldC9zbWMvYWZfc21jLmM6MjY0OnN0YXRpYyB2b2lkIHNtY19mYmFja19yZXN0b3JlX2NhbGxiYWNrcyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG5uZXQvc21jL2FmX3NtYy5jLTI2NS17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTI3OC1cXG5uZXQvc21jL2FmX3NtYy5jOjI3OTpzdGF0aWMgdm9pZCBzbWNfcmVzdG9yZV9mYWxsYmFja19jaGFuZ2VzKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbm5ldC9zbWMvYWZfc21jLmMtMjgwLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjg3LVxcbm5ldC9zbWMvYWZfc21jLmM6Mjg4OnN0YXRpYyBpbnQgX19zbWNfcmVsZWFzZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG5uZXQvc21jL2FmX3NtYy5jLTI4OS17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTMyNy1cXG5uZXQvc21jL2FmX3NtYy5jOjMyODppbnQgc21jX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG5uZXQvc21jL2FmX3NtYy5jLTMyOS17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTM3My1cXG5uZXQvc21jL2FmX3NtYy5jOjM3NDpzdGF0aWMgdm9pZCBzbWNfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9zbWMvYWZfc21jLmMtMzc1LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MzkzPXN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgc21jX3Nsb2NrX2tleTtcXG5uZXQvc21jL2FmX3NtYy5jLTM5NC1cXG5uZXQvc21jL2FmX3NtYy5jOjM5NTp2b2lkIHNtY19za19pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBpbnQgcHJvdG9jb2wpXFxubmV0L3NtYy9hZl9zbWMuYy0zOTYte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYz00MjE9c3RhdGljIHN0cnVjdCBzb2NrICpzbWNfc29ja19hbGxvYyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTQzNy1cXG5uZXQvc21jL2FmX3NtYy5jOjQzODppbnQgc21jX2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVhZGRyLFxcbm5ldC9zbWMvYWZfc21jLmMtNDM5LVxcdCAgICAgaW50IGFkZHJfbGVuKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy01MDAtLyogaWYgc2V0LCB1c2UgdmFsdWUgc2V0IGJ5IHNldHNvY2tvcHQoKSAtIGVsc2UgdXNlIElQdjQgb3IgU01DIHN5c2N0bCB2YWx1ZSAqL1xcbm5ldC9zbWMvYWZfc21jLmM6NTAxOnN0YXRpYyB2b2lkIHNtY19hZGp1c3Rfc29ja19idWZzaXplcyhzdHJ1Y3Qgc29jayAqbnNrLCBzdHJ1Y3Qgc29jayAqb3NrLFxcbm5ldC9zbWMvYWZfc21jLmMtNTAyLVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgbG9uZyBtYXNrKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy01MTAtXFxubmV0L3NtYy9hZl9zbWMuYzo1MTE6c3RhdGljIHZvaWQgc21jX2NvcHlfc29ja19zZXR0aW5ncyhzdHJ1Y3Qgc29jayAqbnNrLCBzdHJ1Y3Qgc29jayAqb3NrLFxcbm5ldC9zbWMvYWZfc21jLmMtNTEyLVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGxvbmcgbWFzaylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNTI5LVxcbm5ldC9zbWMvYWZfc21jLmM6NTMwOnN0YXRpYyB2b2lkIHNtY19jb3B5X3NvY2tfc2V0dGluZ3NfdG9fY2xjKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbm5ldC9zbWMvYWZfc21jLmMtNTMxLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNTM5LS8qIGNvcHkgb25seSBzZXR0aW5ncyBhbmQgZmxhZ3MgcmVsZXZhbnQgZm9yIHNtYyBmcm9tIGNsYyB0byBzbWMgc29ja2V0ICovXFxubmV0L3NtYy9hZl9zbWMuYzo1NDA6c3RhdGljIHZvaWQgc21jX2NvcHlfc29ja19zZXR0aW5nc190b19zbWMoc3RydWN0IHNtY19zb2NrICpzbWMpXFxubmV0L3NtYy9hZl9zbWMuYy01NDEte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy01NDUtLyogcmVnaXN0ZXIgdGhlIG5ldyB2emFsbG9jZWQgc25kYnVmIG9uIGFsbCBsaW5rcyAqL1xcbm5ldC9zbWMvYWZfc21jLmM6NTQ2OnN0YXRpYyBpbnQgc21jcl9sZ3JfcmVnX3NuZGJ1ZnMoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvYWZfc21jLmMtNTQ3LVxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNuZF9kZXNjKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy01NjgtLyogcmVnaXN0ZXIgdGhlIG5ldyBybWIgb24gYWxsIGxpbmtzICovXFxubmV0L3NtYy9hZl9zbWMuYzo1Njk6c3RhdGljIGludCBzbWNyX2xncl9yZWdfcm1icyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9hZl9zbWMuYy01NzAtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNjE3LVxcbm5ldC9zbWMvYWZfc21jLmM6NjE4OnN0YXRpYyBpbnQgc21jcl9jbG50X2NvbmZfZmlyc3RfbGluayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG5uZXQvc21jL2FmX3NtYy5jLTYxOS17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jPTY5MD1zdGF0aWMgYm9vbCBzbWNfaXNhc2NpaShjaGFyICpob3N0bmFtZSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNjk5LVxcbm5ldC9zbWMvYWZfc21jLmM6NzAwOnN0YXRpYyB2b2lkIHNtY19jb25uX3NhdmVfcGVlcl9pbmZvX2ZjZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTcwMS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2NsY19tc2dfYWNjZXB0X2NvbmZpcm0gKmNsYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNzI2LVxcbm5ldC9zbWMvYWZfc21jLmM6NzI3OnN0YXRpYyB2b2lkIHNtY3JfY29ubl9zYXZlX3BlZXJfaW5mbyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTcyOC1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqY2xjKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy03MzgtXFxubmV0L3NtYy9hZl9zbWMuYzo3Mzk6c3RhdGljIHZvaWQgc21jZF9jb25uX3NhdmVfcGVlcl9pbmZvKHN0cnVjdCBzbWNfc29jayAqc21jLFxcbm5ldC9zbWMvYWZfc21jLmMtNzQwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNtY19jbGNfbXNnX2FjY2VwdF9jb25maXJtICpjbGMpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTc1MS1cXG5uZXQvc21jL2FmX3NtYy5jOjc1MjpzdGF0aWMgdm9pZCBzbWNfY29ubl9zYXZlX3BlZXJfaW5mbyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTc1My1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNtY19jbGNfbXNnX2FjY2VwdF9jb25maXJtICpjbGMpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTc2MS1cXG5uZXQvc21jL2FmX3NtYy5jOjc2MjpzdGF0aWMgdm9pZCBzbWNfbGlua19zYXZlX3BlZXJfaW5mbyhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9hZl9zbWMuYy03NjMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy03NzItXFxubmV0L3NtYy9hZl9zbWMuYzo3NzM6c3RhdGljIHZvaWQgc21jX3N0YXRfaW5jX2ZiYWNrX3Jzbl9jbnQoc3RydWN0IHNtY19zb2NrICpzbWMsXFxubmV0L3NtYy9hZl9zbWMuYy03NzQtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzbWNfc3RhdHNfZmJhY2sgKmZiYWNrX2FycilcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtNzkwLVxcbm5ldC9zbWMvYWZfc21jLmM6NzkxOnN0YXRpYyB2b2lkIHNtY19zdGF0X2ZhbGxiYWNrKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbm5ldC9zbWMvYWZfc21jLmMtNzkyLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtODA2LS8qIG11c3QgYmUgY2FsbGVkIHVuZGVyIHJjdSByZWFkIGxvY2sgKi9cXG5uZXQvc21jL2FmX3NtYy5jOjgwNzpzdGF0aWMgdm9pZCBzbWNfZmJhY2tfd2FrZXVwX3dhaXRxdWV1ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgdm9pZCAqa2V5KVxcbm5ldC9zbWMvYWZfc21jLmMtODA4LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtODMwLVxcbm5ldC9zbWMvYWZfc21jLmM6ODMxOnN0YXRpYyBpbnQgc21jX2ZiYWNrX21hcmtfd29rZW4od2FpdF9xdWV1ZV9lbnRyeV90ICp3YWl0LFxcbm5ldC9zbWMvYWZfc21jLmMtODMyLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBtb2RlLCBpbnQgc3luYywgdm9pZCAqa2V5KVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy04NDEtXFxubmV0L3NtYy9hZl9zbWMuYzo4NDI6c3RhdGljIHZvaWQgc21jX2ZiYWNrX2ZvcndhcmRfd2FrZXVwKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc29jayAqY2xjc2ssXFxubmV0L3NtYy9hZl9zbWMuYy04NDMtXFx0XFx0XFx0XFx0ICAgICB2b2lkICgqY2xjc29ja19jYWxsYmFjaykoc3RydWN0IHNvY2sgKnNrKSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtODYzLVxcbm5ldC9zbWMvYWZfc21jLmM6ODY0OnN0YXRpYyB2b2lkIHNtY19mYmFja19zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNvY2sgKmNsY3NrKVxcbm5ldC9zbWMvYWZfc21jLmMtODY1LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtODc1LVxcbm5ldC9zbWMvYWZfc21jLmM6ODc2OnN0YXRpYyB2b2lkIHNtY19mYmFja19kYXRhX3JlYWR5KHN0cnVjdCBzb2NrICpjbGNzaylcXG5uZXQvc21jL2FmX3NtYy5jLTg3Ny17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTg4Ny1cXG5uZXQvc21jL2FmX3NtYy5jOjg4ODpzdGF0aWMgdm9pZCBzbWNfZmJhY2tfd3JpdGVfc3BhY2Uoc3RydWN0IHNvY2sgKmNsY3NrKVxcbm5ldC9zbWMvYWZfc21jLmMtODg5LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtODk5LVxcbm5ldC9zbWMvYWZfc21jLmM6OTAwOnN0YXRpYyB2b2lkIHNtY19mYmFja19lcnJvcl9yZXBvcnQoc3RydWN0IHNvY2sgKmNsY3NrKVxcbm5ldC9zbWMvYWZfc21jLmMtOTAxLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtOTExLVxcbm5ldC9zbWMvYWZfc21jLmM6OTEyOnN0YXRpYyB2b2lkIHNtY19mYmFja19yZXBsYWNlX2NhbGxiYWNrcyhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG5uZXQvc21jL2FmX3NtYy5jLTkxMy17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTkzMC1cXG5uZXQvc21jL2FmX3NtYy5jOjkzMTpzdGF0aWMgaW50IHNtY19zd2l0Y2hfdG9fZmFsbGJhY2soc3RydWN0IHNtY19zb2NrICpzbWMsIGludCByZWFzb25fY29kZSlcXG5uZXQvc21jL2FmX3NtYy5jLTkzMi17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTk2My0vKiBmYWxsIGJhY2sgZHVyaW5nIGNvbm5lY3QgKi9cXG5uZXQvc21jL2FmX3NtYy5jOjk2NDpzdGF0aWMgaW50IHNtY19jb25uZWN0X2ZhbGxiYWNrKHN0cnVjdCBzbWNfc29jayAqc21jLCBpbnQgcmVhc29uX2NvZGUpXFxubmV0L3NtYy9hZl9zbWMuYy05NjUte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy05ODMtLyogZGVjbGluZSBhbmQgZmFsbCBiYWNrIGR1cmluZyBjb25uZWN0ICovXFxubmV0L3NtYy9hZl9zbWMuYzo5ODQ6c3RhdGljIGludCBzbWNfY29ubmVjdF9kZWNsaW5lX2ZhbGxiYWNrKHN0cnVjdCBzbWNfc29jayAqc21jLCBpbnQgcmVhc29uX2NvZGUsXFxubmV0L3NtYy9hZl9zbWMuYy05ODUtXFx0XFx0XFx0XFx0XFx0dTggdmVyc2lvbilcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTAwNy1cXG5uZXQvc21jL2FmX3NtYy5jOjEwMDg6c3RhdGljIHZvaWQgc21jX2Nvbm5fYWJvcnQoc3RydWN0IHNtY19zb2NrICpzbWMsIGludCBsb2NhbF9maXJzdClcXG5uZXQvc21jL2FmX3NtYy5jLTEwMDkte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xMDIzLS8qIGNhbGxlZCBmb3IgY29ubmVjdCBhbmQgbGlzdGVuICovXFxubmV0L3NtYy9hZl9zbWMuYzoxMDI0OnN0YXRpYyBpbnQgc21jX2ZpbmRfcmRtYV9kZXZpY2Uoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxubmV0L3NtYy9hZl9zbWMuYy0xMDI1LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTAzOS0vKiBjYWxsZWQgZm9yIGNvbm5lY3QgYW5kIGxpc3RlbiAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTA0MDpzdGF0aWMgaW50IHNtY19maW5kX2lzbV9kZXZpY2Uoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxubmV0L3NtYy9hZl9zbWMuYy0xMDQxLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MTA1Mj1zdGF0aWMgYm9vbCBzbWNfZmluZF9pc21fdjJfaXNfdW5pcXVlX2NoaWQodTE2IGNoaWQsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmksXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTEwNjUtICovXFxubmV0L3NtYy9hZl9zbWMuYzoxMDY2OnN0YXRpYyBpbnQgc21jX2ZpbmRfaXNtX3YyX2RldmljZV9jbG50KHN0cnVjdCBzbWNfc29jayAqc21jLFxcbm5ldC9zbWMvYWZfc21jLmMtMTA2Ny1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTExMi0vKiBDaGVjayBmb3IgVkxBTiBJRCBhbmQgcmVnaXN0ZXIgaXQgb24gSVNNIGRldmljZSBqdXN0IGZvciBDTEMgaGFuZHNoYWtlICovXFxubmV0L3NtYy9hZl9zbWMuYzoxMTEzOnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfaXNtX3ZsYW5fc2V0dXAoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG5uZXQvc21jL2FmX3NtYy5jLTExMTQte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xMTE5LVxcbm5ldC9zbWMvYWZfc21jLmM6MTEyMDpzdGF0aWMgaW50IHNtY19maW5kX3Byb3Bvc2FsX2RldmljZXMoc3RydWN0IHNtY19zb2NrICpzbWMsXFxubmV0L3NtYy9hZl9zbWMuYy0xMTIxLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTE3Mi0gKi9cXG5uZXQvc21jL2FmX3NtYy5jOjExNzM6c3RhdGljIGludCBzbWNfY29ubmVjdF9pc21fdmxhbl9jbGVhbnVwKHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxubmV0L3NtYy9hZl9zbWMuYy0xMTc0LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTE4Ny0vKiBDTEMgaGFuZHNoYWtlIGR1cmluZyBjb25uZWN0ICovXFxubmV0L3NtYy9hZl9zbWMuYzoxMTg4OnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfY2xjKHN0cnVjdCBzbWNfc29jayAqc21jLFxcbm5ldC9zbWMvYWZfc21jLmMtMTE4OS1cXHRcXHRcXHQgICBzdHJ1Y3Qgc21jX2NsY19tc2dfYWNjZXB0X2NvbmZpcm0gKmFjbGMsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTEyMDItXFxubmV0L3NtYy9hZl9zbWMuYzoxMjAzOnZvaWQgc21jX2ZpbGxfZ2lkX2xpc3Qoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9hZl9zbWMuYy0xMjA0LVxcdFxcdCAgICAgICBzdHJ1Y3Qgc21jX2dpZGxpc3QgKmdpZGxpc3QsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTEyMzAtXFxubmV0L3NtYy9hZl9zbWMuYzoxMjMxOnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfcmRtYV92Ml9wcmVwYXJlKHN0cnVjdCBzbWNfc29jayAqc21jLFxcbm5ldC9zbWMvYWZfc21jLmMtMTIzMi1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19jbGNfbXNnX2FjY2VwdF9jb25maXJtICphY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xMjY2LS8qIHNldHVwIGZvciBSRE1BIGNvbm5lY3Rpb24gb2YgY2xpZW50ICovXFxubmV0L3NtYy9hZl9zbWMuYzoxMjY3OnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfcmRtYShzdHJ1Y3Qgc21jX3NvY2sgKnNtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTEyNjgtXFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYyxcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MTM5OT1zbWNfdjJfZGV0ZXJtaW5lX2FjY2VwdGVkX2NoaWQoc3RydWN0IHNtY19jbGNfbXNnX2FjY2VwdF9jb25maXJtICphY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xNDE1LS8qIHNldHVwIGZvciBJU00gY29ubmVjdGlvbiBvZiBjbGllbnQgKi9cXG5uZXQvc21jL2FmX3NtYy5jOjE0MTY6c3RhdGljIGludCBzbWNfY29ubmVjdF9pc20oc3RydWN0IHNtY19zb2NrICpzbWMsXFxubmV0L3NtYy9hZl9zbWMuYy0xNDE3LVxcdFxcdFxcdCAgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYyxcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTQ5OC0vKiBjaGVjayBpZiByZWNlaXZlZCBhY2NlcHQgdHlwZSBhbmQgdmVyc2lvbiBtYXRjaGVzIGEgcHJvcG9zZWQgb25lICovXFxubmV0L3NtYy9hZl9zbWMuYzoxNDk5OnN0YXRpYyBpbnQgc21jX2Nvbm5lY3RfY2hlY2tfYWNsYyhzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxcbm5ldC9zbWMvYWZfc21jLmMtMTUwMC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzbWNfY2xjX21zZ19hY2NlcHRfY29uZmlybSAqYWNsYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTUxOS0vKiBwZXJmb3JtIHN0ZXBzIGJlZm9yZSBhY3R1YWxseSBjb25uZWN0aW5nICovXFxubmV0L3NtYy9hZl9zbWMuYzoxNTIwOnN0YXRpYyBpbnQgX19zbWNfY29ubmVjdChzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG5uZXQvc21jL2FmX3NtYy5jLTE1MjEte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xNjA5LVxcbm5ldC9zbWMvYWZfc21jLmM6MTYxMDpzdGF0aWMgdm9pZCBzbWNfY29ubmVjdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvc21jL2FmX3NtYy5jLTE2MTEte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xNjU1LVxcbm5ldC9zbWMvYWZfc21jLmM6MTY1NjppbnQgc21jX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIsXFxubmV0L3NtYy9hZl9zbWMuYy0xNjU3LVxcdFxcdGludCBhbGVuLCBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE3MzYtXFxubmV0L3NtYy9hZl9zbWMuYzoxNzM3OnN0YXRpYyBpbnQgc21jX2NsY3NvY2tfYWNjZXB0KHN0cnVjdCBzbWNfc29jayAqbHNtYywgc3RydWN0IHNtY19zb2NrICoqbmV3X3NtYylcXG5uZXQvc21jL2FmX3NtYy5jLTE3Mzgte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xNzk3LSAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTc5ODpzdGF0aWMgdm9pZCBzbWNfYWNjZXB0X2VucXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwgc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9zbWMvYWZfc21jLmMtMTc5OS17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE4MDktLyogcmVtb3ZlIGEgc29ja2V0IGZyb20gdGhlIGFjY2VwdCBxdWV1ZSBvZiBpdHMgcGFyZW50YWwgbGlzdGVuaW5nIHNvY2tldCAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTgxMDpzdGF0aWMgdm9pZCBzbWNfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spXFxubmV0L3NtYy9hZl9zbWMuYy0xODExLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MTgyND1zdHJ1Y3Qgc29jayAqc21jX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE4NTYtLyogY2xlYW4gdXAgZm9yIGEgY3JlYXRlZCBidXQgbmV2ZXIgYWNjZXB0ZWQgc29jayAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTg1Nzp2b2lkIHNtY19jbG9zZV9ub25fYWNjZXB0ZWQoc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9zbWMvYWZfc21jLmMtMTg1OC17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE4NzEtXFxubmV0L3NtYy9hZl9zbWMuYzoxODcyOnN0YXRpYyBpbnQgc21jcl9zZXJ2X2NvbmZfZmlyc3RfbGluayhzdHJ1Y3Qgc21jX3NvY2sgKnNtYylcXG5uZXQvc21jL2FmX3NtYy5jLTE4NzMte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xOTI0LS8qIGxpc3RlbiB3b3JrZXI6IGZpbmlzaCAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTkyNTpzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX291dChzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMpXFxubmV0L3NtYy9hZl9zbWMuYy0xOTI2LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTk0OC0vKiBsaXN0ZW4gd29ya2VyOiBmaW5pc2ggaW4gc3RhdGUgY29ubmVjdGVkICovXFxubmV0L3NtYy9hZl9zbWMuYzoxOTQ5OnN0YXRpYyB2b2lkIHNtY19saXN0ZW5fb3V0X2Nvbm5lY3RlZChzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMpXFxubmV0L3NtYy9hZl9zbWMuYy0xOTUwLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMTk1OS0vKiBsaXN0ZW4gd29ya2VyOiBmaW5pc2ggaW4gZXJyb3Igc3RhdGUgKi9cXG5uZXQvc21jL2FmX3NtYy5jOjE5NjA6c3RhdGljIHZvaWQgc21jX2xpc3Rlbl9vdXRfZXJyKHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYylcXG5uZXQvc21jL2FmX3NtYy5jLTE5NjEte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0xOTczLS8qIGxpc3RlbiB3b3JrZXI6IGRlY2xpbmUgYW5kIGZhbGwgYmFjayBpZiBwb3NzaWJsZSAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTk3NDpzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX2RlY2xpbmUoc3RydWN0IHNtY19zb2NrICpuZXdfc21jLCBpbnQgcmVhc29uX2NvZGUsXFxubmV0L3NtYy9hZl9zbWMuYy0xOTc1LVxcdFxcdFxcdCAgICAgICBpbnQgbG9jYWxfZmlyc3QsIHU4IHZlcnNpb24pXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE5OTQtLyogbGlzdGVuIHdvcmtlcjogdmVyc2lvbiBjaGVja2luZyAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MTk5NTpzdGF0aWMgaW50IHNtY19saXN0ZW5fdjJfY2hlY2soc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxcbm5ldC9zbWMvYWZfc21jLmMtMTk5Ni1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19jbGNfbXNnX3Byb3Bvc2FsICpwY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yMDU2LS8qIGxpc3RlbiB3b3JrZXI6IGNoZWNrIHByZWZpeGVzICovXFxubmV0L3NtYy9hZl9zbWMuYzoyMDU3OnN0YXRpYyBpbnQgc21jX2xpc3Rlbl9wcmZ4X2NoZWNrKHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTIwNTgtXFx0XFx0XFx0XFx0IHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjA3NC0vKiBsaXN0ZW4gd29ya2VyOiBpbml0aWFsaXplIGNvbm5lY3Rpb24gYW5kIGJ1ZmZlcnMgKi9cXG5uZXQvc21jL2FmX3NtYy5jOjIwNzU6c3RhdGljIGludCBzbWNfbGlzdGVuX3JkbWFfaW5pdChzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXFxubmV0L3NtYy9hZl9zbWMuYy0yMDc2LVxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTIwOTQtLyogbGlzdGVuIHdvcmtlcjogaW5pdGlhbGl6ZSBjb25uZWN0aW9uIGFuZCBidWZmZXJzIGZvciBTTUMtRCAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MjA5NTpzdGF0aWMgaW50IHNtY19saXN0ZW5faXNtX2luaXQoc3RydWN0IHNtY19zb2NrICpuZXdfc21jLFxcbm5ldC9zbWMvYWZfc21jLmMtMjA5Ni1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MjExNT1zdGF0aWMgYm9vbCBzbWNfaXNfYWxyZWFkeV9zZWxlY3RlZChzdHJ1Y3Qgc21jZF9kZXYgKnNtY2QsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTIxMjgtLyogY2hlY2sgZm9yIElTTSBkZXZpY2VzIG1hdGNoaW5nIHByb3Bvc2VkIElTTSBkZXZpY2VzICovXFxubmV0L3NtYy9hZl9zbWMuYzoyMTI5OnN0YXRpYyB2b2lkIHNtY19jaGVja19pc21fdjJfbWF0Y2goc3RydWN0IHNtY19pbml0X2luZm8gKmluaSxcXG5uZXQvc21jL2FmX3NtYy5jLTIxMzAtXFx0XFx0XFx0XFx0ICAgdTE2IHByb3Bvc2VkX2NoaWQsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTIxNTQtXFxubmV0L3NtYy9hZl9zbWMuYzoyMTU1OnN0YXRpYyB2b2lkIHNtY19pbml0X2luZm9fc3RvcmVfcmModTMyIHJjLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbm5ldC9zbWMvYWZfc21jLmMtMjE1Ni17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTIxNjAtXFxubmV0L3NtYy9hZl9zbWMuYzoyMTYxOnN0YXRpYyB2b2lkIHNtY19maW5kX2lzbV92Ml9kZXZpY2Vfc2VydihzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXFxubmV0L3NtYy9hZl9zbWMuYy0yMTYyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYyxcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjI1MC1cXG5uZXQvc21jL2FmX3NtYy5jOjIyNTE6c3RhdGljIHZvaWQgc21jX2ZpbmRfaXNtX3YxX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTIyNTItXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNtY19jbGNfbXNnX3Byb3Bvc2FsICpwY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yMjgxLS8qIGxpc3RlbiB3b3JrZXI6IHJlZ2lzdGVyIGJ1ZmZlcnMgKi9cXG5uZXQvc21jL2FmX3NtYy5jOjIyODI6c3RhdGljIGludCBzbWNfbGlzdGVuX3JkbWFfcmVnKHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYywgYm9vbCBsb2NhbF9maXJzdClcXG5uZXQvc21jL2FmX3NtYy5jLTIyODMte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yMjk5LVxcbm5ldC9zbWMvYWZfc21jLmM6MjMwMDpzdGF0aWMgdm9pZCBzbWNfZmluZF9yZG1hX3YyX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTIzMDEtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzbWNfY2xjX21zZ19wcm9wb3NhbCAqcGNsYyxcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjM1My1cXG5uZXQvc21jL2FmX3NtYy5jOjIzNTQ6c3RhdGljIGludCBzbWNfZmluZF9yZG1hX3YxX2RldmljZV9zZXJ2KHN0cnVjdCBzbWNfc29jayAqbmV3X3NtYyxcXG5uZXQvc21jL2FmX3NtYy5jLTIzNTUtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNtY19jbGNfbXNnX3Byb3Bvc2FsICpwY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yMzc4LS8qIGRldGVybWluZSB0aGUgbG9jYWwgZGV2aWNlIG1hdGNoaW5nIHRvIHByb3Bvc2FsICovXFxubmV0L3NtYy9hZl9zbWMuYzoyMzc5OnN0YXRpYyBpbnQgc21jX2xpc3Rlbl9maW5kX2RldmljZShzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXFxubmV0L3NtYy9hZl9zbWMuYy0yMzgwLVxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY19jbGNfbXNnX3Byb3Bvc2FsICpwY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yNDI2LS8qIGxpc3RlbiB3b3JrZXI6IGZpbmlzaCBSRE1BIHNldHVwICovXFxubmV0L3NtYy9hZl9zbWMuYzoyNDI3OnN0YXRpYyBpbnQgc21jX2xpc3Rlbl9yZG1hX2ZpbmlzaChzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXFxubmV0L3NtYy9hZl9zbWMuYy0yNDI4LVxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY19jbGNfbXNnX2FjY2VwdF9jb25maXJtICpjY2xjLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yNDUyLS8qIHNldHVwIGZvciBjb25uZWN0aW9uIG9mIHNlcnZlciAqL1xcbm5ldC9zbWMvYWZfc21jLmM6MjQ1MzpzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvYWZfc21jLmMtMjQ1NC17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTI1OTctXFxubmV0L3NtYy9hZl9zbWMuYzoyNTk4OnN0YXRpYyB2b2lkIHNtY190Y3BfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvYWZfc21jLmMtMjU5OS17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTI2MzItXFxubmV0L3NtYy9hZl9zbWMuYzoyNjMzOnN0YXRpYyB2b2lkIHNtY19jbGNzb2NrX2RhdGFfcmVhZHkoc3RydWN0IHNvY2sgKmxpc3Rlbl9jbGNzb2NrKVxcbm5ldC9zbWMvYWZfc21jLmMtMjYzNC17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTI2NTAtXFxubmV0L3NtYy9hZl9zbWMuYzoyNjUxOmludCBzbWNfbGlzdGVuKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBiYWNrbG9nKVxcbm5ldC9zbWMvYWZfc21jLmMtMjY1Mi17XFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTI3MTYtXFxubmV0L3NtYy9hZl9zbWMuYzoyNzE3OmludCBzbWNfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld19zb2NrLFxcbm5ldC9zbWMvYWZfc21jLmMtMjcxOC1cXHQgICAgICAgc3RydWN0IHByb3RvX2FjY2VwdF9hcmcgKmFyZylcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjc4NS1cXG5uZXQvc21jL2FmX3NtYy5jOjI3ODY6aW50IHNtY19nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqYWRkcixcXG5uZXQvc21jL2FmX3NtYy5jLTI3ODctXFx0XFx0aW50IHBlZXIpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTI3OTktXFxubmV0L3NtYy9hZl9zbWMuYzoyODAwOmludCBzbWNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXFxubmV0L3NtYy9hZl9zbWMuYy0yODAxLXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMjgzNy1cXG5uZXQvc21jL2FmX3NtYy5jOjI4Mzg6aW50IHNtY19yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcXG5uZXQvc21jL2FmX3NtYy5jLTI4MzktXFx0XFx0aW50IGZsYWdzKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYz0yODg4PV9fcG9sbF90IHNtY19wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yOTQ3LVxcbm5ldC9zbWMvYWZfc21jLmM6Mjk0ODppbnQgc21jX3NodXRkb3duKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBob3cpXFxubmV0L3NtYy9hZl9zbWMuYy0yOTQ5LXtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMzAyMi1cXG5uZXQvc21jL2FmX3NtYy5jOjMwMjM6c3RhdGljIGludCBfX3NtY19nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L3NtYy9hZl9zbWMuYy0zMDI0LVxcdFxcdFxcdCAgICBjaGFyIF9fdXNlciAqb3B0dmFsLCBpbnQgX191c2VyICpvcHRsZW4pXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTMwNTQtXFxubmV0L3NtYy9hZl9zbWMuYzozMDU1OnN0YXRpYyBpbnQgX19zbWNfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbm5ldC9zbWMvYWZfc21jLmMtMzA1Ni1cXHRcXHRcXHQgICAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMzA4Ni1cXG5uZXQvc21jL2FmX3NtYy5jOjMwODc6aW50IHNtY19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L3NtYy9hZl9zbWMuYy0zMDg4LVxcdFxcdCAgIHNvY2twdHJfdCBvcHR2YWwsIHVuc2lnbmVkIGludCBvcHRsZW4pXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTMxNzMtXFxubmV0L3NtYy9hZl9zbWMuYzozMTc0OmludCBzbWNfZ2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbm5ldC9zbWMvYWZfc21jLmMtMzE3NS1cXHRcXHQgICBjaGFyIF9fdXNlciAqb3B0dmFsLCBpbnQgX191c2VyICpvcHRsZW4pXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTMxOTktXFxubmV0L3NtYy9hZl9zbWMuYzozMjAwOmludCBzbWNfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCxcXG5uZXQvc21jL2FmX3NtYy5jLTMyMDEtXFx0ICAgICAgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jPTMzMzU9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc21jX3NvY2tfb3BzID0ge1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0zMzU1LVxcbm5ldC9zbWMvYWZfc21jLmM6MzM1NjppbnQgc21jX2NyZWF0ZV9jbGNzayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgaW50IGZhbWlseSlcXG5uZXQvc21jL2FmX3NtYy5jLTMzNTcte1xcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0zMzc1LVxcbm5ldC9zbWMvYWZfc21jLmM6MzM3NjpzdGF0aWMgaW50IHNtY19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsXFxubmV0L3NtYy9hZl9zbWMuYy0zMzc3LVxcdFxcdCAgICAgIGludCBrZXJuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOToyMy40NTAwMzMxNDdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA5NTUxMTI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgU01DIFN1YnN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcHJldHR5IGNyaXRpY2FsIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIHdpdGhpbiB0aGUgU01DIHN1YnN5c3RlbS4gSXQgbG9va3MgbGlrZSBgc21jX2luaXRfaW5mb2Agd2FzIGJlaW5nIGZyZWVkIHdpdGggYGtmcmVlYCBpbnN0ZWFkIG9mIHRoZSBwcm9wZXIgYHNtY19pbml0X2luZm9fZnJlZWAgZnVuY3Rpb24uIFRoYXQncyBhIGNsYXNzaWMgbGVhaywgc3BlY2lmaWNhbGx5IGxlYWtpbmcgcmVmZXJlbmNlcyB0byBgc21jX2liX2RldmljZWAuIFdlIGRlZmluaXRlbHkgbmVlZCB0byBmaXggdGhhdC5cblxuQmV5b25kIHRoZSBidWcgZml4LCB0aGVyZSdzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aCB0aGUgYWRkaXRpb24gb2YgYHNtY19pYmRldl9pbml0X2JlZ2luYCBhbmQgYHNtY19pYmRldl9pbml0X2VuZGAsIHByZXN1bWFibHkgdG8gbWFuYWdlIHRoZSBpbml0aWFsIHNldHVwIG9mIHVucHVibGlzaGVkIGxpbmtzLiBJbnRlcmVzdGluZy5cblxuTm93LCBsZXQncyBzZWUgd2hpY2ggZnVuY3Rpb25zIGFyZSBhZmZlY3RlZC4gSSBzZWUgYF9fc21jX2Nvbm5lY3RgLCBgc21jX2xpc3Rlbl93b3JrYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYHNtY3JfbGlua19pbml0YCwgYW5kIGBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgdmlhIHRoZSB0eXBpY2FsIHVzZXItc3BhY2UgYWNjZXNzIG9mIGBjb25uZWN0YCwgYGxpc3RlbmAsIG9yLCBpbmRpcmVjdGx5LCB0aHJvdWdoIG5ldHdvcmsgcGFja2V0cyBsaWtlIHRoZSBMTEMgbWVzc2FnZXMuXG5cblNpbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlLCBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGluY2x1ZGUgYHNtY19jb25uZWN0YCwgYHNtY19saXN0ZW5gLCBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYCBpbiBgRm9jdXNTeW1ib2xzYC4gV2FpdCBhIG1pbnV0ZSwgYHNtY19jb25uZWN0YCBhbmQgYHNtY19saXN0ZW5gIGFyZSB0aGUgYWN0dWFsIHN5c2NhbGwgZW50cnkgcG9pbnRzLCBhcmVuJ3QgdGhleT8gQW5kIHRoZSBMTEMgZnVuY3Rpb25zIGhhbmRsZSB0aG9zZSBpbmNvbWluZyBuZXR3b3JrIG1lc3NhZ2VzLiBJIHNob3VsZCBjaGVjayBgbmV0L3NtYy9zbWNfbGxjLmNgIHRvIGNvbmZpcm0gd2hldGhlciBgc21jX2xsY19jbGlfYWRkX2xpbmtgIGFuZCBgc21jX2xsY19zcnZfYWRkX2xpbmtgIGFyZSBzdGF0aWMuIEdvdHRhIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTA0LCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM5OjMwLjU0NTU0ODEwMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3MzMwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihpbnR8dm9pZHxzdGF0aWMgaW50fHN0YXRpYyB2b2lkKSBbYS16QS1aMC05X10rXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9zbWNfbGxjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9zbWNfbGxjLmM9MjE3PXN0cnVjdCBzbWNfbGxjX3FlbnRyeSB7XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjQtXFxubmV0L3NtYy9zbWNfbGxjLmM6MjI1OnN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMsXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI2LVxcdFxcdFxcdCAgICB1MzIgYnl0ZV9sZW4pO1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MjI4PXN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqc21jX2xsY19mbG93X3FlbnRyeV9jbHIoc3RydWN0IHNtY19sbGNfZmxvdyAqZmxvdylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzNS1cXG5uZXQvc21jL3NtY19sbGMuYzoyMzY6dm9pZCBzbWNfbGxjX2Zsb3dfcWVudHJ5X2RlbChzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93KVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzNy17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0yNDc9c3RhdGljIGlubGluZSB2b2lkIHNtY19sbGNfZmxvd19xZW50cnlfc2V0KHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3csXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yNTItXFxubmV0L3NtYy9zbWNfbGxjLmM6MjUzOnN0YXRpYyB2b2lkIHNtY19sbGNfZmxvd19wYXJhbGxlbChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgdTggZmxvd190eXBlLFxcbm5ldC9zbWMvc21jX2xsYy5jLTI1NC1cXHRcXHRcXHRcXHQgIHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9Mjc1PXN0YXRpYyBib29sIHNtY19sbGNfZmxvd19zdGFydChzdHJ1Y3Qgc21jX2xsY19mbG93ICpmbG93LFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMzA2LS8qIHN0YXJ0IGEgbmV3IGxvY2FsIGxsYyBmbG93LCB3YWl0IHRpbGwgY3VycmVudCBmbG93IGZpbmlzaGVkICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MzA3OmludCBzbWNfbGxjX2Zsb3dfaW5pdGlhdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfbGxjLmMtMzA4LVxcdFxcdFxcdCAgZW51bSBzbWNfbGxjX2Zsb3d0eXBlIHR5cGUpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0zNDAtLyogZmluaXNoIHRoZSBjdXJyZW50IGxsYyBmbG93ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MzQxOnZvaWQgc21jX2xsY19mbG93X3N0b3Aoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHN0cnVjdCBzbWNfbGxjX2Zsb3cgKmZsb3cpXFxubmV0L3NtYy9zbWNfbGxjLmMtMzQyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTM5OD1zdHJ1Y3Qgc21jX2xsY190eF9wZW5kIHtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTQwMS0vKiBoYW5kbGVyIGZvciBzZW5kL3RyYW5zbWlzc2lvbiBjb21wbGV0aW9uIG9mIGFuIExMQyBtc2cgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo0MDI6c3RhdGljIHZvaWQgc21jX2xsY190eF9oYW5kbGVyKHN0cnVjdCBzbWNfd3JfdHhfcGVuZF9wcml2ICpwZW5kLFxcbm5ldC9zbWMvc21jX2xsYy5jLTQwMy1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNDIxLSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjQyMjpzdGF0aWMgaW50IHNtY19sbGNfYWRkX3BlbmRpbmdfc2VuZChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtNDIzLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX3dyX2J1ZiAqKndyX2J1ZixcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTQ0My1cXG5uZXQvc21jL3NtY19sbGMuYzo0NDQ6c3RhdGljIGludCBzbWNfbGxjX2FkZF9wZW5kaW5nX3NlbmRfdjIoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTQ0NS1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY193cl92Ml9idWYgKip3cl9idWYsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy00NTUtXFxubmV0L3NtYy9zbWNfbGxjLmM6NDU2OnN0YXRpYyB2b2lkIHNtY19sbGNfaW5pdF9tc2dfaGRyKHN0cnVjdCBzbWNfbGxjX2hkciAqaGRyLFxcbm5ldC9zbWMvc21jX2xsYy5jLTQ1Ny1cXHRcXHRcXHRcXHQgc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIHNpemVfdCBsZW4pXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy00NjgtLyogaGlnaC1sZXZlbCBBUEkgdG8gc2VuZCBMTEMgY29uZmlybSBsaW5rICovXFxubmV0L3NtYy9zbWNfbGxjLmM6NDY5OmludCBzbWNfbGxjX3NlbmRfY29uZmlybV9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy00NzAtXFx0XFx0XFx0ICAgICAgZW51bSBzbWNfbGxjX3JlcXJlc3AgcmVxcmVzcClcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTUwOC0vKiBzZW5kIExMQyBjb25maXJtIHJrZXkgcmVxdWVzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjUwOTpzdGF0aWMgaW50IHNtY19sbGNfc2VuZF9jb25maXJtX3JrZXkoc3RydWN0IHNtY19saW5rICpzZW5kX2xpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtNTEwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNtY19idWZfZGVzYyAqcm1iX2Rlc2MpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy01NTctLyogc2VuZCBMTEMgZGVsZXRlIHJrZXkgcmVxdWVzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjU1ODpzdGF0aWMgaW50IHNtY19sbGNfc2VuZF9kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtNTU5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTYxOD1zdGF0aWMgc3RydWN0IHNtY19idWZfZGVzYyAqc21jX2xsY19nZXRfZmlyc3Rfcm1iKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNjI0LVxcbm5ldC9zbWMvc21jX2xsYy5jOjYyNTpzdGF0aWMgaW50IHNtY19sbGNfZmlsbF9leHRfdjIoc3RydWN0IHNtY19sbGNfbXNnX2FkZF9saW5rX3YyX2V4dCAqZXh0LFxcbm5ldC9zbWMvc21jX2xsYy5jLTYyNi1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNjY0LS8qIHNlbmQgQUREIExJTksgcmVxdWVzdCBvciByZXNwb25zZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjY2NTppbnQgc21jX2xsY19zZW5kX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggbWFjW10sIHU4IGdpZFtdLFxcbm5ldC9zbWMvc21jX2xsYy5jLTY2Ni1cXHRcXHRcXHQgIHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy03MjUtLyogc2VuZCBERUxFVEUgTElOSyByZXF1ZXN0IG9yIHJlc3BvbnNlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6NzI2OmludCBzbWNfbGxjX3NlbmRfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCB1OCBsaW5rX2RlbF9pZCxcXG5uZXQvc21jL3NtY19sbGMuYy03MjctXFx0XFx0XFx0ICAgICBlbnVtIHNtY19sbGNfcmVxcmVzcCByZXFyZXNwLCBib29sIG9yZGVybHksXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy03NjEtLyogc2VuZCBMTEMgdGVzdCBsaW5rIHJlcXVlc3QgKi9cXG5uZXQvc21jL3NtY19sbGMuYzo3NjI6c3RhdGljIGludCBzbWNfbGxjX3NlbmRfdGVzdF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgdTggdXNlcl9kYXRhWzE2XSlcXG5uZXQvc21jL3NtY19sbGMuYy03NjMte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtNzg2LS8qIHNjaGVkdWxlIGFuIGxsYyBzZW5kIG9uIGxpbmssIG1heSB3YWl0IGZvciBidWZmZXJzICovXFxubmV0L3NtYy9zbWNfbGxjLmM6Nzg3OnN0YXRpYyBpbnQgc21jX2xsY19zZW5kX21lc3NhZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLCB2b2lkICpsbGNidWYpXFxubmV0L3NtYy9zbWNfbGxjLmMtNzg4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTgwOC0gKi9cXG5uZXQvc21jL3NtY19sbGMuYzo4MDk6c3RhdGljIGludCBzbWNfbGxjX3NlbmRfbWVzc2FnZV93YWl0KHN0cnVjdCBzbWNfbGluayAqbGluaywgdm9pZCAqbGxjYnVmKVxcbm5ldC9zbWMvc21jX2xsYy5jLTgxMC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy04MjgtXFxubmV0L3NtYy9zbWNfbGxjLmM6ODI5OnN0YXRpYyBpbnQgc21jX2xsY19hbGxvY19hbHRfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19sbGMuYy04MzAtXFx0XFx0XFx0XFx0ICBlbnVtIHNtY19sZ3JfdHlwZSBsZ3JfbmV3X3QpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy04NTMtLyogc2VuZCBvbmUgYWRkX2xpbmtfY29udGludWUgbXNnICovXFxubmV0L3NtYy9zbWNfbGxjLmM6ODU0OnN0YXRpYyBpbnQgc21jX2xsY19hZGRfbGlua19jb250KHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy04NTUtXFx0XFx0XFx0XFx0IHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsIHU4ICpudW1fcmtleXNfdG9kbyxcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTkwOC1cXG5uZXQvc21jL3NtY19sbGMuYzo5MDk6c3RhdGljIGludCBzbWNfbGxjX2NsaV9ya2V5X2V4Y2hhbmdlKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy05MTAtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtOTUyLS8qIHByZXBhcmUgYW5kIHNlbmQgYW4gYWRkIGxpbmsgcmVqZWN0IHJlc3BvbnNlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6OTUzOnN0YXRpYyBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmtfcmVqZWN0KHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTk1NC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy05NjItXFxubmV0L3NtYy9zbWNfbGxjLmM6OTYzOnN0YXRpYyBpbnQgc21jX2xsY19jbGlfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy05NjQtXFx0XFx0XFx0XFx0IHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmksXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMDIwLVxcbm5ldC9zbWMvc21jX2xsYy5jOjEwMjE6c3RhdGljIHZvaWQgc21jX2xsY19zYXZlX2FkZF9saW5rX3JrZXlzKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0xMDIyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfbGluayAqbGlua19uZXcsXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMDQ2LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEwNDc6c3RhdGljIHZvaWQgc21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8oc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTEwNDgtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzbWNfbGxjX21zZ19hZGRfbGluayAqYWRkX2xsYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEwNTctLyogYXMgYW4gU01DIGNsaWVudCwgcHJvY2VzcyBhbiBhZGQgbGluayByZXF1ZXN0ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTA1ODppbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG5uZXQvc21jL3NtY19sbGMuYy0xMDU5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTExNTEtXFxubmV0L3NtYy9zbWNfbGxjLmM6MTE1MjpzdGF0aWMgdm9pZCBzbWNfbGxjX3NlbmRfcmVxdWVzdF9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMTE1My17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMTkwLS8qIGFzIGFuIFNNQyBjbGllbnQsIGludml0ZSBzZXJ2ZXIgdG8gc3RhcnQgdGhlIGFkZF9saW5rIHByb2Nlc3NpbmcgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxMTkxOnN0YXRpYyB2b2lkIHNtY19sbGNfY2xpX2FkZF9saW5rX2ludml0ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtMTE5Mi1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEyMzU9c3RhdGljIGJvb2wgc21jX2xsY19pc19sb2NhbF9hZGRfbGluayh1bmlvbiBzbWNfbGxjX21zZyAqbGxjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTI0Mi1cXG5uZXQvc21jL3NtY19sbGMuYzoxMjQzOnN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTI0NC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMjU2LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEyNTc6c3RhdGljIGludCBzbWNfbGxjX2FjdGl2ZV9saW5rX2NvdW50KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2xsYy5jLTEyNTgte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTI3MD1zdGF0aWMgc3RydWN0IHNtY19saW5rICpzbWNfbGxjX2ZpbmRfYXN5bV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTMxMy1cXG5uZXQvc21jL3NtY19sbGMuYzoxMzE0OnN0YXRpYyB2b2lkIHNtY19sbGNfZGVsZXRlX2FzeW1fbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0xMzE1LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTEzNDctXFxubmV0L3NtYy9zbWNfbGxjLmM6MTM0ODpzdGF0aWMgaW50IHNtY19sbGNfc3J2X3JrZXlfZXhjaGFuZ2Uoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbm5ldC9zbWMvc21jX2xsYy5jLTEzNDktXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3KVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTM4OC1cXG5uZXQvc21jL3NtY19sbGMuYzoxMzg5OnN0YXRpYyBpbnQgc21jX2xsY19zcnZfY29uZl9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0xMzkwLVxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xpbmsgKmxpbmtfbmV3LFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTQyMi1cXG5uZXQvc21jL3NtY19sbGMuYzoxNDIzOnN0YXRpYyB2b2lkIHNtY19sbGNfc2VuZF9yZXFfYWRkX2xpbmtfcmVzcG9uc2Uoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTQyNC17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNDMxLVxcbm5ldC9zbWMvc21jX2xsYy5jOjE0MzI6aW50IHNtY19sbGNfc3J2X2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0xNDMzLVxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnJlcV9xZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTU0LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE1NTU6c3RhdGljIHZvaWQgc21jX2xsY19wcm9jZXNzX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0xNTU2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE1NzMtLyogZW5xdWV1ZSBhIGxvY2FsIGFkZF9saW5rIHJlcSB0byB0cmlnZ2VyIGEgbmV3IGFkZF9saW5rIGZsb3cgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxNTc0OnZvaWQgc21jX2xsY19hZGRfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU3NS17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNTg1LS8qIHdvcmtlciB0byBwcm9jZXNzIGFuIGFkZCBsaW5rIG1lc3NhZ2UgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxNTg2OnN0YXRpYyB2b2lkIHNtY19sbGNfYWRkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMTU4Ny17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNjA4LSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjE2MDk6dm9pZCBzbWNfbGxjX3Nydl9kZWxldGVfbGlua19sb2NhbChzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHU4IGRlbF9saW5rX2lkKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2MTAte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTYyMS1cXG5uZXQvc21jL3NtY19sbGMuYzoxNjIyOnN0YXRpYyB2b2lkIHNtY19sbGNfcHJvY2Vzc19jbGlfZGVsZXRlX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTYyMy17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNjc5LSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjE2ODA6dm9pZCBzbWNfbGxjX3NlbmRfbGlua19kZWxldGVfYWxsKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIG9yZCwgdTMyIHJzbilcXG5uZXQvc21jL3NtY19sbGMuYy0xNjgxLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTE2OTktXFxubmV0L3NtYy9zbWNfbGxjLmM6MTcwMDpzdGF0aWMgdm9pZCBzbWNfbGxjX3Byb2Nlc3Nfc3J2X2RlbGV0ZV9saW5rKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE3MDEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTc2Ny1cXG5uZXQvc21jL3NtY19sbGMuYzoxNzY4OnN0YXRpYyB2b2lkIHNtY19sbGNfZGVsZXRlX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMTc2OS17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNzg3LS8qIHByb2Nlc3MgYSBjb25maXJtX3JrZXkgcmVxdWVzdCBmcm9tIHBlZXIsIHJlbW90ZSBmbG93ICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTc4ODpzdGF0aWMgdm9pZCBzbWNfbGxjX3JtdF9jb25mX3JrZXkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfbGxjLmMtMTc4OS17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xODI3LS8qIHByb2Nlc3MgYSBkZWxldGVfcmtleSByZXF1ZXN0IGZyb20gcGVlciwgcmVtb3RlIGZsb3cgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoxODI4OnN0YXRpYyB2b2lkIHNtY19sbGNfcm10X2RlbGV0ZV9ya2V5KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE4Mjkte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg4OS1cXG5uZXQvc21jL3NtY19sbGMuYzoxODkwOnN0YXRpYyB2b2lkIHNtY19sbGNfcHJvdG9jb2xfdmlvbGF0aW9uKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCB1OCB0eXBlKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE4OTEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTg5OS0vKiBmbHVzaCB0aGUgbGxjIGV2ZW50IHF1ZXVlICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MTkwMDpzdGF0aWMgdm9pZCBzbWNfbGxjX2V2ZW50X2ZsdXNoKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2xsYy5jLTE5MDEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTkxMS1cXG5uZXQvc21jL3NtY19sbGMuYzoxOTEyOnN0YXRpYyB2b2lkIHNtY19sbGNfZXZlbnRfaGFuZGxlcihzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG5uZXQvc21jL3NtY19sbGMuYy0xOTEzLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIwMzMtLyogd29ya2VyIHRvIHByb2Nlc3MgbGxjIG1lc3NhZ2VzIG9uIHRoZSBldmVudCBxdWV1ZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIwMzQ6c3RhdGljIHZvaWQgc21jX2xsY19ldmVudF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvc21jL3NtY19sbGMuYy0yMDM1LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIwNjItLyogcHJvY2VzcyBsbGMgcmVzcG9uc2VzIGluIHRhc2tsZXQgY29udGV4dCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIwNjM6c3RhdGljIHZvaWQgc21jX2xsY19yeF9yZXNwb25zZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxubmV0L3NtYy9zbWNfbGxjLmMtMjA2NC1cXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTIxMDc9c3RhdGljIHUzMiBzbWNfbGxjX21heF9ib2R5X2xlbih1bmlvbiBzbWNfbGxjX21zZyAqbGxjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjEyMS1cXG5uZXQvc21jL3NtY19sbGMuYzoyMTIyOnN0YXRpYyB2b2lkIHNtY19sbGNfZW5xdWV1ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHVuaW9uIHNtY19sbGNfbXNnICpsbGMsXFxubmV0L3NtYy9zbWNfbGxjLmMtMjEyMy1cXHRcXHRcXHQgICAgdTMyIGJ5dGVfbGVuKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjE2Ny0vKiBjb3B5IHJlY2VpdmVkIG1zZyBhbmQgYWRkIGl0IHRvIHRoZSBldmVudCBxdWV1ZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIxNjg6c3RhdGljIHZvaWQgc21jX2xsY19yeF9oYW5kbGVyKHN0cnVjdCBpYl93YyAqd2MsIHZvaWQgKmJ1ZilcXG5uZXQvc21jL3NtY19sbGMuYy0yMTY5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxODctXFxubmV0L3NtYy9zbWNfbGxjLmM6MjE4ODpzdGF0aWMgdm9pZCBzbWNfbGxjX3Rlc3RsaW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIxODkte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjIxOS1cXG5uZXQvc21jL3NtY19sbGMuYzoyMjIwOnZvaWQgc21jX2xsY19sZ3JfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19zb2NrICpzbWMpXFxubmV0L3NtYy9zbWNfbGxjLmMtMjIyMS17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjM4LS8qIGNhbGxlZCBhZnRlciBsZ3Igd2FzIHJlbW92ZWQgZnJvbSBsZ3JfbGlzdCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIyMzk6dm9pZCBzbWNfbGxjX2xncl9jbGVhcihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19sbGMuYy0yMjQwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNTItXFxubmV0L3NtYy9zbWNfbGxjLmM6MjI1MzppbnQgc21jX2xsY19saW5rX2luaXQoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyNTQte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI1OS1cXG5uZXQvc21jL3NtY19sbGMuYzoyMjYwOnZvaWQgc21jX2xsY19saW5rX2FjdGl2ZShzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxubmV0L3NtYy9zbWNfbGxjLmMtMjI2MS17XFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0yMjc3LS8qIGNhbGxlZCBpbiB3b3JrZXIgY29udGV4dCAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIyNzg6dm9pZCBzbWNfbGxjX2xpbmtfY2xlYXIoc3RydWN0IHNtY19saW5rICpsaW5rLCBib29sIGxvZylcXG5uZXQvc21jL3NtY19sbGMuYy0yMjc5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIyOTItLyogcmVnaXN0ZXIgYSBuZXcgcnRva2VuIGF0IHRoZSByZW1vdGUgcGVlciAoZm9yIGFsbCBsaW5rcykgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoyMjkzOmludCBzbWNfbGxjX2RvX2NvbmZpcm1fcmtleShzdHJ1Y3Qgc21jX2xpbmsgKnNlbmRfbGluayxcXG5uZXQvc21jL3NtY19sbGMuYy0yMjk0LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpybWJfZGVzYylcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzMTQtLyogdW5yZWdpc3RlciBhbiBydG9rZW4gYXQgdGhlIHJlbW90ZSBwZWVyICovXFxubmV0L3NtYy9zbWNfbGxjLmM6MjMxNTppbnQgc21jX2xsY19kb19kZWxldGVfcmtleShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19sbGMuYy0yMzE2LVxcdFxcdFxcdCAgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnJtYl9kZXNjKVxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM0MC1cXG5uZXQvc21jL3NtY19sbGMuYzoyMzQxOnZvaWQgc21jX2xsY19saW5rX3NldF91aWQoc3RydWN0IHNtY19saW5rICpsaW5rKVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzNDIte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM0OS0vKiBzYXZlIHBlZXJzIGxpbmsgdXNlciBpZCwgdXNlZCBmb3IgZGVidWcgcHVycG9zZXMgKi9cXG5uZXQvc21jL3NtY19sbGMuYzoyMzUwOnZvaWQgc21jX2xsY19zYXZlX3BlZXJfdWlkKHN0cnVjdCBzbWNfbGxjX3FlbnRyeSAqcWVudHJ5KVxcbm5ldC9zbWMvc21jX2xsYy5jLTIzNTEte1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM1Ni0vKiBldmFsdWF0ZSBjb25maXJtIGxpbmsgcmVxdWVzdCBvciByZXNwb25zZSAqL1xcbm5ldC9zbWMvc21jX2xsYy5jOjIzNTc6aW50IHNtY19sbGNfZXZhbF9jb25mX2xpbmsoc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnksXFxubmV0L3NtYy9zbWNfbGxjLmMtMjM1OC1cXHRcXHRcXHQgICBlbnVtIHNtY19sbGNfcmVxcmVzcCB0eXBlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOTozMC41OTQyOTgxNzZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5MjIyNDkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aGluZ3M6XG5cbioqQW5hbHl6aW5nIFNNQyBMaW5rIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gYHNtY19sbGNfY2xpX2FkZF9saW5rYCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYCBhcmVuJ3Qgc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBUaGF0IHByb2JhYmx5IG1lYW5zIHRoZXkncmUgc3ViamVjdCB0byBzb21lIHNvcnQgb2YgZHluYW1pYyBiZWhhdmlvciwgd2hpY2ggbmVlZHMgdW5kZXJzdGFuZGluZy4gUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgY29yZSBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHRyYWNrIGRvd24gZXhhY3RseSBob3cgdGhlc2UgbGlua3MgYXJlIGluaXRpYWxpemVkLiBUaGUgb2J2aW91cyBwbGFjZSB0byBzdGFydCBpcyBgbmV0L3NtYy9zbWNfY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIGBzbWNyX2xpbmtfaW5pdGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgY29tcGxldGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBhbmQgc2VlaW5nIHdoYXQgaW5mbHVlbmNlcyB0aGVzZSBub24tc3RhdGljIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAyNDAsIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOTozMy45ODY1MjU2NDRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjU5MTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oaW50fHZvaWR8c3RhdGljIGludHxzdGF0aWMgdm9pZCkgW2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19jb3JlLmM9NTA9c3RhdGljIERFQ0xBUkVfV0FJVF9RVUVVRV9IRUFEKGxncnNfZGVsZXRlZCk7XFxubmV0L3NtYy9zbWNfY29yZS5jLTUxLVxcbm5ldC9zbWMvc21jX2NvcmUuYzo1MjpzdGF0aWMgdm9pZCBzbWNfYnVmX2ZyZWUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgaXNfcm1iLFxcbm5ldC9zbWMvc21jX2NvcmUuYy01My1cXHRcXHRcXHQgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX2Rlc2MpO1xcbm5ldC9zbWMvc21jX2NvcmUuYzo1NDpzdGF0aWMgdm9pZCBfX3NtY19sZ3JfdGVybWluYXRlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIHNvZnQpO1xcbm5ldC9zbWMvc21jX2NvcmUuYy01NS1cXG5uZXQvc21jL3NtY19jb3JlLmM6NTY6c3RhdGljIHZvaWQgc21jX2xpbmtfZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxubmV0L3NtYy9zbWNfY29yZS5jLTU3LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo1ODp2b2lkIHNtY19pbml0X2luZm9fZnJlZShzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbm5ldC9zbWMvc21jX2NvcmUuYy01OS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmM9NzA9c3RhdGljIGlubGluZSBzdHJ1Y3QgbGlzdF9oZWFkICpzbWNfbGdyX2xpc3RfaGVhZChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy04MS1cXG5uZXQvc21jL3NtY19jb3JlLmM6ODI6c3RhdGljIHZvaWQgc21jX2liZGV2X2NudF9pbmMoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTgzLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy04Ni1cXG5uZXQvc21jL3NtY19jb3JlLmM6ODc6c3RhdGljIHZvaWQgc21jX2liZGV2X2NudF9kZWMoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTg4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy05MS1cXG5uZXQvc21jL3NtY19jb3JlLmM6OTI6c3RhdGljIHZvaWQgc21jX2xncl9zY2hlZHVsZV9mcmVlX3dvcmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTkzLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTEtICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjExMjpzdGF0aWMgdm9pZCBzbWNfbGdyX2FkZF9hbGVydF90b2tlbihzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY29yZS5jLTExMy17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTMzLS8qIGFzc2lnbiBhbiBTTUMtUiBsaW5rIHRvIHRoZSBjb25uZWN0aW9uICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjEzNDpzdGF0aWMgaW50IHNtY3JfbGdyX2Nvbm5fYXNzaWduX2xpbmsoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLCBib29sIGZpcnN0KVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzUte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE3Ny0gKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MTc4OnN0YXRpYyBpbnQgc21jX2xncl9yZWdpc3Rlcl9jb25uKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubiwgYm9vbCBmaXJzdClcXG5uZXQvc21jL3NtY19jb3JlLmMtMTc5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yMDYtICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjIwNzpzdGF0aWMgdm9pZCBfX3NtY19sZ3JfdW5yZWdpc3Rlcl9jb25uKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jb3JlLmMtMjA4LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yMjEtICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjIyMjpzdGF0aWMgdm9pZCBzbWNfbGdyX3VucmVnaXN0ZXJfY29ubihzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY29yZS5jLTIyMy17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjM0LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoyMzU6c3RhdGljIHZvaWQgc21jX2xncl9idWZfbGlzdF9hZGQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfY29yZS5jLTIzNi1cXHRcXHRcXHRcXHQgYm9vbCBpc19ybWIsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjQ5LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoyNTA6c3RhdGljIHZvaWQgc21jX2xncl9idWZfbGlzdF9kZWwoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfY29yZS5jLTI1MS1cXHRcXHRcXHRcXHQgYm9vbCBpc19ybWIsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjYzLVxcbm5ldC9zbWMvc21jX2NvcmUuYzoyNjQ6aW50IHNtY19ubF9nZXRfc3lzX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNjUte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTMxOS0vKiBGaWxsIFNNQ19OTEFfTEdSX0RfVjJfQ09NTU9OL1NNQ19OTEFfTEdSX1JfVjJfQ09NTU9OIG5lc3RlZCBhdHRyaWJ1dGVzICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjMyMDpzdGF0aWMgaW50IHNtY19ubF9maWxsX2xncl92Ml9jb21tb24oc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfY29yZS5jLTMyMS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMzUwLVxcbm5ldC9zbWMvc21jX2NvcmUuYzozNTE6c3RhdGljIGludCBzbWNfbmxfZmlsbF9zbWNyX2xncl92MihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19jb3JlLmMtMzUyLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMzc1LVxcbm5ldC9zbWMvc21jX2NvcmUuYzozNzY6c3RhdGljIGludCBzbWNfbmxfZmlsbF9sZ3Ioc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfY29yZS5jLTM3Ny1cXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTQyNy1cXG5uZXQvc21jL3NtY19jb3JlLmM6NDI4OnN0YXRpYyBpbnQgc21jX25sX2ZpbGxfbGdyX2xpbmsoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfY29yZS5jLTQyOS1cXHRcXHRcXHRcXHRzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNDg4LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo0ODk6c3RhdGljIGludCBzbWNfbmxfaGFuZGxlX2xncihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19jb3JlLmMtNDkwLVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy01MjItXFxubmV0L3NtYy9zbWNfY29yZS5jOjUyMzpzdGF0aWMgdm9pZCBzbWNfbmxfZmlsbF9sZ3JfbGlzdChzdHJ1Y3Qgc21jX2xncl9saXN0ICpzbWNfbGdyLFxcbm5ldC9zbWMvc21jX2NvcmUuYy01MjQtXFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNTQ2LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo1NDc6c3RhdGljIGludCBzbWNfbmxfZmlsbF9zbWNkX2xncihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19jb3JlLmMtNTQ4LVxcdFxcdFxcdFxcdHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNjE2LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo2MTc6c3RhdGljIGludCBzbWNfbmxfaGFuZGxlX3NtY2RfbGdyKHN0cnVjdCBzbWNkX2RldiAqZGV2LFxcbm5ldC9zbWMvc21jX2NvcmUuYy02MTgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTY0My1cXG5uZXQvc21jL3NtY19jb3JlLmM6NjQ0OnN0YXRpYyBpbnQgc21jX25sX2ZpbGxfc21jZF9kZXYoc3RydWN0IHNtY2RfZGV2X2xpc3QgKmRldl9saXN0LFxcbm5ldC9zbWMvc21jX2NvcmUuYy02NDUtXFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy02NzAtXFxubmV0L3NtYy9zbWNfY29yZS5jOjY3MTppbnQgc21jcl9ubF9nZXRfbGdyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG5uZXQvc21jL3NtY19jb3JlLmMtNjcyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy02NzgtXFxubmV0L3NtYy9zbWNfY29yZS5jOjY3OTppbnQgc21jcl9ubF9nZXRfbGluayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTY4MC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNjg2LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo2ODc6aW50IHNtY2RfbmxfZ2V0X2xncihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTY4OC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNjkyLVxcbm5ldC9zbWMvc21jX2NvcmUuYzo2OTM6dm9pZCBzbWNfbGdyX2NsZWFudXBfZWFybHkoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTY5NC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNzA4LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo3MDk6c3RhdGljIHZvaWQgc21jcl9sZ3JfbGlua19kZWFjdGl2YXRlX2FsbChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19jb3JlLmMtNzEwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy03MjItXFxubmV0L3NtYy9zbWNfY29yZS5jOjcyMzpzdGF0aWMgdm9pZCBzbWNfbGdyX2ZyZWUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpO1xcbm5ldC9zbWMvc21jX2NvcmUuYy03MjQtXFxubmV0L3NtYy9zbWNfY29yZS5jOjcyNTpzdGF0aWMgdm9pZCBzbWNfbGdyX2ZyZWVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTcyNi17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNzYwLVxcbm5ldC9zbWMvc21jX2NvcmUuYzo3NjE6c3RhdGljIHZvaWQgc21jX2xncl90ZXJtaW5hdGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTc2Mi17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmM9NzcwPXN0YXRpYyB1OCBzbWNyX25leHRfbGlua19pZChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy03ODktXFxubmV0L3NtYy9zbWNfY29yZS5jOjc5MDpzdGF0aWMgdm9pZCBzbWNyX2NvcHlfZGV2X2luZm9fdG9fbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTc5MS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtNzk4LVxcbm5ldC9zbWMvc21jX2NvcmUuYzo3OTk6aW50IHNtY3JfbGlua19pbml0KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBzdHJ1Y3Qgc21jX2xpbmsgKmxuayxcXG5uZXQvc21jL3NtY19jb3JlLmMtODAwLVxcdFxcdCAgIHU4IGxpbmtfaWR4LCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTkwNy0vKiBjcmVhdGUgYSBuZXcgU01DIGxpbmsgZ3JvdXAgKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6OTA4OnN0YXRpYyBpbnQgc21jX2xncl9jcmVhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxubmV0L3NtYy9zbWNfY29yZS5jLTkwOS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTAzOS1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTA0MDpzdGF0aWMgaW50IHNtY193cml0ZV9zcGFjZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY29yZS5jLTEwNDEte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTEwNTMtXFxubmV0L3NtYy9zbWNfY29yZS5jOjEwNTQ6c3RhdGljIGludCBzbWNfc3dpdGNoX2N1cnNvcihzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19jZGNfdHhfcGVuZCAqcGVuZCxcXG5uZXQvc21jL3NtY19jb3JlLmMtMTA1NS1cXHRcXHRcXHQgICAgIHN0cnVjdCBzbWNfd3JfYnVmICp3cl9idWYpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTEwMy1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTEwNDp2b2lkIHNtY19zd2l0Y2hfbGlua19hbmRfY291bnQoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uLFxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTA1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc21jX2xpbmsgKnRvX2xuaylcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYz0xMTE2PXN0cnVjdCBzbWNfbGluayAqc21jX3N3aXRjaF9jb25ucyhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMTkzLVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxMTk0OnN0YXRpYyB2b2lkIHNtY3JfYnVmX3VudXNlKHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjLCBib29sIGlzX3JtYixcXG5uZXQvc21jL3NtY19jb3JlLmMtMTE5NS1cXHRcXHRcXHQgICBzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMjI4LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxMjI5OnN0YXRpYyB2b2lkIHNtY2RfYnVmX2RldGFjaChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY29yZS5jLTEyMzAte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTEyNDQtXFxubmV0L3NtYy9zbWNfY29yZS5jOjEyNDU6c3RhdGljIHZvaWQgc21jX2J1Zl91bnVzZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxubmV0L3NtYy9zbWNfY29yZS5jLTEyNDYtXFx0XFx0XFx0ICBzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMjc1LS8qIHJlbW92ZSBhIGZpbmlzaGVkIGNvbm5lY3Rpb24gZnJvbSBpdHMgbGluayBncm91cCAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxMjc2OnZvaWQgc21jX2Nvbm5fZnJlZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pXFxubmV0L3NtYy9zbWNfY29yZS5jLTEyNzcte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTEzMTYtLyogdW5yZWdpc3RlciBhIGxpbmsgZnJvbSBhIGJ1Zl9kZXNjICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjEzMTc6c3RhdGljIHZvaWQgc21jcl9idWZfdW5tYXBfbGluayhzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfZGVzYywgYm9vbCBpc19ybWIsXFxubmV0L3NtYy9zbWNfY29yZS5jLTEzMTgtXFx0XFx0XFx0XFx0c3RydWN0IHNtY19saW5rICpsbmspXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTMzOS0vKiB1bm1hcCBhbGwgYnVmZmVycyBvZiBsZ3IgZm9yIGEgZGVsZXRlZCBsaW5rICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjEzNDA6c3RhdGljIHZvaWQgc21jcl9idWZfdW5tYXBfbGdyKHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzQxLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzU5LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxMzYwOnN0YXRpYyB2b2lkIHNtY3JfcnRva2VuX2NsZWFyX2xpbmsoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTEzNjEte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTEzNzAtXFxubmV0L3NtYy9zbWNfY29yZS5jOjEzNzE6c3RhdGljIHZvaWQgX19zbWNyX2xpbmtfY2xlYXIoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTEzNzIte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTEzODctLyogbXVzdCBiZSBjYWxsZWQgdW5kZXIgbGdyLVxcdTAwM2VsbGNfY29uZl9tdXRleCBsb2NrICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjEzODg6dm9pZCBzbWNyX2xpbmtfY2xlYXIoc3RydWN0IHNtY19saW5rICpsbmssIGJvb2wgbG9nKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xMzg5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDA0LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxNDA1OnZvaWQgc21jcl9saW5rX2hvbGQoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTE0MDYte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE0MDktXFxubmV0L3NtYy9zbWNfY29yZS5jOjE0MTA6dm9pZCBzbWNyX2xpbmtfcHV0KHN0cnVjdCBzbWNfbGluayAqbG5rKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDExLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDE1LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxNDE2OnN0YXRpYyB2b2lkIHNtY3JfYnVmX2ZyZWUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgaXNfcm1iLFxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDE3LVxcdFxcdFxcdCAgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX2Rlc2MpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTQzMC1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTQzMTpzdGF0aWMgdm9pZCBzbWNkX2J1Zl9mcmVlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIGlzX2RtYixcXG5uZXQvc21jL3NtY19jb3JlLmMtMTQzMi1cXHRcXHRcXHQgIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjKVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE0NDMtXFxubmV0L3NtYy9zbWNfY29yZS5jOjE0NDQ6c3RhdGljIHZvaWQgc21jX2J1Zl9mcmVlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIGlzX3JtYixcXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ0NS1cXHRcXHRcXHQgc3RydWN0IHNtY19idWZfZGVzYyAqYnVmX2Rlc2MpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ1Mi1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTQ1MzpzdGF0aWMgdm9pZCBfX3NtY19sZ3JfZnJlZV9idWZzKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLCBib29sIGlzX3JtYilcXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ1NC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ3MS1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTQ3MjpzdGF0aWMgdm9pZCBzbWNfbGdyX2ZyZWVfYnVmcyhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ3My17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ4MC0vKiB3b24ndCBiZSBmcmVlZCB1bnRpbCBubyBvbmUgYWNjZXNzZXMgdG8gbGdyIGFueW1vcmUgKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MTQ4MTpzdGF0aWMgdm9pZCBfX3NtY19sZ3JfZnJlZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncilcXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ4Mi17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTQ5NS0vKiByZW1vdmUgYSBsaW5rIGdyb3VwICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjE0OTY6c3RhdGljIHZvaWQgc21jX2xncl9mcmVlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNDk3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNTE3LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxNTE4OnZvaWQgc21jX2xncl9ob2xkKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNTE5LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNTIyLVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxNTIzOnZvaWQgc21jX2xncl9wdXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTE1MjQte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE1MjgtXFxubmV0L3NtYy9zbWNfY29yZS5jOjE1Mjk6c3RhdGljIHZvaWQgc21jX3NrX3dha2VfdXBzKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNTMwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNTM2LS8qIGtpbGwgYSBjb25uZWN0aW9uICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjE1Mzc6c3RhdGljIHZvaWQgc21jX2Nvbm5fa2lsbChzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sIGJvb2wgc29mdClcXG5uZXQvc21jL3NtY19jb3JlLmMtMTUzOC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTU2Mi1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTU2MzpzdGF0aWMgdm9pZCBzbWNfbGdyX2NsZWFudXAoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTE1NjQte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE1ODAtICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjE1ODE6c3RhdGljIHZvaWQgX19zbWNfbGdyX3Rlcm1pbmF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgYm9vbCBzb2Z0KVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNTgyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNjEzLS8qIHVubGluayBsaW5rIGdyb3VwIGFuZCBzY2hlZHVsZSB0ZXJtaW5hdGlvbiAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxNjE0OnZvaWQgc21jX2xncl90ZXJtaW5hdGVfc2NoZWQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IpXFxubmV0L3NtYy9zbWNfY29yZS5jLTE2MTUte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE2MzAtLyogQ2FsbGVkIHdoZW4gcGVlciBsZ3Igc2h1dGRvd24gKHJlZ3VsYXJseSBvciBhYm5vcm1hbGx5KSBpcyByZWNlaXZlZCAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxNjMxOnZvaWQgc21jX3NtY2RfdGVybWluYXRlKHN0cnVjdCBzbWNkX2RldiAqZGV2LCBzdHJ1Y3Qgc21jZF9naWQgKnBlZXJfZ2lkLFxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNjMyLVxcdFxcdFxcdHVuc2lnbmVkIHNob3J0IHZsYW4pXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTY2MC0vKiBDYWxsZWQgd2hlbiBhbiBTTUNEIGRldmljZSBpcyByZW1vdmVkIG9yIHRoZSBzbWMgbW9kdWxlIGlzIHVubG9hZGVkICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjE2NjE6dm9pZCBzbWNfc21jZF90ZXJtaW5hdGVfYWxsKHN0cnVjdCBzbWNkX2RldiAqc21jZClcXG5uZXQvc21jL3NtY19jb3JlLmMtMTY2Mi17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTY4NC0gKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MTY4NTp2b2lkIHNtY19zbWNyX3Rlcm1pbmF0ZV9hbGwoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNjg2LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzIyLS8qIHNldCBuZXcgbGdyIHR5cGUgYW5kIGNsZWFyIGFsbCBhc3ltbWV0cmljIGxpbmsgdGFnZ2luZyAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxNzIzOnZvaWQgc21jcl9sZ3Jfc2V0X3R5cGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGVudW0gc21jX2xncl90eXBlIG5ld190eXBlKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzI0LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzU3LS8qIHNldCBuZXcgbGdyIHR5cGUgYW5kIHRhZyBhIGxpbmsgYXMgYXN5bW1ldHJpYyAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxNzU4OnZvaWQgc21jcl9sZ3Jfc2V0X3R5cGVfYXN5bShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG5uZXQvc21jL3NtY19jb3JlLmMtMTc1OS1cXHRcXHRcXHQgICAgZW51bSBzbWNfbGdyX3R5cGUgbmV3X3R5cGUsIGludCBhc3ltX2xua19pZHgpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTc2NS0vKiBhYm9ydCBjb25uZWN0aW9uLCBhYm9ydF93b3JrIHNjaGVkdWxlZCBmcm9tIHRhc2tsZXQgY29udGV4dCAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxNzY2OnN0YXRpYyB2b2lkIHNtY19jb25uX2Fib3J0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzY3LXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xNzc4LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoxNzc5OnZvaWQgc21jcl9wb3J0X2FkZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYsIHU4IGlicG9ydClcXG5uZXQvc21jL3NtY19jb3JlLmMtMTc4MC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTgwNy0gKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MTgwODpzdGF0aWMgdm9pZCBzbWNyX2xpbmtfZG93bihzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcXG5uZXQvc21jL3NtY19jb3JlLmMtMTgwOS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTg0OC0vKiBtdXN0IGJlIGNhbGxlZCB1bmRlciBsZ3ItXFx1MDAzZWxsY19jb25mX211dGV4IGxvY2sgKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MTg0OTp2b2lkIHNtY3JfbGlua19kb3duX2NvbmQoc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTE4NTAte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE4NTctLyogd2lsbCBnZXQgdGhlIGxnci1cXHUwMDNlbGxjX2NvbmZfbXV0ZXggbG9jayAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxODU4OnZvaWQgc21jcl9saW5rX2Rvd25fY29uZF9zY2hlZChzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcXG5uZXQvc21jL3NtY19jb3JlLmMtMTg1OS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTg2Ny1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTg2ODp2b2lkIHNtY3JfcG9ydF9lcnIoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2LCB1OCBpYnBvcnQpXFxubmV0L3NtYy9zbWNfY29yZS5jLTE4Njkte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE4ODgtXFxubmV0L3NtYy9zbWNfY29yZS5jOjE4ODk6c3RhdGljIHZvaWQgc21jX2xpbmtfZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQvc21jL3NtY19jb3JlLmMtMTg5MC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTkwNS1cXG5uZXQvc21jL3NtY19jb3JlLmM6MTkwNjpzdGF0aWMgaW50IHNtY192bGFuX2J5X3RjcHNrX3dhbGsoc3RydWN0IG5ldF9kZXZpY2UgKmxvd2VyX2RldixcXG5uZXQvc21jL3NtY19jb3JlLmMtMTkwNy1cXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRkZXZfbmVzdGVkX3ByaXYgKnByaXYpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMTkxOS0vKiBEZXRlcm1pbmUgdmxhbiBvZiBpbnRlcm5hbCBUQ1Agc29ja2V0LiAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoxOTIwOmludCBzbWNfdmxhbl9ieV90Y3BzayhzdHJ1Y3Qgc29ja2V0ICpjbGNzb2NrLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0xOTIxLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYz0xOTgyPXN0YXRpYyBib29sIHNtY2RfbGdyX21hdGNoKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTE5OTctLyogY3JlYXRlIGEgbmV3IFNNQyBjb25uZWN0aW9uIChhbmQgYSBuZXcgbGluayBncm91cCBpZiBuZWNlc3NhcnkpICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjE5OTg6aW50IHNtY19jb25uX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG5uZXQvc21jL3NtY19jb3JlLmMtMTk5OS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmM9MjEwND1zdGF0aWMgdTggc21jX2NvbXByZXNzX2J1ZnNpemUoaW50IHNpemUsIGJvb2wgaXNfc21jZCwgYm9vbCBpc19ybWIpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjEyNC0vKiBjb252ZXJ0IHRoZSBSTUIgc2l6ZSBmcm9tIGNvbXByZXNzZWQgbm90YXRpb24gaW50byBpbnRlZ2VyICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjIxMjU6aW50IHNtY191bmNvbXByZXNzX2J1ZnNpemUodTggY29tcHJlc3NlZClcXG5uZXQvc21jL3NtY19jb3JlLmMtMjEyNi17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmM9MjE1Nj1zdGF0aWMgaW5saW5lIGludCBzbWNfcm1iX3duZF91cGRhdGVfbGltaXQoaW50IHJtYmVfc2l6ZSlcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yMTYxLS8qIG1hcCBhbiBidWYgdG8gYSBsaW5rICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjIxNjI6c3RhdGljIGludCBzbWNyX2J1Zl9tYXBfbGluayhzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfZGVzYywgYm9vbCBpc19ybWIsXFxubmV0L3NtYy9zbWNfY29yZS5jLTIxNjMtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc21jX2xpbmsgKmxuaylcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yMjM4LSAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoyMjM5OmludCBzbWNyX2xpbmtfcmVnX2J1ZihzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKmJ1Zl9kZXNjKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yMjQwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yMjU2LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoyMjU3OnN0YXRpYyBpbnQgX3NtY3JfYnVmX21hcF9sZ3Ioc3RydWN0IHNtY19saW5rICpsbmssIHN0cnVjdCByd19zZW1hcGhvcmUgKmxvY2ssXFxubmV0L3NtYy9zbWNfY29yZS5jLTIyNTgtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpsc3QsIGJvb2wgaXNfcm1iKVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTIyNzYtLyogbWFwIGFsbCB1c2VkIGJ1ZmZlcnMgb2YgbGdyIGZvciBhIG5ldyBsaW5rICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjIyNzc6aW50IHNtY3JfYnVmX21hcF9sZ3Ioc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTIyNzgte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTIyOTctICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjIyOTg6aW50IHNtY3JfYnVmX3JlZ19sZ3Ioc3RydWN0IHNtY19saW5rICpsbmspXFxubmV0L3NtYy9zbWNfY29yZS5jLTIyOTkte1xcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jPTIzMzk9c3RhdGljIHN0cnVjdCBzbWNfYnVmX2Rlc2MgKnNtY3JfbmV3X2J1Zl9jcmVhdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjM4Ni0gKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MjM4NzpzdGF0aWMgaW50IHNtY3JfYnVmX21hcF91c2FibGVfbGlua3Moc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxubmV0L3NtYy9zbWNfY29yZS5jLTIzODgtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc21jX2J1Zl9kZXNjICpidWZfZGVzYywgYm9vbCBpc19ybWIpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmM9MjQxMj1zdGF0aWMgc3RydWN0IHNtY19idWZfZGVzYyAqc21jZF9uZXdfYnVmX2NyZWF0ZShzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxncixcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNDQ3LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoyNDQ4OnN0YXRpYyBpbnQgX19zbWNfYnVmX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgYm9vbCBpc19zbWNkLCBib29sIGlzX3JtYilcXG5uZXQvc21jL3NtY19jb3JlLmMtMjQ0OS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjUzOS1cXG5uZXQvc21jL3NtY19jb3JlLmM6MjU0MDp2b2lkIHNtY19zbmRidWZfc3luY19zZ19mb3JfZGV2aWNlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jb3JlLmMtMjU0MS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjU0OS1cXG5uZXQvc21jL3NtY19jb3JlLmM6MjU1MDp2b2lkIHNtY19ybWJfc3luY19zZ19mb3JfY3B1KHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubilcXG5uZXQvc21jL3NtY19jb3JlLmMtMjU1MS17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjU3MS0gKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MjU3MjppbnQgc21jX2J1Zl9jcmVhdGUoc3RydWN0IHNtY19zb2NrICpzbWMsIGJvb2wgaXNfc21jZClcXG5uZXQvc21jL3NtY19jb3JlLmMtMjU3My17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjU5OC1cXG5uZXQvc21jL3NtY19jb3JlLmM6MjU5OTppbnQgc21jZF9idWZfYXR0YWNoKHN0cnVjdCBzbWNfc29jayAqc21jKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNjAwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYz0yNjM0PXN0YXRpYyBpbmxpbmUgaW50IHNtY19ybWJfcmVzZXJ2ZV9ydG9rZW5faWR4KHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyKVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTI2NDQtXFxubmV0L3NtYy9zbWNfY29yZS5jOjI2NDU6c3RhdGljIGludCBzbWNfcnRva2VuX2ZpbmRfYnlfbGluayhzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgaW50IGxua19pZHgsXFxubmV0L3NtYy9zbWNfY29yZS5jLTI2NDYtXFx0XFx0XFx0XFx0ICAgdTMyIHJrZXkpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjY1OC0vKiBzZXQgcnRva2VuIGZvciBhIG5ldyBsaW5rIHRvIGFuIGV4aXN0aW5nIHJtYiAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoyNjU5OnZvaWQgc21jX3J0b2tlbl9zZXQoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGludCBsaW5rX2lkeCwgaW50IGxpbmtfaWR4X25ldyxcXG5uZXQvc21jL3NtY19jb3JlLmMtMjY2MC1cXHRcXHQgICAgX19iZTMyIG53X3JrZXlfa25vd24sIF9fYmU2NCBud192YWRkciwgX19iZTMyIG53X3JrZXkpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjY3MS0vKiBzZXQgcnRva2VuIGZvciBhIG5ldyBsaW5rIHdob3NlIGxpbmtfaWQgaXMgZ2l2ZW4gKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MjY3Mjp2b2lkIHNtY19ydG9rZW5fc2V0MihzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgaW50IHJ0b2tfaWR4LCBpbnQgbGlua19pZCxcXG5uZXQvc21jL3NtY19jb3JlLmMtMjY3My1cXHRcXHQgICAgIF9fYmU2NCBud192YWRkciwgX19iZTMyIG53X3JrZXkpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjY5Mi0vKiBhZGQgYSBuZXcgcnRva2VuIGZyb20gcGVlciAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoyNjkzOmludCBzbWNfcnRva2VuX2FkZChzdHJ1Y3Qgc21jX2xpbmsgKmxuaywgX19iZTY0IG53X3ZhZGRyLCBfX2JlMzIgbndfcmtleSlcXG5uZXQvc21jL3NtY19jb3JlLmMtMjY5NC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjcxNi0vKiBkZWxldGUgYW4gcnRva2VuIGZyb20gYWxsIGxpbmtzICovXFxubmV0L3NtYy9zbWNfY29yZS5jOjI3MTc6aW50IHNtY19ydG9rZW5fZGVsZXRlKHN0cnVjdCBzbWNfbGluayAqbG5rLCBfX2JlMzIgbndfcmtleSlcXG5uZXQvc21jL3NtY19jb3JlLmMtMjcxOC17XFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjczNy0vKiBzYXZlIHJrZXkgYW5kIGRtYV9hZGRyIHJlY2VpdmVkIGZyb20gcGVlciBkdXJpbmcgY2xjIGhhbmRzaGFrZSAqL1xcbm5ldC9zbWMvc21jX2NvcmUuYzoyNzM4OmludCBzbWNfcm1iX3J0b2tlbl9oYW5kbGluZyhzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4sXFxubmV0L3NtYy9zbWNfY29yZS5jLTI3MzktXFx0XFx0XFx0ICAgIHN0cnVjdCBzbWNfbGluayAqbG5rLFxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jLTI3NDgtXFxubmV0L3NtYy9zbWNfY29yZS5jOjI3NDk6c3RhdGljIHZvaWQgc21jX2NvcmVfZ29pbmdfYXdheSh2b2lkKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzUwLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzcwLS8qIENsZWFuIHVwIGFsbCBTTUMgbGluayBncm91cHMgKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6Mjc3MTpzdGF0aWMgdm9pZCBzbWNfbGdyc19zaHV0ZG93bih2b2lkKVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzcyLXtcXG4tLVxcbm5ldC9zbWMvc21jX2NvcmUuYy0yNzg0LVxcbm5ldC9zbWMvc21jX2NvcmUuYzoyNzg1OnN0YXRpYyBpbnQgc21jX2NvcmVfcmVib290X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcXG5uZXQvc21jL3NtY19jb3JlLmMtMjc4Ni1cXHRcXHRcXHRcXHQgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbi0tXFxubmV0L3NtYy9zbWNfY29yZS5jPTI3OTg9aW50IF9faW5pdCBzbWNfY29yZV9pbml0KHZvaWQpXFxuLS1cXG5uZXQvc21jL3NtY19jb3JlLmMtMjgwMy0vKiBDYWxsZWQgKGZyb20gc21jX2V4aXQpIHdoZW4gbW9kdWxlIGlzIHJlbW92ZWQgKi9cXG5uZXQvc21jL3NtY19jb3JlLmM6MjgwNDp2b2lkIHNtY19jb3JlX2V4aXQodm9pZClcXG5uZXQvc21jL3NtY19jb3JlLmMtMjgwNS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM5OjM0LjAzNDE5MDAzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NzA5OTc3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgU2VsZWN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB0YXJnZXRzIGZvciBmdXp6aW5nIHRoaXMgU01DIGNvZGUuIEkgc2VlIHRoYXQgYHNtY3JfbGlua19pbml0YCwgYHNtY19pYmRldl9pbml0X2JlZ2luYCwgYHNtY19pYmRldl9pbml0X2VuZGAsIGBzbWNfaWJkZXZfZ2V0YCwgYHNtY19pYmRldl9wdXRgLCBhbmQgYHNtY19pbml0X2luZm9fZnJlZWAgYXJlIGFsbCBub24tc3RhdGljLiBHb29kLCB0aGF0IGJyb2FkZW5zIHRoZSBzY29wZSBmb3IgcG90ZW50aWFsIGluc3RydW1lbnRhdGlvbi5cblxuSG93ZXZlciwgdGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hpY2ggb25lcyBhcmUgKmludGVyZXN0aW5nKiBmb3IgZnV6emluZy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBvbmVzIHRoYXQgcmVwcmVzZW50IGtleSBsb2dpYyBvciBhcmUgbGlrZWx5IHRvIGhhdmUgY29tcGxleCBzdGF0ZSB0cmFuc2l0aW9ucy4gSSdtIHRoaW5raW5nIGBzbWNfY29ubmVjdGAsIGBzbWNfbGlzdGVuYCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYW5kIGBzbWNyX2xpbmtfaW5pdGAgYXJlIHRoZSBwcmltZSBjYW5kaWRhdGVzLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZS4uLiBgc21jX2Nvbm5lY3RgIGFuZCBgc21jX2xpc3RlbmAgYXJlIHN0YW5kYXJkIHN5c2NhbGxzLCByaWdodD8gVGhleSdyZSBnb2luZyB0byBiZSBoZWF2aWx5IGV4ZXJjaXNlZCBwYXRocyBmb3IgYW55IHNvY2tldC1iYXNlZCBjb21tdW5pY2F0aW9uLiBJJ20gcHJvYmFibHkgZ29pbmcgdG8gZmluZCB0b25zIG9mIGV4aXN0aW5nIGZ1enppbmcgb24gdGhvc2UsIGFuZCB0aGUgU01DLXNwZWNpZmljIGxvZ2ljIGVtYmVkZGVkIHRoZXJlIG1pZ2h0IGJlIG1pbmltYWwuIEl0J3MgbGlrZWx5IHRoYXQgZm9jdXNpbmcgb24gYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYW5kIGBzbWNyX2xpbmtfaW5pdGAgd2lsbCBnaXZlIG1lIG1vcmUgXCJiYW5nIGZvciBteSBidWNrLlwiIFRoZXkgc2VlbSBtb3JlIFNNQy1zcGVjaWZpYyBhbmQgbGVzcyBsaWtlbHkgdG8gYmUgc2F0dXJhdGVkIHdpdGggc3RhbmRhcmQgc29ja2V0IGZ1enppbmcuXG5cbk5vdywgSSdtIGFsc28gc2VlaW5nIHRoYXQgYHNtY19wbmV0X2RldGVybWluZV9naWRgIGhhcyBiZWVuIG1vZGlmaWVkLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIHRoYXQncyBzdGF0aWMsIGJlY2F1c2UgSSBjb3VsZCd2ZSBtaXNzZWQgaXQgYXQgdGhlIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTUwOSwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOTo0MC41MDUxOTA2MzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzODUwMzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oaW50fHZvaWR8c3RhdGljIGludHxzdGF0aWMgdm9pZCkgW2EtekEtWjAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zbWMvc21jX3BuZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc21jL3NtY19wbmV0LmM9ODU9c3RhdGljIGJvb2wgc21jX3BuZXRfbWF0Y2godTggKnBuZXRpZDEsIHU4ICpwbmV0aWQyKVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTEwMC0gKi9cXG5uZXQvc21jL3NtY19wbmV0LmM6MTAxOnN0YXRpYyBpbnQgc21jX3BuZXRfcmVtb3ZlX2J5X3BuZXRpZChzdHJ1Y3QgbmV0ICpuZXQsIGNoYXIgKnBuZXRfbmFtZSlcXG5uZXQvc21jL3NtY19wbmV0LmMtMTAyLXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xODQtICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjE4NTpzdGF0aWMgaW50IHNtY19wbmV0X2FkZF9ieV9uZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xODYte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTIxNi0gKi9cXG5uZXQvc21jL3NtY19wbmV0LmM6MjE3OnN0YXRpYyBpbnQgc21jX3BuZXRfcmVtb3ZlX2J5X25kZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxubmV0L3NtYy9zbWNfcG5ldC5jLTIxOC17XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmM9MzI5PXN0YXRpYyBzdHJ1Y3Qgc21jZF9kZXYgKnNtY19wbmV0X2ZpbmRfc21jZChjaGFyICpzbWNkX25hbWUpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtMzQ3LVxcbm5ldC9zbWMvc21jX3BuZXQuYzozNDg6c3RhdGljIGludCBzbWNfcG5ldF9hZGRfZXRoKHN0cnVjdCBzbWNfcG5ldHRhYmxlICpwbmV0dGFibGUsIHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvc21jL3NtY19wbmV0LmMtMzQ5LVxcdFxcdFxcdCAgICBjaGFyICpldGhfbmFtZSwgY2hhciAqcG5ldF9uYW1lKVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTQxMC1cXG5uZXQvc21jL3NtY19wbmV0LmM6NDExOnN0YXRpYyBpbnQgc21jX3BuZXRfYWRkX2liKHN0cnVjdCBzbWNfcG5ldHRhYmxlICpwbmV0dGFibGUsIGNoYXIgKmliX25hbWUsXFxubmV0L3NtYy9zbWNfcG5ldC5jLTQxMi1cXHRcXHRcXHQgICB1OCBpYl9wb3J0LCBjaGFyICpwbmV0X25hbWUpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNDc2LSAqL1xcbm5ldC9zbWMvc21jX3BuZXQuYzo0Nzc6c3RhdGljIGludCBzbWNfcG5ldF9lbnRlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxubmV0L3NtYy9zbWNfcG5ldC5jLTQ3OC17XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNTMzLS8qIENvbnZlcnQgYW4gc21jX3BuZXRlbnRyeSB0byBhIG5ldGxpbmsgYXR0cmlidXRlIHNlcXVlbmNlICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjUzNDpzdGF0aWMgaW50IHNtY19wbmV0X3NldF9ubGEoc3RydWN0IHNrX2J1ZmYgKm1zZyxcXG5uZXQvc21jL3NtY19wbmV0LmMtNTM1LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX3BuZXRlbnRyeSAqcG5ldGVsZW0pXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNTU5LVxcbm5ldC9zbWMvc21jX3BuZXQuYzo1NjA6c3RhdGljIGludCBzbWNfcG5ldF9hZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvc21jL3NtY19wbmV0LmMtNTYxLXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy01NjYtXFxubmV0L3NtYy9zbWNfcG5ldC5jOjU2NzpzdGF0aWMgaW50IHNtY19wbmV0X2RlbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC9zbWMvc21jX3BuZXQuYy01Njgte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTU3Ni1cXG5uZXQvc21jL3NtY19wbmV0LmM6NTc3OnN0YXRpYyBpbnQgc21jX3BuZXRfZHVtcF9zdGFydChzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXFxubmV0L3NtYy9zbWNfcG5ldC5jLTU3OC17XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNTgyLVxcbm5ldC9zbWMvc21jX3BuZXQuYzo1ODM6c3RhdGljIGludCBzbWNfcG5ldF9kdW1waW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9zbWMvc21jX3BuZXQuYy01ODQtXFx0XFx0XFx0ICAgICB1MzIgcG9ydGlkLCB1MzIgc2VxLCB1MzIgZmxhZ3MsXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNjAwLVxcbm5ldC9zbWMvc21jX3BuZXQuYzo2MDE6c3RhdGljIGludCBfc21jX3BuZXRfZHVtcChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBwb3J0aWQsXFxubmV0L3NtYy9zbWNfcG5ldC5jLTYwMi1cXHRcXHRcXHQgIHUzMiBzZXEsIHU4ICpwbmV0aWQsIGludCBzdGFydF9pZHgpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNjMyLVxcbm5ldC9zbWMvc21jX3BuZXQuYzo2MzM6c3RhdGljIGludCBzbWNfcG5ldF9kdW1wKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG5uZXQvc21jL3NtY19wbmV0LmMtNjM0LXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy02NDUtLyogUmV0cmlldmUgb25lIFBORVRJRCBlbnRyeSAqL1xcbm5ldC9zbWMvc21jX3BuZXQuYzo2NDY6c3RhdGljIGludCBzbWNfcG5ldF9nZXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvc21jL3NtY19wbmV0LmMtNjQ3LXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy02NzMtICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjY3NDpzdGF0aWMgaW50IHNtY19wbmV0X2ZsdXNoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3NtYy9zbWNfcG5ldC5jLTY3NS17XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmM9NzI2PWJvb2wgc21jX3BuZXRfaXNfbmRldl9wbmV0aWQoc3RydWN0IG5ldCAqbmV0LCB1OCAqcG5ldGlkKVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTc0NC1cXG5uZXQvc21jL3NtY19wbmV0LmM6NzQ1OnN0YXRpYyBpbnQgc21jX3BuZXRfYWRkX3BuZXRpZChzdHJ1Y3QgbmV0ICpuZXQsIHU4ICpwbmV0aWQpXFxubmV0L3NtYy9zbWNfcG5ldC5jLTc0Ni17XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNzcwLVxcbm5ldC9zbWMvc21jX3BuZXQuYzo3NzE6c3RhdGljIHZvaWQgc21jX3BuZXRfcmVtb3ZlX3BuZXRpZChzdHJ1Y3QgbmV0ICpuZXQsIHU4ICpwbmV0aWQpXFxubmV0L3NtYy9zbWNfcG5ldC5jLTc3Mi17XFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtNzg4LVxcbm5ldC9zbWMvc21jX3BuZXQuYzo3ODk6c3RhdGljIHZvaWQgc21jX3BuZXRfYWRkX2Jhc2VfcG5ldGlkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvc21jL3NtY19wbmV0LmMtNzkwLVxcdFxcdFxcdFxcdCAgICAgdTggKm5kZXZfcG5ldGlkKVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTgwMy0vKiBjcmVhdGUgaW5pdGlhbCBsaXN0IG9mIG5ldGRldmljZSBwbmV0aWRzICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjgwNDpzdGF0aWMgdm9pZCBzbWNfcG5ldF9jcmVhdGVfcG5ldGlkc19saXN0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvc21jL3NtY19wbmV0LmMtODA1LXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy04MjUtLyogY2xlYW4gdXAgbGlzdCBvZiBuZXRkZXZpY2UgcG5ldGlkcyAqL1xcbm5ldC9zbWMvc21jX3BuZXQuYzo4MjY6c3RhdGljIHZvaWQgc21jX3BuZXRfZGVzdHJveV9wbmV0aWRzX2xpc3Qoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9zbWMvc21jX3BuZXQuYy04Mjcte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTgzOC1cXG5uZXQvc21jL3NtY19wbmV0LmM6ODM5OnN0YXRpYyBpbnQgc21jX3BuZXRfbmV0ZGV2X2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcXG5uZXQvc21jL3NtY19wbmV0LmMtODQwLVxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmM9ODcyPXN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgc21jX25ldGRldl9ub3RpZmllciA9IHtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy04NzYtLyogaW5pdCBuZXR3b3JrIG5hbWVzcGFjZSAqL1xcbm5ldC9zbWMvc21jX3BuZXQuYzo4Nzc6aW50IHNtY19wbmV0X25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvc21jL3NtY19wbmV0LmMtODc4LXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYz04OTM9aW50IF9faW5pdCBzbWNfcG5ldF9pbml0KHZvaWQpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtOTA3LS8qIGV4aXQgbmV0d29yayBuYW1lc3BhY2UgKi9cXG5uZXQvc21jL3NtY19wbmV0LmM6OTA4OnZvaWQgc21jX3BuZXRfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9zbWMvc21jX3BuZXQuYy05MDkte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTkxNC1cXG5uZXQvc21jL3NtY19wbmV0LmM6OTE1OnZvaWQgc21jX3BuZXRfZXhpdCh2b2lkKVxcbm5ldC9zbWMvc21jX3BuZXQuYy05MTYte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jPTk0Mz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKnBuZXRfZmluZF9iYXNlX25kZXYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtOTUwLVxcbm5ldC9zbWMvc21jX3BuZXQuYzo5NTE6c3RhdGljIGludCBzbWNfcG5ldF9maW5kX25kZXZfcG5ldGlkX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbm5ldC9zbWMvc21jX3BuZXQuYy05NTItXFx0XFx0XFx0XFx0XFx0ICAgICAgdTggKnBuZXRpZClcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy05NzYtXFxubmV0L3NtYy9zbWNfcG5ldC5jOjk3NzpzdGF0aWMgaW50IHNtY19wbmV0X2RldGVybWluZV9naWQoc3RydWN0IHNtY19pYl9kZXZpY2UgKmliZGV2LCBpbnQgaSxcXG5uZXQvc21jL3NtY19wbmV0LmMtOTc4LVxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDA1LS8qIGZpbmQgYSByb2NlIGRldmljZSBmb3IgdGhlIGdpdmVuIHBuZXRpZCAqL1xcbm5ldC9zbWMvc21jX3BuZXQuYzoxMDA2OnN0YXRpYyB2b2lkIF9zbWNfcG5ldF9maW5kX3JvY2VfYnlfcG5ldGlkKHU4ICpwbmV0X2lkLFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDA3LVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSxcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDM0LS8qIGZpbmQgYWx0ZXJuYXRlIHJvY2UgZGV2aWNlIHdpdGggc2FtZSBwbmV0X2lkLCB2bGFuX2lkIGFuZCBuZXQgbmFtZXNwYWNlICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjEwMzU6dm9pZCBzbWNfcG5ldF9maW5kX2FsdF9yb2NlKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDM2LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pLFxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTEwNDYtICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjEwNDc6c3RhdGljIHZvaWQgc21jX3BuZXRfZmluZF9yZG1hX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDQ4LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtMTA4NS0gKi9cXG5uZXQvc21jL3NtY19wbmV0LmM6MTA4NjpzdGF0aWMgdm9pZCBzbWNfcG5ldF9maW5kX3JvY2VfYnlfcG5ldGlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMDg3LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTExMDQtXFxubmV0L3NtYy9zbWNfcG5ldC5jOjExMDU6c3RhdGljIHZvaWQgc21jX3BuZXRfZmluZF9pc21fYnlfcG5ldGlkKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMTA2LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxuLS1cXG5uZXQvc21jL3NtY19wbmV0LmMtMTEzNC0gKi9cXG5uZXQvc21jL3NtY19wbmV0LmM6MTEzNTp2b2lkIHNtY19wbmV0X2ZpbmRfcm9jZV9yZXNvdXJjZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxubmV0L3NtYy9zbWNfcG5ldC5jLTExMzYte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTExNTEtXFxubmV0L3NtYy9zbWNfcG5ldC5jOjExNTI6dm9pZCBzbWNfcG5ldF9maW5kX2lzbV9yZXNvdXJjZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzbWNfaW5pdF9pbmZvICppbmkpXFxubmV0L3NtYy9zbWNfcG5ldC5jLTExNTMte1xcbi0tXFxubmV0L3NtYy9zbWNfcG5ldC5jLTExNzItICovXFxubmV0L3NtYy9zbWNfcG5ldC5jOjExNzM6aW50IHNtY19wbmV0aWRfYnlfdGFibGVfaWIoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2LCB1OCBpYl9wb3J0KVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMTc0LXtcXG4tLVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMjAxLSAqL1xcbm5ldC9zbWMvc21jX3BuZXQuYzoxMjAyOmludCBzbWNfcG5ldGlkX2J5X3RhYmxlX3NtY2Qoc3RydWN0IHNtY2RfZGV2ICpzbWNkZGV2KVxcbm5ldC9zbWMvc21jX3BuZXQuYy0xMjAzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzk6NDAuNTU5MDQ1ODgxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MDMxMzk1NTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmluaW5nIHRoZSBUYXJnZXQgTGlzdCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIG5hcnJvdyBkb3duIHRoZSBiZXN0IGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gYHNtY19wbmV0X2RldGVybWluZV9naWRgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgaXQncyBub3QgZGlyZWN0bHkgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgaXRzIGNvbXBpbGF0aW9uIHVuaXQg4oCTIHRoYXQncyBvZmYgdGhlIHRhYmxlLiBOb3csIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgb25lIGFyZSB0aGUgb25lcyBJJ20gaW50ZXJlc3RlZCBpbi5cblxuRmlyc3QgcGFzczogSSd2ZSBpZGVudGlmaWVkIGBzbWNyX2xpbmtfaW5pdGAsIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAsIGBzbWNfaWJkZXZfaW5pdF9lbmRgLCBgc21jX2liZGV2X2dldGAsIGBzbWNfaWJkZXZfcHV0YCwgYHNtY19pbml0X2luZm9fZnJlZWAsIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AsIGFuZCBgc21jX2xsY19zcnZfYWRkX2xpbmtgLiBJIG5lZWQgdG8gc29ydCB0aGVzZS5cblxuQXJlIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAgYW5kIGBzbWNfaWJkZXZfaW5pdF9lbmRgIGFjdHVhbGx5IGV4cG9ydGVkPyBBaCwgbm8sIHRoZXkncmUganVzdCBub24tc3RhdGljLCBzbyB0aGUgc2FtZSBzY29waW5nIHJ1bGVzIHN0aWxsIGFwcGx5LiBUaGF0IG1ha2VzIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AgYW5kIGBzbWNfbGxjX3Nydl9hZGRfbGlua2AgYXR0cmFjdGl2ZSBjYW5kaWRhdGVzIGJlY2F1c2UgdGhleSdyZSBsaWtlbHkgaW52b2x2ZWQgaW4gaGFuZGxpbmcgbmV0d29yayBjb21tdW5pY2F0aW9uLCB3aGljaCBpcyBhIGNvbW1vbiBmdXp6aW5nIHRhcmdldC4gYHNtY3JfbGlua19pbml0YCBhbHNvIHNlZW1zIHByb21pc2luZyBhcyBhIGNvcmUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGxvb2tzIGxpa2UgYSBjbGVhbnVwIGZ1bmN0aW9uLCBzbyBJJ2xsIGtlZXAgYW4gZXllIG9uIGl0LCBidXQgaXQgbWlnaHQgbm90IGJlIHRoZSAqYmVzdCogc3RhcnRpbmcgcG9pbnQuXG5cbkknbGwgY29uZmlybSB0aGUgcmVhY2hhYmlsaXR5IG9mIGBzbWNfbGxjX2NsaV9hZGRfbGlua2AuIEl0J3MgY2FsbGVkIGZyb20gYHNtY19sbGNfcHJvY2Vzc19jbGlfYWRkX2xpbmtgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgc21jX2xsY19ldmVudF9oYW5kbGVyYCwgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHNtY19sbGNfZXZlbnRfd29ya2AuIFRoYXQgY2hhaW4gdGVsbHMgbWUgdGhpcyBnZXRzIHRyaWdnZXJlZCBieSBpbmNvbWluZyBuZXR3b3JrIHRyYWZmaWMuIERlZmluaXRlbHkgcmVhY2hhYmxlLCBzbyBnb29kLlxuXG5MZXQncyBzdW1tYXJpemUgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBJIGFtIGNvbnNpZGVyaW5nIGZvciBmdXp6aW5nOiBgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgLCBgc21jcl9saW5rX2luaXRgLCBgc21jX2liZGV2X2luaXRfYmVnaW5gLCBhbmQgYHNtY19pYmRldl9pbml0X2VuZGAuXG5cbkhvbGQgb24uLi4gSSdtIGxvb2tpbmcgYXQgYHNtY19pYmRldl9pbml0X2JlZ2luYCBhbmQgYHNtY19pYmRldl9pbml0X2VuZGAuIFRoZXkncmUgc2ltcGxlIHdyYXBwZXJzIHdpdGggbXV0ZXggbG9ja3MgYW5kIGF0b21pYyBvcGVyYXRpb25zOlxuXG5gYGBjXG5pbnQgc21jX2liZGV2X2luaXRfYmVnaW4oc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxue1xuXHRpbnQgcmMgPSAwO1xuXG5cdG11dGV4X2xvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuXHRpZiAobGlzdF9lbXB0eShcdTAwMjZzbWNpYmRldi1cdTAwM2VsaXN0KSlcblx0XHRyYyA9IC1FTk9ERVY7XG5cdGVsc2Vcblx0XHRhdG9taWNfaW5jKFx1MDAyNnNtY2liZGV2LVx1MDAzZWluaXRfY250KTtcblx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNtY19pYl9kZXZpY2VzLm11dGV4KTtcblx0cmV0dXJuIHJjO1xufVxuXG52b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG57XG5cdG11dGV4X2xvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpXG5cdFx0d2FrZV91cChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X3dhaXQpO1xuXHRtdXRleF91bmxvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xufVxuYGBgXG5cblRoZXNlIGZ1bmN0aW9ucyBhcmUgbGlrZWx5IHRvbyBzaW1wbGUgdG8gb2ZmZXIgbWVhbmluZ2Z1bCBmdXp6aW5nIHRhcmdldHMuIFNvLCBJJ2xsIGRyb3AgdGhlc2UgZnJvbSB0aGUgcHJpbWFyeSBsaXN0LiBgc21jcl9saW5rX2luaXRgIGFwcGVhcnMgYmV0dGVyIGJlY2F1c2UgaXQgaXMgbW9yZSBjb21wbGV4IHRoYW4gdGhlIHByZXZpb3VzIHR3by4gYHNtY19sbGNfY2xpX2FkZF9saW5rYCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYCBhcmUgc3RpbGwgc29saWQgY2hvaWNlcy5cblxuTGV0J3MgbWFrZSBzdXJlIEkgZGlkbid0IG1pc3MgYW55IG90aGVyIGZ1bmN0aW9ucyBtb2RpZmllZCBpbiB0aGlzIGFyZWEuIE9oLCBgc21jX2liX25kZXZfY2hhbmdlYCBpcyBtb2RpZmllZC5cblxuYGBgY1xudm9pZCBzbWNfaWJfbmRldl9jaGFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpXG5gYGBcblxuTm8sIHdhaXQuIFRoYXQgbW9kaWZpY2F0aW9uIGxvb2tzIGxpa2UgY29udGV4dCwgbm90IGZ1bmN0aW9uYWxpdHkuIEFuZCB0aGUgZGlmZiBzaG93cyBhIHN0YXRpYyBgc21jX2liZGV2X3JlbGVhc2VgIGJlaW5nIGludHJvZHVjZWQuIFRoYXQncyBub3QgdGhlIHByaW1hcnkgZm9jdXMgaGVyZS5cblxuV2hhdCBhYm91dCB0aGUgbmV3IGZ1bmN0aW9ucywgYHNtY19pYmRldl9nZXRgIGFuZCBgc21jX2liZGV2X3B1dGA/XG5cbmBgYGNcbnZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG52b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KVxuYGBgXG5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM1NzMsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjM5OjU0LjU5MDQ0NDg2NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2NDg2MjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvS2NvbmZpZz0yPWNvbmZpZyBTTUNcXG5uZXQvc21jL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxubmV0L3NtYy9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElORklOSUJBTkQgXFx1MDAyNlxcdTAwMjYgRElCU1xcbm5ldC9zbWMvS2NvbmZpZy01LVxcdGhlbHBcXG4tLVxcbm5ldC9zbWMvS2NvbmZpZz0xND1jb25maWcgU01DX0RJQUdcXG5uZXQvc21jL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbm5ldC9zbWMvS2NvbmZpZzoxNjpcXHRkZXBlbmRzIG9uIFNNQ1xcbm5ldC9zbWMvS2NvbmZpZy0xNy1cXHRoZWxwXFxuLS1cXG5uZXQvc21jL0tjb25maWc9MjM9Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbm5ldC9zbWMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJHZW5lcmljIGVCUEYgaG9vayBmb3IgU01DIGhhbmRzaGFrZSBmbG93XFxcIlxcbm5ldC9zbWMvS2NvbmZpZzoyNTpcXHRkZXBlbmRzIG9uIFNNQyBcXHUwMDI2XFx1MDAyNiBCUEZfSklUIFxcdTAwMjZcXHUwMDI2IEJQRl9TWVNDQUxMXFxubmV0L3NtYy9LY29uZmlnLTI2LVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzozOTo1NC44NjY5MzYyNTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI5NTM1MzY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBJJ3ZlIGdvdCBgRElCU2AgcGVnZ2VkIGFzIGEgZGVwZW5kZW5jeSwgbm8gc3VycHJpc2VzIHRoZXJlLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0IG90aGVyIHBhY2thZ2VzIG9yIGxpYnJhcmllcyBhcmUgcmVseWluZyBvbiB0aGF0LCBlc3BlY2lhbGx5IGFzIGl0IHJlbGF0ZXMgdG8gbXkgYElORklOSUJBTkRgIGltcGxlbWVudGF0aW9uPyBUaW1lIHRvIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jeSB0cmVlIGFuZCBtYXAgb3V0IHdoYXQgSSdtIGRlYWxpbmcgd2l0aC4gTGV0J3Mgc2VlIGlmIHRoaXMgY3JlYXRlcyBhIHRhbmdsZSBvciBpZiBpdCdzIGZhaXJseSBzdHJhaWdodGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1OTk3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzk6NTguMTYyMjkyNjA0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU1MjQ2MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElORklOSUJBTkRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoyOm1lbnVjb25maWcgSU5GSU5JQkFORFxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTE2PWlmIElORklOSUJBTkRcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzoxODpjb25maWcgSU5GSU5JQkFORF9VU0VSX01BRFxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJJbmZpbmlCYW5kIHVzZXJzcGFjZSBNQUQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTI3LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjI4OmNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMjktXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgdXNlcnNwYWNlIGFjY2VzcyAodmVyYnMgYW5kIENNKVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTM5LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjQwOmNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTX0NPUkVcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00MS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00My1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0NDpjb25maWcgSU5GSU5JQkFORF9VU0VSX01FTVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQ1LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTUwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjUxOmNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01Mi1cXHRib29sIFxcXCJJbmZpbmlCYW5kIG9uLWRlbWFuZCBwYWdpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTYzLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjY0OmNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02NS1cXHRib29sIFxcXCJSRE1BL0NNXFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNzEtXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NzI6Y29uZmlnIElORklOSUJBTkRfQUREUl9UUkFOU19DT05GSUdGU1xcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTczLVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTgwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjgxOmNvbmZpZyBJTkZJTklCQU5EX1ZJUlRfRE1BXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctODItXFx0ZGVmX2Jvb2wgIUhJR0hNRU1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6Mzk6NTguMjg3ODIzODcxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NzA2MjAyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ2hlY2tpbmcgSW5maW5pYmFuZCBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBtZXRpY3Vsb3VzbHkgdmVyaWZ5IHRoZSBgSU5GSU5JQkFORGAgZGVwZW5kZW5jaWVzLiBUaGlzIGlzbid0IGp1c3QgYSBzdXJmYWNlLWxldmVsIHNjYW47IEkgbmVlZCB0byBlbnN1cmUgYSBob2xpc3RpYyB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBjb21wb25lbnRzIGFyZSBpbnRlcmNvbm5lY3RlZC4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBoYXJkd2FyZSwgZmlybXdhcmUgdmVyc2lvbnMsIGRyaXZlciBjb21wYXRpYmlsaXR5IGFjcm9zcyB0aGUgc3RhY2ssIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgaW5zdGFsbGVkIHNvZnR3YXJlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgY29ycmVjdCBmYWJyaWMgY29uZmlndXJhdGlvbiwgZm9jdXNpbmcgb24gbGluayBzcGVlZHMsIHJvdXRpbmcgdGFibGVzLCBhbmQgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcy4gRnVydGhlciwgSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIHNvZnR3YXJlIGxheWVyOiBhcmUgdGhlIG5lY2Vzc2FyeSBsaWJyYXJpZXMgaW5zdGFsbGVkPyBBcmUgdGhleSB0aGUgY29ycmVjdCB2ZXJzaW9ucz8gRG9lcyB0aGUgYXBwbGljYXRpb24gZW52aXJvbm1lbnQgY29ycmVjdGx5IGFjY291bnQgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgSW5maW5pQmFuZCBmYWJyaWM/IEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgdGhlIE9TIG1vZHVsZXMsIHRoZSBNUEkgaW1wbGVtZW50YXRpb24gKGlmIGFwcGxpY2FibGUpLCBhbmQgYW55IGN1c3RvbSBkcml2ZXJzIGludm9sdmVkLiBJIGFsc28gbmVlZCB0byBjb25zaWRlciB0aGUgaW1wYWN0IG9mIGFueSByZWNlbnQgY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgdGhhdCBtYXkgYWZmZWN0IHRoZSBJbmZpbmlCYW5kIHNldHVwLiBBbnkga2VybmVsIHVwZ3JhZGVzIG9yIGRyaXZlciB1cGRhdGVzIHdvdWxkIG5lZWQgc3BlY2lhbCBhdHRlbnRpb24uIFVsdGltYXRlbHksIGEgc21vb3RoIGFuZCByZWxpYWJsZSBJbmZpbmlCYW5kIGNvbmZpZ3VyYXRpb24gaXMgcGFyYW1vdW50IGZvciBwZWFrIHN5c3RlbSBwZXJmb3JtYW5jZSwgc28gYSByaWdvcm91cyBhbmQgd2VsbC1jb25zaWRlcmVkIGludmVzdGlnYXRpb24gaXMgZXNzZW50aWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjczOSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjQwOjAzLjE1ODQ0NjkzNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3NjU5NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0yPW1lbnVjb25maWcgSU5GSU5JQkFORFxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1OlxcdGRlcGVuZHMgb24gTkVUXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NjpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo3OlxcdGRlcGVuZHMgb24gIUFMUEhBXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctOC1cXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTE4PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUFEXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMTktXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgdXNlcnNwYWNlIE1BRCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjIwOlxcdGRlcGVuZHMgb24gSU5GSU5JQkFORFxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTIxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTI4PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfQUNDRVNTXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctMjktXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgdXNlcnNwYWNlIGFjY2VzcyAodmVyYnMgYW5kIENNKVxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzozMDpcXHRkZXBlbmRzIG9uIE1NVVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTMxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTQ0PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUVNXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDUtXFx0Ym9vbFxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjQ2OlxcdGRlcGVuZHMgb24gSU5GSU5JQkFORF9VU0VSX0FDQ0VTUyAhPSBuXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NDc6XFx0ZGVwZW5kcyBvbiBNTVVcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00OC1cXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTUxPWNvbmZpZyBJTkZJTklCQU5EX09OX0RFTUFORF9QQUdJTkdcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01Mi1cXHRib29sIFxcXCJJbmZpbmlCYW5kIG9uLWRlbWFuZCBwYWdpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo1MzpcXHRkZXBlbmRzIG9uIElORklOSUJBTkRfVVNFUl9NRU1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy01NC1cXHRzZWxlY3QgTU1VX05PVElGSUVSXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz02ND1jb25maWcgSU5GSU5JQkFORF9BRERSX1RSQU5TXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiUkRNQS9DTVxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo2NjpcXHRkZXBlbmRzIG9uIElORklOSUJBTkRcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy02Ny1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTcyPWNvbmZpZyBJTkZJTklCQU5EX0FERFJfVFJBTlNfQ09ORklHRlNcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03My1cXHRib29sXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc6NzQ6XFx0ZGVwZW5kcyBvbiBJTkZJTklCQU5EX0FERFJfVFJBTlMgXFx1MDAyNlxcdTAwMjYgQ09ORklHRlNfRlMgXFx1MDAyNlxcdTAwMjYgIShJTkZJTklCQU5EPXkgXFx1MDAyNlxcdTAwMjYgQ09ORklHRlNfRlM9bSlcXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy03NS1cXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6MDMuMjAyMjE5MDExWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMTE1NTA5NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBRdWFuZGFyeSoqXG5cbkFscmlnaHQsIGxldCBtZSBtYXAgdGhpcyBvdXQuIFRvIGdldCBgSU5GSU5JQkFORGAgd29ya2luZywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgTkVUYCwgYW5kIGBJTkVUYCBlbmFibGVkLCBhbmQsIGltcG9ydGFudGx5LCB0aGF0IEkgKmRvbid0KiBoYXZlIGFuIGBBTFBIQWAgYXJjaGl0ZWN0dXJlLiBTbywgYmFzZWQgb24gdGhvc2UgZGVwZW5kZW5jaWVzLCBteSBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGFic29sdXRlbHkgaW5jbHVkZSBgU01DYCwgYElORklOSUJBTkRgLCBhbmQgYERJQlNgLlxuXG5IYW5nIG9uIGEgc2Vjb25k4oCmIERvZXMgYFNNQ2AgcmVxdWlyZSBgU01DX0RJQUdgPyBOb3BlLCBzY3JhdGNoIHRoYXQuIEl0IGRvZXNuJ3QuIEFuZCBJIHJlY2FsbCB0aGF0IGBTTUNgIHdvcmtzIHdpdGgga2VybmVsLXNwYWNlIFJETUEsIHNvIGl0IGRvZXNuJ3QgbmVlZCBgSU5GSU5JQkFORF9VU0VSX0FDQ0VTU2AuIFJpZ2h0LiBcblxuTm93LCBpZiBJJ20gdHJ5aW5nIHRvIHRlc3QgYFNNQ2Agb3ZlciBSRE1BIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dCwgSSdtIGdvaW5nIHRvIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRvIHNpbXVsYXRlIGFuIFJETUEgZW52aXJvbm1lbnQuIFRoYXQgbWVhbnMgY29uc2lkZXJpbmcgd2hldGhlciBgUkRNQV9SWEVgIChTb2Z0IFJvQ0UpLCBgU01DX0xPYCAobG9vcGJhY2spLCBvciBgSVNNYCAoZHVtbXkgSVNNKSBhcmUgcmVsZXZhbnQuIEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJ3MgYSBkdW1teSBJU00gb3IgbG9vcGJhY2sgYXZhaWxhYmxlLCBiZWNhdXNlIHRoYXQgd2lsbCBhbGxvdyBmb3IgYSBmdWxseSBjb250YWluZWQsIHNpbXVsYXRlZCBlbnZpcm9ubWVudC4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggYXBwcm9hY2ggaXMgYmVzdCBzdWl0ZWQgdG8gbXkgdGVzdCBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzc0OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDowOS4yMTM3NzI2NzdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODA0NTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zbWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9zbWMvS2NvbmZpZzoyOmNvbmZpZyBTTUNcXG5uZXQvc21jL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU01DIHNvY2tldCBwcm90b2NvbCBmYW1pbHlcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMTMtXFxubmV0L3NtYy9LY29uZmlnOjE0OmNvbmZpZyBTTUNfRElBR1xcbm5ldC9zbWMvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiU01DOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvc21jL0tjb25maWctMjItXFxubmV0L3NtYy9LY29uZmlnOjIzOmNvbmZpZyBTTUNfSFNfQ1RSTF9CUEZcXG5uZXQvc21jL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6MDkuMjYzNTgyMTYxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3NjE3MjA0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqUmV2aXNpdGluZyB0aGUgU01DIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGNpcmNsZSBiYWNrIGFuZCBnaXZlIGBuZXQvc21jL0tjb25maWdgIGFub3RoZXIgbG9vay4gSSd2ZSBiZWVuIGZvY3VzaW5nIG9uIFttZW50aW9uIHRoZSByZWxldmFudCBhcmVhIG9yIHRhc2ssIGUuZy4sIHRoZSByZWNlbnQgUkRNQSBpbXByb3ZlbWVudHMsIGEgc3BlY2lmaWMgYnVnLCBhIHBlcmZvcm1hbmNlIGlzc3VlLCBvciBhIG5ldyBmZWF0dXJlXS4gR2l2ZW4gdGhlIGNvbXBsZXhpdGllcyBvZiBTTUMgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmtpbmcgc3RhY2ssIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsIGluIHRoYXQgY29uZmlndXJhdGlvbiBmaWxlLiBUaGVyZSBjb3VsZCBiZSBzdWJ0bGUgZGVwZW5kZW5jaWVzLCBvcHRpb25zIEkgb3Zlcmxvb2tlZCwgb3IgaW1wbGljYXRpb25zIHJlbGF0ZWQgdG8gW21lbnRpb24gYSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24gb3Igc3Vic3lzdGVtXS4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBLY29uZmlnIGlzIGNvcnJlY3RseSByZWZsZWN0aW5nIGFueSBjaGFuZ2VzIEkndmUgbWFkZSwgYW5kIGhhc24ndCBpbnRyb2R1Y2VkIGFueSByZWdyZXNzaW9ucyBvciBjb25mbGljdHMuIExldCdzIHNlZSBpZiB0aGVyZSdzIGFueXRoaW5nIEkgbmVlZCB0byBleHBsaWNpdGx5IGVuYWJsZSwgZGlzYWJsZSwgb3IgYWRqdXN0LCBvciBpZiBhbnkgbmV3IG9wdGlvbnMgaGF2ZSBiZWVuIGFkZGVkLiBUaW1lIHRvIGRpdmUgYmFjayBpbiBhbmQgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODQxMywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjQwOjE2LjAyNTMwNTQxN1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc21jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTTUNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTTUMgc29ja2V0IHByb3RvY29sIGZhbWlseVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EIFxcdTAwMjZcXHUwMDI2IERJQlNcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgU01DLVIgcHJvdmlkZXMgYSBcXFwic29ja2V0cyBvdmVyIFJETUFcXFwiIHNvbHV0aW9uIG1ha2luZyB1c2Ugb2ZcXG4gICA3OlxcdFxcdCAgUkRNQSBvdmVyIENvbnZlcmdlZCBFdGhlcm5ldCAoUm9DRSkgdGVjaG5vbG9neSB0byB1cGdyYWRlXFxuICAgODpcXHRcXHQgIEFGX0lORVQgVENQIGNvbm5lY3Rpb25zIHRyYW5zcGFyZW50bHkuXFxuICAgOTpcXHRcXHQgIFRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU01DLVIgc29sdXRpb24gaXMgZGVzaWduZWQgYXNcXG4gIDEwOlxcdFxcdCAgYSBzZXBhcmF0ZSBzb2NrZXQgZmFtaWx5IFNNQy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIFNNQyBzb2NrZXQgYXBwbGljYXRpb25zXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBTTUNfRElBR1xcbiAgMTU6XFx0XFx0dHJpc3RhdGUgXFxcIlNNQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBTTUNcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgU3VwcG9ydCBmb3IgU01DIHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRvb2xzIHN1Y2ggYXNcXG4gIDE5OlxcdFxcdCAgc21jc3MuXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdCAgaWYgdW5zdXJlLCBzYXkgWS5cXG4gIDIyOlxcdFxcbiAgMjM6XFx0Y29uZmlnIFNNQ19IU19DVFJMX0JQRlxcbiAgMjQ6XFx0XFx0Ym9vbCBcXFwiR2VuZXJpYyBlQlBGIGhvb2sgZm9yIFNNQyBoYW5kc2hha2UgZmxvd1xcXCJcXG4gIDI1OlxcdFxcdGRlcGVuZHMgb24gU01DIFxcdTAwMjZcXHUwMDI2IEJQRl9KSVQgXFx1MDAyNlxcdTAwMjYgQlBGX1NZU0NBTExcXG4gIDI2OlxcdFxcdGRlZmF1bHQgeVxcbiAgMjc6XFx0XFx0aGVscFxcbiAgMjg6XFx0XFx0ICBTTUNfSFNfQ1RSTF9CUEYgZW5hYmxlcyBzdXBwb3J0IHRvIHJlZ2lzdGVyIGdlbmVyaWMgZUJQRiBob29rIGZvciBTTUNcXG4gIDI5OlxcdFxcdCAgaGFuZHNoYWtlIGZsb3csIHdoaWNoIG9mZmVyIG11Y2ggZ3JlYXRlciBmbGV4aWJpbGl0eSBpbiBtb2RpZnlpbmcgdGhlIGJlaGF2aW9yXFxuICAzMDpcXHRcXHQgIG9mIHRoZSBTTUMgcHJvdG9jb2wgc3RhY2sgY29tcGFyZWQgdG8gYSBjb21wbGV0ZSBrZXJuZWwtYmFzZWQgYXBwcm9hY2guIFNlbGVjdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDoxNi4wMjUzNjY1NjdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzNjM4OTEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU01DL0RJQlMgRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIHNvIGBTTUNgJ3MgZnVuY3Rpb25hbGl0eSBoaW5nZXMgb24gYERJQlNgLiBUaW1lIHRvIGRpdmUgZGVlcGVyIGFuZCBzZWUgZXhhY3RseSBob3cgdGhhdCByZWxhdGlvbnNoaXAgaXMgZGVmaW5lZC4gTXkgaW1tZWRpYXRlIGNvdXJzZSBvZiBhY3Rpb24/IExldCdzIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2Ug4oCTIEknbGwgbmVlZCB0byBleGFtaW5lIGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AgdG8gc2VlIHdoYXQgdGhlIGRlcGVuZGVuY3kgaXMuIFRoYXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBnaXZlbiBteSBleHBlcmllbmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGVpciBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MDk3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDoxOS45NjE3NTc2OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2RpYnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdGNvbmZpZyBESUJTXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IG5cXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgRGlyZWN0IEludGVybmFsIEJ1ZmZlciBTaGFyaW5nIChESUJTKSBpcyBhIGNvbW11bmljYXRpb24gbWV0aG9kIHRoYXRcXG4gICA3OlxcdFxcdCAgdXNlcyBjb21tb24gcGh5c2ljYWwgKGludGVybmFsKSBtZW1vcnkgZm9yIHN5bmNocm9ub3VzIGRpcmVjdCBhY2Nlc3NcXG4gICA4OlxcdFxcdCAgaW50byBhIHJlbW90ZSBidWZmZXIuXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHByb3ZpZGUgdGhlIGFic3RyYWN0aW9uIGxheWVyIGJldHdlZW5cXG4gIDExOlxcdFxcdCAgZGlicyBkZXZpY2VzIGFuZCBkaWJzIGNsaWVudHMgbGlrZSB0aGUgU01DIHByb3RvY29sLlxcbiAgMTI6XFx0XFx0ICBUaGUgbW9kdWxlIG5hbWUgaXMgZGlicy5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIERJQlNfTE9cXG4gIDE1OlxcdFxcdGJvb2wgXFxcIkludHJhLU9TIHNob3J0Y3V0IHdpdGggZGlicyBsb29wYmFja1xcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gRElCU1xcbiAgMTc6XFx0XFx0ZGVmYXVsdCBuXFxuICAxODpcXHRcXHRoZWxwXFxuICAxOTpcXHRcXHQgIERJQlNfTE8gZW5hYmxlcyB0aGUgY3JlYXRpb24gb2YgYW4gc29mdHdhcmUtZW11bGF0ZWQgZGlicyBkZXZpY2VcXG4gIDIwOlxcdFxcdCAgbmFtZWQgbG8gd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHRyYW5zZmVycmluZyBkYXRhIHdoZW4gY29tbXVuaWNhdGlvblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDoxOS45NjE4MTgwNloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzc4NTI4NTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gRGV2aWNlIEVtdWxhdGlvbiBhbmQgTmV0d29yayBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBzeXN0ZW0gc2V0dXAsIGFuZCB0aGUgcG90ZW50aWFsIGZvciBzb21lIHNlcmlvdXMgdGVzdGluZyBwb3BzIHJpZ2h0IGludG8gbXkgaGVhZC4gVGhlIGZhY3QgdGhhdCB3ZSBoYXZlIGBESUJTX0xPYCBhdmFpbGFibGUgaGVyZSwgYW5kIHRoYXQgaXQncyBhICpzb2Z0d2FyZS1lbXVsYXRlZCogZGlicyBkZXZpY2UsIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEga2V5IHN0cmF0ZWd5OiBlbmFibGUgdGhhdCB0aGluZyEgV2h5PyBCZWNhdXNlIGdldHRpbmcgU01DIGZ1enplZCBvdmVyIGxvb3BiYWNrIGlzIGp1c3QgZ29vZCBwcmFjdGljZSwgYW5kIHRoaXMgc2VlbXMgbGlrZSB0aGUgcGVyZmVjdCwgbG93LWhhbmdpbmcgZnJ1aXQgb3Bwb3J0dW5pdHkuIFdlIGNhbiBnYWluIHZhbHVhYmxlIGluc2lnaHRzIGludG8gdGhlIGhhbmRsaW5nIG9mIFNNQyB0cmFmZmljIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudC5cblxuVGhlbiwgbW92aW5nIG9uIHRvIHRoZSBSb0NFIHNpZGUgb2YgdGhpbmdzLCBgUkRNQV9SWEVgLCBTb2Z0IFJvQ0UsIG5hdHVyYWxseSBjYXRjaGVzIG15IGV5ZS4gSXQncyB0aGUgc2FtZSBwcmluY2lwbGUgYXMgdGhlIGBESUJTX0xPYCDigJMgYSBzb2Z0d2FyZS1iYXNlZCBpbXBsZW1lbnRhdGlvbi4gRW5hYmxpbmcgdGhhdCBpcyBhIG11c3QuIFRoaXMgYWxsb3dzIHVzIHRvIGFzc2VzcyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHN5c3RlbS4gSSdtIGFscmVhZHkgZW52aXNpb25pbmcgdGhlIHRlc3QgY2FzZXMgd2UgY2FuIGJ1aWxkIGFyb3VuZCB0aGlzIHNldHVwIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTU0MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6MjQuMzQwMzQ5ODE1WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzYwMjA4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUkRNQV9SWEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZzoyOmNvbmZpZyBSRE1BX1JYRVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTb2Z0d2FyZSBSRE1BIG92ZXIgRXRoZXJuZXQgKFJvQ0UpIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6MjQuMzg3OTU4NDFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU5MzE0MjUzMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFNNQyBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBhcmVhcyB0aGlzIHBhdGNoIG1vZGlmaWVzIHdpdGhpbiB0aGUgU01DIHN1YnN5c3RlbS4gSSBzdGFydGVkIGJ5IGxvb2tpbmcgYXQgdGhlIGBFbmFibGVDb25maWdzYCBhbmQgdGhlbiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zLlxuXG5UaGUgYEVuYWJsZUNvbmZpZ3NgIGFyZTogYFNNQ2AsIGBJTkZJTklCQU5EYCwgYERJQlNgLCBgRElCU19MT2AsIGFuZCBgUkRNQV9SWEVgLiBUaGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zLCBJIHJlYWxpemUgYERJQlNfTE9gIGlzIGEgYm9vbGVhbiwgd2hpbGUgYERJQlNgLCBgUkRNQV9SWEVgLCBgU01DYCwgYW5kIGBJTkZJTklCQU5EYCBhcmUgdHJpc3RhdGVzLiBHb29kIHRvIGtlZXAgaW4gbWluZCBmb3IgdGVzdGluZyBsYXRlci5cblxuTm93LCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucy4gSW5pdGlhbGx5LCBJIGNvbnNpZGVyZWQgc2V2ZXJhbDogYHNtY3JfbGlua19pbml0YCwgYHNtY19sbGNfY2xpX2FkZF9saW5rYCwgYHNtY19sbGNfc3J2X2FkZF9saW5rYCwgYHNtY19pbml0X2luZm9fZnJlZWAsIGBzbWNfaWJkZXZfaW5pdF9iZWdpbmAsIGFuZCBgc21jX2liZGV2X2luaXRfZW5kYC4gSSBxdWlja2x5IGRpc2NvdW50ZWQgYHNtY19pbml0X2luZm9fZnJlZWAgYW5kIHRoZSBgaWJkZXZgIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBhcyB0aGVzZSBhcmUgb25seSBjbGVhbnVwIGFuZCB2ZXJ5IHNpbXBsZSBpbml0aWFsaXphdGlvbnMsIHJlc3BlY3RpdmVseSwgbm90IGNvbXBsZXggbG9naWMgcGF0aHMuIEkgYWxzbyBjaGVja2VkIGBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkYCwgYHNtY19saXN0ZW5fd29ya2AsIGBfX3NtY19jb25uZWN0YCwgYW5kIGBzbWNfZmluZF9yZG1hX3YyX2RldmljZV9zZXJ2YCwgd2hpY2ggYXJlIGFsbCBzdGF0aWMuIFdoaWxlIHRoZXNlIGFyZSByZWxldmFudCwgYF9fc21jX2Nvbm5lY3RgIGlzIGNhbGxlZCBieSBgc21jX2Nvbm5lY3Rfd29ya2AgYW5kIGBzbWNfY29ubmVjdGAgKHN5c2NhbGwgaGFuZGxlcikgYW5kIGBzbWNfbGlzdGVuX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGhhbmRsZXIuIFRoZSBzeXNjYWxscyBhcmUgbGlrZWx5IHRvIGJlIGZ1enplZCBieSBkZWZhdWx0IGFuZCB0aGUgTExDIGZ1bmN0aW9ucyBsb29rIGxpa2UgdGhleSB3aWxsIGJlIGhhbmRsaW5nIGluY29taW5nIHBhY2tldHMsIHNvIHRoZXNlIGFyZSBhbGwgZ29vZCB0byB0ZXN0LlxuXG5JIGFsc28gY2hlY2tlZCBgc21jX2liZGV2X2dldGAgYW5kIGBzbWNfaWJkZXZfcHV0YCwgYnV0IHRoZXNlIGFyZSBqdXN0IHJlZmNvdW50IHdyYXBwZXJzIHNvIG5vdCB0aGUgZm9jdXMuXG5cblNvLCBJJ20gZ29pbmcgdG8gZm9jdXMgb246XG4qICAgYHNtY3JfbGlua19pbml0YFxuKiAgIGBzbWNfbGxjX2NsaV9hZGRfbGlua2BcbiogICBgc21jX2xsY19zcnZfYWRkX2xpbmtgXG5cblRoZXNlIGFyZSBub24tc3RhdGljIGFuZCBoYW5kbGUgbGluayBpbml0aWFsaXphdGlvbiBhbmQgbWFuYWdlbWVudCwgY3J1Y2lhbCBmb3IgdGVzdGluZyB0aGUgY29ubmVjdGlvbiBwYXRocy5cblxuRmluYWxseSwgYSBxdWljayByZXZpZXcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSSBjb25maXJtZWQgdGhhdCBib3RoIGBESUJTYCBhbmQgYERJQlNfTE9gIGFyZSBwcmVzZW50IGluIHRoZSB0cmVlIHVuZGVyIGBkcml2ZXJzL2RpYnMvS2NvbmZpZ2AuXG5cbk5vdywgSSBjYW4gY2xlYXJseSBhcnRpY3VsYXRlIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgcGF0Y2guIFRoZSBtYWluIGlzc3VlIGlzIGEgcmVmZXJlbmNlIGxlYWsgb2YgdGhlIGBzbWNfaWJfZGV2aWNlYC4gVGhpcyBwYXRjaCBmaXhlcyB0aGF0IHdpdGggYSBuZXcgYHNtY19pbml0X2luZm9fZnJlZWAgZnVuY3Rpb24gYW5kIGNhcmVmdWwgcmVmY291bnRpbmcgd2l0aCBgc21jX2liZGV2X2dldGAvYHB1dGAsIGFsb25nIHdpdGggYW4gYGluaXRfY250YCB0byBtb25pdG9yIHVucHVibGlzaGVkIGluaXRpYWxpemF0aW9ucy4gVGhlIGNoYW5nZXMgY292ZXIgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChsaW5rZWQgdG8gYF9fc21jX2Nvbm5lY3RgIGFuZCBgc21jX2xpc3Rlbl93b3JrYCwgd2hpY2ggaW4gdHVybiBjYWxsIHRoZSBmdW5jdGlvbnMgSSd2ZSBpZGVudGlmaWVkKSBhbmQgTExDIGxpbmsgbWFuYWdlbWVudCAoYHNtY19sbGNfY2xpX2FkZF9saW5rYCBhbmQgYHNtY19sbGNfc3J2X2FkZF9saW5rYCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNvY2tldCBvcGVyYXRpb25zIGFuZCBuZXR3b3JrIHBhY2tldHMsIHdoaWNoIGlzIGlkZWFsIGZvciB0ZXN0aW5nLiBUbyB0ZXN0IGNvbXByZWhlbnNpdmVseSwgSSdsbCBuZWVkIHRvIGVuYWJsZSB0aGUgU01DLCBJbmZpbmlCYW5kLCBhbmQgdGhlIHNvZnR3YXJlLWVtdWxhdGVkIFJETUEvRElCUyBkZXZpY2VzIChgUkRNQV9SWEVgIGFuZCBgRElCU19MT2ApLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTk1NCwiT3V0cHV0VG9rZW5zIjoyNzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjQwOjQwLjMxOTM4NjgxNFoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNzk0MzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIixcbiAgICBcIlJETUFfUlhFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jcl9saW5rX2luaXRcIixcbiAgICBcInNtY19sbGNfY2xpX2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGxlYWsgb2YgYHNtY19pYl9kZXZpY2VgIGluIHRoZSBTTUMgc3Vic3lzdGVtIGJ5IGludHJvZHVjaW5nIGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGFuZCBwcm9wZXJseSBtYW5hZ2luZyB0aGUgb2JqZWN0IGxpZmV0aW1lIHdpdGggcmVmZXJlbmNlIGNvdW50aW5nIChgc21jX2liZGV2X2dldGAvYHB1dGApLiBJdCBhbHNvIGFkZHMgYW4gaW5pdGlhbGl6YXRpb24gY291bnRlciAoYGluaXRfY250YCkgdG8gdHJhY2sgdW5wdWJsaXNoZWQgbGluayBpbml0aWFsaXphdGlvbnMuIFRoZSBjaGFuZ2VzIGFmZmVjdCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgKGBfX3NtY19jb25uZWN0YCwgYHNtY19saXN0ZW5fd29ya2ApIGFuZCBMTEMgbGluayBtYW5hZ2VtZW50IChgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgKS4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgYW5kIGluY29taW5nIG5ldHdvcmsgcGFja2V0cy4gVG8gcHJvcGVybHkgdGVzdCB0aGlzLCB3ZSBuZWVkIHRvIGVuYWJsZSBTTUMsIEluZmluaUJhbmQsIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBSRE1BL0RJQlMgZGV2aWNlcyAoYFJETUFfUlhFYCwgYERJQlNfTE9gKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTTUNcIixcbiAgICBcIklORklOSUJBTkRcIixcbiAgICBcIkRJQlNcIixcbiAgICBcIkRJQlNfTE9cIixcbiAgICBcIlJETUFfUlhFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic21jcl9saW5rX2luaXRcIixcbiAgICBcInNtY19sbGNfY2xpX2FkZF9saW5rXCIsXG4gICAgXCJzbWNfbGxjX3Nydl9hZGRfbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVmZXJlbmNlIGxlYWsgb2YgYHNtY19pYl9kZXZpY2VgIGluIHRoZSBTTUMgc3Vic3lzdGVtIGJ5IGludHJvZHVjaW5nIGBzbWNfaW5pdF9pbmZvX2ZyZWVgIGFuZCBwcm9wZXJseSBtYW5hZ2luZyB0aGUgb2JqZWN0IGxpZmV0aW1lIHdpdGggcmVmZXJlbmNlIGNvdW50aW5nIChgc21jX2liZGV2X2dldGAvYHB1dGApLiBJdCBhbHNvIGFkZHMgYW4gaW5pdGlhbGl6YXRpb24gY291bnRlciAoYGluaXRfY250YCkgdG8gdHJhY2sgdW5wdWJsaXNoZWQgbGluayBpbml0aWFsaXphdGlvbnMuIFRoZSBjaGFuZ2VzIGFmZmVjdCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgKGBfX3NtY19jb25uZWN0YCwgYHNtY19saXN0ZW5fd29ya2ApIGFuZCBMTEMgbGluayBtYW5hZ2VtZW50IChgc21jX2xsY19jbGlfYWRkX2xpbmtgLCBgc21jX2xsY19zcnZfYWRkX2xpbmtgKS4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc29ja2V0IG9wZXJhdGlvbnMgYW5kIGluY29taW5nIG5ldHdvcmsgcGFja2V0cy4gVG8gcHJvcGVybHkgdGVzdCB0aGlzLCB3ZSBuZWVkIHRvIGVuYWJsZSBTTUMsIEluZmluaUJhbmQsIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBSRE1BL0RJQlMgZGV2aWNlcyAoYFJETUFfUlhFYCwgYERJQlNfTE9gKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6NDAuMzkwMTg2ODI2WiIsIlNlcSI6MzcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjIzMzI2MzQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjQwOjQwLjM5MDY5MzQzNloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNjIzMjc1MTc5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyByZWZlcmVuY2UgY291bnRpbmcgZm9yIGBzbWNfaWJfZGV2aWNlYCBvYmplY3RzIHRvIGZpeCBvYmplY3QgbGlmZXRpbWUgaXNzdWVzIChsaWtlbHkgdXNlLWFmdGVyLWZyZWUpLiBJdCByZXBsYWNlcyBga2ZyZWUoaW5pKWAgd2l0aCBgc21jX2luaXRfaW5mb19mcmVlKGluaSlgLCB3aGljaCBkcm9wcyB0aGUgcmVmZXJlbmNlcyBpZiB0aGV5IHdlcmUgYWNxdWlyZWQuIFRoZSBuZXcgYm9vbGVhbiBmaWVsZHMgYGliX2Rldl9yZWZgIGFuZCBgaWJfZGV2X3YyX3JlZmAgYXJlIGFkZGVkIHRvIGBzdHJ1Y3Qgc21jX2luaXRfaW5mb2AsIHdoaWNoIGlzIGFsd2F5cyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgICh2aWEgYGt6YWxsb2Nfb2JqYCksIGVuc3VyaW5nIHRoZXkgYXJlIHByb3Blcmx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIHRoaXMgcGF0Y2ggYWRkcmVzc2VzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc3N2YzMDcxNWM2ZDUwNTQ0ZDZmODBjMDMwYWI1YmJiMTFjOTE0MmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyMyAwNzozODo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zbWMvYWZfc21jLmMgYi9uZXQvc21jL2FmX3NtYy5jXG5pbmRleCBlOWY5M2IzYWI0MzViLi5kNzgxZGVlMWIzMjkzIDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9hZl9zbWMuY1xuKysrIGIvbmV0L3NtYy9hZl9zbWMuY1xuQEAgLTEyMjUsNyArMTIyNSw3IEBAIHZvaWQgc21jX2ZpbGxfZ2lkX2xpc3Qoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXG4gXHQgICAgICAgU01DX0dJRF9TSVpFKTtcbiBcbiBvdXQ6XG4tXHRrZnJlZShhbHRfaW5pKTtcbitcdHNtY19pbml0X2luZm9fZnJlZShhbHRfaW5pKTtcbiB9XG4gXG4gc3RhdGljIGludCBzbWNfY29ubmVjdF9yZG1hX3YyX3ByZXBhcmUoc3RydWN0IHNtY19zb2NrICpzbWMsXG5AQCAtMTU5NiwxNCArMTU5NiwxNCBAQCBzdGF0aWMgaW50IF9fc21jX2Nvbm5lY3Qoc3RydWN0IHNtY19zb2NrICpzbWMpXG4gXHRTTUNfU1RBVF9DTE5UX1NVQ0NfSU5DKHNvY2tfbmV0KHNtYy1cdTAwM2VjbGNzb2NrLVx1MDAzZXNrKSwgYWNsYyk7XG4gXHRzbWNfY29ubmVjdF9pc21fdmxhbl9jbGVhbnVwKGluaSk7XG4gXHRrZnJlZShidWYpO1xuLVx0a2ZyZWUoaW5pKTtcbitcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0cmV0dXJuIDA7XG4gXG4gdmxhbl9jbGVhbnVwOlxuIFx0c21jX2Nvbm5lY3RfaXNtX3ZsYW5fY2xlYW51cChpbmkpO1xuIFx0a2ZyZWUoYnVmKTtcbiBmYWxsYmFjazpcbi1cdGtmcmVlKGluaSk7XG4rXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcbiBcdHJldHVybiBzbWNfY29ubmVjdF9kZWNsaW5lX2ZhbGxiYWNrKHNtYywgcmMsIHZlcnNpb24pO1xuIH1cbiBcbkBAIC0yMzQ0LDcgKzIzNDQsMTAgQEAgc3RhdGljIHZvaWQgc21jX2ZpbmRfcmRtYV92Ml9kZXZpY2Vfc2VydihzdHJ1Y3Qgc21jX3NvY2sgKm5ld19zbWMsXG4gXG4gbm90X2ZvdW5kOlxuIFx0aW5pLVx1MDAzZXNtY3JfdmVyc2lvbiBcdTAwMjY9IH5TTUNfVjI7XG4rXHRpZiAoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmKVxuK1x0XHRzbWNfaWJkZXZfcHV0KGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyKTtcbiBcdGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyID0gTlVMTDtcbitcdGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZiA9IGZhbHNlO1xuIFx0aW5pLVx1MDAzZWNoZWNrX3NtY3J2MiA9IGZhbHNlO1xuIH1cbiBcbkBAIC0yNTg4LDcgKzI1OTEsNyBAQCBzdGF0aWMgdm9pZCBzbWNfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c21jX2xpc3Rlbl9kZWNsaW5lKG5ld19zbWMsIHJjLCBpbmkgPyBpbmktXHUwMDNlZmlyc3RfY29udGFjdF9sb2NhbCA6IDAsXG4gXHRcdFx0ICAgcHJvcG9zYWxfdmVyc2lvbik7XG4gb3V0X2ZyZWU6XG4tXHRrZnJlZShpbmkpO1xuK1x0c21jX2luaXRfaW5mb19mcmVlKGluaSk7XG4gXHRrZnJlZShidWYpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmMgYi9uZXQvc21jL3NtY19jb3JlLmNcbmluZGV4IDE4MTY0Nzk4MjQ5MGIuLmQ5N2JjNzMyMzEwNjkgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmNcbisrKyBiL25ldC9zbWMvc21jX2NvcmUuY1xuQEAgLTU1LDYgKzU1LDE3IEBAIHN0YXRpYyB2b2lkIF9fc21jX2xncl90ZXJtaW5hdGUoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGJvb2wgc29mdCk7XG4gXG4gc3RhdGljIHZvaWQgc21jX2xpbmtfZG93bl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gXG4rdm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSlcbit7XG4rXHRpZiAoIWluaSlcbitcdFx0cmV0dXJuO1xuK1x0aWYgKGluaS1cdTAwM2VpYl9kZXZfcmVmKVxuK1x0XHRzbWNfaWJkZXZfcHV0KGluaS1cdTAwM2VpYl9kZXYpO1xuK1x0aWYgKGluaS1cdTAwM2VzbWNydjIuaWJfZGV2X3YyX3JlZilcbitcdFx0c21jX2liZGV2X3B1dChpbmktXHUwMDNlc21jcnYyLmliX2Rldl92Mik7XG4rXHRrZnJlZShpbmkpO1xuK31cbitcbiAvKiByZXR1cm4gaGVhZCBvZiBsaW5rIGdyb3VwIGxpc3QgYW5kIGl0cyBsb2NrIGZvciBhIGdpdmVuIGxpbmsgZ3JvdXAgKi9cbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBsaXN0X2hlYWQgKnNtY19sZ3JfbGlzdF9oZWFkKHN0cnVjdCBzbWNfbGlua19ncm91cCAqbGdyLFxuIFx0XHRcdFx0XHRcdCAgc3BpbmxvY2tfdCAqKmxncl9sb2NrKVxuQEAgLTc5MywxNCArODA0LDIxIEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssXG4gXHRpbnQgcmM7XG4gXG4gXHRpZiAobGdyLVx1MDAzZXNtY192ZXJzaW9uID09IFNNQ19WMikge1xuLVx0XHRsbmstXHUwMDNlc21jaWJkZXYgPSBpbmktXHUwMDNlc21jcnYyLmliX2Rldl92MjtcbitcdFx0c21jaWJkZXYgPSBpbmktXHUwMDNlc21jcnYyLmliX2Rldl92MjtcbiBcdFx0bG5rLVx1MDAzZWlicG9ydCA9IGluaS1cdTAwM2VzbWNydjIuaWJfcG9ydF92Mjtcbi1cdFx0bG5rLVx1MDAzZXdyX3J4X3NnZV9jbnQgPSBsbmstXHUwMDNlc21jaWJkZXYtXHUwMDNlaWJkZXYtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlIFx1MDAzYyAyID8gMSA6IDI7XG4rXHR9IGVsc2Uge1xuK1x0XHRzbWNpYmRldiA9IGluaS1cdTAwM2VpYl9kZXY7XG4rXHRcdGxuay1cdTAwM2VpYnBvcnQgPSBpbmktXHUwMDNlaWJfcG9ydDtcbitcdH1cbitcdHJjID0gc21jX2liZGV2X2luaXRfYmVnaW4oc21jaWJkZXYpO1xuK1x0aWYgKHJjKVxuK1x0XHRyZXR1cm4gcmM7XG4rXHRsbmstXHUwMDNlc21jaWJkZXYgPSBzbWNpYmRldjtcbitcdGlmIChsZ3ItXHUwMDNlc21jX3ZlcnNpb24gPT0gU01DX1YyKSB7XG4rXHRcdGxuay1cdTAwM2V3cl9yeF9zZ2VfY250ID0gc21jaWJkZXYtXHUwMDNlaWJkZXYtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlIFx1MDAzYyAyID8gMSA6IDI7XG4gXHRcdGxuay1cdTAwM2V3cl9yeF9idWZsZW4gPSBzbWNfbGlua19zaGFyZWRfdjJfcnhidWYobG5rKSA/XG4gXHRcdFx0U01DX1dSX0JVRl9TSVpFIDogU01DX1dSX0JVRl9WMl9TSVpFO1xuIFx0fSBlbHNlIHtcbi1cdFx0bG5rLVx1MDAzZXNtY2liZGV2ID0gaW5pLVx1MDAzZWliX2Rldjtcbi1cdFx0bG5rLVx1MDAzZWlicG9ydCA9IGluaS1cdTAwM2VpYl9wb3J0O1xuIFx0XHRsbmstXHUwMDNld3Jfcnhfc2dlX2NudCA9IDE7XG4gXHRcdGxuay1cdTAwM2V3cl9yeF9idWZsZW4gPSBTTUNfV1JfQlVGX1NJWkU7XG4gXHR9XG5AQCAtODgyLDYgKzkwMCw3IEBAIGludCBzbWNyX2xpbmtfaW5pdChzdHJ1Y3Qgc21jX2xpbmtfZ3JvdXAgKmxnciwgc3RydWN0IHNtY19saW5rICpsbmssXG4gXHRpZiAoIWF0b21pY19kZWNfcmV0dXJuKFx1MDAyNnNtY2liZGV2LVx1MDAzZWxua19jbnQpKVxuIFx0XHR3YWtlX3VwKFx1MDAyNnNtY2liZGV2LVx1MDAzZWxua3NfZGVsZXRlZCk7XG4gXHRzbWNfbGdyX3B1dChsZ3IpOyAvKiBsZ3JfaG9sZCBhYm92ZSAqL1xuK1x0c21jX2liZGV2X2luaXRfZW5kKHNtY2liZGV2KTtcbiBcdHJldHVybiByYztcbiB9XG4gXG5AQCAtOTk3LDYgKzEwMTYsOCBAQCBzdGF0aWMgaW50IHNtY19sZ3JfY3JlYXRlKHN0cnVjdCBzbWNfc29jayAqc21jLCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyAqaW5pKVxuIFx0c3Bpbl9sb2NrX2JoKGxncl9sb2NrKTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bGdyLVx1MDAzZWxpc3QsIGxncl9saXN0KTtcbiBcdHNwaW5fdW5sb2NrX2JoKGxncl9sb2NrKTtcbitcdGlmICghaW5pLVx1MDAzZWlzX3NtY2QpXG4rXHRcdHNtY19pYmRldl9pbml0X2VuZChsbmstXHUwMDNlc21jaWJkZXYpO1xuIFx0cmV0dXJuIDA7XG4gXG4gZnJlZV93cTpcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19jb3JlLmggYi9uZXQvc21jL3NtY19jb3JlLmhcbmluZGV4IDVjMThmMDhhNGM4YTUuLjlmNWE2OWEzMGNiM2YgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19jb3JlLmhcbisrKyBiL25ldC9zbWMvc21jX2NvcmUuaFxuQEAgLTQwMyw2ICs0MDMsNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mb19zbWNydjIge1xuIFxuIFx0LyogT3V0cHV0IGZpZWxkcyB3aGVuIHNhZGRyIGlzIHNldCAqL1xuIFx0c3RydWN0IHNtY19pYl9kZXZpY2VcdCppYl9kZXZfdjI7XG4rXHRib29sXHRcdFx0aWJfZGV2X3YyX3JlZjsgLyogb3ducyBhbiBzbWNfaWJkZXYgcmVmZXJlbmNlICovXG4gXHR1OFx0XHRcdGliX3BvcnRfdjI7XG4gXHR1OFx0XHRcdGliX2dpZF92MltTTUNfR0lEX1NJWkVdO1xuIFxuQEAgLTQzOCw2ICs0MzksNyBAQCBzdHJ1Y3Qgc21jX2luaXRfaW5mbyB7XG4gXHR1OFx0XHRcdHBlZXJfbWFjW0VUSF9BTEVOXTtcbiBcdHU4XHRcdFx0cGVlcl9zeXN0ZW1pZFtTTUNfU1lTVEVNSURfTEVOXTtcbiBcdHN0cnVjdCBzbWNfaWJfZGV2aWNlXHQqaWJfZGV2O1xuK1x0Ym9vbFx0XHRcdGliX2Rldl9yZWY7IC8qIG93bnMgYW4gc21jX2liZGV2IHJlZmVyZW5jZSAqL1xuIFx0dThcdFx0XHRpYl9naWRbU01DX0dJRF9TSVpFXTtcbiBcdHU4XHRcdFx0aWJfcG9ydDtcbiBcdHUzMlx0XHRcdGliX2NsY3FwbjtcbkBAIC01OTQsNiArNTk2LDcgQEAgdm9pZCBzbWNfcnRva2VuX3NldDIoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsIGludCBydG9rX2lkeCwgaW50IGxpbmtfaWQsXG4gdm9pZCBzbWNfc25kYnVmX3N5bmNfc2dfZm9yX2RldmljZShzdHJ1Y3Qgc21jX2Nvbm5lY3Rpb24gKmNvbm4pO1xuIHZvaWQgc21jX3JtYl9zeW5jX3NnX2Zvcl9jcHUoc3RydWN0IHNtY19jb25uZWN0aW9uICpjb25uKTtcbiBpbnQgc21jX3ZsYW5fYnlfdGNwc2soc3RydWN0IHNvY2tldCAqY2xjc29jaywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG4rdm9pZCBzbWNfaW5pdF9pbmZvX2ZyZWUoc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG4gXG4gdm9pZCBzbWNfY29ubl9mcmVlKHN0cnVjdCBzbWNfY29ubmVjdGlvbiAqY29ubik7XG4gaW50IHNtY19jb25uX2NyZWF0ZShzdHJ1Y3Qgc21jX3NvY2sgKnNtYywgc3RydWN0IHNtY19pbml0X2luZm8gKmluaSk7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuYyBiL25ldC9zbWMvc21jX2liLmNcbmluZGV4IDliYjQ5NTcwNzQ0NWUuLmQ4NTg0NTNjNjRkOTIgMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19pYi5jXG4rKysgYi9uZXQvc21jL3NtY19pYi5jXG5AQCAtOTM0LDYgKzkzNCw0NCBAQCB2b2lkIHNtY19pYl9uZGV2X2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdW5zaWduZWQgbG9uZyBldmVudClcbiBcdG11dGV4X3VubG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHNtY19pYmRldl9yZWxlYXNlKHN0cnVjdCBzbWNfaWJfZGV2aWNlICpzbWNpYmRldilcbit7XG4rXHRwdXRfZGV2aWNlKFx1MDAyNnNtY2liZGV2LVx1MDAzZWliZGV2LVx1MDAzZWRldik7XG4rXHRrZnJlZShzbWNpYmRldik7XG4rfVxuK1xuK3ZvaWQgc21jX2liZGV2X2dldChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0cmVmY291bnRfaW5jKFx1MDAyNnNtY2liZGV2LVx1MDAzZXJlZmNudCk7XG4rfVxuK1xuK3ZvaWQgc21jX2liZGV2X3B1dChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZzbWNpYmRldi1cdTAwM2VyZWZjbnQpKVxuK1x0XHRzbWNfaWJkZXZfcmVsZWFzZShzbWNpYmRldik7XG4rfVxuK1xuK2ludCBzbWNfaWJkZXZfaW5pdF9iZWdpbihzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0aW50IHJjID0gMDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuK1x0aWYgKGxpc3RfZW1wdHkoXHUwMDI2c21jaWJkZXYtXHUwMDNlbGlzdCkpXG4rXHRcdHJjID0gLUVOT0RFVjtcbitcdGVsc2VcbitcdFx0YXRvbWljX2luYyhcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2c21jX2liX2RldmljZXMubXV0ZXgpO1xuK1x0cmV0dXJuIHJjO1xuK31cbitcbit2b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpXG4re1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4rXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpXG4rXHRcdHdha2VfdXAoXHUwMDI2c21jaWJkZXYtXHUwMDNlaW5pdF93YWl0KTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZzbWNfaWJfZGV2aWNlcy5tdXRleCk7XG4rfVxuK1xuIC8qIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBpYl9yZWdpc3Rlcl9jbGllbnQoKSAqL1xuIHN0YXRpYyBpbnQgc21jX2liX2FkZF9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYpXG4ge1xuQEAgLTk0OSw3ICs5ODcsMTEgQEAgc3RhdGljIGludCBzbWNfaWJfYWRkX2RldihzdHJ1Y3QgaWJfZGV2aWNlICppYmRldilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRzbWNpYmRldi1cdTAwM2VpYmRldiA9IGliZGV2O1xuK1x0Z2V0X2RldmljZShcdTAwMjZpYmRldi1cdTAwM2VkZXYpO1xuK1x0cmVmY291bnRfc2V0KFx1MDAyNnNtY2liZGV2LVx1MDAzZXJlZmNudCwgMSk7XG4gXHRJTklUX1dPUksoXHUwMDI2c21jaWJkZXYtXHUwMDNlcG9ydF9ldmVudF93b3JrLCBzbWNfaWJfcG9ydF9ldmVudF93b3JrKTtcbitcdGF0b21pY19zZXQoXHUwMDI2c21jaWJkZXYtXHUwMDNlaW5pdF9jbnQsIDApO1xuK1x0aW5pdF93YWl0cXVldWVfaGVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X3dhaXQpO1xuIFx0YXRvbWljX3NldChcdTAwMjZzbWNpYmRldi1cdTAwM2VsbmtfY250LCAwKTtcbiBcdGluaXRfd2FpdHF1ZXVlX2hlYWQoXHUwMDI2c21jaWJkZXYtXHUwMDNlbG5rc19kZWxldGVkKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2c21jaWJkZXYtXHUwMDNlbXV0ZXgpO1xuQEAgLTEwMDAsMTEgKzEwNDIsMTQgQEAgc3RhdGljIHZvaWQgc21jX2liX3JlbW92ZV9kZXYoc3RydWN0IGliX2RldmljZSAqaWJkZXYsIHZvaWQgKmNsaWVudF9kYXRhKVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnNtY19pYl9kZXZpY2VzLm11dGV4KTtcbiBcdHByX3dhcm5fcmF0ZWxpbWl0ZWQoXCJzbWM6IHJlbW92aW5nIGliIGRldmljZSAlc1xcblwiLFxuIFx0XHRcdCAgICBzbWNpYmRldi1cdTAwM2VpYmRldi1cdTAwM2VuYW1lKTtcbitcdGlmIChhdG9taWNfcmVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpXG4rXHRcdHdhaXRfZXZlbnQoc21jaWJkZXYtXHUwMDNlaW5pdF93YWl0LFxuK1x0XHRcdCAgICFhdG9taWNfcmVhZChcdTAwMjZzbWNpYmRldi1cdTAwM2Vpbml0X2NudCkpO1xuIFx0c21jX3NtY3JfdGVybWluYXRlX2FsbChzbWNpYmRldik7XG4gXHRzbWNfaWJfY2xlYW51cF9wZXJfaWJkZXYoc21jaWJkZXYpO1xuIFx0aWJfdW5yZWdpc3Rlcl9ldmVudF9oYW5kbGVyKFx1MDAyNnNtY2liZGV2LVx1MDAzZWV2ZW50X2hhbmRsZXIpO1xuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZzbWNpYmRldi1cdTAwM2Vwb3J0X2V2ZW50X3dvcmspO1xuLVx0a2ZyZWUoc21jaWJkZXYpO1xuK1x0c21jX2liZGV2X3B1dChzbWNpYmRldik7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgaWJfY2xpZW50IHNtY19pYl9jbGllbnQgPSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3NtYy9zbWNfaWIuaCBiL25ldC9zbWMvc21jX2liLmhcbmluZGV4IGVmOGFjMmI3NTQ2ZGYuLmQzMjU0NzM1MGU4YjggMTAwNjQ0XG4tLS0gYS9uZXQvc21jL3NtY19pYi5oXG4rKysgYi9uZXQvc21jL3NtY19pYi5oXG5AQCAtMTUsNiArMTUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaWZfZXRoZXIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjcmRtYS9pYl92ZXJicy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3NtYy5oXHUwMDNlXG5AQCAtNTEsNiArNTIsOSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7XHRcdFx0XHQvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqL1xuIFx0c3RydWN0IHdvcmtfc3RydWN0XHRwb3J0X2V2ZW50X3dvcms7XG4gXHR1bnNpZ25lZCBsb25nXHRcdHBvcnRfZXZlbnRfbWFzaztcbiBcdERFQ0xBUkVfQklUTUFQKHBvcnRzX2dvaW5nX2F3YXksIFNNQ19NQVhfUE9SVFMpO1xuK1x0cmVmY291bnRfdFx0XHRyZWZjbnQ7XHRcdC8qIG9iamVjdCBsaWZldGltZSAqL1xuK1x0YXRvbWljX3RcdFx0aW5pdF9jbnQ7XHQvKiB1bnB1Ymxpc2hlZCBsaW5rIGluaXRpYWxpemF0aW9ucyAqL1xuK1x0d2FpdF9xdWV1ZV9oZWFkX3RcdGluaXRfd2FpdDtcdC8qIHdhaXQgZm9yIGxpbmtzIHRvIGJlIHB1Ymxpc2hlZCAqL1xuIFx0YXRvbWljX3RcdFx0bG5rX2NudDtcdC8qIG51bWJlciBvZiBsaW5rcyBvbiBpYmRldiAqL1xuIFx0d2FpdF9xdWV1ZV9oZWFkX3RcdGxua3NfZGVsZXRlZDtcdC8qIHdhaXQgNCByZW1vdmFsIG9mIGFsbCBsaW5rcyovXG4gXHRzdHJ1Y3QgbXV0ZXhcdFx0bXV0ZXg7XHRcdC8qIHByb3RlY3QgZGV2IHNldHVwK2NsZWFudXAgKi9cbkBAIC01OSw2ICs2MywxMSBAQCBzdHJ1Y3Qgc21jX2liX2RldmljZSB7XHRcdFx0XHQvKiBpYi1kZXZpY2UgaW5mb3MgZm9yIHNtYyAqL1xuIFx0aW50XHRcdFx0bmRldl9pZmlkeFtTTUNfTUFYX1BPUlRTXTsgLyogbmRldiBpZiBpbmRleGVzICovXG4gfTtcbiBcbit2b2lkIHNtY19pYmRldl9nZXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbit2b2lkIHNtY19pYmRldl9wdXQoc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbitpbnQgc21jX2liZGV2X2luaXRfYmVnaW4oc3RydWN0IHNtY19pYl9kZXZpY2UgKnNtY2liZGV2KTtcbit2b2lkIHNtY19pYmRldl9pbml0X2VuZChzdHJ1Y3Qgc21jX2liX2RldmljZSAqc21jaWJkZXYpO1xuK1xuIHN0YXRpYyBpbmxpbmUgX19iZTMyIHNtY19pYl9naWRfdG9faXB2NCh1OCBnaWRbU01DX0dJRF9TSVpFXSlcbiB7XG4gXHRzdHJ1Y3QgaW42X2FkZHIgKmFkZHI2ID0gKHN0cnVjdCBpbjZfYWRkciAqKWdpZDtcbmRpZmYgLS1naXQgYS9uZXQvc21jL3NtY19sbGMuYyBiL25ldC9zbWMvc21jX2xsYy5jXG5pbmRleCBjOWNjZDg0ODAzNjljLi5lMTZhYWE1MTQzNjhhIDEwMDY0NFxuLS0tIGEvbmV0L3NtYy9zbWNfbGxjLmNcbisrKyBiL25ldC9zbWMvc21jX2xsYy5jXG5AQCAtMTEwOCw2ICsxMTA4LDcgQEAgaW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXG4gXHRyYyA9IHNtY3JfbGlua19pbml0KGxnciwgbG5rX25ldywgbG5rX2lkeCwgaW5pKTtcbiBcdGlmIChyYylcbiBcdFx0Z290byBvdXRfcmVqZWN0O1xuK1x0c21jX2liZGV2X2luaXRfZW5kKGxua19uZXctXHUwMDNlc21jaWJkZXYpO1xuIFx0c21jX2xsY19zYXZlX2FkZF9saW5rX2luZm8obG5rX25ldywgbGxjKTtcbiBcdGxua19uZXctXHUwMDNlbGlua19pZCA9IGxsYy1cdTAwM2VsaW5rX251bTtcdC8qIFNNQyBzZXJ2ZXIgYXNzaWducyBsaW5rIGlkICovXG4gXHRzbWNfbGxjX2xpbmtfc2V0X3VpZChsbmtfbmV3KTtcbkBAIC0xMTQzLDcgKzExNDQsNyBAQCBpbnQgc21jX2xsY19jbGlfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLCBzdHJ1Y3Qgc21jX2xsY19xZW50cnkgKnFlbnRyeSlcbiBvdXRfcmVqZWN0OlxuIFx0c21jX2xsY19jbGlfYWRkX2xpbmtfcmVqZWN0KHFlbnRyeSk7XG4gb3V0OlxuLVx0a2ZyZWUoaW5pKTtcbitcdHNtY19pbml0X2luZm9fZnJlZShpbmkpO1xuIFx0a2ZyZWUocWVudHJ5KTtcbiBcdHJldHVybiByYztcbiB9XG5AQCAtMTIxNyw3ICsxMjE4LDcgQEAgc3RhdGljIHZvaWQgc21jX2xsY19jbGlfYWRkX2xpbmtfaW52aXRlKHN0cnVjdCBzbWNfbGluayAqbGluayxcbiBcdHNtY19sbGNfc2VuZF9hZGRfbGluayhsaW5rLCBpbmktXHUwMDNlaWJfZGV2LVx1MDAzZW1hY1tpbmktXHUwMDNlaWJfcG9ydCAtIDFdLFxuIFx0XHRcdCAgICAgIGluaS1cdTAwM2VpYl9naWQsIE5VTEwsIFNNQ19MTENfUkVRKTtcbiBvdXQ6XG4tXHRrZnJlZShpbmkpO1xuK1x0c21jX2luaXRfaW5mb19mcmVlKGluaSk7XG4gXHRrZnJlZShxZW50cnkpO1xuIH1cbiBcbkBAIC0xNDg3LDYgKzE0ODgsNyBAQCBpbnQgc21jX2xsY19zcnZfYWRkX2xpbmsoc3RydWN0IHNtY19saW5rICpsaW5rLFxuIFx0aWYgKHJjKVxuIFx0XHRnb3RvIG91dDtcbiBcdGxpbmtfbmV3ID0gXHUwMDI2bGdyLVx1MDAzZWxua1tsbmtfaWR4XTtcbitcdHNtY19pYmRldl9pbml0X2VuZChsaW5rX25ldy1cdTAwM2VzbWNpYmRldik7XG4gXG4gXHRyYyA9IHNtY3JfYnVmX21hcF9sZ3IobGlua19uZXcpO1xuIFx0aWYgKHJjKVxuQEAgLTE1NDQsNyArMTU0Niw3IEBAIGludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXG4gXHR9XG4gb3V0OlxuIFx0a2ZyZWUocWVudHJ5KTtcbi1cdGtmcmVlKGluaSk7XG4rXHRzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKTtcbiBcdGlmIChzZW5kX3JlcV9hZGRfbGlua19yZXNwKVxuIFx0XHRzbWNfbGxjX3NlbmRfcmVxX2FkZF9saW5rX3Jlc3BvbnNlKHJlcV9xZW50cnkpO1xuIFx0cmV0dXJuIHJjO1xuZGlmZiAtLWdpdCBhL25ldC9zbWMvc21jX3BuZXQuYyBiL25ldC9zbWMvc21jX3BuZXQuY1xuaW5kZXggNjNlMjg2ZTJkZmFhOC4uYmUxZjUxMzdjOGVlNyAxMDA2NDRcbi0tLSBhL25ldC9zbWMvc21jX3BuZXQuY1xuKysrIGIvbmV0L3NtYy9zbWNfcG5ldC5jXG5AQCAtOTgwLDE0ICs5ODAsMjIgQEAgc3RhdGljIGludCBzbWNfcG5ldF9kZXRlcm1pbmVfZ2lkKHN0cnVjdCBzbWNfaWJfZGV2aWNlICppYmRldiwgaW50IGksXG4gXHRpZiAoIWluaS1cdTAwM2VjaGVja19zbWNydjIgXHUwMDI2XHUwMDI2XG4gXHQgICAgIXNtY19pYl9kZXRlcm1pbmVfZ2lkKGliZGV2LCBpLCBpbmktXHUwMDNldmxhbl9pZCwgaW5pLVx1MDAzZWliX2dpZCwgTlVMTCxcbiBcdFx0XHRcdCAgTlVMTCkpIHtcbitcdFx0aWYgKGluaS1cdTAwM2VpYl9kZXZfcmVmKVxuK1x0XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZWliX2Rldik7XG4rXHRcdHNtY19pYmRldl9nZXQoaWJkZXYpO1xuIFx0XHRpbmktXHUwMDNlaWJfZGV2ID0gaWJkZXY7XG4rXHRcdGluaS1cdTAwM2VpYl9kZXZfcmVmID0gdHJ1ZTtcbiBcdFx0aW5pLVx1MDAzZWliX3BvcnQgPSBpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcdGlmIChpbmktXHUwMDNlY2hlY2tfc21jcnYyIFx1MDAyNlx1MDAyNlxuIFx0ICAgICFzbWNfaWJfZGV0ZXJtaW5lX2dpZChpYmRldiwgaSwgaW5pLVx1MDAzZXZsYW5faWQsIGluaS1cdTAwM2VzbWNydjIuaWJfZ2lkX3YyLFxuIFx0XHRcdFx0ICBOVUxMLCBcdTAwMjZpbmktXHUwMDNlc21jcnYyKSkge1xuK1x0XHRpZiAoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmKVxuK1x0XHRcdHNtY19pYmRldl9wdXQoaW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIpO1xuK1x0XHRzbWNfaWJkZXZfZ2V0KGliZGV2KTtcbiBcdFx0aW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjIgPSBpYmRldjtcbitcdFx0aW5pLVx1MDAzZXNtY3J2Mi5pYl9kZXZfdjJfcmVmID0gdHJ1ZTtcbiBcdFx0aW5pLVx1MDAzZXNtY3J2Mi5pYl9wb3J0X3YyID0gaTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDo0MC4zOTA2OTQzMTZaIiwiU2VxIjozOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM4MzMzNzkwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNNQyBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIHNxdWFyZWx5IGF0IHRoZSBgbmV0L3NtYy9gIHN1YnN5c3RlbSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBgc21jX2liX2RldmljZWAgb2JqZWN0cy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBhIHJhdGhlciBzdHJhaWdodGZvcndhcmQsIGFsYmVpdCBjcml0aWNhbCwgZml4LiBJdCdzIGFsbCBhYm91dCBib2xzdGVyaW5nIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgdGhlc2UgYHNtY19pYl9kZXZpY2VgIGluc3RhbmNlcy5cblxuVGhlIGtleSBjaGFuZ2UgSSBzZWUgaXMgdGhlIGludHJvZHVjdGlvbiBvZiBhIG1vcmUgcm9idXN0IGxpZmVjeWNsZSBtYW5hZ2VtZW50IHN5c3RlbS4gVGhleSdyZSBkaXRjaGluZyB0aGUgZGlyZWN0IGBrZnJlZShpbmkpYCBjYWxsIGluIGZhdm9yIG9mIGBzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKWAuIFRoaXMgZnVuY3Rpb24gaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnM7IGl0J3MgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSByZWZlcmVuY2VzIHRvIGBpYl9kZXZgIGFuZCBgaWJfZGV2X3YyYC4gVGhlIGludHJvZHVjdGlvbiBvZiBgc21jX2liZGV2X2dldGAsIGBzbWNfaWJkZXZfcHV0YCwgYHNtY19pYmRldl9pbml0X2JlZ2luYCwgYW5kIGBzbWNfaWJkZXZfaW5pdF9lbmRgIGZ1cnRoZXIgcmVpbmZvcmNlcyB0aGlzIG5ldyBhcHByb2FjaC4gSXQncyBhIGNsZWFyIGluZGljYXRpb24gdGhhdCB3ZSdyZSBtb3ZpbmcgdG93YXJkcyBhIG1vcmUgc3RydWN0dXJlZCBhbmQgbGVzcyBlcnJvci1wcm9uZSB3YXkgb2YgbWFuYWdpbmcgdGhlIG9iamVjdCdzIGRlcGVuZGVuY2llcy4gQW5kIGJ5IGFkZGluZyBgaWJfZGV2X3JlZmAgYW5kIGBpYl9kZXZfdjJfcmVmYCB0byB0aGUgYHNtY19pbml0X2luZm9gLCBpdCBhcHBlYXJzIHRoYXQgdGhlIHN5c3RlbSB0cmFja3MgdGhlIG93bmVyc2hpcCBvZiB0aG9zZSByZWZlcmVuY2VzIGJ5IHRoZSBgc21jX2luaXRfaW5mb2AuXG5cbkl0J3MgZXZpZGVudCB0aGlzIGlzIGEgcmVzcG9uc2UgdG8gYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IsIG1vcmUgZ2VuZXJhbGx5LCBhbiBvYmplY3QgbGlmZXRpbWUgbWFuYWdlbWVudCBwcm9ibGVtIHJlbGF0ZWQgdG8gYHNtY19pYl9kZXZpY2VgLiBUaGUgZ29vZCBuZXdzIGlzIHRoYXQgdGhlcmUgYXJlbid0IGFueSBuZXcgc3RydWN0dXJlcyBiZWluZyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIHNvIHRoYXQncyBvbmUgbGVzcyBhcmVhIHRvIHdvcnJ5IGFib3V0IGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gVGhlcmUncyBhbHNvIG5vIGluZGljYXRpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzIGJlaW5nIGFkZHJlc3NlZCBvciBleHBvc2VkLCB3aGljaCBpcyBhIGdvb2Qgc2lnbi4gVGhlIGZvY3VzIGhlcmUgaXMgc29sZWx5IG9uIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgb2JqZWN0IGxpZmV0aW1lLlxuXG5Ib3dldmVyLCBJIG5lZWQgdG8gZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgZm9yIHBvc3NpYmxlIHJlZ3Jlc3Npb25zLiBJdCdzIGEgZ29vZCBwcmFjdGljZSwgYW5kIEknbSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBTaW5jZSBgc21jX2luaXRfaW5mb2AgaXMgbGlrZWx5IGFsbG9jYXRlZCwgcHJvYmFibHkgdGhyb3VnaCBga3phbGxvY2AsIHRoZXJlIGlzIGEgcmlzayB0aGF0IHRoZSBhZGRlZCBmaWVsZHMsIGBpYl9kZXZfcmVmYCBhbmQgYGliX2Rldl92Ml9yZWZgLCBtaWdodCBub3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuIElmIGBzbWNfaW5pdF9pbmZvYCBpc24ndCB6ZXJvLWluaXRpYWxpemVkLCB0aGVzZSBib29sZWFuIGZsYWdzIGNvdWxkIGJlIGxlZnQgaW4gYW4gdW5kZWZpbmVkIHN0YXRlLCBsZWFkaW5nIHRvIGluY29ycmVjdCBjYWxscyB0byBgc21jX2liZGV2X3B1dGAuIEkgc2hvdWxkIHZlcmlmeSBob3cgYHNtY19pbml0X2luZm9gIGlzIGFjdHVhbGx5IGFsbG9jYXRlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIGNvbmNlcm4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5OTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDo0Ny43NzQwMzUxMzlaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyOTgwMTA0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGxvYy4qc21jX2luaXRfaW5mb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc21jL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6NDcuODI3MDMxNzYzWiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODQwNzEwMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipIdW50aW5nIGZvciBJbml0aWFsaXphdGlvbiBNYWdpYyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHdoZXJlIHRoZSBgaW5pID0gYCBhc3NpZ25tZW50cyBvciB0aGUgYHN0cnVjdCBzbWNfaW5pdF9pbmZvYCBhbGxvY2F0aW9ucyBhcmUgaGFwcGVuaW5nLiBUaGF0J3MgbXkgc3RhcnRpbmcgcG9pbnQuIFRob3NlIHdpbGwgYmUgY3J1Y2lhbCBiZWNhdXNlIHRoZXkncmUgdGhlIHBsYWNlcyB3aGVyZSB0aGUgaW5pdGlhbCBwYXJhbWV0ZXJzIG9yIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pbmcgYW4gU01DIChTeXN0ZW0gTWFuYWdlbWVudCBDb250cm9sbGVyKSBvciBzaW1pbGFyIGRldmljZSBpcyBkZWZpbmVkLCBvciBpbml0aWFsaXplZC4gRmluZGluZyB0aG9zZSB3aWxsIGxlYWQgbWUgdG8gdGhlIGtleSBjb25maWd1cmF0aW9uIGRhdGEuIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgaW5pdGlhbGl6YXRpb24gaXMgcHJldHR5IGltcG9ydGFudCB0byB0aGUgc3lzdGVtIGFzIGEgd2hvbGUsIHNvIGtub3dpbmcgdGhlIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgaXMgdGhlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk1NywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDA3OjQwOjUwLjgxMTEwNTU5MVoiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwODk4OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW5pID0gay4qYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NtYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NtYy9hZl9zbWMuYz0xMjAzPXZvaWQgc21jX2ZpbGxfZ2lkX2xpc3Qoc3RydWN0IHNtY19saW5rX2dyb3VwICpsZ3IsXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTEyMTEtXFxubmV0L3NtYy9hZl9zbWMuYzoxMjEyOlxcdGFsdF9pbmkgPSBremFsbG9jX29iaigqYWx0X2luaSk7XFxubmV0L3NtYy9hZl9zbWMuYy0xMjEzLVxcdGlmICghYWx0X2luaSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MTUyMD1zdGF0aWMgaW50IF9fc21jX2Nvbm5lY3Qoc3RydWN0IHNtY19zb2NrICpzbWMpXFxuLS1cXG5uZXQvc21jL2FmX3NtYy5jLTE1MzktXFxubmV0L3NtYy9hZl9zbWMuYzoxNTQwOlxcdGluaSA9IGt6YWxsb2Nfb2JqKCppbmkpO1xcbm5ldC9zbWMvYWZfc21jLmMtMTU0MS1cXHRpZiAoIWluaSlcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmM9MjQ1Mz1zdGF0aWMgdm9pZCBzbWNfbGlzdGVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYy0yNTA3LVxcbm5ldC9zbWMvYWZfc21jLmM6MjUwODpcXHRpbmkgPSBremFsbG9jX29iaigqaW5pKTtcXG5uZXQvc21jL2FmX3NtYy5jLTI1MDktXFx0aWYgKCFpbmkpIHtcXG4tLVxcbm5ldC9zbWMvc21jX2xsYy5jPTEwNTg9aW50IHNtY19sbGNfY2xpX2FkZF9saW5rKHN0cnVjdCBzbWNfbGluayAqbGluaywgc3RydWN0IHNtY19sbGNfcWVudHJ5ICpxZW50cnkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xMDY5LVxcbm5ldC9zbWMvc21jX2xsYy5jOjEwNzA6XFx0aW5pID0ga3phbGxvY19vYmooKmluaSk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTA3MS1cXHRpZiAoIWluaSkge1xcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmM9MTE5MT1zdGF0aWMgdm9pZCBzbWNfbGxjX2NsaV9hZGRfbGlua19pbnZpdGUoc3RydWN0IHNtY19saW5rICpsaW5rLFxcbi0tXFxubmV0L3NtYy9zbWNfbGxjLmMtMTIwOC1cXG5uZXQvc21jL3NtY19sbGMuYzoxMjA5OlxcdGluaSA9IGt6YWxsb2Nfb2JqKCppbmkpO1xcbm5ldC9zbWMvc21jX2xsYy5jLTEyMTAtXFx0aWYgKCFpbmkpXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYz0xNDMyPWludCBzbWNfbGxjX3Nydl9hZGRfbGluayhzdHJ1Y3Qgc21jX2xpbmsgKmxpbmssXFxuLS1cXG5uZXQvc21jL3NtY19sbGMuYy0xNDQ3LVxcbm5ldC9zbWMvc21jX2xsYy5jOjE0NDg6XFx0aW5pID0ga3phbGxvY19vYmooKmluaSk7XFxubmV0L3NtYy9zbWNfbGxjLmMtMTQ0OS1cXHRpZiAoIWluaSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QwNzo0MDo1MC44NTcxOTkyODZaIiwiU2VxIjo0MywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc2NjE3OTI3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBga3phbGxvY19vYmpgIGlzIGFsbW9zdCBjZXJ0YWlubHkganVzdCBhIG1hY3JvIHRoYXQncyBhIHdyYXBwZXIgZm9yIGBremFsbG9jYC4gVGhhdCdzIHN0YW5kYXJkIHByYWN0aWNlLCBhbmQgaXQgbWFrZXMgdGhlIGNvZGUgY2xlYW5lci4gVGhlIGtleSBoZXJlLCB0aG91Z2gsIGlzIHRoYXQgYGt6YWxsb2NgIHplcm9lcyB0aGUgYWxsb2NhdGVkIG1lbW9yeS4gS25vd2luZyB0aGF0LCBJIGNhbiBxdWlja2x5IGNvbmZpcm0gdGhhdCBgaWJfZGV2X3JlZmAgYW5kIGBpYl9kZXZfdjJfcmVmYCB3aWxsIGJlIGNvcnJlY3RseSBpbml0aWFsaXplZCB0byBgZmFsc2VgLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHRoZSBvdmVyYWxsIHN0YXRlIG9mIHRoZXNlIG9iamVjdHMuXG5cblRoaXMgcGF0Y2ggaXMgb2J2aW91c2x5IGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIHJlbGF0ZWQgb2JqZWN0IGxpZmV0aW1lIHByb2JsZW0uIENvbnNpZGVyaW5nIHRoZSB6ZXJvLWluaXRpYWxpemF0aW9uLCB0aGVyZSdzIG5vIHdheSB0aGF0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHRoZSByb290IGNhdXNlLiBNeSBleHBlcnRpc2UgaXMgdGhhdCB0aGUgemVyby1hbGxvY2F0aW9uIHByb3ZpZGVzIGFuIGltcG9ydGFudCBndWFyYW50ZWUgdGhhdCBtaXRpZ2F0ZXMgdGhlIG1vc3QgY29tbW9uIHJpc2tzLlxuXG5HaXZlbiB0aGUgZm9jdXMgb24gdXNlLWFmdGVyLWZyZWUsIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdGhpcyBraW5kIG9mIGJ1Zy4gV2UgcmVhbGx5IGRvbid0IG5lZWQgdG8gaW52b2x2ZSBLTVNBTiBmb3IgdGhpcyBzcGVjaWZpYyBpc3N1ZS4gS0FTQU4gaXMgcGVyZmVjdGx5IHN1ZmZpY2llbnQgZm9yIGNhdGNoaW5nIHRoZSBraW5kcyBvZiBtZW1vcnkgYWNjZXNzIGVycm9ycyB3ZSdyZSBsaWtlbHkgZGVhbGluZyB3aXRoIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NDYsIk91dHB1dFRva2VucyI6MTg1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMDc6NDA6NTYuNjIzMzgxNTU3WiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgYHNtY19pYl9kZXZpY2VgIG9iamVjdHMgdG8gZml4IG9iamVjdCBsaWZldGltZSBpc3N1ZXMgKGxpa2VseSB1c2UtYWZ0ZXItZnJlZSkuIEl0IHJlcGxhY2VzIGBrZnJlZShpbmkpYCB3aXRoIGBzbWNfaW5pdF9pbmZvX2ZyZWUoaW5pKWAsIHdoaWNoIGRyb3BzIHRoZSByZWZlcmVuY2VzIGlmIHRoZXkgd2VyZSBhY3F1aXJlZC4gVGhlIG5ldyBib29sZWFuIGZpZWxkcyBgaWJfZGV2X3JlZmAgYW5kIGBpYl9kZXZfdjJfcmVmYCBhcmUgYWRkZWQgdG8gYHN0cnVjdCBzbWNfaW5pdF9pbmZvYCwgd2hpY2ggaXMgYWx3YXlzIGFsbG9jYXRlZCB1c2luZyBga3phbGxvY2AgKHZpYSBga3phbGxvY19vYmpgKSwgZW5zdXJpbmcgdGhleSBhcmUgcHJvcGVybHkgemVyby1pbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBkZXRlY3RpbmcgdXNlLWFmdGVyLWZyZWUgYnVncywgd2hpY2ggdGhpcyBwYXRjaCBhZGRyZXNzZXMuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyByZWZlcmVuY2UgY291bnRpbmcgZm9yIGBzbWNfaWJfZGV2aWNlYCBvYmplY3RzIHRvIGZpeCBvYmplY3QgbGlmZXRpbWUgaXNzdWVzIChsaWtlbHkgdXNlLWFmdGVyLWZyZWUpLiBJdCByZXBsYWNlcyBga2ZyZWUoaW5pKWAgd2l0aCBgc21jX2luaXRfaW5mb19mcmVlKGluaSlgLCB3aGljaCBkcm9wcyB0aGUgcmVmZXJlbmNlcyBpZiB0aGV5IHdlcmUgYWNxdWlyZWQuIFRoZSBuZXcgYm9vbGVhbiBmaWVsZHMgYGliX2Rldl9yZWZgIGFuZCBgaWJfZGV2X3YyX3JlZmAgYXJlIGFkZGVkIHRvIGBzdHJ1Y3Qgc21jX2luaXRfaW5mb2AsIHdoaWNoIGlzIGFsd2F5cyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2NgICh2aWEgYGt6YWxsb2Nfb2JqYCksIGVuc3VyaW5nIHRoZXkgYXJlIHByb3Blcmx5IHplcm8taW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGFuZCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgZGV0ZWN0aW5nIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIHdoaWNoIHRoaXMgcGF0Y2ggYWRkcmVzc2VzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5p7z[1] Phase: Succeeded StartedAt: 2026-08-23 07:41:07 +0000 UTC FinishedAt: 2026-08-23 07:41:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-23 07:41:07 +0000 UTC FinishedAt: 2026-08-23 07:41:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2] Phase: Succeeded StartedAt: 2026-08-23 07:41:07 +0000 UTC FinishedAt: 2026-08-23 11:21:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-23 07:41:07 +0000 UTC FinishedAt: 2026-08-23 11:21:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","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-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-23 07:41:07 +0000 UTC FinishedAt: 2026-08-23 07:41:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-23 07:41:07 +0000 UTC FinishedAt: 2026-08-23 07:41:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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-workflowr5p7z/series-workflowr5p7z-convert-artifact-212234341/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-23 07:41:17 +0000 UTC FinishedAt: 2026-08-23 07:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-23 07:41:17 +0000 UTC FinishedAt: 2026-08-23 07:57:56 +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:*bb1dd0a2-d8cd-4c2b-bc15-323f153503bd,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-workflowr5p7z/series-workflowr5p7z-convert-artifact-212234341/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": "9e490e88-f841-46fc-80a9-8a052d47c827", "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-workflowr5p7z/series-workflowr5p7z-build-action-992570507/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-23 07:41:17 +0000 UTC FinishedAt: 2026-08-23 07:57:46 +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:*bb1dd0a2-d8cd-4c2b-bc15-323f153503bd,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-workflowr5p7z/series-workflowr5p7z-convert-artifact-212234341/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": "9e490e88-f841-46fc-80a9-8a052d47c827", "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-workflowr5p7z/series-workflowr5p7z-build-action-992570507/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-23 07:57:56 +0000 UTC FinishedAt: 2026-08-23 07:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-23 07:57:56 +0000 UTC FinishedAt: 2026-08-23 07:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-23 07:57:56 +0000 UTC FinishedAt: 2026-08-23 07:58:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-23 07:57:56 +0000 UTC FinishedAt: 2026-08-23 07:58:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","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-workflowr5p7z/series-workflowr5p7z-convert-artifact-2027078976/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-23 07:58:07 +0000 UTC FinishedAt: 2026-08-23 08:00:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-23 07:58:07 +0000 UTC FinishedAt: 2026-08-23 07:59:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9e490e88-f841-46fc-80a9-8a052d47c827,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-workflowr5p7z/series-workflowr5p7z-build-action-992570507/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-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-23 08:00:01 +0000 UTC FinishedAt: 2026-08-23 08:00:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-23 08:00:01 +0000 UTC FinishedAt: 2026-08-23 08:00:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-23 08:00:01 +0000 UTC FinishedAt: 2026-08-23 08:16:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-23 08:00:01 +0000 UTC FinishedAt: 2026-08-23 08:16:39 +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:*bb1dd0a2-d8cd-4c2b-bc15-323f153503bd,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-workflowr5p7z/series-workflowr5p7z-convert-artifact-2027078976/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": "424f717c-8427-40fe-8eca-5d206ac747f5", "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-workflowr5p7z/series-workflowr5p7z-build-action-3345887996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-23 08:00:01 +0000 UTC FinishedAt: 2026-08-23 08:16:29 +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:*bb1dd0a2-d8cd-4c2b-bc15-323f153503bd,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-workflowr5p7z/series-workflowr5p7z-convert-artifact-2027078976/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": "424f717c-8427-40fe-8eca-5d206ac747f5", "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-workflowr5p7z/series-workflowr5p7z-build-action-3345887996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-23 08:16:39 +0000 UTC FinishedAt: 2026-08-23 08:16:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-23 08:16:39 +0000 UTC FinishedAt: 2026-08-23 08:16:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-23 08:16:39 +0000 UTC FinishedAt: 2026-08-23 08:18:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-23 08:16:39 +0000 UTC FinishedAt: 2026-08-23 08:18:33 +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:*424f717c-8427-40fe-8eca-5d206ac747f5,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-workflowr5p7z/series-workflowr5p7z-build-action-3345887996/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-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-23 08:18:43 +0000 UTC FinishedAt: 2026-08-23 11:21:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-23 08:18:43 +0000 UTC FinishedAt: 2026-08-23 08:18:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-23 08:18:43 +0000 UTC FinishedAt: 2026-08-23 08:18:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-23 08:18:44 +0000 UTC FinishedAt: 2026-08-23 11:21:18 +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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"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:*9e490e88-f841-46fc-80a9-8a052d47c827,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*424f717c-8427-40fe-8eca-5d206ac747f5,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-workflowr5p7z/series-workflowr5p7z-build-action-992570507/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-workflowr5p7z/series-workflowr5p7z-build-action-3345887996/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-23 08:18:44 +0000 UTC FinishedAt: 2026-08-23 08:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-23 08:18:44 +0000 UTC FinishedAt: 2026-08-23 08:18:48 +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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"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-workflowr5p7z/series-workflowr5p7z-convert-artifact-250144921/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-23 08:18:44 +0000 UTC FinishedAt: 2026-08-23 08:18:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-23 08:18:54 +0000 UTC FinishedAt: 2026-08-23 11:21:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5p7z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"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":["smcr_link_init","smc_llc_cli_add_link","smc_llc_srv_add_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["SMC","INFINIBAND","DIBS","DIBS_LO","RDMA_RXE"],"series_id":"b84d7834-992d-40dd-aefe-b4e552cc9887","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-23 08:18:54 +0000 UTC FinishedAt: 2026-08-23 11:21:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9e490e88-f841-46fc-80a9-8a052d47c827,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*424f717c-8427-40fe-8eca-5d206ac747f5,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-workflowr5p7z/series-workflowr5p7z-build-action-992570507/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-workflowr5p7z/series-workflowr5p7z-build-action-3345887996/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-workflowr5p7z/series-workflowr5p7z-convert-artifact-250144921/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,}