Name: series-workflow9jswf Phase: Running StartedAt: 2026-07-25 20:07:56 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[0] Phase: Succeeded StartedAt: 2026-07-25 20:07:56 +0000 UTC FinishedAt: 2026-07-25 20:29:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 20:07:56 +0000 UTC FinishedAt: 2026-07-25 20:29:31 +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": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PACKET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PACKET" ], "series_id": "239596a5-4943-4c68-8208-4b5dba65093f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "packet_sendmsg", "packet_sendmsg_spkt" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDIwOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnX3Nwa3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AsIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvbiBBRl9QQUNLRVQgc29ja2V0cy4gSXQgbW92ZXMgYHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYilgIG91dCBvZiBhbiBpZi1jb25kaXRpb24sIGVuc3VyaW5nIHRoZSBNQUMgaGVhZGVyIGlzIGFsd2F5cyByZXNldCBmb3IgYWxsIHNvY2tldCB0eXBlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRoIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIwOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGVkM2Q4OWI1NThhNjIxZTllNTdiYzA4NzA4MzU3NDdmMTJkMzBlNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDIwOjI4OjE5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG5pbmRleCBlNzVkMjkzMjQ3NWFjMC4uNWFlMDUxMWU4OWUzMmMgMTAwNjQ0XG4tLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG5AQCAtMTkyNCwxMSAmIzQzOzE5MjQsMTIgQEAgc3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaylcbiB7XG4gXHRpbnQgZGVwdGg7XG4gXG4mIzQzO1x0LyogT24gVFggc2tiLVx1MDAzZWRhdGEgaXMgdGhlIEwyIGhlYWRlcjsgYW5jaG9yIGl0IGZvciBhbGwgc29ja2V0IHR5cGVzLiAqL1xuJiM0MztcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XG4mIzQzO1xuIFx0aWYgKCghc2tiLVx1MDAzZXByb3RvY29sIHx8IHNrYi1cdTAwM2Vwcm90b2NvbCA9PSBodG9ucyhFVEhfUF9BTEwpKSBcdTAwMjZcdTAwMjZcbi1cdCAgICBzb2NrLVx1MDAzZXR5cGUgPT0gU09DS19SQVcpIHtcbi1cdFx0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcbiYjNDM7XHQgICAgc29jay1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKVxuIFx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBkZXZfcGFyc2VfaGVhZGVyX3Byb3RvY29sKHNrYik7XG4tXHR9XG4gXG4gXHQvKiBNb3ZlIG5ldHdvcmsgaGVhZGVyIHRvIHRoZSByaWdodCBwb3NpdGlvbiBmb3IgVkxBTiB0YWdnZWQgcGFja2V0cyAqL1xuIFx0aWYgKGxpa2VseShza2ItXHUwMDNlZGV2LVx1MDAzZXR5cGUgPT0gQVJQSFJEX0VUSEVSKSBcdTAwMjZcdTAwMjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMDoyODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEFDS0VUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFja2V0X3NlbmRtc2cmIzM0OywKICAgICYjMzQ7cGFja2V0X3NlbmRtc2dfc3BrdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIGluIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYCwgd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIG9uIEFGX1BBQ0tFVCBzb2NrZXRzLiBJdCBtb3ZlcyBgc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKWAgb3V0IG9mIGFuIGlmLWNvbmRpdGlvbiwgZW5zdXJpbmcgdGhlIE1BQyBoZWFkZXIgaXMgYWx3YXlzIHJlc2V0IGZvciBhbGwgc29ja2V0IHR5cGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4ZWQzZDg5YjU1OGE2MjFlOWU1N2JjMDg3MDgzNTc0N2YxMmQzMGU1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMjUgMjA6Mjg6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwppbmRleCBlNzVkMjkzMjQ3NWFjMC4uNWFlMDUxMWU4OWUzMmMgMTAwNjQ0Ci0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwpAQCAtMTkyNCwxMSAmIzQzOzE5MjQsMTIgQEAgc3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaykKIHsKIAlpbnQgZGVwdGg7CiAKJiM0MzsJLyogT24gVFggc2tiLSZndDtkYXRhIGlzIHRoZSBMMiBoZWFkZXI7IGFuY2hvciBpdCBmb3IgYWxsIHNvY2tldCB0eXBlcy4gKi8KJiM0MzsJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKJiM0MzsKIAlpZiAoKCFza2ItJmd0O3Byb3RvY29sIHx8IHNrYi0mZ3Q7cHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfQUxMKSkgJmFtcDsmYW1wOwotCSAgICBzb2NrLSZndDt0eXBlID09IFNPQ0tfUkFXKSB7Ci0JCXNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7CiYjNDM7CSAgICBzb2NrLSZndDt0eXBlID09IFNPQ0tfUkFXKQogCQlza2ItJmd0O3Byb3RvY29sID0gZGV2X3BhcnNlX2hlYWRlcl9wcm90b2NvbChza2IpOwotCX0KIAogCS8qIE1vdmUgbmV0d29yayBoZWFkZXIgdG8gdGhlIHJpZ2h0IHBvc2l0aW9uIGZvciBWTEFOIHRhZ2dlZCBwYWNrZXRzICovCiAJaWYgKGxpa2VseShza2ItJmd0O2Rldi0mZ3Q7dHlwZSA9PSBBUlBIUkRfRVRIRVIpICZhbXA7JmFtcDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQUZfUEFDS0VUIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hlZCBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gaGF2ZSBtb3ZlZCB0aGUgYHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7YCBjYWxsIG91dCBvZiB0aGF0IGBpZmAgYmxvY2sgd2l0aGluIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gaG93IHRoZSBwYWNrZXQgc29ja2V0IHRyYW5zbWlzc2lvbiBwYXRoIGJlaGF2ZXMuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBjb250cm9sIGZsb3cgcGF0aHMgYWZmZWN0ZWQgYW5kIGFzc2VzcyB0aGUgaW1wYWN0IG9uIHRoZSBwYWNrZXQgaGVhZGVyIHBhcnNpbmcgYW5kLCBzdWJzZXF1ZW50bHksIHRoZSBTS0ImIzM5O3MgTUFDIGhlYWRlciBzZXR1cC4gVGhpcyBpcyBnb2luZyB0byBiZSBhYm91dCB0cmFjaW5nIHRoZSBsb2dpYyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgcmF0aW9uYWxlIGZvciBtb3ZpbmcgdGhhdCBmdW5jdGlvbiBjYWxsIOKAkyBsaWtlbHkgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIG9yIGNvcnJlY3RuZXNzIGFkanVzdG1lbnQuIEkgd2FudCB0byBzZWUgKndoeSogdGhpcyB3YXMgZG9uZSBhbmQgY29uZmlybSB0aGVyZSBhcmUgbm8gdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFja2V0X3BhcnNlX2hlYWRlcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTg1Nz1zdGF0aWMgaW50IHBhY2tldF9yY3Zfc3BrdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTkyMi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTkyMzpzdGF0aWMgdm9pZCBwYWNrZXRfcGFyc2VfaGVhZGVycyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTI0LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5NDg9c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIwNjAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjIwNjE6XHRwYWNrZXRfcGFyc2VfaGVhZGVycyhza2IsIHNvY2spO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMDYyLVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjU3MD1zdGF0aWMgaW50IHRwYWNrZXRfZmlsbF9za2Ioc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI2NDQtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI2NDU6XHRwYWNrZXRfcGFyc2VfaGVhZGVycyhza2IsIHNvY2spO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNjQ2LVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9Mjk0Nj1zdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzA3Mi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzA3MzpcdHBhY2tldF9wYXJzZV9oZWFkZXJzKHNrYiwgc29jayk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMwNzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkxMwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AqKgoKT2theSwgc28gYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpcyBjbGVhcmx5IGEga2V5IGZ1bmN0aW9uLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgcGFja2V0X3NlbmRtc2dfc3BrdGAsIGB0cGFja2V0X2ZpbGxfc2tiYCwgYW5kIGBwYWNrZXRfc25kYC4gSG1tLCB0aG9zZSBhbGwgc291bmQgbGlrZSBkaWZmZXJlbnQgd2F5cyB0byBzZW5kIHBhY2tldHMgdmlhIHBhY2tldCBzb2NrZXRzIOKAkyBlc3NlbnRpYWxseSwgdGhlIHNlbmQgcGF0aHMuIFRoaXMgbWFrZXMgaXQgYSBoaWdoLXByaW9yaXR5IGFyZWEgdG8gdW5kZXJzdGFuZC4gVGhlIGNoYW5nZSBJJiMzOTttIGxvb2tpbmcgYXQgKmlzKiBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgd2hpY2ggaXMgZ29vZC4gTm93LCBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24uIEkgc2hvdWxkIGNoZWNrIHRoZSBjb25maWcgZm9yIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYCB0byBzZWUgaG93IHRoZXNlIGRpZmZlcmVudCBwYXRocyBhcmUgc2V0IHVwIGFuZCBob3cgYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiB0aGUgcGFja2V0IHNvY2tldCBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byBnZXQgdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWZfcGFja2V0XFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9NYWtlZmlsZS01LVxubmV0L3BhY2tldC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19QQUNLRVQpICYjNDM7PSBhZl9wYWNrZXQub1xubmV0L3BhY2tldC9NYWtlZmlsZS03LW9iai0kKENPTkZJR19QQUNLRVRfRElBRykgJiM0Mzs9IGFmX3BhY2tldF9kaWFnLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMDoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjU5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBQYWNrZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBDT05GSUdfUEFDS0VUYCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGFyZSBpbnZvbHZlZC4gTXkgaW5pdGlhbCB0YXJnZXRzLCB0aGUgc3ltYm9scyBJIHNob3VsZCBiZSBmb2N1c2luZyBvbiwgYXJlIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBgcGFja2V0X3NuZGAsIGFuZCB0aGVuLCBpbiB0aGVvcnksIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AuIEhtbSwgd2FpdCBhIHNlY29uZC4gSSByZW1lbWJlciBub3csIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AgaXMgc3RhdGljLCB3aGljaCBtZWFucyBJIGNhbiYjMzk7dCBkaXJlY3RseSB0YXJnZXQgaXQuIEl0JiMzOTtzIG9ubHkgY2FsbGFibGUgd2l0aGluIHRoZSBmaWxlIGl0JiMzOTtzIGRlZmluZWQuIFRoYXQmIzM5O3MgZmluZSwgdGhlICpjYWxsZXJzKiBvZiBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIGFyZSB3aGF0IEkmIzM5O20gaW50ZXJlc3RlZCBpbiEKClNvLCB0aGUgY2FsbGVycyBhcmUuLi4gYHBhY2tldF9zZW5kbXNnX3Nwa3RgLCBgdHBhY2tldF9maWxsX3NrYmAsIGFuZCBgcGFja2V0X3NuZGAuIEhvbGQgb24sIGB0cGFja2V0X2ZpbGxfc2tiYCBpcyBhbHNvIHN0YXRpYyEgV2hpY2ggbWVhbnMgSSBuZWVkIHRvIGRpZyBldmVuIGRlZXBlciwgYW5kIGZpbmQgb3V0ICp3aG8qIGNhbGxzICp0aGF0KiBvbmUuIEFoLCBva2F5LCBgdHBhY2tldF9zbmRgIGNhbGxzIGl0LiBHb3QgaXQuIFJpZ2h0LCBzbyBub3cgdGhlIHN0cmF0ZWd5IGlzIGNsZWFyLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlIGxvb2sgYXQgYHRwYWNrZXRfc25kYCwgYHBhY2tldF9zbmRgLCBhbmQgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGFuZCBzZWUgaG93IHRoZXkgd29yay4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYmlnIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHBhY2tldF9maWxsX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvYWZfcGFja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yNTQ3PXN0YXRpYyBpbnQgcGFja2V0X3NuZF92bmV0X3BhcnNlKHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90ICpsZW4sXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTY5LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTcwOnN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTcxLVx0XHR2b2lkICpmcmFtZSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgaW50IHRwX2xlbixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI3MTg9c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yODUwLVx0XHR9XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI4NTE6XHRcdHRwX2xlbiA9IHRwYWNrZXRfZmlsbF9za2IocG8sIHNrYiwgcGgsIGRldiwgZGF0YSwgdHBfbGVuLCBwcm90byxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjg1Mi1cdFx0XHRcdFx0ICBhZGRyLCBobGVuLCBjb3B5bGVuLCBcdTAwMjZzb2NrYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAyOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBQYWNrZXQgVHJhbnNtaXNzaW9uIFN5bWJvbHMqKgoKQWxyaWdodCwgSSYjMzk7bSB6ZXJvaW5nIGluIG9uIHRoZSBrZXJuZWwgc3ltYm9scyByZWxhdGVkIHRvIHBhY2tldCB0cmFuc21pc3Npb246IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfc25kYCwgYW5kIGBwYWNrZXRfc25kYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBuYXR1cmUgb2YgYHBhY2tldF9zZW5kbXNnX3Nwa3RgLiBIb2xkIG9uLCBhIHN0YXRpYyBmdW5jdGlvbiwgSSYjMzk7ZCBiZXR0ZXIgY29uZmlybSB0aGF0LiBJdCBsb29rcyBsaWtlIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpcyBnb2luZyB0byBiZSBzb21ldGhpbmcgdmVyeSBzcGVjaWZpYyB0aGF0IGdldHMgcmVzb2x2ZWQgYXQgY29tcGlsZSB0aW1lLCBzb21ldGhpbmcgdGhhdCBtYXkgYmUgaGlnaGx5IHJlbGV2YW50IHRvIGxvdy1sZXZlbCBwYWNrZXQgcHJvY2Vzc2luZyBlZmZpY2llbmN5LCBvciBwZXJoYXBzIHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgbmV0d29ya2luZyBzdGFjayBiZWluZyB1c2VkLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBhbmQgY29uZmlybSB0aGF0IHN0YXRpYyBxdWFsaWZpZXIgYW5kIHRoZW4gY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBpZiBpdCBpcyBpbmRlZWQgc3RhdGljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWNrZXRfc2VuZG1zZ19zcGt0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5MjM9c3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE5NDg6c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0OS1cdFx0XHQgICAgICAgc2l6ZV90IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQ2NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wc19zcGt0ID0ge1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY2My1cdC5zaHV0ZG93biA9XHRzb2NrX25vX3NodXRkb3duLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NjY0Olx0LnNlbmRtc2cgPVx0cGFja2V0X3NlbmRtc2dfc3BrdCxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY2NS1cdC5yZWN2bXNnID1cdHBhY2tldF9yZWN2bXNnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMDoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gdGhlIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBGdW5jdGlvbioqCgpIbW0sIHNvIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nIGluIGl0c2VsZi4gQnV0IGl0JiMzOTtzIGFsc28gZGVjbGFyZWQgYXMgYSBgcHJvdG9fb3BzYCBjYWxsYmFjay4gVGhhdCBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZSBhbmQgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3VlcyByaWdodCBhd2F5LiBBIHN0YXRpYyBmdW5jdGlvbiwgcGFydGljdWxhcmx5IGluIGEgY2FsbGJhY2sgc2l0dWF0aW9uIGxpa2UgdGhpcywgc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IHNjb3BlZCB0byBhIHNwZWNpZmljIG1vZHVsZSBvciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBvZmZlcnMgY2VydGFpbiBhZHZhbnRhZ2VzLiBCdXQgaXMgYHBhY2tldF9zbmRgIHN0YXRpYyB0b28/IFRoZSBsaW5rYWdlIG9mIHRoYXQgZnVuY3Rpb24gaXMgcmVsZXZhbnQgaW4gZGV0ZXJtaW5pbmcgdGhlIGNvbnN0cmFpbnRzIG9uIGhvdyBgcGFja2V0X3NlbmRtc2dfc3BrdGAgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCByZWxhdGlvbnNoaXAgdG8gdHJ1bHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBkZXNpZ24gZGVjaXNpb25zLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoaXMgYXJlIHNpZ25pZmljYW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWNrZXRfc25kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jPTI1MTE9c3RhdGljIHZvaWQgdHBhY2tldF9kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1MzAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI1MzE6c3RhdGljIGludCBfX3BhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKnZuZXRfaGRyLCBzaXplX3QgbGVuKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTMyLXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NDYtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI1NDc6c3RhdGljIGludCBwYWNrZXRfc25kX3ZuZXRfcGFyc2Uoc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgKmxlbixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjU0OC1cdFx0XHRcdCBzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKnZuZXRfaGRyLCBpbnQgdm5ldF9oZHJfc3opXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTU4LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTU5Olx0cmV0ID0gX19wYWNrZXRfc25kX3ZuZXRfcGFyc2Uodm5ldF9oZHIsICpsZW4pO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTYwLVx0aWYgKHJldClcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI2NTA9c3RhdGljIGludCB0cGFja2V0X3BhcnNlX2hlYWRlcihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3MTctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3MTg6c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3MTkte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjgzMC1cdFx0XHRtZW1jcHkoXHUwMDI2dm5ldF9oZHIsIGRhdGEgLSB2bmV0X2hkcl9zeiwgc2l6ZW9mKHZuZXRfaGRyKSk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI4MzE6XHRcdFx0aWYgKF9fcGFja2V0X3NuZF92bmV0X3BhcnNlKFx1MDAyNnZuZXRfaGRyLCB0cF9sZW4pKSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI4MzItXHRcdFx0XHR0cF9sZW4gPSAtRUlOVkFMO1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjkyMD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBhY2tldF9hbGxvY19za2Ioc3RydWN0IHNvY2sgKnNrLCBzaXplX3QgcHJlcGFkLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjk0NS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mjk0NjpzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yOTQ3LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMwMDItXHRpZiAodm5ldF9oZHJfc3opIHtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzAwMzpcdFx0ZXJyID0gcGFja2V0X3NuZF92bmV0X3BhcnNlKG1zZywgXHUwMDI2bGVuLCBcdTAwMjZ2bmV0X2hkciwgdm5ldF9oZHJfc3opO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMDA0LVx0XHRpZiAoZXJyKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MzEwND1zdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMDktXHQvKiBSZWFkaW5nIHR4X3JpbmcucGdfdmVjIHdpdGhvdXQgaG9sZGluZyBwZ192ZWNfbG9jayBpcyByYWN5LlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTEwOlx0ICogdHBhY2tldF9zbmQoKSB3aWxsIHJlZG8gdGhlIGNoZWNrIHNhZmVseS5cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzExMS1cdCAqL1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTEyLVx0aWYgKGRhdGFfcmFjZShwby1cdTAwM2V0eF9yaW5nLnBnX3ZlYykpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxMTM6XHRcdHJldHVybiB0cGFja2V0X3NuZChwbywgbXNnKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzExNC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzExNTpcdHJldHVybiBwYWNrZXRfc25kKHNvY2ssIG1zZywgbGVuKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzExNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIwOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NDUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgUGFja2V0IFRyYW5zbWlzc2lvbiBFbnRyeSBQb2ludCoqCgpPa2F5LCBzbyBgcGFja2V0X3NlbmRtc2dgIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkgaGVyZSwgaXQmIzM5O3MgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnQsIG9yIG1heWJlIGl0JiMzOTtzIGp1c3QgYWxpYXNlZCB0byBgc2VuZG1zZ2Agc3RhdGljYWxseS4gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gUmlnaHQgbm93LCBJIHNob3VsZCBkZWx2ZSBpbnRvIGBwYWNrZXRfc2VuZG1zZ2AuIEl0JiMzOTtzIHdoZXJlIHRoZSBwYWNrZXQgdHJhbnNtaXNzaW9uIHByb2Nlc3MgYWN0dWFsbHkgc3RhcnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCB0aGF0IHBvaW50IGFuZCBob3cgdGhpbmdzIGZsb3cgZnJvbSB0aGVyZS4gTGV0JiMzOTtzIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFja2V0X3NlbmRtc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTkyMz1zdGF0aWMgdm9pZCBwYWNrZXRfcGFyc2VfaGVhZGVycyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0Ny1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTk0ODpzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnX3Nwa3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTQ5LVx0XHRcdCAgICAgICBzaXplX3QgbGVuKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjcxOD1zdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3NDAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3NDE6XHQvKiBwYWNrZXRfc2VuZG1zZygpIGNoZWNrIG9uIHR4X3JpbmcucGdfdmVjIHdhcyBsb2NrbGVzcyxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjc0Mi1cdCAqIHdlIG5lZWQgdG8gY29uZmlybSBpdCB1bmRlciBwcm90ZWN0aW9uIG9mIHBnX3ZlY19sb2NrLlxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9Mjk0Nj1zdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEwMy1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzEwNDpzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEwNS17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00NjUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3BrdCA9IHtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ2NjMtXHQuc2h1dGRvd24gPVx0c29ja19ub19zaHV0ZG93bixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDY2NDpcdC5zZW5kbXNnID1cdHBhY2tldF9zZW5kbXNnX3Nwa3QsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ2NjUtXHQucmVjdm1zZyA9XHRwYWNrZXRfcmVjdm1zZyxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQ2Njk9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ2ODQtXHQuZ2V0c29ja29wdF9pdGVyID1cdHBhY2tldF9nZXRzb2Nrb3B0LFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0Njg1Olx0LnNlbmRtc2cgPVx0cGFja2V0X3NlbmRtc2csXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ2ODYtXHQucmVjdm1zZyA9XHRwYWNrZXRfcmVjdm1zZyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUyMQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIEFGX1BBQ0tFVCBTZW5kIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBgc2VuZG1zZ2Agd29ya3MgZm9yIGBBRl9QQUNLRVRgIHNvY2tldHMuIEkgc2VlIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIHVzZWQgZm9yIHRoZSBgc2VuZG1zZ2Agb3BlcmF0aW9uLiBUaGUgaW1wb3J0YW50IHRoaW5nIHRvIG5vdGUgaXMgdGhhdCB0aGVzZSBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLCB3aGljaCBtZWFucyB0aGV5IGFyZSB0aGUgYWN0dWFsIGVudHJ5IHBvaW50cywgYnV0IHRoZXkgYXJlIGxvY2FsaXplZC4KClRoZSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgbGV2ZXJhZ2UgYW55IG90aGVyICpub24tc3RhdGljKiBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmFtaWx5PyBBcmUgdGhlcmUgcGVyaGFwcyBhbnkgaW50ZXJtZWRpYXJ5IGZ1bmN0aW9ucyB0aGF0IGFyZSBleHBvc2VkIG1vcmUgd2lkZWx5PyBJZiBub3QsIHRoZW4gSSYjMzk7bGwgc2ltcGx5IGhhdmUgdG8gd29yayBkaXJlY3RseSB3aXRoIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMuCgpIYW5nIG9u4oCmIGp1c3QgYSBxdWljayBjb25maXJtYXRpb24sIGBwYWNrZXRfc2VuZG1zZ2AgaXMgKmluZGVlZCogc3RhdGljLiBPa2F5LCBubyBjb25mdXNpb24gdGhlcmUuIEFscmlnaHQsIHRoZSBtb3N0IGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGNhcmVmdWxseSBjaGVjayB0aGUgYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgIGZpbGUgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGEgbW9yZSBhcHByb3ByaWF0ZSBub24tc3RhdGljIG9wdGlvbi4gSSYjMzk7bGwgc2NhbiB0aHJvdWdoIGl0IGFuZCBzZWUgaWYgYW55dGhpbmcganVtcHMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgW2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxOQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipQYXR0ZXJuIFJlY29nbml0aW9uIGluIENvZGUgU25pcHBldHMqKgoKQWxyaWdodCwgSSBzZWUgYSBwYXR0ZXJuIGVtZXJnaW5nLiBUaGUgaGludCBnaXZlbiBpcyBgXnZvaWQgW2EtekEtWjAtOV9dJiM0MztcKGAuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGlzIGRyYXduIHRvIHRoZSBpbXBsaWNhdGlvbnMuIFRoZSBgXmAgYW5jaG9ycyB0aGUgc3RhcnQgb2YgdGhlIG1hdGNoLiBUaGF0JiMzOTtzIGdvb2QuIGB2b2lkYCBpcyBhIGNsZWFyIHR5cGUgZGVjbGFyYXRpb24uIEZyb20gYSBsYW5ndWFnZSBwZXJzcGVjdGl2ZSwgaXQgc2lnbmFscyBhIGZ1bmN0aW9uIHRoYXQgZG9lc24mIzM5O3QgcmV0dXJuIGEgdmFsdWUuIFRoZSBzdWJzZXF1ZW50IHNwYWNlIHJlaW5mb3JjZXMgdGhlIHR5cGUtZnVuY3Rpb24gc2VwYXJhdGlvbiB3aGljaCBtYWtlcyBtZSB0aGluayBvZiBDLCBDJiM0MzsmIzQzOywgb3Igc2ltaWxhciBsYW5ndWFnZXMuCgpUaGVuIHdlIGhhdmUgYFthLXpBLVowLTlfXSYjNDM7YC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJIHNlZSBhIGNoYXJhY3RlciBjbGFzcyByZXByZXNlbnRpbmcgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmVzLCByZXBlYXRlZCBvbmUgb3IgbW9yZSB0aW1lcywgd2hpY2ggZGlyZWN0bHkgc2lnbmlmaWVzIGEgZnVuY3Rpb24gbmFtZSBvciBhbiBpZGVudGlmaWVyIHVuZGVyIGVzdGFibGlzaGVkIG5hbWluZyBydWxlcy4gCgpGaW5hbGx5LCB0aGUgYFwoYCBpbmRpY2F0ZXMgYW4gb3BlbiBwYXJlbnRoZXNpcywgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGRlY2xhcmF0aW9uLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgd2F5IGluIEMtbGlrZSBsYW5ndWFnZXMuCgpUaGVyZWZvcmUsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiBkZXNpZ25lZCB0byBpZGVudGlmeSBmdW5jdGlvbiBzaWduYXR1cmVzIHdpdGhpbiBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IHRob3NlIHdpdGggYSBgdm9pZGAgcmV0dXJuIHR5cGUgYW5kIGEgc3RhbmRhcmQgYWxwaGFudW1lcmljIGZ1bmN0aW9uIG5hbWUuIEl0JiMzOTtzIGEgcmF0aGVyIHNwZWNpZmljIGFuZCBjb21tb24gcGF0dGVybi4gVGhpcyBoaW50cyBhdCBhIHBhcnNpbmcgb3IgY29kZSBhbmFseXNpcyB0YXNrLCBtYXliZSBpZGVudGlmeWluZyBmdW5jdGlvbnMgZm9yIHN0YXRpYyBhbmFseXNpcywgcmVmYWN0b3JpbmcsIG9yIGNvZGUgZ2VuZXJhdGlvbi4gSXQgd2lsbCBjYXB0dXJlIHRoZSBuYW1lIGFuZCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBmb3IgZnVydGhlciBwcm9jZXNzaW5nLiBJIHdvdWxkIG5lZWQgbW9yZSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGdvYWwgb2YgdGhlIHBhdHRlcm4gbWF0Y2hpbmcsIGJ1dCB0aGlzIGluaXRpYWwgYnJlYWtkb3duIGlzIGEgc291bmQgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIwOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnZvaWQgW2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMyOQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLCBleHByZXNzZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoYXQgUmVndWxhciBFeHByZXNzaW9uIFNuaXBwZXQqKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZXhwcmVzc2lvbiwgYF5zdGF0aWMgaW50IFthLXpBLVowLTlfXSYjNDM7XChgLCBhbmQgbXkgYnJhaW4gaXMgaW5zdGFudGx5IHBhcnNpbmcgaXQuIFRoZSBgXmAgYXQgdGhlIGJlZ2lubmluZyB0ZWxscyBtZSB0aGlzIGlzIG1lYW50IHRvIG1hdGNoIGZyb20gdGhlIHN0YXJ0IG9mIGEgbGluZSBvciBzdHJpbmcuIFRoYXQmIzM5O3MgZ29vZCwgc2V0cyBhIGNsZWFyIGFuY2hvci4gVGhlbiwgSSBzZWUgYHN0YXRpYyBpbnRgLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHdlJiMzOTtyZSBodW50aW5nIGZvciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMsIHNwZWNpZmljYWxseSBvbmVzIHRoYXQgYXJlIGBzdGF0aWNgIGFuZCByZXR1cm4gYW4gYGludGAuIE9rYXksIGNsYXNzaWMgQy9DJiM0MzsmIzQzOyBvciBzaW1pbGFyIGxhbmd1YWdlLCBwcm9iYWJseS4gVGhlIGAgYCAoc3BhY2UpIGlzIGltcG9ydGFudCBpbiBzdWNoIGNhc2VzLCBiZWNhdXNlIGl0IGRlbm90ZXMgdGhlIHNlcGFyYXRpbmcgb2YgdGhlICYjMzQ7c3RhdGljIGludCYjMzQ7IGZyb20gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLgoKVGhlIG1lYXQgb2YgaXQgaXMgdGhlIG5leHQgcGFydDogYFthLXpBLVowLTlfXSYjNDM7XChgLiBIZXJlLCBgW2EtekEtWjAtOV9dJiM0MztgIGlzIHRoZSBrZXkuIFRoYXQmIzM5O3MgYSBjaGFyYWN0ZXIgY2xhc3MgbWF0Y2hpbmcgb25lIG9yIG1vcmUgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmVzLiBUaGF0JiMzOTtzICpleGFjdGx5KiB3aGF0IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBtb3N0IEMtbGlrZSBsYW5ndWFnZXMgaXMuIEl0JiMzOTtzIGV4cGVjdGluZyBhIGZ1bmN0aW9uIGlkZW50aWZpZXIsIGJhc2ljYWxseS4gQW5kIHRoZSBgXGAgYmVmb3JlIHRoZSBgKGAgaXMgaW50ZXJlc3RpbmcsIGFzIGl0IGlzIGEgd2F5IHRvIGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMsIGluIHRoZSBjYXNlIG9mIHBhcmVudGhlc2lzLiBMYXN0bHksIHRoZSBgXChgLCB3ZWxsLCB0aGF0JiMzOTtzIHRoZSB0ZWxsLiBUaGF0IG9wZW4gcGFyZW50aGVzaXMgaXMgZXNzZW50aWFsOiBpdCBpbmRpY2F0ZXMgdGhlIGJlZ2lubmluZyBvZiBhIGZ1bmN0aW9uJiMzOTtzIHBhcmFtZXRlciBsaXN0LiBTbywgYWxsIHRvZ2V0aGVyLCB0aGlzIGxvb2tzIGxpa2UgYSByZWdleCBkZXNpZ25lZCB0byBpZGVudGlmeSBmdW5jdGlvbiBzaWduYXR1cmVzIGluIGNvZGUsIG9yIGF0IGxlYXN0IGEgcG9ydGlvbiBvZiB0aGVtLiBQZXJoYXBzIGEgcXVpY2sgd2F5IHRvIGZpbmQgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIGEgY29kZSBmaWxlPyBPciBhIHZlcnkgc3BlY2lmaWMgZnVuY3Rpb24gbmFtaW5nIGNvbnZlbnRpb24gY2hlY2s/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIwOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMgaW50IFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jPTE2Nz11bmlvbiB0cGFja2V0X3VoZHIge1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTczLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNzQ6c3RhdGljIGludCBwYWNrZXRfc2V0X3Jpbmcoc3RydWN0IHNvY2sgKnNrLCB1bmlvbiB0cGFja2V0X3JlcV91ICpyZXFfdSxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc1LVx0XHRpbnQgY2xvc2luZywgaW50IHR4X3JpbmcpO1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTkxPXN0cnVjdCBwYWNrZXRfc29jaztcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTkyOnN0YXRpYyBpbnQgdHBhY2tldF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTkzLVx0XHQgICAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfZGV2KTtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5OD1zdGF0aWMgdm9pZCBwYWNrZXRfaW5jcmVtZW50X2hlYWQoc3RydWN0IHBhY2tldF9yaW5nX2J1ZmZlciAqYnVmZik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE5OTpzdGF0aWMgaW50IHByYl9jdXJyX2Jsa19pbl91c2Uoc3RydWN0IHRwYWNrZXRfYmxvY2tfZGVzYyAqKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjAwLXN0YXRpYyB2b2lkICpwcmJfZGlzcGF0Y2hfbmV4dF9ibG9jayhzdHJ1Y3QgdHBhY2tldF9rYmRxX2NvcmUgKixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTIwMj1zdGF0aWMgdm9pZCBwcmJfcmV0aXJlX2N1cnJlbnRfYmxvY2soc3RydWN0IHRwYWNrZXRfa2JkcV9jb3JlICosXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIwMy1cdFx0c3RydWN0IHBhY2tldF9zb2NrICosIHVuc2lnbmVkIGludCBzdGF0dXMpO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyMDQ6c3RhdGljIGludCBwcmJfcXVldWVfZnJvemVuKHN0cnVjdCB0cGFja2V0X2tiZHFfY29yZSAqKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjA1LXN0YXRpYyB2b2lkIHByYl9vcGVuX2Jsb2NrKHN0cnVjdCB0cGFja2V0X2tiZHFfY29yZSAqLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjQ3PXN0YXRpYyBub2lubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqbmZfaG9va19kaXJlY3RfZWdyZXNzKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzItXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3MzpzdGF0aWMgaW50IHBhY2tldF94bWl0KGNvbnN0IHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3NC17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00MDA9c3RhdGljIHZvaWQgX19wYWNrZXRfc2V0X3N0YXR1cyhzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSwgaW50IHN0YXR1cylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQyNy1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDI4OnN0YXRpYyBpbnQgX19wYWNrZXRfZ2V0X3N0YXR1cyhjb25zdCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSlcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDI5LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTU4Mz1zdGF0aWMgdm9pZCBwcmJfc2h1dGRvd25fcmV0aXJlX2Jsa190aW1lcihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNTkxLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo1OTI6c3RhdGljIGludCBwcmJfY2FsY19yZXRpcmVfYmxrX3RtbyhzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy01OTMtXHRcdFx0XHRpbnQgYmxrX3NpemVfaW5fYnl0ZXMpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz05NDA9c3RhdGljIHZvaWQgcHJiX3JldGlyZV9jdXJyZW50X2Jsb2NrKHN0cnVjdCB0cGFja2V0X2tiZHFfY29yZSAqcGtjLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtOTY1LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo5NjY6c3RhdGljIGludCBwcmJfY3Vycl9ibGtfaW5fdXNlKHN0cnVjdCB0cGFja2V0X2Jsb2NrX2Rlc2MgKnBiZClcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtOTY3LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTk3MC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6OTcxOnN0YXRpYyBpbnQgcHJiX3F1ZXVlX2Zyb3plbihzdHJ1Y3QgdHBhY2tldF9rYmRxX2NvcmUgKnBrYylcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtOTcyLXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTExMjg9c3RhdGljIHZvaWQgKnByYl9sb29rdXBfYmxvY2soY29uc3Qgc3RydWN0IHBhY2tldF9zb2NrICpwbyxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTExNDAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjExNDE6c3RhdGljIGludCBwcmJfcHJldmlvdXNfYmxrX251bShzdHJ1Y3QgcGFja2V0X3JpbmdfYnVmZmVyICpyYilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTE0Mi17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xMjA4PXN0YXRpYyB1bnNpZ25lZCBpbnQgcGFja2V0X3JlYWRfcGVuZGluZyhjb25zdCBzdHJ1Y3QgcGFja2V0X3JpbmdfYnVmZmVyICpyYilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEyMjItXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjEyMjM6c3RhdGljIGludCBwYWNrZXRfYWxsb2NfcGVuZGluZyhzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMjI0LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTEyNTc9c3RhdGljIGJvb2wgX190cGFja2V0X3YzX2hhc19yb29tKGNvbnN0IHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIGludCBwb3dfb2ZmKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTI2OS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTI3MDpzdGF0aWMgaW50IF9fcGFja2V0X3Jjdl9oYXNfcm9vbShjb25zdCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMjcxLVx0XHRcdFx0IGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzAzLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxMzA0OnN0YXRpYyBpbnQgcGFja2V0X3Jjdl9oYXNfcm9vbShzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzA1LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE0NTE9c3RhdGljIGJvb2wgZmFub3V0X2hhc19mbGFnKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLCB1MTYgZmxhZylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NTUtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0NTY6c3RhdGljIGludCBwYWNrZXRfcmN2X2Zhbm91dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDU3LVx0XHRcdCAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfZGV2KVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTU2OD1zdGF0aWMgdm9pZCBfX2Zhbm91dF9zZXRfZGF0YV9icGYoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsIHN0cnVjdCBicGZfcHJvZyAqbmV3KVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU4Mi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTU4MzpzdGF0aWMgaW50IGZhbm91dF9zZXRfZGF0YV9jYnBmKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHNvY2twdHJfdCBkYXRhLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTg0LVx0XHRcdFx0dW5zaWduZWQgaW50IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MDQtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MDU6c3RhdGljIGludCBmYW5vdXRfc2V0X2RhdGFfZWJwZihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzb2NrcHRyX3QgZGF0YSxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYwNi1cdFx0XHRcdHVuc2lnbmVkIGludCBsZW4pXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjI1LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjI2OnN0YXRpYyBpbnQgZmFub3V0X3NldF9kYXRhKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHNvY2twdHJfdCBkYXRhLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjI3LVx0XHRcdCAgIHVuc2lnbmVkIGludCBsZW4pXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xNjYxPXN0YXRpYyBib29sIGZhbm91dF9maW5kX25ld19pZChzdHJ1Y3Qgc29jayAqc2ssIHUxNiAqbmV3X2lkKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY3Ny1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY3ODpzdGF0aWMgaW50IGZhbm91dF9hZGQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZmFub3V0X2FyZ3MgKmFyZ3MpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2Nzkte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTg1NT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzX3Nwa3Q7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4NTYtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4NTc6c3RhdGljIGludCBwYWNrZXRfcmN2X3Nwa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTg1OC1cdFx0XHQgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0LCBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19kZXYpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xOTIzPXN0YXRpYyB2b2lkIHBhY2tldF9wYXJzZV9oZWFkZXJzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrZXQgKnNvY2spXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTQ3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxOTQ4OnN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2dfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDktXHRcdFx0ICAgICAgIHNpemVfdCBsZW4pXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yMDc0PXN0YXRpYyB1bnNpZ25lZCBpbnQgcnVuX2ZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjA4OC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjA4OTpzdGF0aWMgaW50IHBhY2tldF9yY3Zfdm5ldChzdHJ1Y3QgbXNnaGRyICptc2csIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIwOTAtXHRcdFx0ICAgc2l6ZV90ICpsZW4sIGludCB2bmV0X2hkcl9zeilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIxMTUtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjIxMTY6c3RhdGljIGludCBwYWNrZXRfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIxMTctXHRcdCAgICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX2Rldilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIyMjgtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjIyMjk6c3RhdGljIGludCB0cGFja2V0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMjMwLVx0XHQgICAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfZGV2KVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjUxMT1zdGF0aWMgdm9pZCB0cGFja2V0X2Rlc3RydWN0X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjUzMC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjUzMTpzdGF0aWMgaW50IF9fcGFja2V0X3NuZF92bmV0X3BhcnNlKHN0cnVjdCB2aXJ0aW9fbmV0X2hkciAqdm5ldF9oZHIsIHNpemVfdCBsZW4pXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1MzIte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjU0Ni1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjU0NzpzdGF0aWMgaW50IHBhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCAqbGVuLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTQ4LVx0XHRcdFx0IHN0cnVjdCB2aXJ0aW9fbmV0X2hkciAqdm5ldF9oZHIsIGludCB2bmV0X2hkcl9zeilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NjktXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI1NzA6c3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NzEtXHRcdHZvaWQgKmZyYW1lLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBpbnQgdHBfbGVuLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjY0OS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjY1MDpzdGF0aWMgaW50IHRwYWNrZXRfcGFyc2VfaGVhZGVyKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHZvaWQgKmZyYW1lLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNjUxLVx0XHRcdFx0aW50IHNpemVfbWF4LCB2b2lkICoqZGF0YSlcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3MTctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3MTg6c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3MTkte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjkyMD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBhY2tldF9hbGxvY19za2Ioc3RydWN0IHNvY2sgKnNrLCBzaXplX3QgcHJlcGFkLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjk0NS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mjk0NjpzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yOTQ3LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMDMtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxMDQ6c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMDUte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEyMi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzEyMzpzdGF0aWMgaW50IHBhY2tldF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMjQte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzE5NS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzE5NjpzdGF0aWMgaW50IHBhY2tldF9kb19iaW5kKHN0cnVjdCBzb2NrICpzaywgY29uc3QgY2hhciAqbmFtZSwgaW50IGlmaW5kZXgsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxOTctXHRcdFx0ICBfX2JlMTYgcHJvdG8pXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMjg5LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMjkwOnN0YXRpYyBpbnQgcGFja2V0X2JpbmRfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdWFkZHIsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMyOTEtXHRcdFx0ICAgIGludCBhZGRyX2xlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMzMTEtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMzMTI6c3RhdGljIGludCBwYWNrZXRfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdWFkZHIsIGludCBhZGRyX2xlbilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzMxMy17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0zMzI5PXN0YXRpYyBzdHJ1Y3QgcHJvdG8gcGFja2V0X3Byb3RvID0ge1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzMzOC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzMzOTpzdGF0aWMgaW50IHBhY2tldF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMzNDAtXHRcdFx0IGludCBrZXJuKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzQxNi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzQxNzpzdGF0aWMgaW50IHBhY2tldF9yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzQxOC1cdFx0XHQgIGludCBmbGFncylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM1ODEtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM1ODI6c3RhdGljIGludCBwYWNrZXRfZ2V0bmFtZV9zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM1ODMtXHRcdFx0ICAgICAgIGludCBwZWVyKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzYwMS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzYwMjpzdGF0aWMgaW50IHBhY2tldF9nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM2MDMtXHRcdFx0ICBpbnQgcGVlcilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM2MzgtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM2Mzk6c3RhdGljIGludCBwYWNrZXRfZGV2X21jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwYWNrZXRfbWNsaXN0ICppLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNjQwLVx0XHRcdCBpbnQgd2hhdClcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTM2Njk9c3RhdGljIHZvaWQgcGFja2V0X2Rldl9tY2xpc3RfZGVsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNjgzLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNjg0OnN0YXRpYyBpbnQgcGFja2V0X21jX2FkZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwYWNrZXRfbXJlcV9tYXggKm1yZXEpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM2ODUte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzczOS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mzc0MDpzdGF0aWMgaW50IHBhY2tldF9tY19kcm9wKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHBhY2tldF9tcmVxX21heCAqbXJlcSlcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzc0MS17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0zNzg4PXBhY2tldF9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDU5LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MDYwOnN0YXRpYyBpbnQgcGFja2V0X2dldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDA2MS1cdFx0XHQgICAgIHNvY2tvcHRfdCAqb3B0KVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDE4NS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDE4NjpzdGF0aWMgaW50IHBhY2tldF9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQxODctXHRcdFx0ICAgdW5zaWduZWQgbG9uZyBtc2csIHZvaWQgKnB0cilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQyNDYtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQyNDc6c3RhdGljIGludCBwYWNrZXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDI0OC1cdFx0XHR1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQzOTI9c3RhdGljIHN0cnVjdCBwZ3YgKmFsbG9jX3BnX3ZlYyhzdHJ1Y3QgdHBhY2tldF9yZXEgKnJlcSwgaW50IG9yZGVyKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDQxNi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDQxNzpzdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NDE4LVx0XHRpbnQgY2xvc2luZywgaW50IHR4X3JpbmcpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NTg3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NTg4OnN0YXRpYyBpbnQgcGFja2V0X21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ1ODktXHRcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDcxNz1zdGF0aWMgdm9pZCBwYWNrZXRfc2VxX3N0b3Aoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzIyLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NzIzOnN0YXRpYyBpbnQgcGFja2V0X3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzI0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzMjEKCQkJCQkJCW91dHB1dDogMTM5CgkJCQkJCQl0aG91Z2h0czogODI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYXNvbmluZyBmb3IgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSB0aGUgb3B0aW1hbCBmdXp6aW5nIHN0cmF0ZWd5IGZvciB0aGlzIHBhdGNoLCBhbmQgSSBuZWVkIHRvIGJlIHByZWNpc2UuIFRoZSBwYXRjaCBtb2RpZmllcyBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIHdpdGhpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AuIFRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvbiBgQUZfUEFDS0VUYCBzb2NrZXRzLCBzcGVjaWZpY2FsbHkgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIGhvdyB0aGUgTUFDIGhlYWRlciBpcyBoYW5kbGVkLiBUaGUgY29yZSBjaGFuZ2UgaW52b2x2ZXMgdW5jb25kaXRpb25hbGx5IHJlc2V0dGluZyB0aGUgTUFDIGhlYWRlciB1c2luZyBgc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKWAsIHdoaWNoIHByZXZpb3VzbHkgZGVwZW5kZWQgb24gYSBjb25kaXRpb25hbCBjaGVjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGgsIG1lYW5pbmcgaXQmIzM5O3MgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGZvY3VzIG9uIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcyB0aGUga2V5IGVudHJ5IHBvaW50cy4gQnV0IEkgaGFkIHRvIGNvbmZpcm06IGFyZSBzdGF0aWMgZnVuY3Rpb25zIGxpa2UgdGhlc2UgdmlhYmxlIGZvY3VzIHN5bWJvbHMsIGNvbnNpZGVyaW5nIHRoZXkgbWlnaHQgYmUgaW5saW5lZD8gU3l6a2FsbGVyICpjYW4qIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zIGlmIHRoZXkgKmFyZW4mIzM5O3QqIGlubGluZWQuIExvb2tpbmcgYXQgdGhlIGNvZGUsIGJvdGggYHBhY2tldF9zZW5kbXNnYCBhbmQgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGFyZSBhc3NpZ25lZCB0byBgcHJvdG9fb3BzYCBzdHJ1Y3RzLiBUaGVpciBhZGRyZXNzZXMgYXJlIHRha2VuLCB3aGljaCBtZWFucyB0aGUgY29tcGlsZXIgKndvbiYjMzk7dCogaW5saW5lIHRoZW0uIFBlcmZlY3QsIHRoZXkgZml0IHRoZSBjcml0ZXJpYS4KClRoZSBwcm9tcHQsIGhvd2V2ZXIsIHJlcXVpcmVzIG1lIHRvIGFsc28gaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIHByb21wdCBhbHNvIG5vdGVzIHRvIG9taXQgJiMzNDtDT05GSUdfJiMzNDsgcHJlZml4LiBTbyBpdCBsb29rcyBsaWtlIGBDT05GSUdfUEFDS0VUYCBpcyB3aGF0IEkmIzM5O20gYWZ0ZXIsIGFuZCB0aGVyZWZvcmUsIEkgc2hvdWxkIHVzZSBgUEFDS0VUYCBhcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gSSYjMzk7dmUgZG91YmxlLWNoZWNrZWQsIGFuZCBgQ09ORklHX1BBQ0tFVGAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnIGhlcmUuCgpJIHRoZW4gZGlkIGEgcXVpY2sgYXVkaXQgdG8gY29uZmlybSB0aGF0IHRoZXNlIHR3byBlbnRyeXBvaW50cyBjb3ZlciBhbGwgcG90ZW50aWFsIGNhbGwgcGF0aHMuIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AgaXMgY2FsbGVkIGJ5IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBhbmQgYHBhY2tldF9zbmRgLiBgdHBhY2tldF9maWxsX3NrYmAgaXMgY2FsbGVkIGJ5IGB0cGFja2V0X3NuZGAsIGFuZCBgcGFja2V0X3NuZGAgaXMgY2FsbGVkIGJ5IGBwYWNrZXRfc2VuZG1zZ2AuIEltcG9ydGFudGx5LCBib3RoIGB0cGFja2V0X3NuZGAgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcmUgYWxzbyBjYWxsZWQgYnkgYHBhY2tldF9zZW5kbXNnYC4gU28sIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBkbywgaW5kZWVkLCBjb3ZlciB0aGUgY29tcGxldGUgcmVsZXZhbnQgZXhlY3V0aW9uIGZsb3cuIFRoZXkmIzM5O3JlIHRoZSBgc2VuZG1zZ2AgY2FsbGJhY2tzIGZvciB0aGUgYEFGX1BBQ0tFVGAgcHJvdG9jb2wgb3BlcmF0aW9ucy4KClNvLCBJJiMzOTttIGNvbmZpZGVudCBpbiBteSBzdHJhdGVneToKCiogICAqKkZvY3VzIFN5bWJvbHM6KiogYHBhY2tldF9zZW5kbXNnYCwgYHBhY2tldF9zZW5kbXNnX3Nwa3RgCiogICAqKkVuYWJsZSBDb25maWdzOioqIGBQQUNLRVRgCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGZ1enppbmcgdGhlc2UgZW50cnlwb2ludHMgd2lsbCBlZmZlY3RpdmVseSBleGVyY2lzZSB0aGUgbW9kaWZpZWQgY29kZS4gTm93LCBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnX3Nwa3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AsIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvbiBBRl9QQUNLRVQgc29ja2V0cy4gSXQgbW92ZXMgYHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYilgIG91dCBvZiBhbiBpZi1jb25kaXRpb24sIGVuc3VyaW5nIHRoZSBNQUMgaGVhZGVyIGlzIGFsd2F5cyByZXNldCBmb3IgYWxsIHNvY2tldCB0eXBlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRoIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQUNLRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwYWNrZXRfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtwYWNrZXRfc2VuZG1zZ19zcGt0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AgaW4gYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb24gQUZfUEFDS0VUIHNvY2tldHMuIEl0IG1vdmVzIGBza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpYCBvdXQgb2YgYW4gaWYtY29uZGl0aW9uLCBlbnN1cmluZyB0aGUgTUFDIGhlYWRlciBpcyBhbHdheXMgcmVzZXQgZm9yIGFsbCBzb2NrZXQgdHlwZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHBhY2tldCB0cmFuc21pc3Npb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjIxLjI5MDU4MTg0MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTA1MDk4MjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBBQ0tFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhY2tldF9zZW5kbXNnXCIsXG4gICAgXCJwYWNrZXRfc2VuZG1zZ19zcGt0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AsIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvbiBBRl9QQUNLRVQgc29ja2V0cy4gSXQgbW92ZXMgYHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYilgIG91dCBvZiBhbiBpZi1jb25kaXRpb24sIGVuc3VyaW5nIHRoZSBNQUMgaGVhZGVyIGlzIGFsd2F5cyByZXNldCBmb3IgYWxsIHNvY2tldCB0eXBlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRoIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODoyMS4yOTA1ODgyNzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNDY1MzE2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDhlZDNkODliNTU4YTYyMWU5ZTU3YmMwODcwODM1NzQ3ZjEyZDMwZTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMjUgMjA6Mjg6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcXG5pbmRleCBlNzVkMjkzMjQ3NWFjMC4uNWFlMDUxMWU4OWUzMmMgMTAwNjQ0XFxuLS0tIGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuY1xcbisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcXG5AQCAtMTkyNCwxMSArMTkyNCwxMiBAQCBzdGF0aWMgdm9pZCBwYWNrZXRfcGFyc2VfaGVhZGVycyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbiB7XFxuIFxcdGludCBkZXB0aDtcXG4gXFxuK1xcdC8qIE9uIFRYIHNrYi1cXHUwMDNlZGF0YSBpcyB0aGUgTDIgaGVhZGVyOyBhbmNob3IgaXQgZm9yIGFsbCBzb2NrZXQgdHlwZXMuICovXFxuK1xcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XFxuK1xcbiBcXHRpZiAoKCFza2ItXFx1MDAzZXByb3RvY29sIHx8IHNrYi1cXHUwMDNlcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfQUxMKSkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIHNvY2stXFx1MDAzZXR5cGUgPT0gU09DS19SQVcpIHtcXG4tXFx0XFx0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcXG4rXFx0ICAgIHNvY2stXFx1MDAzZXR5cGUgPT0gU09DS19SQVcpXFxuIFxcdFxcdHNrYi1cXHUwMDNlcHJvdG9jb2wgPSBkZXZfcGFyc2VfaGVhZGVyX3Byb3RvY29sKHNrYik7XFxuLVxcdH1cXG4gXFxuIFxcdC8qIE1vdmUgbmV0d29yayBoZWFkZXIgdG8gdGhlIHJpZ2h0IHBvc2l0aW9uIGZvciBWTEFOIHRhZ2dlZCBwYWNrZXRzICovXFxuIFxcdGlmIChsaWtlbHkoc2tiLVxcdTAwM2VkZXYtXFx1MDAzZXR5cGUgPT0gQVJQSFJEX0VUSEVSKSBcXHUwMDI2XFx1MDAyNlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODoyMi4wMDYwODY3ODFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NjE4OTU4MDQ2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQUNLRVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWNrZXRfc2VuZG1zZ1wiLFxuICAgIFwicGFja2V0X3NlbmRtc2dfc3BrdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AgaW4gYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb24gQUZfUEFDS0VUIHNvY2tldHMuIEl0IG1vdmVzIGBza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpYCBvdXQgb2YgYW4gaWYtY29uZGl0aW9uLCBlbnN1cmluZyB0aGUgTUFDIGhlYWRlciBpcyBhbHdheXMgcmVzZXQgZm9yIGFsbCBzb2NrZXQgdHlwZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHBhY2tldCB0cmFuc21pc3Npb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGVkM2Q4OWI1NThhNjIxZTllNTdiYzA4NzA4MzU3NDdmMTJkMzBlNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDIwOjI4OjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbmluZGV4IGU3NWQyOTMyNDc1YWMwLi41YWUwNTExZTg5ZTMyYyAxMDA2NDRcbi0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbkBAIC0xOTI0LDExICsxOTI0LDEyIEBAIHN0YXRpYyB2b2lkIHBhY2tldF9wYXJzZV9oZWFkZXJzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrZXQgKnNvY2spXG4ge1xuIFx0aW50IGRlcHRoO1xuIFxuK1x0LyogT24gVFggc2tiLVx1MDAzZWRhdGEgaXMgdGhlIEwyIGhlYWRlcjsgYW5jaG9yIGl0IGZvciBhbGwgc29ja2V0IHR5cGVzLiAqL1xuK1x0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcbitcbiBcdGlmICgoIXNrYi1cdTAwM2Vwcm90b2NvbCB8fCBza2ItXHUwMDNlcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfQUxMKSkgXHUwMDI2XHUwMDI2XG4tXHQgICAgc29jay1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKSB7XG4tXHRcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XG4rXHQgICAgc29jay1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKVxuIFx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBkZXZfcGFyc2VfaGVhZGVyX3Byb3RvY29sKHNrYik7XG4tXHR9XG4gXG4gXHQvKiBNb3ZlIG5ldHdvcmsgaGVhZGVyIHRvIHRoZSByaWdodCBwb3NpdGlvbiBmb3IgVkxBTiB0YWdnZWQgcGFja2V0cyAqL1xuIFx0aWYgKGxpa2VseShza2ItXHUwMDNlZGV2LVx1MDAzZXR5cGUgPT0gQVJQSFJEX0VUSEVSKSBcdTAwMjZcdTAwMjZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjIyLjAwNjA4ODM5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyNDQzNzk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFGX1BBQ0tFVCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRvdWNoZWQgYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGhhdmUgbW92ZWQgdGhlIGBza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO2AgY2FsbCBvdXQgb2YgdGhhdCBgaWZgIGJsb2NrIHdpdGhpbiBgcGFja2V0X3BhcnNlX2hlYWRlcnNgLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgbW9kaWZpY2F0aW9uIHRvIGhvdyB0aGUgcGFja2V0IHNvY2tldCB0cmFuc21pc3Npb24gcGF0aCBiZWhhdmVzLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AgaW4gYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZXhhY3QgY29udHJvbCBmbG93IHBhdGhzIGFmZmVjdGVkIGFuZCBhc3Nlc3MgdGhlIGltcGFjdCBvbiB0aGUgcGFja2V0IGhlYWRlciBwYXJzaW5nIGFuZCwgc3Vic2VxdWVudGx5LCB0aGUgU0tCJ3MgTUFDIGhlYWRlciBzZXR1cC4gVGhpcyBpcyBnb2luZyB0byBiZSBhYm91dCB0cmFjaW5nIHRoZSBsb2dpYyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgcmF0aW9uYWxlIGZvciBtb3ZpbmcgdGhhdCBmdW5jdGlvbiBjYWxsIOKAkyBsaWtlbHkgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIG9yIGNvcnJlY3RuZXNzIGFkanVzdG1lbnQuIEkgd2FudCB0byBzZWUgKndoeSogdGhpcyB3YXMgZG9uZSBhbmQgY29uZmlybSB0aGVyZSBhcmUgbm8gdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjI1LjUzMDUyOTY0N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE0NTk1NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFja2V0X3BhcnNlX2hlYWRlcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jPTE4NTc9c3RhdGljIGludCBwYWNrZXRfcmN2X3Nwa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTkyMi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE5MjM6c3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5MjQte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xOTQ4PXN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2dfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIwNjAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyMDYxOlxcdHBhY2tldF9wYXJzZV9oZWFkZXJzKHNrYiwgc29jayk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMDYyLVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yNTcwPXN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNjQ0LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjY0NTpcXHRwYWNrZXRfcGFyc2VfaGVhZGVycyhza2IsIHNvY2spO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjY0Ni1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9Mjk0Nj1zdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMDcyLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzA3MzpcXHRwYWNrZXRfcGFyc2VfaGVhZGVycyhza2IsIHNvY2spO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzA3NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6MjUuNjMxOTk1OTA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1MTYyNjkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBgcGFja2V0X3BhcnNlX2hlYWRlcnNgKipcblxuT2theSwgc28gYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpcyBjbGVhcmx5IGEga2V5IGZ1bmN0aW9uLiBJdCdzIGNhbGxlZCBmcm9tIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBhbmQgYHBhY2tldF9zbmRgLiBIbW0sIHRob3NlIGFsbCBzb3VuZCBsaWtlIGRpZmZlcmVudCB3YXlzIHRvIHNlbmQgcGFja2V0cyB2aWEgcGFja2V0IHNvY2tldHMg4oCTIGVzc2VudGlhbGx5LCB0aGUgc2VuZCBwYXRocy4gVGhpcyBtYWtlcyBpdCBhIGhpZ2gtcHJpb3JpdHkgYXJlYSB0byB1bmRlcnN0YW5kLiBUaGUgY2hhbmdlIEknbSBsb29raW5nIGF0ICppcyogZGVmaW5pdGVseSByZWFjaGFibGUsIHdoaWNoIGlzIGdvb2QuIE5vdywgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb25maWd1cmF0aW9uLiBJIHNob3VsZCBjaGVjayB0aGUgY29uZmlnIGZvciBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AgdG8gc2VlIGhvdyB0aGVzZSBkaWZmZXJlbnQgcGF0aHMgYXJlIHNldCB1cCBhbmQgaG93IGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIHBhY2tldCBzb2NrZXQgaW1wbGVtZW50YXRpb24uIFRpbWUgdG8gZ2V0IHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTEzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6MjguNjgzNjI1MzE1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTc5MzAxMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWZfcGFja2V0XFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9wYWNrZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3BhY2tldC9NYWtlZmlsZS01LVxcbm5ldC9wYWNrZXQvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUEFDS0VUKSArPSBhZl9wYWNrZXQub1xcbm5ldC9wYWNrZXQvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfUEFDS0VUX0RJQUcpICs9IGFmX3BhY2tldF9kaWFnLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6MzAuNDgxNTYyMzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI4ODAyODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0d29yayBQYWNrZXQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgQ09ORklHX1BBQ0tFVGAgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgZmxvdywgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBhcmUgaW52b2x2ZWQuIE15IGluaXRpYWwgdGFyZ2V0cywgdGhlIHN5bWJvbHMgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24sIGFyZSBgcGFja2V0X3NlbmRtc2dfc3BrdGAsIGB0cGFja2V0X2ZpbGxfc2tiYCwgYHBhY2tldF9zbmRgLCBhbmQgdGhlbiwgaW4gdGhlb3J5LCBgcGFja2V0X3BhcnNlX2hlYWRlcnNgLiBIbW0sIHdhaXQgYSBzZWNvbmQuIEkgcmVtZW1iZXIgbm93LCBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgSSBjYW4ndCBkaXJlY3RseSB0YXJnZXQgaXQuIEl0J3Mgb25seSBjYWxsYWJsZSB3aXRoaW4gdGhlIGZpbGUgaXQncyBkZWZpbmVkLiBUaGF0J3MgZmluZSwgdGhlICpjYWxsZXJzKiBvZiBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIGFyZSB3aGF0IEknbSBpbnRlcmVzdGVkIGluIVxuXG5TbywgdGhlIGNhbGxlcnMgYXJlLi4uIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBhbmQgYHBhY2tldF9zbmRgLiBIb2xkIG9uLCBgdHBhY2tldF9maWxsX3NrYmAgaXMgYWxzbyBzdGF0aWMhIFdoaWNoIG1lYW5zIEkgbmVlZCB0byBkaWcgZXZlbiBkZWVwZXIsIGFuZCBmaW5kIG91dCAqd2hvKiBjYWxscyAqdGhhdCogb25lLiBBaCwgb2theSwgYHRwYWNrZXRfc25kYCBjYWxscyBpdC4gR290IGl0LiBSaWdodCwgc28gbm93IHRoZSBzdHJhdGVneSBpcyBjbGVhci4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZSBsb29rIGF0IGB0cGFja2V0X3NuZGAsIGBwYWNrZXRfc25kYCwgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhbmQgc2VlIGhvdyB0aGV5IHdvcmsuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGJpZyBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjU5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjM0LjYxMDM2NzIwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTMzMzc4NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHBhY2tldF9maWxsX3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjU0Nz1zdGF0aWMgaW50IHBhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCAqbGVuLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTY5LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjU3MDpzdGF0aWMgaW50IHRwYWNrZXRfZmlsbF9za2Ioc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NzEtXFx0XFx0dm9pZCAqZnJhbWUsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIGludCB0cF9sZW4sXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI3MTg9c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI4NTAtXFx0XFx0fVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mjg1MTpcXHRcXHR0cF9sZW4gPSB0cGFja2V0X2ZpbGxfc2tiKHBvLCBza2IsIHBoLCBkZXYsIGRhdGEsIHRwX2xlbiwgcHJvdG8sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yODUyLVxcdFxcdFxcdFxcdFxcdCAgYWRkciwgaGxlbiwgY29weWxlbiwgXFx1MDAyNnNvY2tjKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6MzUuMDIzNzE0Njk4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2NTczODI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIFBhY2tldCBUcmFuc21pc3Npb24gU3ltYm9scyoqXG5cbkFscmlnaHQsIEknbSB6ZXJvaW5nIGluIG9uIHRoZSBrZXJuZWwgc3ltYm9scyByZWxhdGVkIHRvIHBhY2tldCB0cmFuc21pc3Npb246IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfc25kYCwgYW5kIGBwYWNrZXRfc25kYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBuYXR1cmUgb2YgYHBhY2tldF9zZW5kbXNnX3Nwa3RgLiBIb2xkIG9uLCBhIHN0YXRpYyBmdW5jdGlvbiwgSSdkIGJldHRlciBjb25maXJtIHRoYXQuIEl0IGxvb2tzIGxpa2UgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGlzIGdvaW5nIHRvIGJlIHNvbWV0aGluZyB2ZXJ5IHNwZWNpZmljIHRoYXQgZ2V0cyByZXNvbHZlZCBhdCBjb21waWxlIHRpbWUsIHNvbWV0aGluZyB0aGF0IG1heSBiZSBoaWdobHkgcmVsZXZhbnQgdG8gbG93LWxldmVsIHBhY2tldCBwcm9jZXNzaW5nIGVmZmljaWVuY3ksIG9yIHBlcmhhcHMgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWNzIG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrIGJlaW5nIHVzZWQuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGFuZCBjb25maXJtIHRoYXQgc3RhdGljIHF1YWxpZmllciBhbmQgdGhlbiBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIGlmIGl0IGlzIGluZGVlZCBzdGF0aWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODozOC40ODk0NTU0NjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjI3ODYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWNrZXRfc2VuZG1zZ19zcGt0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xOTIzPXN0YXRpYyB2b2lkIHBhY2tldF9wYXJzZV9oZWFkZXJzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDctXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxOTQ4OnN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2dfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTQ5LVxcdFxcdFxcdCAgICAgICBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00NjUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3BrdCA9IHtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY2My1cXHQuc2h1dGRvd24gPVxcdHNvY2tfbm9fc2h1dGRvd24sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NjY0OlxcdC5zZW5kbXNnID1cXHRwYWNrZXRfc2VuZG1zZ19zcGt0LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY2NS1cXHQucmVjdm1zZyA9XFx0cGFja2V0X3JlY3Ztc2csXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjM4LjYyNTczOTg5OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTEyNDgzMzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIEZ1bmN0aW9uKipcblxuSG1tLCBzbyBgcGFja2V0X3NlbmRtc2dfc3BrdGAgaXMgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZyBpbiBpdHNlbGYuIEJ1dCBpdCdzIGFsc28gZGVjbGFyZWQgYXMgYSBgcHJvdG9fb3BzYCBjYWxsYmFjay4gVGhhdCBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZSBhbmQgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3VlcyByaWdodCBhd2F5LiBBIHN0YXRpYyBmdW5jdGlvbiwgcGFydGljdWxhcmx5IGluIGEgY2FsbGJhY2sgc2l0dWF0aW9uIGxpa2UgdGhpcywgc3VnZ2VzdHMgaXQncyBsaWtlbHkgc2NvcGVkIHRvIGEgc3BlY2lmaWMgbW9kdWxlIG9yIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIG9mZmVycyBjZXJ0YWluIGFkdmFudGFnZXMuIEJ1dCBpcyBgcGFja2V0X3NuZGAgc3RhdGljIHRvbz8gVGhlIGxpbmthZ2Ugb2YgdGhhdCBmdW5jdGlvbiBpcyByZWxldmFudCBpbiBkZXRlcm1pbmluZyB0aGUgY29uc3RyYWludHMgb24gaG93IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHJlbGF0aW9uc2hpcCB0byB0cnVseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGRlc2lnbiBkZWNpc2lvbnMuIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcmUgc2lnbmlmaWNhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODo0MS43MzgyMjU3MzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwOTIxNjA1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWNrZXRfc25kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yNTExPXN0YXRpYyB2b2lkIHRwYWNrZXRfZGVzdHJ1Y3Rfc2tiKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1MzAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTMxOnN0YXRpYyBpbnQgX19wYWNrZXRfc25kX3ZuZXRfcGFyc2Uoc3RydWN0IHZpcnRpb19uZXRfaGRyICp2bmV0X2hkciwgc2l6ZV90IGxlbilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1MzIte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTQ2LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjU0NzpzdGF0aWMgaW50IHBhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCAqbGVuLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjU0OC1cXHRcXHRcXHRcXHQgc3RydWN0IHZpcnRpb19uZXRfaGRyICp2bmV0X2hkciwgaW50IHZuZXRfaGRyX3N6KVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTU4LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjU1OTpcXHRyZXQgPSBfX3BhY2tldF9zbmRfdm5ldF9wYXJzZSh2bmV0X2hkciwgKmxlbik7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTYwLVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI2NTA9c3RhdGljIGludCB0cGFja2V0X3BhcnNlX2hlYWRlcihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSxcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjcxNy1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3MTg6c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzE5LXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjgzMC1cXHRcXHRcXHRtZW1jcHkoXFx1MDAyNnZuZXRfaGRyLCBkYXRhIC0gdm5ldF9oZHJfc3osIHNpemVvZih2bmV0X2hkcikpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjgzMTpcXHRcXHRcXHRpZiAoX19wYWNrZXRfc25kX3ZuZXRfcGFyc2UoXFx1MDAyNnZuZXRfaGRyLCB0cF9sZW4pKSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yODMyLVxcdFxcdFxcdFxcdHRwX2xlbiA9IC1FSU5WQUw7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI5MjA9c3RhdGljIHN0cnVjdCBza19idWZmICpwYWNrZXRfYWxsb2Nfc2tiKHN0cnVjdCBzb2NrICpzaywgc2l6ZV90IHByZXBhZCxcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjk0NS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI5NDY6c3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI5NDcte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMDAyLVxcdGlmICh2bmV0X2hkcl9zeikge1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzAwMzpcXHRcXHRlcnIgPSBwYWNrZXRfc25kX3ZuZXRfcGFyc2UobXNnLCBcXHUwMDI2bGVuLCBcXHUwMDI2dm5ldF9oZHIsIHZuZXRfaGRyX3N6KTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMwMDQtXFx0XFx0aWYgKGVycilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MzEwND1zdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEwOS1cXHQvKiBSZWFkaW5nIHR4X3JpbmcucGdfdmVjIHdpdGhvdXQgaG9sZGluZyBwZ192ZWNfbG9jayBpcyByYWN5Llxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzExMDpcXHQgKiB0cGFja2V0X3NuZCgpIHdpbGwgcmVkbyB0aGUgY2hlY2sgc2FmZWx5Llxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzExMS1cXHQgKi9cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMTItXFx0aWYgKGRhdGFfcmFjZShwby1cXHUwMDNldHhfcmluZy5wZ192ZWMpKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzExMzpcXHRcXHRyZXR1cm4gdHBhY2tldF9zbmQocG8sIG1zZyk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTE0LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzExNTpcXHRyZXR1cm4gcGFja2V0X3NuZChzb2NrLCBtc2csIGxlbik7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTE2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6NDIuMTQ3NDUwODg0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2ODY4MDg2OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIFBhY2tldCBUcmFuc21pc3Npb24gRW50cnkgUG9pbnQqKlxuXG5Pa2F5LCBzbyBgcGFja2V0X3NlbmRtc2dgIOKAkyB0aGF0J3MgdGhlIGtleSBoZXJlLCBpdCdzIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50LCBvciBtYXliZSBpdCdzIGp1c3QgYWxpYXNlZCB0byBgc2VuZG1zZ2Agc3RhdGljYWxseS4gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gUmlnaHQgbm93LCBJIHNob3VsZCBkZWx2ZSBpbnRvIGBwYWNrZXRfc2VuZG1zZ2AuIEl0J3Mgd2hlcmUgdGhlIHBhY2tldCB0cmFuc21pc3Npb24gcHJvY2VzcyBhY3R1YWxseSBzdGFydHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYXQgdGhhdCBwb2ludCBhbmQgaG93IHRoaW5ncyBmbG93IGZyb20gdGhlcmUuIExldCdzIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc0NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjQ0LjgzNDI2MTc5M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkzMTk5OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFja2V0X3NlbmRtc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5MjM9c3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaylcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0Ny1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE5NDg6c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDktXFx0XFx0XFx0ICAgICAgIHNpemVfdCBsZW4pXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI3MTg9c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3NDAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNzQxOlxcdC8qIHBhY2tldF9zZW5kbXNnKCkgY2hlY2sgb24gdHhfcmluZy5wZ192ZWMgd2FzIGxvY2tsZXNzLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjc0Mi1cXHQgKiB3ZSBuZWVkIHRvIGNvbmZpcm0gaXQgdW5kZXIgcHJvdGVjdGlvbiBvZiBwZ192ZWNfbG9jay5cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9Mjk0Nj1zdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTAzLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzEwNDpzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMDUte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00NjUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3BrdCA9IHtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY2My1cXHQuc2h1dGRvd24gPVxcdHNvY2tfbm9fc2h1dGRvd24sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NjY0OlxcdC5zZW5kbXNnID1cXHRwYWNrZXRfc2VuZG1zZ19zcGt0LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY2NS1cXHQucmVjdm1zZyA9XFx0cGFja2V0X3JlY3Ztc2csXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQ2Njk9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY4NC1cXHQuZ2V0c29ja29wdF9pdGVyID1cXHRwYWNrZXRfZ2V0c29ja29wdCxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ2ODU6XFx0LnNlbmRtc2cgPVxcdHBhY2tldF9zZW5kbXNnLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY4Ni1cXHQucmVjdm1zZyA9XFx0cGFja2V0X3JlY3Ztc2csXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjQ0LjkwMzU4ODEzNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQwNzk0MTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgQUZfUEFDS0VUIFNlbmQgUGF0aCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBgc2VuZG1zZ2Agd29ya3MgZm9yIGBBRl9QQUNLRVRgIHNvY2tldHMuIEkgc2VlIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIHVzZWQgZm9yIHRoZSBgc2VuZG1zZ2Agb3BlcmF0aW9uLiBUaGUgaW1wb3J0YW50IHRoaW5nIHRvIG5vdGUgaXMgdGhhdCB0aGVzZSBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLCB3aGljaCBtZWFucyB0aGV5IGFyZSB0aGUgYWN0dWFsIGVudHJ5IHBvaW50cywgYnV0IHRoZXkgYXJlIGxvY2FsaXplZC5cblxuVGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gSSBsZXZlcmFnZSBhbnkgb3RoZXIgKm5vbi1zdGF0aWMqIGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBmYW1pbHk/IEFyZSB0aGVyZSBwZXJoYXBzIGFueSBpbnRlcm1lZGlhcnkgZnVuY3Rpb25zIHRoYXQgYXJlIGV4cG9zZWQgbW9yZSB3aWRlbHk/IElmIG5vdCwgdGhlbiBJJ2xsIHNpbXBseSBoYXZlIHRvIHdvcmsgZGlyZWN0bHkgd2l0aCB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zLlxuXG5IYW5nIG9u4oCmIGp1c3QgYSBxdWljayBjb25maXJtYXRpb24sIGBwYWNrZXRfc2VuZG1zZ2AgaXMgKmluZGVlZCogc3RhdGljLiBPa2F5LCBubyBjb25mdXNpb24gdGhlcmUuIEFscmlnaHQsIHRoZSBtb3N0IGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGNhcmVmdWxseSBjaGVjayB0aGUgYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgIGZpbGUgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBtb3JlIGFwcHJvcHJpYXRlIG5vbi1zdGF0aWMgb3B0aW9uLiBJJ2xsIHNjYW4gdGhyb3VnaCBpdCBhbmQgc2VlIGlmIGFueXRoaW5nIGp1bXBzIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUyMSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODo0OC45NDQzODQ2NDhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0ODU5NjU1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IFthLXpBLVowLTlfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODo0OS4wMDkyNTIzNDJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyNTE0Nzc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlBhdHRlcm4gUmVjb2duaXRpb24gaW4gQ29kZSBTbmlwcGV0cyoqXG5cbkFscmlnaHQsIEkgc2VlIGEgcGF0dGVybiBlbWVyZ2luZy4gVGhlIGhpbnQgZ2l2ZW4gaXMgYF52b2lkIFthLXpBLVowLTlfXStcXChgLiBJbW1lZGlhdGVseSwgbXkgbWluZCBpcyBkcmF3biB0byB0aGUgaW1wbGljYXRpb25zLiBUaGUgYF5gIGFuY2hvcnMgdGhlIHN0YXJ0IG9mIHRoZSBtYXRjaC4gVGhhdCdzIGdvb2QuIGB2b2lkYCBpcyBhIGNsZWFyIHR5cGUgZGVjbGFyYXRpb24uIEZyb20gYSBsYW5ndWFnZSBwZXJzcGVjdGl2ZSwgaXQgc2lnbmFscyBhIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCByZXR1cm4gYSB2YWx1ZS4gVGhlIHN1YnNlcXVlbnQgc3BhY2UgcmVpbmZvcmNlcyB0aGUgdHlwZS1mdW5jdGlvbiBzZXBhcmF0aW9uIHdoaWNoIG1ha2VzIG1lIHRoaW5rIG9mIEMsIEMrKywgb3Igc2ltaWxhciBsYW5ndWFnZXMuXG5cblRoZW4gd2UgaGF2ZSBgW2EtekEtWjAtOV9dK2AuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSBzZWUgYSBjaGFyYWN0ZXIgY2xhc3MgcmVwcmVzZW50aW5nIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCB1bmRlcnNjb3JlcywgcmVwZWF0ZWQgb25lIG9yIG1vcmUgdGltZXMsIHdoaWNoIGRpcmVjdGx5IHNpZ25pZmllcyBhIGZ1bmN0aW9uIG5hbWUgb3IgYW4gaWRlbnRpZmllciB1bmRlciBlc3RhYmxpc2hlZCBuYW1pbmcgcnVsZXMuIFxuXG5GaW5hbGx5LCB0aGUgYFxcKGAgaW5kaWNhdGVzIGFuIG9wZW4gcGFyZW50aGVzaXMsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBkZWNsYXJhdGlvbi4gSXQncyB0aGUgc3RhbmRhcmQgd2F5IGluIEMtbGlrZSBsYW5ndWFnZXMuXG5cblRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIGRlc2lnbmVkIHRvIGlkZW50aWZ5IGZ1bmN0aW9uIHNpZ25hdHVyZXMgd2l0aGluIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgdGhvc2Ugd2l0aCBhIGB2b2lkYCByZXR1cm4gdHlwZSBhbmQgYSBzdGFuZGFyZCBhbHBoYW51bWVyaWMgZnVuY3Rpb24gbmFtZS4gSXQncyBhIHJhdGhlciBzcGVjaWZpYyBhbmQgY29tbW9uIHBhdHRlcm4uIFRoaXMgaGludHMgYXQgYSBwYXJzaW5nIG9yIGNvZGUgYW5hbHlzaXMgdGFzaywgbWF5YmUgaWRlbnRpZnlpbmcgZnVuY3Rpb25zIGZvciBzdGF0aWMgYW5hbHlzaXMsIHJlZmFjdG9yaW5nLCBvciBjb2RlIGdlbmVyYXRpb24uIEl0IHdpbGwgY2FwdHVyZSB0aGUgbmFtZSBhbmQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb24gZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZy4gSSB3b3VsZCBuZWVkIG1vcmUgY29udGV4dCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBnb2FsIG9mIHRoZSBwYXR0ZXJuIG1hdGNoaW5nLCBidXQgdGhpcyBpbml0aWFsIGJyZWFrZG93biBpcyBhIHNvdW5kIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTE5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6NTIuOTM0NDAyNjE0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgwNjAxMDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl52b2lkIFthLXpBLVowLTlfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODo1My4wNjI0NzEzMTNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzNjMwNTQwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIGV4cHJlc3NlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGF0IFJlZ3VsYXIgRXhwcmVzc2lvbiBTbmlwcGV0KipcblxuQWxyaWdodCwgSSdtIGxvb2tpbmcgYXQgdGhpcyBleHByZXNzaW9uLCBgXnN0YXRpYyBpbnQgW2EtekEtWjAtOV9dK1xcKGAsIGFuZCBteSBicmFpbiBpcyBpbnN0YW50bHkgcGFyc2luZyBpdC4gVGhlIGBeYCBhdCB0aGUgYmVnaW5uaW5nIHRlbGxzIG1lIHRoaXMgaXMgbWVhbnQgdG8gbWF0Y2ggZnJvbSB0aGUgc3RhcnQgb2YgYSBsaW5lIG9yIHN0cmluZy4gVGhhdCdzIGdvb2QsIHNldHMgYSBjbGVhciBhbmNob3IuIFRoZW4sIEkgc2VlIGBzdGF0aWMgaW50YC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB3ZSdyZSBodW50aW5nIGZvciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMsIHNwZWNpZmljYWxseSBvbmVzIHRoYXQgYXJlIGBzdGF0aWNgIGFuZCByZXR1cm4gYW4gYGludGAuIE9rYXksIGNsYXNzaWMgQy9DKysgb3Igc2ltaWxhciBsYW5ndWFnZSwgcHJvYmFibHkuIFRoZSBgIGAgKHNwYWNlKSBpcyBpbXBvcnRhbnQgaW4gc3VjaCBjYXNlcywgYmVjYXVzZSBpdCBkZW5vdGVzIHRoZSBzZXBhcmF0aW5nIG9mIHRoZSBcInN0YXRpYyBpbnRcIiBmcm9tIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS5cblxuVGhlIG1lYXQgb2YgaXQgaXMgdGhlIG5leHQgcGFydDogYFthLXpBLVowLTlfXStcXChgLiBIZXJlLCBgW2EtekEtWjAtOV9dK2AgaXMgdGhlIGtleS4gVGhhdCdzIGEgY2hhcmFjdGVyIGNsYXNzIG1hdGNoaW5nIG9uZSBvciBtb3JlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCB1bmRlcnNjb3Jlcy4gVGhhdCdzICpleGFjdGx5KiB3aGF0IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBtb3N0IEMtbGlrZSBsYW5ndWFnZXMgaXMuIEl0J3MgZXhwZWN0aW5nIGEgZnVuY3Rpb24gaWRlbnRpZmllciwgYmFzaWNhbGx5LiBBbmQgdGhlIGBcXGAgYmVmb3JlIHRoZSBgKGAgaXMgaW50ZXJlc3RpbmcsIGFzIGl0IGlzIGEgd2F5IHRvIGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMsIGluIHRoZSBjYXNlIG9mIHBhcmVudGhlc2lzLiBMYXN0bHksIHRoZSBgXFwoYCwgd2VsbCwgdGhhdCdzIHRoZSB0ZWxsLiBUaGF0IG9wZW4gcGFyZW50aGVzaXMgaXMgZXNzZW50aWFsOiBpdCBpbmRpY2F0ZXMgdGhlIGJlZ2lubmluZyBvZiBhIGZ1bmN0aW9uJ3MgcGFyYW1ldGVyIGxpc3QuIFNvLCBhbGwgdG9nZXRoZXIsIHRoaXMgbG9va3MgbGlrZSBhIHJlZ2V4IGRlc2lnbmVkIHRvIGlkZW50aWZ5IGZ1bmN0aW9uIHNpZ25hdHVyZXMgaW4gY29kZSwgb3IgYXQgbGVhc3QgYSBwb3J0aW9uIG9mIHRoZW0uIFBlcmhhcHMgYSBxdWljayB3YXkgdG8gZmluZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gYSBjb2RlIGZpbGU/IE9yIGEgdmVyeSBzcGVjaWZpYyBmdW5jdGlvbiBuYW1pbmcgY29udmVudGlvbiBjaGVjaz9cblxuXG4iLCJJbnB1dFRva2VucyI6NzMyOSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjU2Ljk5ODc3OTIxNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDExODE5MTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgaW50IFthLXpBLVowLTlfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTY3PXVuaW9uIHRwYWNrZXRfdWhkciB7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3My1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3NDpzdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc1LVxcdFxcdGludCBjbG9zaW5nLCBpbnQgdHhfcmluZyk7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5MT1zdHJ1Y3QgcGFja2V0X3NvY2s7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxOTI6c3RhdGljIGludCB0cGFja2V0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTkzLVxcdFxcdCAgICAgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0LCBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19kZXYpO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xOTg9c3RhdGljIHZvaWQgcGFja2V0X2luY3JlbWVudF9oZWFkKHN0cnVjdCBwYWNrZXRfcmluZ19idWZmZXIgKmJ1ZmYpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTk5OnN0YXRpYyBpbnQgcHJiX2N1cnJfYmxrX2luX3VzZShzdHJ1Y3QgdHBhY2tldF9ibG9ja19kZXNjICopO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjAwLXN0YXRpYyB2b2lkICpwcmJfZGlzcGF0Y2hfbmV4dF9ibG9jayhzdHJ1Y3QgdHBhY2tldF9rYmRxX2NvcmUgKixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjAyPXN0YXRpYyB2b2lkIHByYl9yZXRpcmVfY3VycmVudF9ibG9jayhzdHJ1Y3QgdHBhY2tldF9rYmRxX2NvcmUgKixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIwMy1cXHRcXHRzdHJ1Y3QgcGFja2V0X3NvY2sgKiwgdW5zaWduZWQgaW50IHN0YXR1cyk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyMDQ6c3RhdGljIGludCBwcmJfcXVldWVfZnJvemVuKHN0cnVjdCB0cGFja2V0X2tiZHFfY29yZSAqKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIwNS1zdGF0aWMgdm9pZCBwcmJfb3Blbl9ibG9jayhzdHJ1Y3QgdHBhY2tldF9rYmRxX2NvcmUgKixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjQ3PXN0YXRpYyBub2lubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqbmZfaG9va19kaXJlY3RfZWdyZXNzKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3Mi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3MzpzdGF0aWMgaW50IHBhY2tldF94bWl0KGNvbnN0IHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzQte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00MDA9c3RhdGljIHZvaWQgX19wYWNrZXRfc2V0X3N0YXR1cyhzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSwgaW50IHN0YXR1cylcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDI3LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDI4OnN0YXRpYyBpbnQgX19wYWNrZXRfZ2V0X3N0YXR1cyhjb25zdCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSlcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQyOS17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTU4Mz1zdGF0aWMgdm9pZCBwcmJfc2h1dGRvd25fcmV0aXJlX2Jsa190aW1lcihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy01OTEtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo1OTI6c3RhdGljIGludCBwcmJfY2FsY19yZXRpcmVfYmxrX3RtbyhzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNTkzLVxcdFxcdFxcdFxcdGludCBibGtfc2l6ZV9pbl9ieXRlcylcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9OTQwPXN0YXRpYyB2b2lkIHByYl9yZXRpcmVfY3VycmVudF9ibG9jayhzdHJ1Y3QgdHBhY2tldF9rYmRxX2NvcmUgKnBrYyxcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtOTY1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6OTY2OnN0YXRpYyBpbnQgcHJiX2N1cnJfYmxrX2luX3VzZShzdHJ1Y3QgdHBhY2tldF9ibG9ja19kZXNjICpwYmQpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy05Njcte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy05NzAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo5NzE6c3RhdGljIGludCBwcmJfcXVldWVfZnJvemVuKHN0cnVjdCB0cGFja2V0X2tiZHFfY29yZSAqcGtjKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtOTcyLXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTEyOD1zdGF0aWMgdm9pZCAqcHJiX2xvb2t1cF9ibG9jayhjb25zdCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMTQwLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTE0MTpzdGF0aWMgaW50IHByYl9wcmV2aW91c19ibGtfbnVtKHN0cnVjdCBwYWNrZXRfcmluZ19idWZmZXIgKnJiKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTE0Mi17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTEyMDg9c3RhdGljIHVuc2lnbmVkIGludCBwYWNrZXRfcmVhZF9wZW5kaW5nKGNvbnN0IHN0cnVjdCBwYWNrZXRfcmluZ19idWZmZXIgKnJiKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMjIyLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTIyMzpzdGF0aWMgaW50IHBhY2tldF9hbGxvY19wZW5kaW5nKHN0cnVjdCBwYWNrZXRfc29jayAqcG8pXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMjI0LXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTI1Nz1zdGF0aWMgYm9vbCBfX3RwYWNrZXRfdjNfaGFzX3Jvb20oY29uc3Qgc3RydWN0IHBhY2tldF9zb2NrICpwbywgaW50IHBvd19vZmYpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEyNjktXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxMjcwOnN0YXRpYyBpbnQgX19wYWNrZXRfcmN2X2hhc19yb29tKGNvbnN0IHN0cnVjdCBwYWNrZXRfc29jayAqcG8sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMjcxLVxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzAzLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTMwNDpzdGF0aWMgaW50IHBhY2tldF9yY3ZfaGFzX3Jvb20oc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzMDUte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xNDUxPXN0YXRpYyBib29sIGZhbm91dF9oYXNfZmxhZyhzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZiwgdTE2IGZsYWcpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NTUtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDU2OnN0YXRpYyBpbnQgcGFja2V0X3Jjdl9mYW5vdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NTctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0LCBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19kZXYpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE1Njg9c3RhdGljIHZvaWQgX19mYW5vdXRfc2V0X2RhdGFfYnBmKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLCBzdHJ1Y3QgYnBmX3Byb2cgKm5ldylcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU4Mi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1ODM6c3RhdGljIGludCBmYW5vdXRfc2V0X2RhdGFfY2JwZihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzb2NrcHRyX3QgZGF0YSxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1ODQtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGxlbilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYwNC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MDU6c3RhdGljIGludCBmYW5vdXRfc2V0X2RhdGFfZWJwZihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzb2NrcHRyX3QgZGF0YSxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MDYtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGxlbilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYyNS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MjY6c3RhdGljIGludCBmYW5vdXRfc2V0X2RhdGEoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc29ja3B0cl90IGRhdGEsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjI3LVxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBsZW4pXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE2NjE9c3RhdGljIGJvb2wgZmFub3V0X2ZpbmRfbmV3X2lkKHN0cnVjdCBzb2NrICpzaywgdTE2ICpuZXdfaWQpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NzctXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjc4OnN0YXRpYyBpbnQgZmFub3V0X2FkZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmYW5vdXRfYXJncyAqYXJncylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2Nzkte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xODU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3BrdDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4NTYtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODU3OnN0YXRpYyBpbnQgcGFja2V0X3Jjdl9zcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODU4LVxcdFxcdFxcdCAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX2RldilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTkyMz1zdGF0aWMgdm9pZCBwYWNrZXRfcGFyc2VfaGVhZGVycyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTQ3LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTk0ODpzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnX3Nwa3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0OS1cXHRcXHRcXHQgICAgICAgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjA3ND1zdGF0aWMgdW5zaWduZWQgaW50IHJ1bl9maWx0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjA4OC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjIwODk6c3RhdGljIGludCBwYWNrZXRfcmN2X3ZuZXQoc3RydWN0IG1zZ2hkciAqbXNnLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjA5MC1cXHRcXHRcXHQgICBzaXplX3QgKmxlbiwgaW50IHZuZXRfaGRyX3N6KVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMTE1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjExNjpzdGF0aWMgaW50IHBhY2tldF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIxMTctXFx0XFx0ICAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfZGV2KVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMjI4LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjIyOTpzdGF0aWMgaW50IHRwYWNrZXRfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMjMwLVxcdFxcdCAgICAgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0LCBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19kZXYpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI1MTE9c3RhdGljIHZvaWQgdHBhY2tldF9kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjUzMC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI1MzE6c3RhdGljIGludCBfX3BhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKnZuZXRfaGRyLCBzaXplX3QgbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjUzMi17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NDYtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTQ3OnN0YXRpYyBpbnQgcGFja2V0X3NuZF92bmV0X3BhcnNlKHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90ICpsZW4sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTQ4LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKnZuZXRfaGRyLCBpbnQgdm5ldF9oZHJfc3opXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NjktXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTcwOnN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjU3MS1cXHRcXHR2b2lkICpmcmFtZSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgaW50IHRwX2xlbixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjY0OS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI2NTA6c3RhdGljIGludCB0cGFja2V0X3BhcnNlX2hlYWRlcihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI2NTEtXFx0XFx0XFx0XFx0aW50IHNpemVfbWF4LCB2b2lkICoqZGF0YSlcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjcxNy1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3MTg6c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzE5LXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjkyMD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBhY2tldF9hbGxvY19za2Ioc3RydWN0IHNvY2sgKnNrLCBzaXplX3QgcHJlcGFkLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yOTQ1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mjk0NjpzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjk0Ny17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMDMtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTA0OnN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEwNS17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMjItXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTIzOnN0YXRpYyBpbnQgcGFja2V0X3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMjQte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTk1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzE5NjpzdGF0aWMgaW50IHBhY2tldF9kb19iaW5kKHN0cnVjdCBzb2NrICpzaywgY29uc3QgY2hhciAqbmFtZSwgaW50IGlmaW5kZXgsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTk3LVxcdFxcdFxcdCAgX19iZTE2IHByb3RvKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMjg5LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzI5MDpzdGF0aWMgaW50IHBhY2tldF9iaW5kX3Nwa3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVhZGRyLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzI5MS1cXHRcXHRcXHQgICAgaW50IGFkZHJfbGVuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMzExLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzMxMjpzdGF0aWMgaW50IHBhY2tldF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkciwgaW50IGFkZHJfbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzMxMy17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMzMjk9c3RhdGljIHN0cnVjdCBwcm90byBwYWNrZXRfcHJvdG8gPSB7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMzMzgtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMzM5OnN0YXRpYyBpbnQgcGFja2V0X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMzNDAtXFx0XFx0XFx0IGludCBrZXJuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNDE2LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzQxNzpzdGF0aWMgaW50IHBhY2tldF9yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM0MTgtXFx0XFx0XFx0ICBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM1ODEtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNTgyOnN0YXRpYyBpbnQgcGFja2V0X2dldG5hbWVfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzU4My1cXHRcXHRcXHQgICAgICAgaW50IHBlZXIpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM2MDEtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNjAyOnN0YXRpYyBpbnQgcGFja2V0X2dldG5hbWUoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkcixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM2MDMtXFx0XFx0XFx0ICBpbnQgcGVlcilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzYzOC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM2Mzk6c3RhdGljIGludCBwYWNrZXRfZGV2X21jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwYWNrZXRfbWNsaXN0ICppLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzY0MC1cXHRcXHRcXHQgaW50IHdoYXQpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTM2Njk9c3RhdGljIHZvaWQgcGFja2V0X2Rldl9tY2xpc3RfZGVsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM2ODMtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNjg0OnN0YXRpYyBpbnQgcGFja2V0X21jX2FkZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwYWNrZXRfbXJlcV9tYXggKm1yZXEpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNjg1LXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzczOS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM3NDA6c3RhdGljIGludCBwYWNrZXRfbWNfZHJvcChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwYWNrZXRfbXJlcV9tYXggKm1yZXEpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNzQxLXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9Mzc4OD1wYWNrZXRfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDU5LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDA2MDpzdGF0aWMgaW50IHBhY2tldF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDYxLVxcdFxcdFxcdCAgICAgc29ja29wdF90ICpvcHQpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQxODUtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MTg2OnN0YXRpYyBpbnQgcGFja2V0X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQxODctXFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyBtc2csIHZvaWQgKnB0cilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDI0Ni1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQyNDc6c3RhdGljIGludCBwYWNrZXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQyNDgtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQzOTI9c3RhdGljIHN0cnVjdCBwZ3YgKmFsbG9jX3BnX3ZlYyhzdHJ1Y3QgdHBhY2tldF9yZXEgKnJlcSwgaW50IG9yZGVyKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NDE2LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDQxNzpzdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDQxOC1cXHRcXHRpbnQgY2xvc2luZywgaW50IHR4X3JpbmcpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ1ODctXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NTg4OnN0YXRpYyBpbnQgcGFja2V0X21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NTg5LVxcdFxcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00NzE3PXN0YXRpYyB2b2lkIHBhY2tldF9zZXFfc3RvcChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDcyMi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ3MjM6c3RhdGljIGludCBwYWNrZXRfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzI0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6NTcuNDEwNjAyODY4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNTkzMTYxMTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYXNvbmluZyBmb3IgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIG9wdGltYWwgZnV6emluZyBzdHJhdGVneSBmb3IgdGhpcyBwYXRjaCwgYW5kIEkgbmVlZCB0byBiZSBwcmVjaXNlLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHBhY2tldF9wYXJzZV9oZWFkZXJzYCB3aXRoaW4gYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgLiBUaGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb24gYEFGX1BBQ0tFVGAgc29ja2V0cywgc3BlY2lmaWNhbGx5IGFsdGVyaW5nIHRoZSBiZWhhdmlvciBvZiBob3cgdGhlIE1BQyBoZWFkZXIgaXMgaGFuZGxlZC4gVGhlIGNvcmUgY2hhbmdlIGludm9sdmVzIHVuY29uZGl0aW9uYWxseSByZXNldHRpbmcgdGhlIE1BQyBoZWFkZXIgdXNpbmcgYHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYilgLCB3aGljaCBwcmV2aW91c2x5IGRlcGVuZGVkIG9uIGEgY29uZGl0aW9uYWwgY2hlY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIHdpdGhpbiB0aGUgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRoLCBtZWFuaW5nIGl0J3MgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZm9jdXMgb24gYHBhY2tldF9zZW5kbXNnYCBhbmQgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGFzIHRoZSBrZXkgZW50cnkgcG9pbnRzLiBCdXQgSSBoYWQgdG8gY29uZmlybTogYXJlIHN0YXRpYyBmdW5jdGlvbnMgbGlrZSB0aGVzZSB2aWFibGUgZm9jdXMgc3ltYm9scywgY29uc2lkZXJpbmcgdGhleSBtaWdodCBiZSBpbmxpbmVkPyBTeXprYWxsZXIgKmNhbiogaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSAqYXJlbid0KiBpbmxpbmVkLiBMb29raW5nIGF0IHRoZSBjb2RlLCBib3RoIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcmUgYXNzaWduZWQgdG8gYHByb3RvX29wc2Agc3RydWN0cy4gVGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiwgd2hpY2ggbWVhbnMgdGhlIGNvbXBpbGVyICp3b24ndCogaW5saW5lIHRoZW0uIFBlcmZlY3QsIHRoZXkgZml0IHRoZSBjcml0ZXJpYS5cblxuVGhlIHByb21wdCwgaG93ZXZlciwgcmVxdWlyZXMgbWUgdG8gYWxzbyBpZGVudGlmeSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgcHJvbXB0IGFsc28gbm90ZXMgdG8gb21pdCBcIkNPTkZJR19cIiBwcmVmaXguIFNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19QQUNLRVRgIGlzIHdoYXQgSSdtIGFmdGVyLCBhbmQgdGhlcmVmb3JlLCBJIHNob3VsZCB1c2UgYFBBQ0tFVGAgYXMgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24uIEkndmUgZG91YmxlLWNoZWNrZWQsIGFuZCBgQ09ORklHX1BBQ0tFVGAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnIGhlcmUuXG5cbkkgdGhlbiBkaWQgYSBxdWljayBhdWRpdCB0byBjb25maXJtIHRoYXQgdGhlc2UgdHdvIGVudHJ5cG9pbnRzIGNvdmVyIGFsbCBwb3RlbnRpYWwgY2FsbCBwYXRocy4gYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpcyBjYWxsZWQgYnkgYHBhY2tldF9zZW5kbXNnX3Nwa3RgLCBgdHBhY2tldF9maWxsX3NrYmAsIGFuZCBgcGFja2V0X3NuZGAuIGB0cGFja2V0X2ZpbGxfc2tiYCBpcyBjYWxsZWQgYnkgYHRwYWNrZXRfc25kYCwgYW5kIGBwYWNrZXRfc25kYCBpcyBjYWxsZWQgYnkgYHBhY2tldF9zZW5kbXNnYC4gSW1wb3J0YW50bHksIGJvdGggYHRwYWNrZXRfc25kYCBhbmQgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGFyZSBhbHNvIGNhbGxlZCBieSBgcGFja2V0X3NlbmRtc2dgLiBTbywgYHBhY2tldF9zZW5kbXNnYCBhbmQgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGRvLCBpbmRlZWQsIGNvdmVyIHRoZSBjb21wbGV0ZSByZWxldmFudCBleGVjdXRpb24gZmxvdy4gVGhleSdyZSB0aGUgYHNlbmRtc2dgIGNhbGxiYWNrcyBmb3IgdGhlIGBBRl9QQUNLRVRgIHByb3RvY29sIG9wZXJhdGlvbnMuXG5cblNvLCBJJ20gY29uZmlkZW50IGluIG15IHN0cmF0ZWd5OlxuXG4qICAgKipGb2N1cyBTeW1ib2xzOioqIGBwYWNrZXRfc2VuZG1zZ2AsIGBwYWNrZXRfc2VuZG1zZ19zcGt0YFxuKiAgICoqRW5hYmxlIENvbmZpZ3M6KiogYFBBQ0tFVGBcblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBmdXp6aW5nIHRoZXNlIGVudHJ5cG9pbnRzIHdpbGwgZWZmZWN0aXZlbHkgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGNvZGUuIE5vdywgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzMjEsIk91dHB1dFRva2VucyI6MTM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI5OjA4LjAwMzc2NzEyNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTg5NTQ4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFDS0VUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFja2V0X3NlbmRtc2dcIixcbiAgICBcInBhY2tldF9zZW5kbXNnX3Nwa3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIGluIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYCwgd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIG9uIEFGX1BBQ0tFVCBzb2NrZXRzLiBJdCBtb3ZlcyBgc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKWAgb3V0IG9mIGFuIGlmLWNvbmRpdGlvbiwgZW5zdXJpbmcgdGhlIE1BQyBoZWFkZXIgaXMgYWx3YXlzIHJlc2V0IGZvciBhbGwgc29ja2V0IHR5cGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFDS0VUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFja2V0X3NlbmRtc2dcIixcbiAgICBcInBhY2tldF9zZW5kbXNnX3Nwa3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIGluIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYCwgd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIG9uIEFGX1BBQ0tFVCBzb2NrZXRzLiBJdCBtb3ZlcyBgc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKWAgb3V0IG9mIGFuIGlmLWNvbmRpdGlvbiwgZW5zdXJpbmcgdGhlIE1BQyBoZWFkZXIgaXMgYWx3YXlzIHJlc2V0IGZvciBhbGwgc29ja2V0IHR5cGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow9jswf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 20:07:56 +0000 UTC FinishedAt: 2026-07-25 20:29:10 +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": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PACKET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53658c6f3682967a5e76ed4bc7462c4bdcddaec3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PACKET" ], "series_id": "239596a5-4943-4c68-8208-4b5dba65093f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "packet_sendmsg", "packet_sendmsg_spkt" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDIwOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnX3Nwa3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AsIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvbiBBRl9QQUNLRVQgc29ja2V0cy4gSXQgbW92ZXMgYHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYilgIG91dCBvZiBhbiBpZi1jb25kaXRpb24sIGVuc3VyaW5nIHRoZSBNQUMgaGVhZGVyIGlzIGFsd2F5cyByZXNldCBmb3IgYWxsIHNvY2tldCB0eXBlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRoIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIwOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOGVkM2Q4OWI1NThhNjIxZTllNTdiYzA4NzA4MzU3NDdmMTJkMzBlNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDIwOjI4OjE5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG5pbmRleCBlNzVkMjkzMjQ3NWFjMC4uNWFlMDUxMWU4OWUzMmMgMTAwNjQ0XG4tLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG5AQCAtMTkyNCwxMSAmIzQzOzE5MjQsMTIgQEAgc3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaylcbiB7XG4gXHRpbnQgZGVwdGg7XG4gXG4mIzQzO1x0LyogT24gVFggc2tiLVx1MDAzZWRhdGEgaXMgdGhlIEwyIGhlYWRlcjsgYW5jaG9yIGl0IGZvciBhbGwgc29ja2V0IHR5cGVzLiAqL1xuJiM0MztcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XG4mIzQzO1xuIFx0aWYgKCghc2tiLVx1MDAzZXByb3RvY29sIHx8IHNrYi1cdTAwM2Vwcm90b2NvbCA9PSBodG9ucyhFVEhfUF9BTEwpKSBcdTAwMjZcdTAwMjZcbi1cdCAgICBzb2NrLVx1MDAzZXR5cGUgPT0gU09DS19SQVcpIHtcbi1cdFx0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcbiYjNDM7XHQgICAgc29jay1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKVxuIFx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBkZXZfcGFyc2VfaGVhZGVyX3Byb3RvY29sKHNrYik7XG4tXHR9XG4gXG4gXHQvKiBNb3ZlIG5ldHdvcmsgaGVhZGVyIHRvIHRoZSByaWdodCBwb3NpdGlvbiBmb3IgVkxBTiB0YWdnZWQgcGFja2V0cyAqL1xuIFx0aWYgKGxpa2VseShza2ItXHUwMDNlZGV2LVx1MDAzZXR5cGUgPT0gQVJQSFJEX0VUSEVSKSBcdTAwMjZcdTAwMjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMDoyODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEFDS0VUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFja2V0X3NlbmRtc2cmIzM0OywKICAgICYjMzQ7cGFja2V0X3NlbmRtc2dfc3BrdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIGluIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYCwgd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIG9uIEFGX1BBQ0tFVCBzb2NrZXRzLiBJdCBtb3ZlcyBgc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKWAgb3V0IG9mIGFuIGlmLWNvbmRpdGlvbiwgZW5zdXJpbmcgdGhlIE1BQyBoZWFkZXIgaXMgYWx3YXlzIHJlc2V0IGZvciBhbGwgc29ja2V0IHR5cGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4ZWQzZDg5YjU1OGE2MjFlOWU1N2JjMDg3MDgzNTc0N2YxMmQzMGU1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMjUgMjA6Mjg6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwppbmRleCBlNzVkMjkzMjQ3NWFjMC4uNWFlMDUxMWU4OWUzMmMgMTAwNjQ0Ci0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwpAQCAtMTkyNCwxMSAmIzQzOzE5MjQsMTIgQEAgc3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaykKIHsKIAlpbnQgZGVwdGg7CiAKJiM0MzsJLyogT24gVFggc2tiLSZndDtkYXRhIGlzIHRoZSBMMiBoZWFkZXI7IGFuY2hvciBpdCBmb3IgYWxsIHNvY2tldCB0eXBlcy4gKi8KJiM0MzsJc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTsKJiM0MzsKIAlpZiAoKCFza2ItJmd0O3Byb3RvY29sIHx8IHNrYi0mZ3Q7cHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfQUxMKSkgJmFtcDsmYW1wOwotCSAgICBzb2NrLSZndDt0eXBlID09IFNPQ0tfUkFXKSB7Ci0JCXNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7CiYjNDM7CSAgICBzb2NrLSZndDt0eXBlID09IFNPQ0tfUkFXKQogCQlza2ItJmd0O3Byb3RvY29sID0gZGV2X3BhcnNlX2hlYWRlcl9wcm90b2NvbChza2IpOwotCX0KIAogCS8qIE1vdmUgbmV0d29yayBoZWFkZXIgdG8gdGhlIHJpZ2h0IHBvc2l0aW9uIGZvciBWTEFOIHRhZ2dlZCBwYWNrZXRzICovCiAJaWYgKGxpa2VseShza2ItJmd0O2Rldi0mZ3Q7dHlwZSA9PSBBUlBIUkRfRVRIRVIpICZhbXA7JmFtcDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQUZfUEFDS0VUIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hlZCBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gaGF2ZSBtb3ZlZCB0aGUgYHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7YCBjYWxsIG91dCBvZiB0aGF0IGBpZmAgYmxvY2sgd2l0aGluIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gaG93IHRoZSBwYWNrZXQgc29ja2V0IHRyYW5zbWlzc2lvbiBwYXRoIGJlaGF2ZXMuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBjb250cm9sIGZsb3cgcGF0aHMgYWZmZWN0ZWQgYW5kIGFzc2VzcyB0aGUgaW1wYWN0IG9uIHRoZSBwYWNrZXQgaGVhZGVyIHBhcnNpbmcgYW5kLCBzdWJzZXF1ZW50bHksIHRoZSBTS0ImIzM5O3MgTUFDIGhlYWRlciBzZXR1cC4gVGhpcyBpcyBnb2luZyB0byBiZSBhYm91dCB0cmFjaW5nIHRoZSBsb2dpYyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgcmF0aW9uYWxlIGZvciBtb3ZpbmcgdGhhdCBmdW5jdGlvbiBjYWxsIOKAkyBsaWtlbHkgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIG9yIGNvcnJlY3RuZXNzIGFkanVzdG1lbnQuIEkgd2FudCB0byBzZWUgKndoeSogdGhpcyB3YXMgZG9uZSBhbmQgY29uZmlybSB0aGVyZSBhcmUgbm8gdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFja2V0X3BhcnNlX2hlYWRlcnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTg1Nz1zdGF0aWMgaW50IHBhY2tldF9yY3Zfc3BrdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTkyMi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTkyMzpzdGF0aWMgdm9pZCBwYWNrZXRfcGFyc2VfaGVhZGVycyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTI0LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5NDg9c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIwNjAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjIwNjE6XHRwYWNrZXRfcGFyc2VfaGVhZGVycyhza2IsIHNvY2spO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMDYyLVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjU3MD1zdGF0aWMgaW50IHRwYWNrZXRfZmlsbF9za2Ioc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI2NDQtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI2NDU6XHRwYWNrZXRfcGFyc2VfaGVhZGVycyhza2IsIHNvY2spO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNjQ2LVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9Mjk0Nj1zdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzA3Mi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzA3MzpcdHBhY2tldF9wYXJzZV9oZWFkZXJzKHNrYiwgc29jayk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMwNzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkxMwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AqKgoKT2theSwgc28gYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpcyBjbGVhcmx5IGEga2V5IGZ1bmN0aW9uLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBgcGFja2V0X3NlbmRtc2dfc3BrdGAsIGB0cGFja2V0X2ZpbGxfc2tiYCwgYW5kIGBwYWNrZXRfc25kYC4gSG1tLCB0aG9zZSBhbGwgc291bmQgbGlrZSBkaWZmZXJlbnQgd2F5cyB0byBzZW5kIHBhY2tldHMgdmlhIHBhY2tldCBzb2NrZXRzIOKAkyBlc3NlbnRpYWxseSwgdGhlIHNlbmQgcGF0aHMuIFRoaXMgbWFrZXMgaXQgYSBoaWdoLXByaW9yaXR5IGFyZWEgdG8gdW5kZXJzdGFuZC4gVGhlIGNoYW5nZSBJJiMzOTttIGxvb2tpbmcgYXQgKmlzKiBkZWZpbml0ZWx5IHJlYWNoYWJsZSwgd2hpY2ggaXMgZ29vZC4gTm93LCBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24uIEkgc2hvdWxkIGNoZWNrIHRoZSBjb25maWcgZm9yIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYCB0byBzZWUgaG93IHRoZXNlIGRpZmZlcmVudCBwYXRocyBhcmUgc2V0IHVwIGFuZCBob3cgYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiB0aGUgcGFja2V0IHNvY2tldCBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byBnZXQgdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWZfcGFja2V0XFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9NYWtlZmlsZS01LVxubmV0L3BhY2tldC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19QQUNLRVQpICYjNDM7PSBhZl9wYWNrZXQub1xubmV0L3BhY2tldC9NYWtlZmlsZS03LW9iai0kKENPTkZJR19QQUNLRVRfRElBRykgJiM0Mzs9IGFmX3BhY2tldF9kaWFnLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMDoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjU5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBQYWNrZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBDT05GSUdfUEFDS0VUYCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBmbG93LCB0aGUga2V5IGZ1bmN0aW9ucyB0aGF0IGFyZSBpbnZvbHZlZC4gTXkgaW5pdGlhbCB0YXJnZXRzLCB0aGUgc3ltYm9scyBJIHNob3VsZCBiZSBmb2N1c2luZyBvbiwgYXJlIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBgcGFja2V0X3NuZGAsIGFuZCB0aGVuLCBpbiB0aGVvcnksIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AuIEhtbSwgd2FpdCBhIHNlY29uZC4gSSByZW1lbWJlciBub3csIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AgaXMgc3RhdGljLCB3aGljaCBtZWFucyBJIGNhbiYjMzk7dCBkaXJlY3RseSB0YXJnZXQgaXQuIEl0JiMzOTtzIG9ubHkgY2FsbGFibGUgd2l0aGluIHRoZSBmaWxlIGl0JiMzOTtzIGRlZmluZWQuIFRoYXQmIzM5O3MgZmluZSwgdGhlICpjYWxsZXJzKiBvZiBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIGFyZSB3aGF0IEkmIzM5O20gaW50ZXJlc3RlZCBpbiEKClNvLCB0aGUgY2FsbGVycyBhcmUuLi4gYHBhY2tldF9zZW5kbXNnX3Nwa3RgLCBgdHBhY2tldF9maWxsX3NrYmAsIGFuZCBgcGFja2V0X3NuZGAuIEhvbGQgb24sIGB0cGFja2V0X2ZpbGxfc2tiYCBpcyBhbHNvIHN0YXRpYyEgV2hpY2ggbWVhbnMgSSBuZWVkIHRvIGRpZyBldmVuIGRlZXBlciwgYW5kIGZpbmQgb3V0ICp3aG8qIGNhbGxzICp0aGF0KiBvbmUuIEFoLCBva2F5LCBgdHBhY2tldF9zbmRgIGNhbGxzIGl0LiBHb3QgaXQuIFJpZ2h0LCBzbyBub3cgdGhlIHN0cmF0ZWd5IGlzIGNsZWFyLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlIGxvb2sgYXQgYHRwYWNrZXRfc25kYCwgYHBhY2tldF9zbmRgLCBhbmQgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGFuZCBzZWUgaG93IHRoZXkgd29yay4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgYmlnIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHBhY2tldF9maWxsX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvYWZfcGFja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yNTQ3PXN0YXRpYyBpbnQgcGFja2V0X3NuZF92bmV0X3BhcnNlKHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90ICpsZW4sXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTY5LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTcwOnN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTcxLVx0XHR2b2lkICpmcmFtZSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgaW50IHRwX2xlbixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI3MTg9c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yODUwLVx0XHR9XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI4NTE6XHRcdHRwX2xlbiA9IHRwYWNrZXRfZmlsbF9za2IocG8sIHNrYiwgcGgsIGRldiwgZGF0YSwgdHBfbGVuLCBwcm90byxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjg1Mi1cdFx0XHRcdFx0ICBhZGRyLCBobGVuLCBjb3B5bGVuLCBcdTAwMjZzb2NrYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAyOQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBQYWNrZXQgVHJhbnNtaXNzaW9uIFN5bWJvbHMqKgoKQWxyaWdodCwgSSYjMzk7bSB6ZXJvaW5nIGluIG9uIHRoZSBrZXJuZWwgc3ltYm9scyByZWxhdGVkIHRvIHBhY2tldCB0cmFuc21pc3Npb246IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfc25kYCwgYW5kIGBwYWNrZXRfc25kYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBuYXR1cmUgb2YgYHBhY2tldF9zZW5kbXNnX3Nwa3RgLiBIb2xkIG9uLCBhIHN0YXRpYyBmdW5jdGlvbiwgSSYjMzk7ZCBiZXR0ZXIgY29uZmlybSB0aGF0LiBJdCBsb29rcyBsaWtlIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpcyBnb2luZyB0byBiZSBzb21ldGhpbmcgdmVyeSBzcGVjaWZpYyB0aGF0IGdldHMgcmVzb2x2ZWQgYXQgY29tcGlsZSB0aW1lLCBzb21ldGhpbmcgdGhhdCBtYXkgYmUgaGlnaGx5IHJlbGV2YW50IHRvIGxvdy1sZXZlbCBwYWNrZXQgcHJvY2Vzc2luZyBlZmZpY2llbmN5LCBvciBwZXJoYXBzIHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmljcyBvZiB0aGUgbmV0d29ya2luZyBzdGFjayBiZWluZyB1c2VkLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBhbmQgY29uZmlybSB0aGF0IHN0YXRpYyBxdWFsaWZpZXIgYW5kIHRoZW4gY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBpZiBpdCBpcyBpbmRlZWQgc3RhdGljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWNrZXRfc2VuZG1zZ19zcGt0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5MjM9c3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE5NDg6c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0OS1cdFx0XHQgICAgICAgc2l6ZV90IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQ2NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wc19zcGt0ID0ge1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY2My1cdC5zaHV0ZG93biA9XHRzb2NrX25vX3NodXRkb3duLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NjY0Olx0LnNlbmRtc2cgPVx0cGFja2V0X3NlbmRtc2dfc3BrdCxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY2NS1cdC5yZWN2bXNnID1cdHBhY2tldF9yZWN2bXNnLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMDoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTI3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gdGhlIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBGdW5jdGlvbioqCgpIbW0sIHNvIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nIGluIGl0c2VsZi4gQnV0IGl0JiMzOTtzIGFsc28gZGVjbGFyZWQgYXMgYSBgcHJvdG9fb3BzYCBjYWxsYmFjay4gVGhhdCBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZSBhbmQgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3VlcyByaWdodCBhd2F5LiBBIHN0YXRpYyBmdW5jdGlvbiwgcGFydGljdWxhcmx5IGluIGEgY2FsbGJhY2sgc2l0dWF0aW9uIGxpa2UgdGhpcywgc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IHNjb3BlZCB0byBhIHNwZWNpZmljIG1vZHVsZSBvciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBvZmZlcnMgY2VydGFpbiBhZHZhbnRhZ2VzLiBCdXQgaXMgYHBhY2tldF9zbmRgIHN0YXRpYyB0b28/IFRoZSBsaW5rYWdlIG9mIHRoYXQgZnVuY3Rpb24gaXMgcmVsZXZhbnQgaW4gZGV0ZXJtaW5pbmcgdGhlIGNvbnN0cmFpbnRzIG9uIGhvdyBgcGFja2V0X3NlbmRtc2dfc3BrdGAgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCByZWxhdGlvbnNoaXAgdG8gdHJ1bHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBkZXNpZ24gZGVjaXNpb25zLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoaXMgYXJlIHNpZ25pZmljYW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYWNrZXRfc25kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jPTI1MTE9c3RhdGljIHZvaWQgdHBhY2tldF9kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1MzAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI1MzE6c3RhdGljIGludCBfX3BhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKnZuZXRfaGRyLCBzaXplX3QgbGVuKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTMyLXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NDYtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI1NDc6c3RhdGljIGludCBwYWNrZXRfc25kX3ZuZXRfcGFyc2Uoc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgKmxlbixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjU0OC1cdFx0XHRcdCBzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKnZuZXRfaGRyLCBpbnQgdm5ldF9oZHJfc3opXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTU4LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTU5Olx0cmV0ID0gX19wYWNrZXRfc25kX3ZuZXRfcGFyc2Uodm5ldF9oZHIsICpsZW4pO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTYwLVx0aWYgKHJldClcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI2NTA9c3RhdGljIGludCB0cGFja2V0X3BhcnNlX2hlYWRlcihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3MTctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3MTg6c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3MTkte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjgzMC1cdFx0XHRtZW1jcHkoXHUwMDI2dm5ldF9oZHIsIGRhdGEgLSB2bmV0X2hkcl9zeiwgc2l6ZW9mKHZuZXRfaGRyKSk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI4MzE6XHRcdFx0aWYgKF9fcGFja2V0X3NuZF92bmV0X3BhcnNlKFx1MDAyNnZuZXRfaGRyLCB0cF9sZW4pKSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI4MzItXHRcdFx0XHR0cF9sZW4gPSAtRUlOVkFMO1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjkyMD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBhY2tldF9hbGxvY19za2Ioc3RydWN0IHNvY2sgKnNrLCBzaXplX3QgcHJlcGFkLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjk0NS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mjk0NjpzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yOTQ3LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMwMDItXHRpZiAodm5ldF9oZHJfc3opIHtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzAwMzpcdFx0ZXJyID0gcGFja2V0X3NuZF92bmV0X3BhcnNlKG1zZywgXHUwMDI2bGVuLCBcdTAwMjZ2bmV0X2hkciwgdm5ldF9oZHJfc3opO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMDA0LVx0XHRpZiAoZXJyKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MzEwND1zdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMDktXHQvKiBSZWFkaW5nIHR4X3JpbmcucGdfdmVjIHdpdGhvdXQgaG9sZGluZyBwZ192ZWNfbG9jayBpcyByYWN5LlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTEwOlx0ICogdHBhY2tldF9zbmQoKSB3aWxsIHJlZG8gdGhlIGNoZWNrIHNhZmVseS5cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzExMS1cdCAqL1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTEyLVx0aWYgKGRhdGFfcmFjZShwby1cdTAwM2V0eF9yaW5nLnBnX3ZlYykpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxMTM6XHRcdHJldHVybiB0cGFja2V0X3NuZChwbywgbXNnKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzExNC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzExNTpcdHJldHVybiBwYWNrZXRfc25kKHNvY2ssIG1zZywgbGVuKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzExNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIwOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NDUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldHdvcmsgUGFja2V0IFRyYW5zbWlzc2lvbiBFbnRyeSBQb2ludCoqCgpPa2F5LCBzbyBgcGFja2V0X3NlbmRtc2dgIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkgaGVyZSwgaXQmIzM5O3MgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnQsIG9yIG1heWJlIGl0JiMzOTtzIGp1c3QgYWxpYXNlZCB0byBgc2VuZG1zZ2Agc3RhdGljYWxseS4gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gUmlnaHQgbm93LCBJIHNob3VsZCBkZWx2ZSBpbnRvIGBwYWNrZXRfc2VuZG1zZ2AuIEl0JiMzOTtzIHdoZXJlIHRoZSBwYWNrZXQgdHJhbnNtaXNzaW9uIHByb2Nlc3MgYWN0dWFsbHkgc3RhcnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCB0aGF0IHBvaW50IGFuZCBob3cgdGhpbmdzIGZsb3cgZnJvbSB0aGVyZS4gTGV0JiMzOTtzIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFja2V0X3NlbmRtc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTkyMz1zdGF0aWMgdm9pZCBwYWNrZXRfcGFyc2VfaGVhZGVycyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0Ny1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTk0ODpzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnX3Nwa3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTQ5LVx0XHRcdCAgICAgICBzaXplX3QgbGVuKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjcxOD1zdGF0aWMgaW50IHRwYWNrZXRfc25kKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBtc2doZHIgKm1zZylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3NDAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3NDE6XHQvKiBwYWNrZXRfc2VuZG1zZygpIGNoZWNrIG9uIHR4X3JpbmcucGdfdmVjIHdhcyBsb2NrbGVzcyxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjc0Mi1cdCAqIHdlIG5lZWQgdG8gY29uZmlybSBpdCB1bmRlciBwcm90ZWN0aW9uIG9mIHBnX3ZlY19sb2NrLlxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9Mjk0Nj1zdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEwMy1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzEwNDpzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEwNS17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00NjUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3BrdCA9IHtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ2NjMtXHQuc2h1dGRvd24gPVx0c29ja19ub19zaHV0ZG93bixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDY2NDpcdC5zZW5kbXNnID1cdHBhY2tldF9zZW5kbXNnX3Nwa3QsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ2NjUtXHQucmVjdm1zZyA9XHRwYWNrZXRfcmVjdm1zZyxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQ2Njk9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ2ODQtXHQuZ2V0c29ja29wdF9pdGVyID1cdHBhY2tldF9nZXRzb2Nrb3B0LFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0Njg1Olx0LnNlbmRtc2cgPVx0cGFja2V0X3NlbmRtc2csXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ2ODYtXHQucmVjdm1zZyA9XHRwYWNrZXRfcmVjdm1zZyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUyMQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIEFGX1BBQ0tFVCBTZW5kIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBgc2VuZG1zZ2Agd29ya3MgZm9yIGBBRl9QQUNLRVRgIHNvY2tldHMuIEkgc2VlIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIHVzZWQgZm9yIHRoZSBgc2VuZG1zZ2Agb3BlcmF0aW9uLiBUaGUgaW1wb3J0YW50IHRoaW5nIHRvIG5vdGUgaXMgdGhhdCB0aGVzZSBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLCB3aGljaCBtZWFucyB0aGV5IGFyZSB0aGUgYWN0dWFsIGVudHJ5IHBvaW50cywgYnV0IHRoZXkgYXJlIGxvY2FsaXplZC4KClRoZSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgbGV2ZXJhZ2UgYW55IG90aGVyICpub24tc3RhdGljKiBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmFtaWx5PyBBcmUgdGhlcmUgcGVyaGFwcyBhbnkgaW50ZXJtZWRpYXJ5IGZ1bmN0aW9ucyB0aGF0IGFyZSBleHBvc2VkIG1vcmUgd2lkZWx5PyBJZiBub3QsIHRoZW4gSSYjMzk7bGwgc2ltcGx5IGhhdmUgdG8gd29yayBkaXJlY3RseSB3aXRoIHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMuCgpIYW5nIG9u4oCmIGp1c3QgYSBxdWljayBjb25maXJtYXRpb24sIGBwYWNrZXRfc2VuZG1zZ2AgaXMgKmluZGVlZCogc3RhdGljLiBPa2F5LCBubyBjb25mdXNpb24gdGhlcmUuIEFscmlnaHQsIHRoZSBtb3N0IGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGNhcmVmdWxseSBjaGVjayB0aGUgYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgIGZpbGUgdG8gZW5zdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGEgbW9yZSBhcHByb3ByaWF0ZSBub24tc3RhdGljIG9wdGlvbi4gSSYjMzk7bGwgc2NhbiB0aHJvdWdoIGl0IGFuZCBzZWUgaWYgYW55dGhpbmcganVtcHMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAyMDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgW2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkxOQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipQYXR0ZXJuIFJlY29nbml0aW9uIGluIENvZGUgU25pcHBldHMqKgoKQWxyaWdodCwgSSBzZWUgYSBwYXR0ZXJuIGVtZXJnaW5nLiBUaGUgaGludCBnaXZlbiBpcyBgXnZvaWQgW2EtekEtWjAtOV9dJiM0MztcKGAuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGlzIGRyYXduIHRvIHRoZSBpbXBsaWNhdGlvbnMuIFRoZSBgXmAgYW5jaG9ycyB0aGUgc3RhcnQgb2YgdGhlIG1hdGNoLiBUaGF0JiMzOTtzIGdvb2QuIGB2b2lkYCBpcyBhIGNsZWFyIHR5cGUgZGVjbGFyYXRpb24uIEZyb20gYSBsYW5ndWFnZSBwZXJzcGVjdGl2ZSwgaXQgc2lnbmFscyBhIGZ1bmN0aW9uIHRoYXQgZG9lc24mIzM5O3QgcmV0dXJuIGEgdmFsdWUuIFRoZSBzdWJzZXF1ZW50IHNwYWNlIHJlaW5mb3JjZXMgdGhlIHR5cGUtZnVuY3Rpb24gc2VwYXJhdGlvbiB3aGljaCBtYWtlcyBtZSB0aGluayBvZiBDLCBDJiM0MzsmIzQzOywgb3Igc2ltaWxhciBsYW5ndWFnZXMuCgpUaGVuIHdlIGhhdmUgYFthLXpBLVowLTlfXSYjNDM7YC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLiBJIHNlZSBhIGNoYXJhY3RlciBjbGFzcyByZXByZXNlbnRpbmcgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmVzLCByZXBlYXRlZCBvbmUgb3IgbW9yZSB0aW1lcywgd2hpY2ggZGlyZWN0bHkgc2lnbmlmaWVzIGEgZnVuY3Rpb24gbmFtZSBvciBhbiBpZGVudGlmaWVyIHVuZGVyIGVzdGFibGlzaGVkIG5hbWluZyBydWxlcy4gCgpGaW5hbGx5LCB0aGUgYFwoYCBpbmRpY2F0ZXMgYW4gb3BlbiBwYXJlbnRoZXNpcywgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGRlY2xhcmF0aW9uLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgd2F5IGluIEMtbGlrZSBsYW5ndWFnZXMuCgpUaGVyZWZvcmUsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiBkZXNpZ25lZCB0byBpZGVudGlmeSBmdW5jdGlvbiBzaWduYXR1cmVzIHdpdGhpbiBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IHRob3NlIHdpdGggYSBgdm9pZGAgcmV0dXJuIHR5cGUgYW5kIGEgc3RhbmRhcmQgYWxwaGFudW1lcmljIGZ1bmN0aW9uIG5hbWUuIEl0JiMzOTtzIGEgcmF0aGVyIHNwZWNpZmljIGFuZCBjb21tb24gcGF0dGVybi4gVGhpcyBoaW50cyBhdCBhIHBhcnNpbmcgb3IgY29kZSBhbmFseXNpcyB0YXNrLCBtYXliZSBpZGVudGlmeWluZyBmdW5jdGlvbnMgZm9yIHN0YXRpYyBhbmFseXNpcywgcmVmYWN0b3JpbmcsIG9yIGNvZGUgZ2VuZXJhdGlvbi4gSXQgd2lsbCBjYXB0dXJlIHRoZSBuYW1lIGFuZCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBmb3IgZnVydGhlciBwcm9jZXNzaW5nLiBJIHdvdWxkIG5lZWQgbW9yZSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGdvYWwgb2YgdGhlIHBhdHRlcm4gbWF0Y2hpbmcsIGJ1dCB0aGlzIGluaXRpYWwgYnJlYWtkb3duIGlzIGEgc291bmQgc3RhcnRpbmcgcG9pbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIwOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnZvaWQgW2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMyOQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLCBleHByZXNzZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoYXQgUmVndWxhciBFeHByZXNzaW9uIFNuaXBwZXQqKgoKQWxyaWdodCwgSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZXhwcmVzc2lvbiwgYF5zdGF0aWMgaW50IFthLXpBLVowLTlfXSYjNDM7XChgLCBhbmQgbXkgYnJhaW4gaXMgaW5zdGFudGx5IHBhcnNpbmcgaXQuIFRoZSBgXmAgYXQgdGhlIGJlZ2lubmluZyB0ZWxscyBtZSB0aGlzIGlzIG1lYW50IHRvIG1hdGNoIGZyb20gdGhlIHN0YXJ0IG9mIGEgbGluZSBvciBzdHJpbmcuIFRoYXQmIzM5O3MgZ29vZCwgc2V0cyBhIGNsZWFyIGFuY2hvci4gVGhlbiwgSSBzZWUgYHN0YXRpYyBpbnRgLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHdlJiMzOTtyZSBodW50aW5nIGZvciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMsIHNwZWNpZmljYWxseSBvbmVzIHRoYXQgYXJlIGBzdGF0aWNgIGFuZCByZXR1cm4gYW4gYGludGAuIE9rYXksIGNsYXNzaWMgQy9DJiM0MzsmIzQzOyBvciBzaW1pbGFyIGxhbmd1YWdlLCBwcm9iYWJseS4gVGhlIGAgYCAoc3BhY2UpIGlzIGltcG9ydGFudCBpbiBzdWNoIGNhc2VzLCBiZWNhdXNlIGl0IGRlbm90ZXMgdGhlIHNlcGFyYXRpbmcgb2YgdGhlICYjMzQ7c3RhdGljIGludCYjMzQ7IGZyb20gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLgoKVGhlIG1lYXQgb2YgaXQgaXMgdGhlIG5leHQgcGFydDogYFthLXpBLVowLTlfXSYjNDM7XChgLiBIZXJlLCBgW2EtekEtWjAtOV9dJiM0MztgIGlzIHRoZSBrZXkuIFRoYXQmIzM5O3MgYSBjaGFyYWN0ZXIgY2xhc3MgbWF0Y2hpbmcgb25lIG9yIG1vcmUgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmVzLiBUaGF0JiMzOTtzICpleGFjdGx5KiB3aGF0IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBtb3N0IEMtbGlrZSBsYW5ndWFnZXMgaXMuIEl0JiMzOTtzIGV4cGVjdGluZyBhIGZ1bmN0aW9uIGlkZW50aWZpZXIsIGJhc2ljYWxseS4gQW5kIHRoZSBgXGAgYmVmb3JlIHRoZSBgKGAgaXMgaW50ZXJlc3RpbmcsIGFzIGl0IGlzIGEgd2F5IHRvIGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMsIGluIHRoZSBjYXNlIG9mIHBhcmVudGhlc2lzLiBMYXN0bHksIHRoZSBgXChgLCB3ZWxsLCB0aGF0JiMzOTtzIHRoZSB0ZWxsLiBUaGF0IG9wZW4gcGFyZW50aGVzaXMgaXMgZXNzZW50aWFsOiBpdCBpbmRpY2F0ZXMgdGhlIGJlZ2lubmluZyBvZiBhIGZ1bmN0aW9uJiMzOTtzIHBhcmFtZXRlciBsaXN0LiBTbywgYWxsIHRvZ2V0aGVyLCB0aGlzIGxvb2tzIGxpa2UgYSByZWdleCBkZXNpZ25lZCB0byBpZGVudGlmeSBmdW5jdGlvbiBzaWduYXR1cmVzIGluIGNvZGUsIG9yIGF0IGxlYXN0IGEgcG9ydGlvbiBvZiB0aGVtLiBQZXJoYXBzIGEgcXVpY2sgd2F5IHRvIGZpbmQgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIGEgY29kZSBmaWxlPyBPciBhIHZlcnkgc3BlY2lmaWMgZnVuY3Rpb24gbmFtaW5nIGNvbnZlbnRpb24gY2hlY2s/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDIwOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMgaW50IFthLXpBLVowLTlfXSYjNDM7XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L2FmX3BhY2tldC5jPTE2Nz11bmlvbiB0cGFja2V0X3VoZHIge1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTczLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNzQ6c3RhdGljIGludCBwYWNrZXRfc2V0X3Jpbmcoc3RydWN0IHNvY2sgKnNrLCB1bmlvbiB0cGFja2V0X3JlcV91ICpyZXFfdSxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc1LVx0XHRpbnQgY2xvc2luZywgaW50IHR4X3JpbmcpO1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTkxPXN0cnVjdCBwYWNrZXRfc29jaztcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTkyOnN0YXRpYyBpbnQgdHBhY2tldF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTkzLVx0XHQgICAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfZGV2KTtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5OD1zdGF0aWMgdm9pZCBwYWNrZXRfaW5jcmVtZW50X2hlYWQoc3RydWN0IHBhY2tldF9yaW5nX2J1ZmZlciAqYnVmZik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE5OTpzdGF0aWMgaW50IHByYl9jdXJyX2Jsa19pbl91c2Uoc3RydWN0IHRwYWNrZXRfYmxvY2tfZGVzYyAqKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjAwLXN0YXRpYyB2b2lkICpwcmJfZGlzcGF0Y2hfbmV4dF9ibG9jayhzdHJ1Y3QgdHBhY2tldF9rYmRxX2NvcmUgKixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTIwMj1zdGF0aWMgdm9pZCBwcmJfcmV0aXJlX2N1cnJlbnRfYmxvY2soc3RydWN0IHRwYWNrZXRfa2JkcV9jb3JlICosXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIwMy1cdFx0c3RydWN0IHBhY2tldF9zb2NrICosIHVuc2lnbmVkIGludCBzdGF0dXMpO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyMDQ6c3RhdGljIGludCBwcmJfcXVldWVfZnJvemVuKHN0cnVjdCB0cGFja2V0X2tiZHFfY29yZSAqKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjA1LXN0YXRpYyB2b2lkIHByYl9vcGVuX2Jsb2NrKHN0cnVjdCB0cGFja2V0X2tiZHFfY29yZSAqLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjQ3PXN0YXRpYyBub2lubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqbmZfaG9va19kaXJlY3RfZWdyZXNzKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzItXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3MzpzdGF0aWMgaW50IHBhY2tldF94bWl0KGNvbnN0IHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3NC17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00MDA9c3RhdGljIHZvaWQgX19wYWNrZXRfc2V0X3N0YXR1cyhzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSwgaW50IHN0YXR1cylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQyNy1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDI4OnN0YXRpYyBpbnQgX19wYWNrZXRfZ2V0X3N0YXR1cyhjb25zdCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSlcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDI5LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTU4Mz1zdGF0aWMgdm9pZCBwcmJfc2h1dGRvd25fcmV0aXJlX2Jsa190aW1lcihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNTkxLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo1OTI6c3RhdGljIGludCBwcmJfY2FsY19yZXRpcmVfYmxrX3RtbyhzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy01OTMtXHRcdFx0XHRpbnQgYmxrX3NpemVfaW5fYnl0ZXMpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz05NDA9c3RhdGljIHZvaWQgcHJiX3JldGlyZV9jdXJyZW50X2Jsb2NrKHN0cnVjdCB0cGFja2V0X2tiZHFfY29yZSAqcGtjLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtOTY1LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo5NjY6c3RhdGljIGludCBwcmJfY3Vycl9ibGtfaW5fdXNlKHN0cnVjdCB0cGFja2V0X2Jsb2NrX2Rlc2MgKnBiZClcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtOTY3LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTk3MC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6OTcxOnN0YXRpYyBpbnQgcHJiX3F1ZXVlX2Zyb3plbihzdHJ1Y3QgdHBhY2tldF9rYmRxX2NvcmUgKnBrYylcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtOTcyLXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTExMjg9c3RhdGljIHZvaWQgKnByYl9sb29rdXBfYmxvY2soY29uc3Qgc3RydWN0IHBhY2tldF9zb2NrICpwbyxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTExNDAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjExNDE6c3RhdGljIGludCBwcmJfcHJldmlvdXNfYmxrX251bShzdHJ1Y3QgcGFja2V0X3JpbmdfYnVmZmVyICpyYilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTE0Mi17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xMjA4PXN0YXRpYyB1bnNpZ25lZCBpbnQgcGFja2V0X3JlYWRfcGVuZGluZyhjb25zdCBzdHJ1Y3QgcGFja2V0X3JpbmdfYnVmZmVyICpyYilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEyMjItXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjEyMjM6c3RhdGljIGludCBwYWNrZXRfYWxsb2NfcGVuZGluZyhzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMjI0LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTEyNTc9c3RhdGljIGJvb2wgX190cGFja2V0X3YzX2hhc19yb29tKGNvbnN0IHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIGludCBwb3dfb2ZmKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTI2OS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTI3MDpzdGF0aWMgaW50IF9fcGFja2V0X3Jjdl9oYXNfcm9vbShjb25zdCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMjcxLVx0XHRcdFx0IGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzAzLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxMzA0OnN0YXRpYyBpbnQgcGFja2V0X3Jjdl9oYXNfcm9vbShzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzA1LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE0NTE9c3RhdGljIGJvb2wgZmFub3V0X2hhc19mbGFnKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLCB1MTYgZmxhZylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NTUtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0NTY6c3RhdGljIGludCBwYWNrZXRfcmN2X2Zhbm91dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDU3LVx0XHRcdCAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfZGV2KVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTU2OD1zdGF0aWMgdm9pZCBfX2Zhbm91dF9zZXRfZGF0YV9icGYoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsIHN0cnVjdCBicGZfcHJvZyAqbmV3KVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU4Mi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTU4MzpzdGF0aWMgaW50IGZhbm91dF9zZXRfZGF0YV9jYnBmKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHNvY2twdHJfdCBkYXRhLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTg0LVx0XHRcdFx0dW5zaWduZWQgaW50IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MDQtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MDU6c3RhdGljIGludCBmYW5vdXRfc2V0X2RhdGFfZWJwZihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzb2NrcHRyX3QgZGF0YSxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYwNi1cdFx0XHRcdHVuc2lnbmVkIGludCBsZW4pXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjI1LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjI2OnN0YXRpYyBpbnQgZmFub3V0X3NldF9kYXRhKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHNvY2twdHJfdCBkYXRhLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjI3LVx0XHRcdCAgIHVuc2lnbmVkIGludCBsZW4pXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xNjYxPXN0YXRpYyBib29sIGZhbm91dF9maW5kX25ld19pZChzdHJ1Y3Qgc29jayAqc2ssIHUxNiAqbmV3X2lkKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY3Ny1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY3ODpzdGF0aWMgaW50IGZhbm91dF9hZGQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZmFub3V0X2FyZ3MgKmFyZ3MpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2Nzkte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTg1NT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzX3Nwa3Q7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4NTYtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4NTc6c3RhdGljIGludCBwYWNrZXRfcmN2X3Nwa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTg1OC1cdFx0XHQgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0LCBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19kZXYpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xOTIzPXN0YXRpYyB2b2lkIHBhY2tldF9wYXJzZV9oZWFkZXJzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrZXQgKnNvY2spXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTQ3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxOTQ4OnN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2dfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDktXHRcdFx0ICAgICAgIHNpemVfdCBsZW4pXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yMDc0PXN0YXRpYyB1bnNpZ25lZCBpbnQgcnVuX2ZpbHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjA4OC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjA4OTpzdGF0aWMgaW50IHBhY2tldF9yY3Zfdm5ldChzdHJ1Y3QgbXNnaGRyICptc2csIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIwOTAtXHRcdFx0ICAgc2l6ZV90ICpsZW4sIGludCB2bmV0X2hkcl9zeilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIxMTUtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjIxMTY6c3RhdGljIGludCBwYWNrZXRfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIxMTctXHRcdCAgICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX2Rldilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIyMjgtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjIyMjk6c3RhdGljIGludCB0cGFja2V0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMjMwLVx0XHQgICAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfZGV2KVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjUxMT1zdGF0aWMgdm9pZCB0cGFja2V0X2Rlc3RydWN0X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjUzMC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjUzMTpzdGF0aWMgaW50IF9fcGFja2V0X3NuZF92bmV0X3BhcnNlKHN0cnVjdCB2aXJ0aW9fbmV0X2hkciAqdm5ldF9oZHIsIHNpemVfdCBsZW4pXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1MzIte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjU0Ni1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjU0NzpzdGF0aWMgaW50IHBhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCAqbGVuLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTQ4LVx0XHRcdFx0IHN0cnVjdCB2aXJ0aW9fbmV0X2hkciAqdm5ldF9oZHIsIGludCB2bmV0X2hkcl9zeilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NjktXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI1NzA6c3RhdGljIGludCB0cGFja2V0X2ZpbGxfc2tiKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NzEtXHRcdHZvaWQgKmZyYW1lLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBpbnQgdHBfbGVuLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjY0OS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjY1MDpzdGF0aWMgaW50IHRwYWNrZXRfcGFyc2VfaGVhZGVyKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHZvaWQgKmZyYW1lLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNjUxLVx0XHRcdFx0aW50IHNpemVfbWF4LCB2b2lkICoqZGF0YSlcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3MTctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3MTg6c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3MTkte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjkyMD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBhY2tldF9hbGxvY19za2Ioc3RydWN0IHNvY2sgKnNrLCBzaXplX3QgcHJlcGFkLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjk0NS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mjk0NjpzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yOTQ3LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMDMtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxMDQ6c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMDUte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEyMi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzEyMzpzdGF0aWMgaW50IHBhY2tldF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMjQte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzE5NS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzE5NjpzdGF0aWMgaW50IHBhY2tldF9kb19iaW5kKHN0cnVjdCBzb2NrICpzaywgY29uc3QgY2hhciAqbmFtZSwgaW50IGlmaW5kZXgsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxOTctXHRcdFx0ICBfX2JlMTYgcHJvdG8pXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMjg5LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMjkwOnN0YXRpYyBpbnQgcGFja2V0X2JpbmRfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdWFkZHIsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMyOTEtXHRcdFx0ICAgIGludCBhZGRyX2xlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMzMTEtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMzMTI6c3RhdGljIGludCBwYWNrZXRfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdWFkZHIsIGludCBhZGRyX2xlbilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzMxMy17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0zMzI5PXN0YXRpYyBzdHJ1Y3QgcHJvdG8gcGFja2V0X3Byb3RvID0ge1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzMzOC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzMzOTpzdGF0aWMgaW50IHBhY2tldF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgcHJvdG9jb2wsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMzNDAtXHRcdFx0IGludCBrZXJuKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzQxNi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzQxNzpzdGF0aWMgaW50IHBhY2tldF9yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzQxOC1cdFx0XHQgIGludCBmbGFncylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM1ODEtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM1ODI6c3RhdGljIGludCBwYWNrZXRfZ2V0bmFtZV9zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM1ODMtXHRcdFx0ICAgICAgIGludCBwZWVyKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzYwMS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzYwMjpzdGF0aWMgaW50IHBhY2tldF9nZXRuYW1lKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM2MDMtXHRcdFx0ICBpbnQgcGVlcilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM2MzgtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM2Mzk6c3RhdGljIGludCBwYWNrZXRfZGV2X21jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwYWNrZXRfbWNsaXN0ICppLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNjQwLVx0XHRcdCBpbnQgd2hhdClcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTM2Njk9c3RhdGljIHZvaWQgcGFja2V0X2Rldl9tY2xpc3RfZGVsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNjgzLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNjg0OnN0YXRpYyBpbnQgcGFja2V0X21jX2FkZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwYWNrZXRfbXJlcV9tYXggKm1yZXEpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM2ODUte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzczOS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mzc0MDpzdGF0aWMgaW50IHBhY2tldF9tY19kcm9wKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHBhY2tldF9tcmVxX21heCAqbXJlcSlcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzc0MS17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0zNzg4PXBhY2tldF9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDU5LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MDYwOnN0YXRpYyBpbnQgcGFja2V0X2dldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDA2MS1cdFx0XHQgICAgIHNvY2tvcHRfdCAqb3B0KVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDE4NS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDE4NjpzdGF0aWMgaW50IHBhY2tldF9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQxODctXHRcdFx0ICAgdW5zaWduZWQgbG9uZyBtc2csIHZvaWQgKnB0cilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQyNDYtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQyNDc6c3RhdGljIGludCBwYWNrZXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDI0OC1cdFx0XHR1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQzOTI9c3RhdGljIHN0cnVjdCBwZ3YgKmFsbG9jX3BnX3ZlYyhzdHJ1Y3QgdHBhY2tldF9yZXEgKnJlcSwgaW50IG9yZGVyKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDQxNi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDQxNzpzdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NDE4LVx0XHRpbnQgY2xvc2luZywgaW50IHR4X3JpbmcpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NTg3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NTg4OnN0YXRpYyBpbnQgcGFja2V0X21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ1ODktXHRcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDcxNz1zdGF0aWMgdm9pZCBwYWNrZXRfc2VxX3N0b3Aoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzIyLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NzIzOnN0YXRpYyBpbnQgcGFja2V0X3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzI0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzMjEKCQkJCQkJCW91dHB1dDogMTM5CgkJCQkJCQl0aG91Z2h0czogODI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYXNvbmluZyBmb3IgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSB0aGUgb3B0aW1hbCBmdXp6aW5nIHN0cmF0ZWd5IGZvciB0aGlzIHBhdGNoLCBhbmQgSSBuZWVkIHRvIGJlIHByZWNpc2UuIFRoZSBwYXRjaCBtb2RpZmllcyBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIHdpdGhpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AuIFRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvbiBgQUZfUEFDS0VUYCBzb2NrZXRzLCBzcGVjaWZpY2FsbHkgYWx0ZXJpbmcgdGhlIGJlaGF2aW9yIG9mIGhvdyB0aGUgTUFDIGhlYWRlciBpcyBoYW5kbGVkLiBUaGUgY29yZSBjaGFuZ2UgaW52b2x2ZXMgdW5jb25kaXRpb25hbGx5IHJlc2V0dGluZyB0aGUgTUFDIGhlYWRlciB1c2luZyBgc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKWAsIHdoaWNoIHByZXZpb3VzbHkgZGVwZW5kZWQgb24gYSBjb25kaXRpb25hbCBjaGVjay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGgsIG1lYW5pbmcgaXQmIzM5O3MgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGZvY3VzIG9uIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcyB0aGUga2V5IGVudHJ5IHBvaW50cy4gQnV0IEkgaGFkIHRvIGNvbmZpcm06IGFyZSBzdGF0aWMgZnVuY3Rpb25zIGxpa2UgdGhlc2UgdmlhYmxlIGZvY3VzIHN5bWJvbHMsIGNvbnNpZGVyaW5nIHRoZXkgbWlnaHQgYmUgaW5saW5lZD8gU3l6a2FsbGVyICpjYW4qIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zIGlmIHRoZXkgKmFyZW4mIzM5O3QqIGlubGluZWQuIExvb2tpbmcgYXQgdGhlIGNvZGUsIGJvdGggYHBhY2tldF9zZW5kbXNnYCBhbmQgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGFyZSBhc3NpZ25lZCB0byBgcHJvdG9fb3BzYCBzdHJ1Y3RzLiBUaGVpciBhZGRyZXNzZXMgYXJlIHRha2VuLCB3aGljaCBtZWFucyB0aGUgY29tcGlsZXIgKndvbiYjMzk7dCogaW5saW5lIHRoZW0uIFBlcmZlY3QsIHRoZXkgZml0IHRoZSBjcml0ZXJpYS4KClRoZSBwcm9tcHQsIGhvd2V2ZXIsIHJlcXVpcmVzIG1lIHRvIGFsc28gaWRlbnRpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIHByb21wdCBhbHNvIG5vdGVzIHRvIG9taXQgJiMzNDtDT05GSUdfJiMzNDsgcHJlZml4LiBTbyBpdCBsb29rcyBsaWtlIGBDT05GSUdfUEFDS0VUYCBpcyB3aGF0IEkmIzM5O20gYWZ0ZXIsIGFuZCB0aGVyZWZvcmUsIEkgc2hvdWxkIHVzZSBgUEFDS0VUYCBhcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gSSYjMzk7dmUgZG91YmxlLWNoZWNrZWQsIGFuZCBgQ09ORklHX1BBQ0tFVGAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnIGhlcmUuCgpJIHRoZW4gZGlkIGEgcXVpY2sgYXVkaXQgdG8gY29uZmlybSB0aGF0IHRoZXNlIHR3byBlbnRyeXBvaW50cyBjb3ZlciBhbGwgcG90ZW50aWFsIGNhbGwgcGF0aHMuIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AgaXMgY2FsbGVkIGJ5IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBhbmQgYHBhY2tldF9zbmRgLiBgdHBhY2tldF9maWxsX3NrYmAgaXMgY2FsbGVkIGJ5IGB0cGFja2V0X3NuZGAsIGFuZCBgcGFja2V0X3NuZGAgaXMgY2FsbGVkIGJ5IGBwYWNrZXRfc2VuZG1zZ2AuIEltcG9ydGFudGx5LCBib3RoIGB0cGFja2V0X3NuZGAgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcmUgYWxzbyBjYWxsZWQgYnkgYHBhY2tldF9zZW5kbXNnYC4gU28sIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBkbywgaW5kZWVkLCBjb3ZlciB0aGUgY29tcGxldGUgcmVsZXZhbnQgZXhlY3V0aW9uIGZsb3cuIFRoZXkmIzM5O3JlIHRoZSBgc2VuZG1zZ2AgY2FsbGJhY2tzIGZvciB0aGUgYEFGX1BBQ0tFVGAgcHJvdG9jb2wgb3BlcmF0aW9ucy4KClNvLCBJJiMzOTttIGNvbmZpZGVudCBpbiBteSBzdHJhdGVneToKCiogICAqKkZvY3VzIFN5bWJvbHM6KiogYHBhY2tldF9zZW5kbXNnYCwgYHBhY2tldF9zZW5kbXNnX3Nwa3RgCiogICAqKkVuYWJsZSBDb25maWdzOioqIGBQQUNLRVRgCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGZ1enppbmcgdGhlc2UgZW50cnlwb2ludHMgd2lsbCBlZmZlY3RpdmVseSBleGVyY2lzZSB0aGUgbW9kaWZpZWQgY29kZS4gTm93LCBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMjA6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3BhY2tldF9zZW5kbXNnX3Nwa3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AsIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvbiBBRl9QQUNLRVQgc29ja2V0cy4gSXQgbW92ZXMgYHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYilgIG91dCBvZiBhbiBpZi1jb25kaXRpb24sIGVuc3VyaW5nIHRoZSBNQUMgaGVhZGVyIGlzIGFsd2F5cyByZXNldCBmb3IgYWxsIHNvY2tldCB0eXBlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRoIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQUNLRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwYWNrZXRfc2VuZG1zZyYjMzQ7LAogICAgJiMzNDtwYWNrZXRfc2VuZG1zZ19zcGt0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AgaW4gYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb24gQUZfUEFDS0VUIHNvY2tldHMuIEl0IG1vdmVzIGBza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpYCBvdXQgb2YgYW4gaWYtY29uZGl0aW9uLCBlbnN1cmluZyB0aGUgTUFDIGhlYWRlciBpcyBhbHdheXMgcmVzZXQgZm9yIGFsbCBzb2NrZXQgdHlwZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHBhY2tldCB0cmFuc21pc3Npb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjIxLjI5MDU4MTg0MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTA1MDk4MjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBBQ0tFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhY2tldF9zZW5kbXNnXCIsXG4gICAgXCJwYWNrZXRfc2VuZG1zZ19zcGt0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AsIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvbiBBRl9QQUNLRVQgc29ja2V0cy4gSXQgbW92ZXMgYHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYilgIG91dCBvZiBhbiBpZi1jb25kaXRpb24sIGVuc3VyaW5nIHRoZSBNQUMgaGVhZGVyIGlzIGFsd2F5cyByZXNldCBmb3IgYWxsIHNvY2tldCB0eXBlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRoIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODoyMS4yOTA1ODgyNzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNDY1MzE2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDhlZDNkODliNTU4YTYyMWU5ZTU3YmMwODcwODM1NzQ3ZjEyZDMwZTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMjUgMjA6Mjg6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcXG5pbmRleCBlNzVkMjkzMjQ3NWFjMC4uNWFlMDUxMWU4OWUzMmMgMTAwNjQ0XFxuLS0tIGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuY1xcbisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcXG5AQCAtMTkyNCwxMSArMTkyNCwxMiBAQCBzdGF0aWMgdm9pZCBwYWNrZXRfcGFyc2VfaGVhZGVycyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbiB7XFxuIFxcdGludCBkZXB0aDtcXG4gXFxuK1xcdC8qIE9uIFRYIHNrYi1cXHUwMDNlZGF0YSBpcyB0aGUgTDIgaGVhZGVyOyBhbmNob3IgaXQgZm9yIGFsbCBzb2NrZXQgdHlwZXMuICovXFxuK1xcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XFxuK1xcbiBcXHRpZiAoKCFza2ItXFx1MDAzZXByb3RvY29sIHx8IHNrYi1cXHUwMDNlcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfQUxMKSkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIHNvY2stXFx1MDAzZXR5cGUgPT0gU09DS19SQVcpIHtcXG4tXFx0XFx0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcXG4rXFx0ICAgIHNvY2stXFx1MDAzZXR5cGUgPT0gU09DS19SQVcpXFxuIFxcdFxcdHNrYi1cXHUwMDNlcHJvdG9jb2wgPSBkZXZfcGFyc2VfaGVhZGVyX3Byb3RvY29sKHNrYik7XFxuLVxcdH1cXG4gXFxuIFxcdC8qIE1vdmUgbmV0d29yayBoZWFkZXIgdG8gdGhlIHJpZ2h0IHBvc2l0aW9uIGZvciBWTEFOIHRhZ2dlZCBwYWNrZXRzICovXFxuIFxcdGlmIChsaWtlbHkoc2tiLVxcdTAwM2VkZXYtXFx1MDAzZXR5cGUgPT0gQVJQSFJEX0VUSEVSKSBcXHUwMDI2XFx1MDAyNlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODoyMi4wMDYwODY3ODFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NjE4OTU4MDQ2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQUNLRVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWNrZXRfc2VuZG1zZ1wiLFxuICAgIFwicGFja2V0X3NlbmRtc2dfc3BrdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AgaW4gYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgLCB3aGljaCBpcyBjYWxsZWQgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb24gQUZfUEFDS0VUIHNvY2tldHMuIEl0IG1vdmVzIGBza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpYCBvdXQgb2YgYW4gaWYtY29uZGl0aW9uLCBlbnN1cmluZyB0aGUgTUFDIGhlYWRlciBpcyBhbHdheXMgcmVzZXQgZm9yIGFsbCBzb2NrZXQgdHlwZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHBhY2tldCB0cmFuc21pc3Npb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOGVkM2Q4OWI1NThhNjIxZTllNTdiYzA4NzA4MzU3NDdmMTJkMzBlNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDIwOjI4OjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbmluZGV4IGU3NWQyOTMyNDc1YWMwLi41YWUwNTExZTg5ZTMyYyAxMDA2NDRcbi0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbkBAIC0xOTI0LDExICsxOTI0LDEyIEBAIHN0YXRpYyB2b2lkIHBhY2tldF9wYXJzZV9oZWFkZXJzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrZXQgKnNvY2spXG4ge1xuIFx0aW50IGRlcHRoO1xuIFxuK1x0LyogT24gVFggc2tiLVx1MDAzZWRhdGEgaXMgdGhlIEwyIGhlYWRlcjsgYW5jaG9yIGl0IGZvciBhbGwgc29ja2V0IHR5cGVzLiAqL1xuK1x0c2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKTtcbitcbiBcdGlmICgoIXNrYi1cdTAwM2Vwcm90b2NvbCB8fCBza2ItXHUwMDNlcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfQUxMKSkgXHUwMDI2XHUwMDI2XG4tXHQgICAgc29jay1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKSB7XG4tXHRcdHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYik7XG4rXHQgICAgc29jay1cdTAwM2V0eXBlID09IFNPQ0tfUkFXKVxuIFx0XHRza2ItXHUwMDNlcHJvdG9jb2wgPSBkZXZfcGFyc2VfaGVhZGVyX3Byb3RvY29sKHNrYik7XG4tXHR9XG4gXG4gXHQvKiBNb3ZlIG5ldHdvcmsgaGVhZGVyIHRvIHRoZSByaWdodCBwb3NpdGlvbiBmb3IgVkxBTiB0YWdnZWQgcGFja2V0cyAqL1xuIFx0aWYgKGxpa2VseShza2ItXHUwMDNlZGV2LVx1MDAzZXR5cGUgPT0gQVJQSFJEX0VUSEVSKSBcdTAwMjZcdTAwMjZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjIyLjAwNjA4ODM5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyNDQzNzk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFGX1BBQ0tFVCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRvdWNoZWQgYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGhhdmUgbW92ZWQgdGhlIGBza2JfcmVzZXRfbWFjX2hlYWRlcihza2IpO2AgY2FsbCBvdXQgb2YgdGhhdCBgaWZgIGJsb2NrIHdpdGhpbiBgcGFja2V0X3BhcnNlX2hlYWRlcnNgLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgbW9kaWZpY2F0aW9uIHRvIGhvdyB0aGUgcGFja2V0IHNvY2tldCB0cmFuc21pc3Npb24gcGF0aCBiZWhhdmVzLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AgaW4gYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZXhhY3QgY29udHJvbCBmbG93IHBhdGhzIGFmZmVjdGVkIGFuZCBhc3Nlc3MgdGhlIGltcGFjdCBvbiB0aGUgcGFja2V0IGhlYWRlciBwYXJzaW5nIGFuZCwgc3Vic2VxdWVudGx5LCB0aGUgU0tCJ3MgTUFDIGhlYWRlciBzZXR1cC4gVGhpcyBpcyBnb2luZyB0byBiZSBhYm91dCB0cmFjaW5nIHRoZSBsb2dpYyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgcmF0aW9uYWxlIGZvciBtb3ZpbmcgdGhhdCBmdW5jdGlvbiBjYWxsIOKAkyBsaWtlbHkgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIG9yIGNvcnJlY3RuZXNzIGFkanVzdG1lbnQuIEkgd2FudCB0byBzZWUgKndoeSogdGhpcyB3YXMgZG9uZSBhbmQgY29uZmlybSB0aGVyZSBhcmUgbm8gdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjI1LjUzMDUyOTY0N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE0NTk1NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFja2V0X3BhcnNlX2hlYWRlcnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jPTE4NTc9c3RhdGljIGludCBwYWNrZXRfcmN2X3Nwa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTkyMi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE5MjM6c3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5MjQte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xOTQ4PXN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2dfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIwNjAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyMDYxOlxcdHBhY2tldF9wYXJzZV9oZWFkZXJzKHNrYiwgc29jayk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMDYyLVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yNTcwPXN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNjQ0LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjY0NTpcXHRwYWNrZXRfcGFyc2VfaGVhZGVycyhza2IsIHNvY2spO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjY0Ni1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9Mjk0Nj1zdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMDcyLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzA3MzpcXHRwYWNrZXRfcGFyc2VfaGVhZGVycyhza2IsIHNvY2spO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzA3NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6MjUuNjMxOTk1OTA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1MTYyNjkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBgcGFja2V0X3BhcnNlX2hlYWRlcnNgKipcblxuT2theSwgc28gYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpcyBjbGVhcmx5IGEga2V5IGZ1bmN0aW9uLiBJdCdzIGNhbGxlZCBmcm9tIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBhbmQgYHBhY2tldF9zbmRgLiBIbW0sIHRob3NlIGFsbCBzb3VuZCBsaWtlIGRpZmZlcmVudCB3YXlzIHRvIHNlbmQgcGFja2V0cyB2aWEgcGFja2V0IHNvY2tldHMg4oCTIGVzc2VudGlhbGx5LCB0aGUgc2VuZCBwYXRocy4gVGhpcyBtYWtlcyBpdCBhIGhpZ2gtcHJpb3JpdHkgYXJlYSB0byB1bmRlcnN0YW5kLiBUaGUgY2hhbmdlIEknbSBsb29raW5nIGF0ICppcyogZGVmaW5pdGVseSByZWFjaGFibGUsIHdoaWNoIGlzIGdvb2QuIE5vdywgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb25maWd1cmF0aW9uLiBJIHNob3VsZCBjaGVjayB0aGUgY29uZmlnIGZvciBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AgdG8gc2VlIGhvdyB0aGVzZSBkaWZmZXJlbnQgcGF0aHMgYXJlIHNldCB1cCBhbmQgaG93IGBwYWNrZXRfcGFyc2VfaGVhZGVyc2AgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIHBhY2tldCBzb2NrZXQgaW1wbGVtZW50YXRpb24uIFRpbWUgdG8gZ2V0IHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTEzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6MjguNjgzNjI1MzE1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTc5MzAxMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWZfcGFja2V0XFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9wYWNrZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3BhY2tldC9NYWtlZmlsZS01LVxcbm5ldC9wYWNrZXQvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUEFDS0VUKSArPSBhZl9wYWNrZXQub1xcbm5ldC9wYWNrZXQvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfUEFDS0VUX0RJQUcpICs9IGFmX3BhY2tldF9kaWFnLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6MzAuNDgxNTYyMzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI4ODAyODY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0d29yayBQYWNrZXQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgQ09ORklHX1BBQ0tFVGAgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgZmxvdywgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBhcmUgaW52b2x2ZWQuIE15IGluaXRpYWwgdGFyZ2V0cywgdGhlIHN5bWJvbHMgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24sIGFyZSBgcGFja2V0X3NlbmRtc2dfc3BrdGAsIGB0cGFja2V0X2ZpbGxfc2tiYCwgYHBhY2tldF9zbmRgLCBhbmQgdGhlbiwgaW4gdGhlb3J5LCBgcGFja2V0X3BhcnNlX2hlYWRlcnNgLiBIbW0sIHdhaXQgYSBzZWNvbmQuIEkgcmVtZW1iZXIgbm93LCBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgSSBjYW4ndCBkaXJlY3RseSB0YXJnZXQgaXQuIEl0J3Mgb25seSBjYWxsYWJsZSB3aXRoaW4gdGhlIGZpbGUgaXQncyBkZWZpbmVkLiBUaGF0J3MgZmluZSwgdGhlICpjYWxsZXJzKiBvZiBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIGFyZSB3aGF0IEknbSBpbnRlcmVzdGVkIGluIVxuXG5TbywgdGhlIGNhbGxlcnMgYXJlLi4uIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfZmlsbF9za2JgLCBhbmQgYHBhY2tldF9zbmRgLiBIb2xkIG9uLCBgdHBhY2tldF9maWxsX3NrYmAgaXMgYWxzbyBzdGF0aWMhIFdoaWNoIG1lYW5zIEkgbmVlZCB0byBkaWcgZXZlbiBkZWVwZXIsIGFuZCBmaW5kIG91dCAqd2hvKiBjYWxscyAqdGhhdCogb25lLiBBaCwgb2theSwgYHRwYWNrZXRfc25kYCBjYWxscyBpdC4gR290IGl0LiBSaWdodCwgc28gbm93IHRoZSBzdHJhdGVneSBpcyBjbGVhci4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZSBsb29rIGF0IGB0cGFja2V0X3NuZGAsIGBwYWNrZXRfc25kYCwgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhbmQgc2VlIGhvdyB0aGV5IHdvcmsuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGJpZyBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjU5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjM0LjYxMDM2NzIwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTMzMzc4NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHBhY2tldF9maWxsX3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjU0Nz1zdGF0aWMgaW50IHBhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCAqbGVuLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTY5LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjU3MDpzdGF0aWMgaW50IHRwYWNrZXRfZmlsbF9za2Ioc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NzEtXFx0XFx0dm9pZCAqZnJhbWUsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIGludCB0cF9sZW4sXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI3MTg9c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI4NTAtXFx0XFx0fVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mjg1MTpcXHRcXHR0cF9sZW4gPSB0cGFja2V0X2ZpbGxfc2tiKHBvLCBza2IsIHBoLCBkZXYsIGRhdGEsIHRwX2xlbiwgcHJvdG8sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yODUyLVxcdFxcdFxcdFxcdFxcdCAgYWRkciwgaGxlbiwgY29weWxlbiwgXFx1MDAyNnNvY2tjKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6MzUuMDIzNzE0Njk4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2NTczODI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIFBhY2tldCBUcmFuc21pc3Npb24gU3ltYm9scyoqXG5cbkFscmlnaHQsIEknbSB6ZXJvaW5nIGluIG9uIHRoZSBrZXJuZWwgc3ltYm9scyByZWxhdGVkIHRvIHBhY2tldCB0cmFuc21pc3Npb246IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCwgYHRwYWNrZXRfc25kYCwgYW5kIGBwYWNrZXRfc25kYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBuYXR1cmUgb2YgYHBhY2tldF9zZW5kbXNnX3Nwa3RgLiBIb2xkIG9uLCBhIHN0YXRpYyBmdW5jdGlvbiwgSSdkIGJldHRlciBjb25maXJtIHRoYXQuIEl0IGxvb2tzIGxpa2UgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGlzIGdvaW5nIHRvIGJlIHNvbWV0aGluZyB2ZXJ5IHNwZWNpZmljIHRoYXQgZ2V0cyByZXNvbHZlZCBhdCBjb21waWxlIHRpbWUsIHNvbWV0aGluZyB0aGF0IG1heSBiZSBoaWdobHkgcmVsZXZhbnQgdG8gbG93LWxldmVsIHBhY2tldCBwcm9jZXNzaW5nIGVmZmljaWVuY3ksIG9yIHBlcmhhcHMgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWNzIG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrIGJlaW5nIHVzZWQuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGFuZCBjb25maXJtIHRoYXQgc3RhdGljIHF1YWxpZmllciBhbmQgdGhlbiBjb25zaWRlciB0aGUgaW1wbGljYXRpb25zIGlmIGl0IGlzIGluZGVlZCBzdGF0aWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMjksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODozOC40ODk0NTU0NjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjI3ODYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWNrZXRfc2VuZG1zZ19zcGt0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xOTIzPXN0YXRpYyB2b2lkIHBhY2tldF9wYXJzZV9oZWFkZXJzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDctXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxOTQ4OnN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2dfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTQ5LVxcdFxcdFxcdCAgICAgICBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00NjUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3BrdCA9IHtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY2My1cXHQuc2h1dGRvd24gPVxcdHNvY2tfbm9fc2h1dGRvd24sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NjY0OlxcdC5zZW5kbXNnID1cXHRwYWNrZXRfc2VuZG1zZ19zcGt0LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY2NS1cXHQucmVjdm1zZyA9XFx0cGFja2V0X3JlY3Ztc2csXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjM4LjYyNTczOTg5OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTEyNDgzMzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIEZ1bmN0aW9uKipcblxuSG1tLCBzbyBgcGFja2V0X3NlbmRtc2dfc3BrdGAgaXMgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZyBpbiBpdHNlbGYuIEJ1dCBpdCdzIGFsc28gZGVjbGFyZWQgYXMgYSBgcHJvdG9fb3BzYCBjYWxsYmFjay4gVGhhdCBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZSBhbmQgcG90ZW50aWFsIGNvbmN1cnJlbmN5IGlzc3VlcyByaWdodCBhd2F5LiBBIHN0YXRpYyBmdW5jdGlvbiwgcGFydGljdWxhcmx5IGluIGEgY2FsbGJhY2sgc2l0dWF0aW9uIGxpa2UgdGhpcywgc3VnZ2VzdHMgaXQncyBsaWtlbHkgc2NvcGVkIHRvIGEgc3BlY2lmaWMgbW9kdWxlIG9yIGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIG9mZmVycyBjZXJ0YWluIGFkdmFudGFnZXMuIEJ1dCBpcyBgcGFja2V0X3NuZGAgc3RhdGljIHRvbz8gVGhlIGxpbmthZ2Ugb2YgdGhhdCBmdW5jdGlvbiBpcyByZWxldmFudCBpbiBkZXRlcm1pbmluZyB0aGUgY29uc3RyYWludHMgb24gaG93IGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHJlbGF0aW9uc2hpcCB0byB0cnVseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGRlc2lnbiBkZWNpc2lvbnMuIFRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhcmUgc2lnbmlmaWNhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MjcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODo0MS43MzgyMjU3MzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwOTIxNjA1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWNrZXRfc25kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yNTExPXN0YXRpYyB2b2lkIHRwYWNrZXRfZGVzdHJ1Y3Rfc2tiKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1MzAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTMxOnN0YXRpYyBpbnQgX19wYWNrZXRfc25kX3ZuZXRfcGFyc2Uoc3RydWN0IHZpcnRpb19uZXRfaGRyICp2bmV0X2hkciwgc2l6ZV90IGxlbilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1MzIte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTQ2LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjU0NzpzdGF0aWMgaW50IHBhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCAqbGVuLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjU0OC1cXHRcXHRcXHRcXHQgc3RydWN0IHZpcnRpb19uZXRfaGRyICp2bmV0X2hkciwgaW50IHZuZXRfaGRyX3N6KVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTU4LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjU1OTpcXHRyZXQgPSBfX3BhY2tldF9zbmRfdm5ldF9wYXJzZSh2bmV0X2hkciwgKmxlbik7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTYwLVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI2NTA9c3RhdGljIGludCB0cGFja2V0X3BhcnNlX2hlYWRlcihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSxcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjcxNy1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3MTg6c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzE5LXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjgzMC1cXHRcXHRcXHRtZW1jcHkoXFx1MDAyNnZuZXRfaGRyLCBkYXRhIC0gdm5ldF9oZHJfc3osIHNpemVvZih2bmV0X2hkcikpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjgzMTpcXHRcXHRcXHRpZiAoX19wYWNrZXRfc25kX3ZuZXRfcGFyc2UoXFx1MDAyNnZuZXRfaGRyLCB0cF9sZW4pKSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yODMyLVxcdFxcdFxcdFxcdHRwX2xlbiA9IC1FSU5WQUw7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI5MjA9c3RhdGljIHN0cnVjdCBza19idWZmICpwYWNrZXRfYWxsb2Nfc2tiKHN0cnVjdCBzb2NrICpzaywgc2l6ZV90IHByZXBhZCxcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjk0NS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI5NDY6c3RhdGljIGludCBwYWNrZXRfc25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI5NDcte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMDAyLVxcdGlmICh2bmV0X2hkcl9zeikge1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzAwMzpcXHRcXHRlcnIgPSBwYWNrZXRfc25kX3ZuZXRfcGFyc2UobXNnLCBcXHUwMDI2bGVuLCBcXHUwMDI2dm5ldF9oZHIsIHZuZXRfaGRyX3N6KTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMwMDQtXFx0XFx0aWYgKGVycilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MzEwND1zdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEwOS1cXHQvKiBSZWFkaW5nIHR4X3JpbmcucGdfdmVjIHdpdGhvdXQgaG9sZGluZyBwZ192ZWNfbG9jayBpcyByYWN5Llxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzExMDpcXHQgKiB0cGFja2V0X3NuZCgpIHdpbGwgcmVkbyB0aGUgY2hlY2sgc2FmZWx5Llxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzExMS1cXHQgKi9cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMTItXFx0aWYgKGRhdGFfcmFjZShwby1cXHUwMDNldHhfcmluZy5wZ192ZWMpKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzExMzpcXHRcXHRyZXR1cm4gdHBhY2tldF9zbmQocG8sIG1zZyk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTE0LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzExNTpcXHRyZXR1cm4gcGFja2V0X3NuZChzb2NrLCBtc2csIGxlbik7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTE2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6NDIuMTQ3NDUwODg0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2ODY4MDg2OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIFBhY2tldCBUcmFuc21pc3Npb24gRW50cnkgUG9pbnQqKlxuXG5Pa2F5LCBzbyBgcGFja2V0X3NlbmRtc2dgIOKAkyB0aGF0J3MgdGhlIGtleSBoZXJlLCBpdCdzIHRoZSBub24tc3RhdGljIGVudHJ5IHBvaW50LCBvciBtYXliZSBpdCdzIGp1c3QgYWxpYXNlZCB0byBgc2VuZG1zZ2Agc3RhdGljYWxseS4gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gUmlnaHQgbm93LCBJIHNob3VsZCBkZWx2ZSBpbnRvIGBwYWNrZXRfc2VuZG1zZ2AuIEl0J3Mgd2hlcmUgdGhlIHBhY2tldCB0cmFuc21pc3Npb24gcHJvY2VzcyBhY3R1YWxseSBzdGFydHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYXQgdGhhdCBwb2ludCBhbmQgaG93IHRoaW5ncyBmbG93IGZyb20gdGhlcmUuIExldCdzIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc0NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjQ0LjgzNDI2MTc5M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkzMTk5OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFja2V0X3NlbmRtc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5MjM9c3RhdGljIHZvaWQgcGFja2V0X3BhcnNlX2hlYWRlcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2tldCAqc29jaylcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0Ny1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE5NDg6c3RhdGljIGludCBwYWNrZXRfc2VuZG1zZ19zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZyxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE5NDktXFx0XFx0XFx0ICAgICAgIHNpemVfdCBsZW4pXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI3MTg9c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3NDAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNzQxOlxcdC8qIHBhY2tldF9zZW5kbXNnKCkgY2hlY2sgb24gdHhfcmluZy5wZ192ZWMgd2FzIGxvY2tsZXNzLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjc0Mi1cXHQgKiB3ZSBuZWVkIHRvIGNvbmZpcm0gaXQgdW5kZXIgcHJvdGVjdGlvbiBvZiBwZ192ZWNfbG9jay5cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9Mjk0Nj1zdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTAzLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzEwNDpzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMDUte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00NjUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3BrdCA9IHtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY2My1cXHQuc2h1dGRvd24gPVxcdHNvY2tfbm9fc2h1dGRvd24sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NjY0OlxcdC5zZW5kbXNnID1cXHRwYWNrZXRfc2VuZG1zZ19zcGt0LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY2NS1cXHQucmVjdm1zZyA9XFx0cGFja2V0X3JlY3Ztc2csXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQ2Njk9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY4NC1cXHQuZ2V0c29ja29wdF9pdGVyID1cXHRwYWNrZXRfZ2V0c29ja29wdCxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ2ODU6XFx0LnNlbmRtc2cgPVxcdHBhY2tldF9zZW5kbXNnLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDY4Ni1cXHQucmVjdm1zZyA9XFx0cGFja2V0X3JlY3Ztc2csXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjQ0LjkwMzU4ODEzNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQwNzk0MTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgQUZfUEFDS0VUIFNlbmQgUGF0aCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBgc2VuZG1zZ2Agd29ya3MgZm9yIGBBRl9QQUNLRVRgIHNvY2tldHMuIEkgc2VlIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIHVzZWQgZm9yIHRoZSBgc2VuZG1zZ2Agb3BlcmF0aW9uLiBUaGUgaW1wb3J0YW50IHRoaW5nIHRvIG5vdGUgaXMgdGhhdCB0aGVzZSBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLCB3aGljaCBtZWFucyB0aGV5IGFyZSB0aGUgYWN0dWFsIGVudHJ5IHBvaW50cywgYnV0IHRoZXkgYXJlIGxvY2FsaXplZC5cblxuVGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gSSBsZXZlcmFnZSBhbnkgb3RoZXIgKm5vbi1zdGF0aWMqIGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBmYW1pbHk/IEFyZSB0aGVyZSBwZXJoYXBzIGFueSBpbnRlcm1lZGlhcnkgZnVuY3Rpb25zIHRoYXQgYXJlIGV4cG9zZWQgbW9yZSB3aWRlbHk/IElmIG5vdCwgdGhlbiBJJ2xsIHNpbXBseSBoYXZlIHRvIHdvcmsgZGlyZWN0bHkgd2l0aCB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zLlxuXG5IYW5nIG9u4oCmIGp1c3QgYSBxdWljayBjb25maXJtYXRpb24sIGBwYWNrZXRfc2VuZG1zZ2AgaXMgKmluZGVlZCogc3RhdGljLiBPa2F5LCBubyBjb25mdXNpb24gdGhlcmUuIEFscmlnaHQsIHRoZSBtb3N0IGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGNhcmVmdWxseSBjaGVjayB0aGUgYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgIGZpbGUgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBtb3JlIGFwcHJvcHJpYXRlIG5vbi1zdGF0aWMgb3B0aW9uLiBJJ2xsIHNjYW4gdGhyb3VnaCBpdCBhbmQgc2VlIGlmIGFueXRoaW5nIGp1bXBzIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUyMSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODo0OC45NDQzODQ2NDhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0ODU5NjU1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IFthLXpBLVowLTlfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODo0OS4wMDkyNTIzNDJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyNTE0Nzc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlBhdHRlcm4gUmVjb2duaXRpb24gaW4gQ29kZSBTbmlwcGV0cyoqXG5cbkFscmlnaHQsIEkgc2VlIGEgcGF0dGVybiBlbWVyZ2luZy4gVGhlIGhpbnQgZ2l2ZW4gaXMgYF52b2lkIFthLXpBLVowLTlfXStcXChgLiBJbW1lZGlhdGVseSwgbXkgbWluZCBpcyBkcmF3biB0byB0aGUgaW1wbGljYXRpb25zLiBUaGUgYF5gIGFuY2hvcnMgdGhlIHN0YXJ0IG9mIHRoZSBtYXRjaC4gVGhhdCdzIGdvb2QuIGB2b2lkYCBpcyBhIGNsZWFyIHR5cGUgZGVjbGFyYXRpb24uIEZyb20gYSBsYW5ndWFnZSBwZXJzcGVjdGl2ZSwgaXQgc2lnbmFscyBhIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCByZXR1cm4gYSB2YWx1ZS4gVGhlIHN1YnNlcXVlbnQgc3BhY2UgcmVpbmZvcmNlcyB0aGUgdHlwZS1mdW5jdGlvbiBzZXBhcmF0aW9uIHdoaWNoIG1ha2VzIG1lIHRoaW5rIG9mIEMsIEMrKywgb3Igc2ltaWxhciBsYW5ndWFnZXMuXG5cblRoZW4gd2UgaGF2ZSBgW2EtekEtWjAtOV9dK2AuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gSSBzZWUgYSBjaGFyYWN0ZXIgY2xhc3MgcmVwcmVzZW50aW5nIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCB1bmRlcnNjb3JlcywgcmVwZWF0ZWQgb25lIG9yIG1vcmUgdGltZXMsIHdoaWNoIGRpcmVjdGx5IHNpZ25pZmllcyBhIGZ1bmN0aW9uIG5hbWUgb3IgYW4gaWRlbnRpZmllciB1bmRlciBlc3RhYmxpc2hlZCBuYW1pbmcgcnVsZXMuIFxuXG5GaW5hbGx5LCB0aGUgYFxcKGAgaW5kaWNhdGVzIGFuIG9wZW4gcGFyZW50aGVzaXMsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBkZWNsYXJhdGlvbi4gSXQncyB0aGUgc3RhbmRhcmQgd2F5IGluIEMtbGlrZSBsYW5ndWFnZXMuXG5cblRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIGRlc2lnbmVkIHRvIGlkZW50aWZ5IGZ1bmN0aW9uIHNpZ25hdHVyZXMgd2l0aGluIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgdGhvc2Ugd2l0aCBhIGB2b2lkYCByZXR1cm4gdHlwZSBhbmQgYSBzdGFuZGFyZCBhbHBoYW51bWVyaWMgZnVuY3Rpb24gbmFtZS4gSXQncyBhIHJhdGhlciBzcGVjaWZpYyBhbmQgY29tbW9uIHBhdHRlcm4uIFRoaXMgaGludHMgYXQgYSBwYXJzaW5nIG9yIGNvZGUgYW5hbHlzaXMgdGFzaywgbWF5YmUgaWRlbnRpZnlpbmcgZnVuY3Rpb25zIGZvciBzdGF0aWMgYW5hbHlzaXMsIHJlZmFjdG9yaW5nLCBvciBjb2RlIGdlbmVyYXRpb24uIEl0IHdpbGwgY2FwdHVyZSB0aGUgbmFtZSBhbmQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb24gZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZy4gSSB3b3VsZCBuZWVkIG1vcmUgY29udGV4dCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBnb2FsIG9mIHRoZSBwYXR0ZXJuIG1hdGNoaW5nLCBidXQgdGhpcyBpbml0aWFsIGJyZWFrZG93biBpcyBhIHNvdW5kIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTE5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6NTIuOTM0NDAyNjE0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjgwNjAxMDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl52b2lkIFthLXpBLVowLTlfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQyMDoyODo1My4wNjI0NzEzMTNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzNjMwNTQwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIGV4cHJlc3NlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGF0IFJlZ3VsYXIgRXhwcmVzc2lvbiBTbmlwcGV0KipcblxuQWxyaWdodCwgSSdtIGxvb2tpbmcgYXQgdGhpcyBleHByZXNzaW9uLCBgXnN0YXRpYyBpbnQgW2EtekEtWjAtOV9dK1xcKGAsIGFuZCBteSBicmFpbiBpcyBpbnN0YW50bHkgcGFyc2luZyBpdC4gVGhlIGBeYCBhdCB0aGUgYmVnaW5uaW5nIHRlbGxzIG1lIHRoaXMgaXMgbWVhbnQgdG8gbWF0Y2ggZnJvbSB0aGUgc3RhcnQgb2YgYSBsaW5lIG9yIHN0cmluZy4gVGhhdCdzIGdvb2QsIHNldHMgYSBjbGVhciBhbmNob3IuIFRoZW4sIEkgc2VlIGBzdGF0aWMgaW50YC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB3ZSdyZSBodW50aW5nIGZvciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMsIHNwZWNpZmljYWxseSBvbmVzIHRoYXQgYXJlIGBzdGF0aWNgIGFuZCByZXR1cm4gYW4gYGludGAuIE9rYXksIGNsYXNzaWMgQy9DKysgb3Igc2ltaWxhciBsYW5ndWFnZSwgcHJvYmFibHkuIFRoZSBgIGAgKHNwYWNlKSBpcyBpbXBvcnRhbnQgaW4gc3VjaCBjYXNlcywgYmVjYXVzZSBpdCBkZW5vdGVzIHRoZSBzZXBhcmF0aW5nIG9mIHRoZSBcInN0YXRpYyBpbnRcIiBmcm9tIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS5cblxuVGhlIG1lYXQgb2YgaXQgaXMgdGhlIG5leHQgcGFydDogYFthLXpBLVowLTlfXStcXChgLiBIZXJlLCBgW2EtekEtWjAtOV9dK2AgaXMgdGhlIGtleS4gVGhhdCdzIGEgY2hhcmFjdGVyIGNsYXNzIG1hdGNoaW5nIG9uZSBvciBtb3JlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCB1bmRlcnNjb3Jlcy4gVGhhdCdzICpleGFjdGx5KiB3aGF0IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBtb3N0IEMtbGlrZSBsYW5ndWFnZXMgaXMuIEl0J3MgZXhwZWN0aW5nIGEgZnVuY3Rpb24gaWRlbnRpZmllciwgYmFzaWNhbGx5LiBBbmQgdGhlIGBcXGAgYmVmb3JlIHRoZSBgKGAgaXMgaW50ZXJlc3RpbmcsIGFzIGl0IGlzIGEgd2F5IHRvIGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMsIGluIHRoZSBjYXNlIG9mIHBhcmVudGhlc2lzLiBMYXN0bHksIHRoZSBgXFwoYCwgd2VsbCwgdGhhdCdzIHRoZSB0ZWxsLiBUaGF0IG9wZW4gcGFyZW50aGVzaXMgaXMgZXNzZW50aWFsOiBpdCBpbmRpY2F0ZXMgdGhlIGJlZ2lubmluZyBvZiBhIGZ1bmN0aW9uJ3MgcGFyYW1ldGVyIGxpc3QuIFNvLCBhbGwgdG9nZXRoZXIsIHRoaXMgbG9va3MgbGlrZSBhIHJlZ2V4IGRlc2lnbmVkIHRvIGlkZW50aWZ5IGZ1bmN0aW9uIHNpZ25hdHVyZXMgaW4gY29kZSwgb3IgYXQgbGVhc3QgYSBwb3J0aW9uIG9mIHRoZW0uIFBlcmhhcHMgYSBxdWljayB3YXkgdG8gZmluZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gYSBjb2RlIGZpbGU/IE9yIGEgdmVyeSBzcGVjaWZpYyBmdW5jdGlvbiBuYW1pbmcgY29udmVudGlvbiBjaGVjaz9cblxuXG4iLCJJbnB1dFRva2VucyI6NzMyOSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI4OjU2Ljk5ODc3OTIxNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDExODE5MTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgaW50IFthLXpBLVowLTlfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTY3PXVuaW9uIHRwYWNrZXRfdWhkciB7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3My1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3NDpzdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc1LVxcdFxcdGludCBjbG9zaW5nLCBpbnQgdHhfcmluZyk7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE5MT1zdHJ1Y3QgcGFja2V0X3NvY2s7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxOTI6c3RhdGljIGludCB0cGFja2V0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTkzLVxcdFxcdCAgICAgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0LCBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19kZXYpO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xOTg9c3RhdGljIHZvaWQgcGFja2V0X2luY3JlbWVudF9oZWFkKHN0cnVjdCBwYWNrZXRfcmluZ19idWZmZXIgKmJ1ZmYpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTk5OnN0YXRpYyBpbnQgcHJiX2N1cnJfYmxrX2luX3VzZShzdHJ1Y3QgdHBhY2tldF9ibG9ja19kZXNjICopO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjAwLXN0YXRpYyB2b2lkICpwcmJfZGlzcGF0Y2hfbmV4dF9ibG9jayhzdHJ1Y3QgdHBhY2tldF9rYmRxX2NvcmUgKixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjAyPXN0YXRpYyB2b2lkIHByYl9yZXRpcmVfY3VycmVudF9ibG9jayhzdHJ1Y3QgdHBhY2tldF9rYmRxX2NvcmUgKixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIwMy1cXHRcXHRzdHJ1Y3QgcGFja2V0X3NvY2sgKiwgdW5zaWduZWQgaW50IHN0YXR1cyk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyMDQ6c3RhdGljIGludCBwcmJfcXVldWVfZnJvemVuKHN0cnVjdCB0cGFja2V0X2tiZHFfY29yZSAqKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIwNS1zdGF0aWMgdm9pZCBwcmJfb3Blbl9ibG9jayhzdHJ1Y3QgdHBhY2tldF9rYmRxX2NvcmUgKixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjQ3PXN0YXRpYyBub2lubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqbmZfaG9va19kaXJlY3RfZWdyZXNzKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI3Mi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3MzpzdGF0aWMgaW50IHBhY2tldF94bWl0KGNvbnN0IHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzQte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00MDA9c3RhdGljIHZvaWQgX19wYWNrZXRfc2V0X3N0YXR1cyhzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSwgaW50IHN0YXR1cylcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDI3LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDI4OnN0YXRpYyBpbnQgX19wYWNrZXRfZ2V0X3N0YXR1cyhjb25zdCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSlcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQyOS17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTU4Mz1zdGF0aWMgdm9pZCBwcmJfc2h1dGRvd25fcmV0aXJlX2Jsa190aW1lcihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy01OTEtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo1OTI6c3RhdGljIGludCBwcmJfY2FsY19yZXRpcmVfYmxrX3RtbyhzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNTkzLVxcdFxcdFxcdFxcdGludCBibGtfc2l6ZV9pbl9ieXRlcylcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9OTQwPXN0YXRpYyB2b2lkIHByYl9yZXRpcmVfY3VycmVudF9ibG9jayhzdHJ1Y3QgdHBhY2tldF9rYmRxX2NvcmUgKnBrYyxcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtOTY1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6OTY2OnN0YXRpYyBpbnQgcHJiX2N1cnJfYmxrX2luX3VzZShzdHJ1Y3QgdHBhY2tldF9ibG9ja19kZXNjICpwYmQpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy05Njcte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy05NzAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo5NzE6c3RhdGljIGludCBwcmJfcXVldWVfZnJvemVuKHN0cnVjdCB0cGFja2V0X2tiZHFfY29yZSAqcGtjKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtOTcyLXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTEyOD1zdGF0aWMgdm9pZCAqcHJiX2xvb2t1cF9ibG9jayhjb25zdCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMTQwLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTE0MTpzdGF0aWMgaW50IHByYl9wcmV2aW91c19ibGtfbnVtKHN0cnVjdCBwYWNrZXRfcmluZ19idWZmZXIgKnJiKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTE0Mi17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTEyMDg9c3RhdGljIHVuc2lnbmVkIGludCBwYWNrZXRfcmVhZF9wZW5kaW5nKGNvbnN0IHN0cnVjdCBwYWNrZXRfcmluZ19idWZmZXIgKnJiKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMjIyLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTIyMzpzdGF0aWMgaW50IHBhY2tldF9hbGxvY19wZW5kaW5nKHN0cnVjdCBwYWNrZXRfc29jayAqcG8pXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMjI0LXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTI1Nz1zdGF0aWMgYm9vbCBfX3RwYWNrZXRfdjNfaGFzX3Jvb20oY29uc3Qgc3RydWN0IHBhY2tldF9zb2NrICpwbywgaW50IHBvd19vZmYpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEyNjktXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxMjcwOnN0YXRpYyBpbnQgX19wYWNrZXRfcmN2X2hhc19yb29tKGNvbnN0IHN0cnVjdCBwYWNrZXRfc29jayAqcG8sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMjcxLVxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzAzLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTMwNDpzdGF0aWMgaW50IHBhY2tldF9yY3ZfaGFzX3Jvb20oc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzMDUte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xNDUxPXN0YXRpYyBib29sIGZhbm91dF9oYXNfZmxhZyhzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZiwgdTE2IGZsYWcpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NTUtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDU2OnN0YXRpYyBpbnQgcGFja2V0X3Jjdl9mYW5vdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NTctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0LCBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19kZXYpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE1Njg9c3RhdGljIHZvaWQgX19mYW5vdXRfc2V0X2RhdGFfYnBmKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLCBzdHJ1Y3QgYnBmX3Byb2cgKm5ldylcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU4Mi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1ODM6c3RhdGljIGludCBmYW5vdXRfc2V0X2RhdGFfY2JwZihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzb2NrcHRyX3QgZGF0YSxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1ODQtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGxlbilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYwNC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MDU6c3RhdGljIGludCBmYW5vdXRfc2V0X2RhdGFfZWJwZihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzb2NrcHRyX3QgZGF0YSxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MDYtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGxlbilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYyNS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MjY6c3RhdGljIGludCBmYW5vdXRfc2V0X2RhdGEoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc29ja3B0cl90IGRhdGEsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjI3LVxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBsZW4pXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTE2NjE9c3RhdGljIGJvb2wgZmFub3V0X2ZpbmRfbmV3X2lkKHN0cnVjdCBzb2NrICpzaywgdTE2ICpuZXdfaWQpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NzctXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjc4OnN0YXRpYyBpbnQgZmFub3V0X2FkZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmYW5vdXRfYXJncyAqYXJncylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2Nzkte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xODU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3BrdDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4NTYtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODU3OnN0YXRpYyBpbnQgcGFja2V0X3Jjdl9zcGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODU4LVxcdFxcdFxcdCAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX2RldilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTkyMz1zdGF0aWMgdm9pZCBwYWNrZXRfcGFyc2VfaGVhZGVycyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xOTQ3LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTk0ODpzdGF0aWMgaW50IHBhY2tldF9zZW5kbXNnX3Nwa3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTk0OS1cXHRcXHRcXHQgICAgICAgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjA3ND1zdGF0aWMgdW5zaWduZWQgaW50IHJ1bl9maWx0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjA4OC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjIwODk6c3RhdGljIGludCBwYWNrZXRfcmN2X3ZuZXQoc3RydWN0IG1zZ2hkciAqbXNnLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjA5MC1cXHRcXHRcXHQgICBzaXplX3QgKmxlbiwgaW50IHZuZXRfaGRyX3N6KVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMTE1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjExNjpzdGF0aWMgaW50IHBhY2tldF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIxMTctXFx0XFx0ICAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfZGV2KVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMjI4LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MjIyOTpzdGF0aWMgaW50IHRwYWNrZXRfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMjMwLVxcdFxcdCAgICAgICBzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0LCBzdHJ1Y3QgbmV0X2RldmljZSAqb3JpZ19kZXYpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTI1MTE9c3RhdGljIHZvaWQgdHBhY2tldF9kZXN0cnVjdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjUzMC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI1MzE6c3RhdGljIGludCBfX3BhY2tldF9zbmRfdm5ldF9wYXJzZShzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKnZuZXRfaGRyLCBzaXplX3QgbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjUzMi17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NDYtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTQ3OnN0YXRpYyBpbnQgcGFja2V0X3NuZF92bmV0X3BhcnNlKHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90ICpsZW4sXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNTQ4LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgdmlydGlvX25ldF9oZHIgKnZuZXRfaGRyLCBpbnQgdm5ldF9oZHJfc3opXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI1NjktXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNTcwOnN0YXRpYyBpbnQgdHBhY2tldF9maWxsX3NrYihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjU3MS1cXHRcXHR2b2lkICpmcmFtZSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgaW50IHRwX2xlbixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjY0OS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI2NTA6c3RhdGljIGludCB0cGFja2V0X3BhcnNlX2hlYWRlcihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCB2b2lkICpmcmFtZSxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI2NTEtXFx0XFx0XFx0XFx0aW50IHNpemVfbWF4LCB2b2lkICoqZGF0YSlcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjcxNy1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI3MTg6c3RhdGljIGludCB0cGFja2V0X3NuZChzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzdHJ1Y3QgbXNnaGRyICptc2cpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNzE5LXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjkyMD1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBhY2tldF9hbGxvY19za2Ioc3RydWN0IHNvY2sgKnNrLCBzaXplX3QgcHJlcGFkLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yOTQ1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mjk0NjpzdGF0aWMgaW50IHBhY2tldF9zbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjk0Ny17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMDMtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTA0OnN0YXRpYyBpbnQgcGFja2V0X3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEwNS17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMjItXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTIzOnN0YXRpYyBpbnQgcGFja2V0X3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxMjQte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTk1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzE5NjpzdGF0aWMgaW50IHBhY2tldF9kb19iaW5kKHN0cnVjdCBzb2NrICpzaywgY29uc3QgY2hhciAqbmFtZSwgaW50IGlmaW5kZXgsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTk3LVxcdFxcdFxcdCAgX19iZTE2IHByb3RvKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMjg5LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzI5MDpzdGF0aWMgaW50IHBhY2tldF9iaW5kX3Nwa3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKnVhZGRyLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzI5MS1cXHRcXHRcXHQgICAgaW50IGFkZHJfbGVuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMzExLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzMxMjpzdGF0aWMgaW50IHBhY2tldF9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkciwgaW50IGFkZHJfbGVuKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzMxMy17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMzMjk9c3RhdGljIHN0cnVjdCBwcm90byBwYWNrZXRfcHJvdG8gPSB7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMzMzgtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMzM5OnN0YXRpYyBpbnQgcGFja2V0X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMzNDAtXFx0XFx0XFx0IGludCBrZXJuKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNDE2LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzQxNzpzdGF0aWMgaW50IHBhY2tldF9yZWN2bXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM0MTgtXFx0XFx0XFx0ICBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM1ODEtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNTgyOnN0YXRpYyBpbnQgcGFja2V0X2dldG5hbWVfc3BrdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzU4My1cXHRcXHRcXHQgICAgICAgaW50IHBlZXIpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM2MDEtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNjAyOnN0YXRpYyBpbnQgcGFja2V0X2dldG5hbWUoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkcixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM2MDMtXFx0XFx0XFx0ICBpbnQgcGVlcilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzYzOC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM2Mzk6c3RhdGljIGludCBwYWNrZXRfZGV2X21jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwYWNrZXRfbWNsaXN0ICppLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzY0MC1cXHRcXHRcXHQgaW50IHdoYXQpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTM2Njk9c3RhdGljIHZvaWQgcGFja2V0X2Rldl9tY2xpc3RfZGVsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM2ODMtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNjg0OnN0YXRpYyBpbnQgcGFja2V0X21jX2FkZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwYWNrZXRfbXJlcV9tYXggKm1yZXEpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNjg1LXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzczOS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM3NDA6c3RhdGljIGludCBwYWNrZXRfbWNfZHJvcChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwYWNrZXRfbXJlcV9tYXggKm1yZXEpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNzQxLXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9Mzc4OD1wYWNrZXRfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDU5LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDA2MDpzdGF0aWMgaW50IHBhY2tldF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDYxLVxcdFxcdFxcdCAgICAgc29ja29wdF90ICpvcHQpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQxODUtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MTg2OnN0YXRpYyBpbnQgcGFja2V0X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqdGhpcyxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQxODctXFx0XFx0XFx0ICAgdW5zaWduZWQgbG9uZyBtc2csIHZvaWQgKnB0cilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDI0Ni1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQyNDc6c3RhdGljIGludCBwYWNrZXRfaW9jdGwoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQyNDgtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQzOTI9c3RhdGljIHN0cnVjdCBwZ3YgKmFsbG9jX3BnX3ZlYyhzdHJ1Y3QgdHBhY2tldF9yZXEgKnJlcSwgaW50IG9yZGVyKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NDE2LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDQxNzpzdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDQxOC1cXHRcXHRpbnQgY2xvc2luZywgaW50IHR4X3JpbmcpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ1ODctXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NTg4OnN0YXRpYyBpbnQgcGFja2V0X21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NTg5LVxcdFxcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00NzE3PXN0YXRpYyB2b2lkIHBhY2tldF9zZXFfc3RvcChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDcyMi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ3MjM6c3RhdGljIGludCBwYWNrZXRfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NzI0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMjA6Mjg6NTcuNDEwNjAyODY4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNTkzMTYxMTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYXNvbmluZyBmb3IgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIG9wdGltYWwgZnV6emluZyBzdHJhdGVneSBmb3IgdGhpcyBwYXRjaCwgYW5kIEkgbmVlZCB0byBiZSBwcmVjaXNlLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHBhY2tldF9wYXJzZV9oZWFkZXJzYCB3aXRoaW4gYG5ldC9wYWNrZXQvYWZfcGFja2V0LmNgLiBUaGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb24gYEFGX1BBQ0tFVGAgc29ja2V0cywgc3BlY2lmaWNhbGx5IGFsdGVyaW5nIHRoZSBiZWhhdmlvciBvZiBob3cgdGhlIE1BQyBoZWFkZXIgaXMgaGFuZGxlZC4gVGhlIGNvcmUgY2hhbmdlIGludm9sdmVzIHVuY29uZGl0aW9uYWxseSByZXNldHRpbmcgdGhlIE1BQyBoZWFkZXIgdXNpbmcgYHNrYl9yZXNldF9tYWNfaGVhZGVyKHNrYilgLCB3aGljaCBwcmV2aW91c2x5IGRlcGVuZGVkIG9uIGEgY29uZGl0aW9uYWwgY2hlY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIHdpdGhpbiB0aGUgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRoLCBtZWFuaW5nIGl0J3MgcHJpbWUgZnV6emluZyB0ZXJyaXRvcnkuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZm9jdXMgb24gYHBhY2tldF9zZW5kbXNnYCBhbmQgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGFzIHRoZSBrZXkgZW50cnkgcG9pbnRzLiBCdXQgSSBoYWQgdG8gY29uZmlybTogYXJlIHN0YXRpYyBmdW5jdGlvbnMgbGlrZSB0aGVzZSB2aWFibGUgZm9jdXMgc3ltYm9scywgY29uc2lkZXJpbmcgdGhleSBtaWdodCBiZSBpbmxpbmVkPyBTeXprYWxsZXIgKmNhbiogaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSAqYXJlbid0KiBpbmxpbmVkLiBMb29raW5nIGF0IHRoZSBjb2RlLCBib3RoIGBwYWNrZXRfc2VuZG1zZ2AgYW5kIGBwYWNrZXRfc2VuZG1zZ19zcGt0YCBhcmUgYXNzaWduZWQgdG8gYHByb3RvX29wc2Agc3RydWN0cy4gVGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiwgd2hpY2ggbWVhbnMgdGhlIGNvbXBpbGVyICp3b24ndCogaW5saW5lIHRoZW0uIFBlcmZlY3QsIHRoZXkgZml0IHRoZSBjcml0ZXJpYS5cblxuVGhlIHByb21wdCwgaG93ZXZlciwgcmVxdWlyZXMgbWUgdG8gYWxzbyBpZGVudGlmeSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGUgcHJvbXB0IGFsc28gbm90ZXMgdG8gb21pdCBcIkNPTkZJR19cIiBwcmVmaXguIFNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19QQUNLRVRgIGlzIHdoYXQgSSdtIGFmdGVyLCBhbmQgdGhlcmVmb3JlLCBJIHNob3VsZCB1c2UgYFBBQ0tFVGAgYXMgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24uIEkndmUgZG91YmxlLWNoZWNrZWQsIGFuZCBgQ09ORklHX1BBQ0tFVGAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnIGhlcmUuXG5cbkkgdGhlbiBkaWQgYSBxdWljayBhdWRpdCB0byBjb25maXJtIHRoYXQgdGhlc2UgdHdvIGVudHJ5cG9pbnRzIGNvdmVyIGFsbCBwb3RlbnRpYWwgY2FsbCBwYXRocy4gYHBhY2tldF9wYXJzZV9oZWFkZXJzYCBpcyBjYWxsZWQgYnkgYHBhY2tldF9zZW5kbXNnX3Nwa3RgLCBgdHBhY2tldF9maWxsX3NrYmAsIGFuZCBgcGFja2V0X3NuZGAuIGB0cGFja2V0X2ZpbGxfc2tiYCBpcyBjYWxsZWQgYnkgYHRwYWNrZXRfc25kYCwgYW5kIGBwYWNrZXRfc25kYCBpcyBjYWxsZWQgYnkgYHBhY2tldF9zZW5kbXNnYC4gSW1wb3J0YW50bHksIGJvdGggYHRwYWNrZXRfc25kYCBhbmQgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGFyZSBhbHNvIGNhbGxlZCBieSBgcGFja2V0X3NlbmRtc2dgLiBTbywgYHBhY2tldF9zZW5kbXNnYCBhbmQgYHBhY2tldF9zZW5kbXNnX3Nwa3RgIGRvLCBpbmRlZWQsIGNvdmVyIHRoZSBjb21wbGV0ZSByZWxldmFudCBleGVjdXRpb24gZmxvdy4gVGhleSdyZSB0aGUgYHNlbmRtc2dgIGNhbGxiYWNrcyBmb3IgdGhlIGBBRl9QQUNLRVRgIHByb3RvY29sIG9wZXJhdGlvbnMuXG5cblNvLCBJJ20gY29uZmlkZW50IGluIG15IHN0cmF0ZWd5OlxuXG4qICAgKipGb2N1cyBTeW1ib2xzOioqIGBwYWNrZXRfc2VuZG1zZ2AsIGBwYWNrZXRfc2VuZG1zZ19zcGt0YFxuKiAgICoqRW5hYmxlIENvbmZpZ3M6KiogYFBBQ0tFVGBcblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBmdXp6aW5nIHRoZXNlIGVudHJ5cG9pbnRzIHdpbGwgZWZmZWN0aXZlbHkgZXhlcmNpc2UgdGhlIG1vZGlmaWVkIGNvZGUuIE5vdywgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzMjEsIk91dHB1dFRva2VucyI6MTM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDIwOjI5OjA4LjAwMzc2NzEyNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTg5NTQ4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFDS0VUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFja2V0X3NlbmRtc2dcIixcbiAgICBcInBhY2tldF9zZW5kbXNnX3Nwa3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIGluIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYCwgd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIG9uIEFGX1BBQ0tFVCBzb2NrZXRzLiBJdCBtb3ZlcyBgc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKWAgb3V0IG9mIGFuIGlmLWNvbmRpdGlvbiwgZW5zdXJpbmcgdGhlIE1BQyBoZWFkZXIgaXMgYWx3YXlzIHJlc2V0IGZvciBhbGwgc29ja2V0IHR5cGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFDS0VUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFja2V0X3NlbmRtc2dcIixcbiAgICBcInBhY2tldF9zZW5kbXNnX3Nwa3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgcGFja2V0X3BhcnNlX2hlYWRlcnNgIGluIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYCwgd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIG9uIEFGX1BBQ0tFVCBzb2NrZXRzLiBJdCBtb3ZlcyBgc2tiX3Jlc2V0X21hY19oZWFkZXIoc2tiKWAgb3V0IG9mIGFuIGlmLWNvbmRpdGlvbiwgZW5zdXJpbmcgdGhlIE1BQyBoZWFkZXIgaXMgYWx3YXlzIHJlc2V0IGZvciBhbGwgc29ja2V0IHR5cGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBwYWNrZXQgdHJhbnNtaXNzaW9uIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow9jswf[1] Phase: Succeeded StartedAt: 2026-07-25 20:29:31 +0000 UTC FinishedAt: 2026-07-25 20:29:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 20:29:31 +0000 UTC FinishedAt: 2026-07-25 20:29:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[2] Phase: Running StartedAt: 2026-07-25 20:29:31 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-07-25 20:29:31 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","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-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 20:29:31 +0000 UTC FinishedAt: 2026-07-25 20:29:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 20:29:31 +0000 UTC FinishedAt: 2026-07-25 20:29:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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-workflow9jswf/series-workflow9jswf-convert-artifact-1292834187/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 20:29:41 +0000 UTC FinishedAt: 2026-07-25 21:12:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 20:29:41 +0000 UTC FinishedAt: 2026-07-25 21:12:23 +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:*84a67f53-cc37-489d-8567-a7aa38802392,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-workflow9jswf/series-workflow9jswf-convert-artifact-1292834187/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": "0984d5ba-f239-4ad8-aa0c-e3922180a300", "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-workflow9jswf/series-workflow9jswf-build-action-3797094537/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 20:29:41 +0000 UTC FinishedAt: 2026-07-25 21:12:13 +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:*84a67f53-cc37-489d-8567-a7aa38802392,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-workflow9jswf/series-workflow9jswf-convert-artifact-1292834187/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": "0984d5ba-f239-4ad8-aa0c-e3922180a300", "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-workflow9jswf/series-workflow9jswf-build-action-3797094537/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 21:12:23 +0000 UTC FinishedAt: 2026-07-25 21:12:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 21:12:23 +0000 UTC FinishedAt: 2026-07-25 21:12:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 21:12:23 +0000 UTC FinishedAt: 2026-07-25 21:12:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 21:12:23 +0000 UTC FinishedAt: 2026-07-25 21:12:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","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-workflow9jswf/series-workflow9jswf-convert-artifact-2632193506/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 21:12:45 +0000 UTC FinishedAt: 2026-07-25 21:14:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 21:12:45 +0000 UTC FinishedAt: 2026-07-25 21:14:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0984d5ba-f239-4ad8-aa0c-e3922180a300,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-workflow9jswf/series-workflow9jswf-build-action-3797094537/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-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 21:14:49 +0000 UTC FinishedAt: 2026-07-25 21:14:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 21:14:49 +0000 UTC FinishedAt: 2026-07-25 21:14:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Running StartedAt: 2026-07-25 21:14:49 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","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: Running StartedAt: 2026-07-25 21:14:49 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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:*84a67f53-cc37-489d-8567-a7aa38802392,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-workflow9jswf/series-workflow9jswf-convert-artifact-2632193506/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9jswf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"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":["packet_sendmsg","packet_sendmsg_spkt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53658c6f3682967a5e76ed4bc7462c4bdcddaec3","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"239596a5-4943-4c68-8208-4b5dba65093f","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: Pending StartedAt: 2026-07-25 21:14:49 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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:*84a67f53-cc37-489d-8567-a7aa38802392,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-workflow9jswf/series-workflow9jswf-convert-artifact-2632193506/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil