Name: series-workflowjzrwb Phase: Succeeded StartedAt: 2026-08-17 08:37:23 +0000 UTC FinishedAt: 2026-08-17 12:23:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[0] Phase: Succeeded StartedAt: 2026-08-17 08:37:23 +0000 UTC FinishedAt: 2026-08-17 08:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[0].run-triage Phase: Succeeded StartedAt: 2026-08-17 08:37:23 +0000 UTC FinishedAt: 2026-08-17 08:39:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING" ], "series_id": "5757e25d-a367-41e7-a10e-4c1735842f59" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bond_3ad_state_machine_handler", "bond_3ad_bind_slave", "bond_3ad_unbind_slave", "bond_3ad_lacpdu_recv" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXImIzM0OywKICAgICYjMzQ7Ym9uZF8zYWRfYmluZF9zbGF2ZSYjMzQ7LAogICAgJiMzNDtib25kXzNhZF91bmJpbmRfc2xhdmUmIzM0OywKICAgICYjMzQ7Ym9uZF8zYWRfbGFjcGR1X3JlY3YmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGEgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBiZWluZyBOVUxMIGluIGBhZF9tdXhfbWFjaGluZWAgYW5kIHVzaW5nIGBSQ1VfSU5JVF9QT0lOVEVSYCB0byBpbml0aWFsaXplIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3JgIHRvIE5VTEwgaW4gYGFkX2luaXRpYWxpemVfcG9ydGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyAobGlrZSBwYWdlIGZhdWx0cykgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIHN1Y2ggYXMgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGxlYWtpbmcga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSA4MDIuM2FkIChMQUNQKSBzdGF0ZSBtYWNoaW5lIG9mIHRoZSBib25kaW5nIGRyaXZlci4gVGhlIGJvbmRpbmcgZHJpdmVyIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjcmVhdGluZyBhIGJvbmQgaW50ZXJmYWNlIGFuZCBhZGRpbmcgc2xhdmVzLiBUaGUgTEFDUCBzdGF0ZSBtYWNoaW5lIHJ1bnMgcGVyaW9kaWNhbGx5IG9yIG9uIGV2ZW50cywgbWFraW5nIHRoaXMgYSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzk1ZDRiYWMzNTM3OTA3MmFiODZlNWUyM2ZjYzQwMGY3ZjVlMjQ5YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDA4OjM4OjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xuaW5kZXggYWNiYmEwOGRiZGZhZC4uYzRkZmNhZmNmZjI2NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXG5AQCAtMTA1Myw2ICYjNDM7MTA1Myw5IEBAIHN0YXRpYyB2b2lkIGFkX211eF9tYWNoaW5lKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sICp1cGRhdGVfc2xhdmVfYXJyKVxuIFx0bGFzdF9zdGF0ZSA9IHBvcnQtXHUwMDNlc21fbXV4X3N0YXRlO1xuIFxuIFx0YWdncmVnYXRvciA9IHJjdV9kZXJlZmVyZW5jZShwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IpO1xuJiM0MztcdGlmICghYWdncmVnYXRvcilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRpZiAocG9ydC1cdTAwM2VzbV92YXJzIFx1MDAyNiBBRF9QT1JUX0JFR0lOKSB7XG4gXHRcdHBvcnQtXHUwMDNlc21fbXV4X3N0YXRlID0gQURfTVVYX0RFVEFDSEVEO1xuIFx0fSBlbHNlIHtcbkBAIC0yMDcyLDcgJiM0MzsyMDc1LDcgQEAgc3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9wb3J0KHN0cnVjdCBwb3J0ICpwb3J0LCBjb25zdCBzdHJ1Y3QgYm9uZF9wYXJhbXMgKmJvbmRcbiBcdFx0cG9ydC1cdTAwM2VzbV9tdXhfc3RhdGUgPSAwO1xuIFx0XHRwb3J0LVx1MDAzZXNtX211eF90aW1lcl9jb3VudGVyID0gMDtcbiBcdFx0cG9ydC1cdTAwM2VzbV90eF9zdGF0ZSA9IDA7XG4tXHRcdHBvcnQtXHUwMDNlYWdncmVnYXRvciA9IE5VTEw7XG4mIzQzO1x0XHRSQ1VfSU5JVF9QT0lOVEVSKHBvcnQtXHUwMDNlYWdncmVnYXRvciwgTlVMTCk7XG4gXHRcdHBvcnQtXHUwMDNlbmV4dF9wb3J0X2luX2FnZ3JlZ2F0b3IgPSBOVUxMO1xuIFx0XHRwb3J0LVx1MDAzZXRyYW5zYWN0aW9uX2lkID0gMDtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Qk9ORElORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9iaW5kX3NsYXZlJiMzNDssCiAgICAmIzM0O2JvbmRfM2FkX3VuYmluZF9zbGF2ZSYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9sYWNwZHVfcmVjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgODAyLjNhZCAoTEFDUCkgc3RhdGUgbWFjaGluZSBvZiB0aGUgYm9uZGluZyBkcml2ZXIuIFRoZSBib25kaW5nIGRyaXZlciBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY3JlYXRpbmcgYSBib25kIGludGVyZmFjZSBhbmQgYWRkaW5nIHNsYXZlcy4gVGhlIExBQ1Agc3RhdGUgbWFjaGluZSBydW5zIHBlcmlvZGljYWxseSBvciBvbiBldmVudHMsIG1ha2luZyB0aGlzIGEgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNoYW5nZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM5NWQ0YmFjMzUzNzkwNzJhYjg2ZTVlMjNmY2M0MDBmN2Y1ZTI0OWIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAwODozODozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYwppbmRleCBhY2JiYTA4ZGJkZmFkLi5jNGRmY2FmY2ZmMjY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jCkBAIC0xMDUzLDYgJiM0MzsxMDUzLDkgQEAgc3RhdGljIHZvaWQgYWRfbXV4X21hY2hpbmUoc3RydWN0IHBvcnQgKnBvcnQsIGJvb2wgKnVwZGF0ZV9zbGF2ZV9hcnIpCiAJbGFzdF9zdGF0ZSA9IHBvcnQtJmd0O3NtX211eF9zdGF0ZTsKIAogCWFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC0mZ3Q7YWdncmVnYXRvcik7CiYjNDM7CWlmICghYWdncmVnYXRvcikKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlpZiAocG9ydC0mZ3Q7c21fdmFycyAmYW1wOyBBRF9QT1JUX0JFR0lOKSB7CiAJCXBvcnQtJmd0O3NtX211eF9zdGF0ZSA9IEFEX01VWF9ERVRBQ0hFRDsKIAl9IGVsc2UgewpAQCAtMjA3Miw3ICYjNDM7MjA3NSw3IEBAIHN0YXRpYyB2b2lkIGFkX2luaXRpYWxpemVfcG9ydChzdHJ1Y3QgcG9ydCAqcG9ydCwgY29uc3Qgc3RydWN0IGJvbmRfcGFyYW1zICpib25kCiAJCXBvcnQtJmd0O3NtX211eF9zdGF0ZSA9IDA7CiAJCXBvcnQtJmd0O3NtX211eF90aW1lcl9jb3VudGVyID0gMDsKIAkJcG9ydC0mZ3Q7c21fdHhfc3RhdGUgPSAwOwotCQlwb3J0LSZndDthZ2dyZWdhdG9yID0gTlVMTDsKJiM0MzsJCVJDVV9JTklUX1BPSU5URVIocG9ydC0mZ3Q7YWdncmVnYXRvciwgTlVMTCk7CiAJCXBvcnQtJmd0O25leHRfcG9ydF9pbl9hZ2dyZWdhdG9yID0gTlVMTDsKIAkJcG9ydC0mZ3Q7dHJhbnNhY3Rpb25faWQgPSAwOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQm9uZGluZyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNgLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGJ1ZyBmaXgsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIDgwMi4zYWQgKExBQ1ApIGltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgYm9uZGluZyBkcml2ZXIuIE15IHVuZGVyc3RhbmRpbmcgaXMsIHRoaXMgZHJpdmVyIGlzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2Ug4oCTIHlvdSBjcmVhdGUgYm9uZCBpbnRlcmZhY2VzLCBhZGQgc2xhdmVzLCB0aGluZ3MgbGlrZSB0aGF0LCB1c2luZyBuZXRsaW5rIG9yIHN5c2ZzLiBUaGUgTEFDUCBzdGF0ZSBtYWNoaW5lIGlzIHRoZSBjb3JlIGhlcmUsIHJ1bm5pbmcgZWl0aGVyIHBlcmlvZGljYWxseSBvciByZWFjdGluZyB0byBldmVudHMuCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIHNpbXBsZTsgaW4gYGFkX211eF9tYWNoaW5lYCwgaXQmIzM5O3MgYWRkaW5nIGEgYE5VTExgIGNoZWNrIGZvciBgYWdncmVnYXRvcmAgYWZ0ZXIgZGVyZWZlcmVuY2luZyBpdCB3aXRoIGByY3VfZGVyZWZlcmVuY2VgOgoKYGBgYwphZ2dyZWdhdG9yID0gcmN1X2RlcmVmZXJlbmNlKHBvcnQtJmd0O2FnZ3JlZ2F0b3IpOwoJaWYgKCFhZ2dyZWdhdG9yKQoJCXJldHVybjsKYGBgCgpUaGlzIG1ha2VzIHNlbnNlLiBJZiBgcG9ydC0mZ3Q7YWdncmVnYXRvcmAgaGFwcGVucyB0byBiZSBgTlVMTGAgYXQgdGhhdCBwb2ludCwgcHJlc3VtYWJseSBkdWUgdG8gc29tZSByYWNlIGNvbmRpdGlvbiBvciB1bmluaXRpYWxpemVkIHN0YXRlLCB0aGUgZnVuY3Rpb24gd2lsbCBqdXN0IHJldHVybiwgcHJldmVudGluZyBhIHBvdGVudGlhbCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFNtYXJ0LCBhIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBhcHByb2FjaCwgbWl0aWdhdGluZyBhIGNyYXNoLgoKVGhlIG90aGVyIGhhbGYgb2YgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGBwb3J0LSZndDthZ2dyZWdhdG9yID0gTlVMTDtgIHRvIGBSQ1VfSU5JVF9QT0lOVEVSKHBvcnQtJmd0O2FnZ3JlZ2F0b3IsIE5VTEwpO2Agd2l0aGluIGBhZF9pbml0aWFsaXplX3BvcnRgLiBUaGlzIGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIGltcHJvdmUgdGhlIHN5bmNocm9uaXphdGlvbiBhcm91bmQgdGhlIHBvaW50ZXIgYXNzaWdubWVudC4gVXNpbmcgYFJDVV9JTklUX1BPSU5URVJgIGlzIHRoZSBjb3JyZWN0IHdheSB0byBpbml0aWFsaXplIGFuIFJDVS1wcm90ZWN0ZWQgcG9pbnRlciwgZW5zdXJpbmcgcHJvcGVyIG1lbW9yeSBvcmRlcmluZyBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGNvbmN1cnJlbnQgYWNjZXNzLiBUaGlzIGlzIHRoZSBjb3JyZWN0IHdheSB0byBoYW5kbGUgdGhhdCBpbiB0aGUga2VybmVsLgoKU28sIHRoaXMgcGF0Y2ggaXMgZml4aW5nIGEgcG9zc2libGUgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gYWNjZXNzaW5nIGBwb3J0LSZndDthZ2dyZWdhdG9yYCBpbiB0aGUgODAyLjNhZCBMQUNQIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBmdW5jdGlvbnMgYGFkX211eF9tYWNoaW5lYCBhbmQgYGFkX2luaXRpYWxpemVfcG9ydGAgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGVzZSBjaGFuZ2VzIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBzY2VuYXJpb3MgY291bGQgbGVhZCB0byBgcG9ydC0mZ3Q7YWdncmVnYXRvcmAgYmVjb21pbmcgbnVsbCBpbiB0aGUgZmlyc3QgcGxhY2UgdG8gdW5kZXJzdGFuZCB0aGUgcm9vdCBjYXVzZSBvZiB0aGUgYnVnIGFuZCBhc3Nlc3MgdGhlIGZpeCYjMzk7cyBlZmZlY3RpdmVuZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkX211eF9tYWNoaW5lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz05Nj1zdGF0aWMgaW50IGFkX21hcmtlcl9zZW5kKHN0cnVjdCBwb3J0ICpwb3J0LCBzdHJ1Y3QgYm9uZF9tYXJrZXIgKm1hcmtlcik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6OTc6c3RhdGljIHZvaWQgYWRfbXV4X21hY2hpbmUoc3RydWN0IHBvcnQgKnBvcnQsIGJvb2wgKnVwZGF0ZV9zbGF2ZV9hcnIpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTk4LXN0YXRpYyB2b2lkIGFkX3J4X21hY2hpbmUoc3RydWN0IGxhY3BkdSAqbGFjcGR1LCBzdHJ1Y3QgcG9ydCAqcG9ydCk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTEwMzE9c3RhdGljIHZvaWQgYWRfY29uZF9zZXRfcGVlcl9ub3RpZihzdHJ1Y3QgcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTAzOS0vKipcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxMDQwOiAqIGFkX211eF9tYWNoaW5lIC0gaGFuZGxlIGEgcG9ydCYjMzk7cyBtdXggc3RhdGUgbWFjaGluZVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNDEtICogQHBvcnQ6IHRoZSBwb3J0IHdlJiMzOTtyZSBsb29raW5nIGF0XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNDMtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MTA0NDpzdGF0aWMgdm9pZCBhZF9tdXhfbWFjaGluZShzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCAqdXBkYXRlX3NsYXZlX2FycilcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xMDQ1LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjU1Mj12b2lkIGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2MDMtXHRcdGFkX3BvcnRfc2VsZWN0aW9uX2xvZ2ljKHBvcnQsIFx1MDAyNnVwZGF0ZV9zbGF2ZV9hcnIpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI2MDQ6XHRcdGFkX211eF9tYWNoaW5lKHBvcnQsIFx1MDAyNnVwZGF0ZV9zbGF2ZV9hcnIpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2MDUtXHRcdGFkX3R4X21hY2hpbmUocG9ydCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMyNAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUG90ZW50aWFsOiBCb25kIDNhZCBTdGF0ZSBNYWNoaW5lKioKCk9rYXksIHNvIGBhZF9tdXhfbWFjaGluZWAgaXMgYmVpbmcgY2FsbGVkIGZyb20gYGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcmAuIEdpdmVuIHRoYXQgdGhlIGBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJgIGlzIHRoZSBwcmltYXJ5IGhhbmRsZXIgZm9yIDgwMi4zYWQsIHRoYXQgbWFrZXMgdGhpcyBhICp2ZXJ5KiBpbnRlcmVzdGluZyB0YXJnZXQgZm9yIGZ1enppbmcuIEl0JiMzOTtzIGNsZWFybHkgYSByZWFjaGFibGUgY29kZSBwYXRoLCBhbmQgZ2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgdGhlIDgwMi4zYWQgcHJvdG9jb2wsIHRoZSBwb3RlbnRpYWwgZm9yIGVkZ2UtY2FzZSB2dWxuZXJhYmlsaXRpZXMgaXMgaGlnaC4gSSBzaG91bGQgYWRkIHRoaXMgdG8gdGhlIHRlc3RpbmcgcXVldWUgYXMgc29vbiBhcyBwb3NzaWJsZS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBib25kaW5nIGNvbmZpZ3VyYXRpb24gdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZW52aXJvbm1lbnQgYmVmb3JlIEkgc3RhcnQgY3JhZnRpbmcgYW55IGZ1enppbmcgaW5wdXRzLiBUaGF0JiMzOTtzIGFsd2F5cyB0aGUgc21hcnQgbW92ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCT05ESU5HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOgoKKipXaGVyZSYjMzk7cyB0aGUgS2NvbmZpZyBmb3IgQm9uZGluZz8qKgoKQWxyaWdodCwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBkZWVwIGludG8gdGhpcyBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24sIGFuZCBldmVyeXRoaW5nICpzaG91bGQqIGJlIGNvbWluZyB0b2dldGhlci4uLiBidXQgc29tZXRoaW5nIGZlZWxzIG9mZi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoZSBib25kaW5nLXNwZWNpZmljIEtjb25maWcgZmlsZSByaWdodCBhYm91dCBub3csIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIGN1cnJlbnQgc2NvcGUgb2YgdGhlIHByb2plY3QgYW5kIHRoZSB3YXkgSSYjMzk7dmUgc3RydWN0dXJlZCBteSBtZW50YWwgbWFwIG9mIHRoZSBzeXN0ZW0uIEkmIzM5O3ZlIG1lbnRhbGx5IHRyYWNlZCB0aGUgZGVwZW5kZW5jaWVzLCBJJiMzOTt2ZSBnb3QgYSBnb29kIGlkZWEgb2YgdGhlIG1vZHVsZXMgaW52b2x2ZWQsIGFuZCB0aGlzIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UgZm9yIGl0IHRvIGJlIGludGVncmF0ZWQuIFdoZXJlIGluIHRoZSBtb2R1bGUgc3RydWN0dXJlIGlzIHRoZSBib25kaW5nIEtjb25maWc/IEkga25vdyBJJiMzOTttIG5vdCBvdmVybG9va2luZyBzb21lIG9ic2N1cmUgbmFtaW5nIGNvbnZlbnRpb24gaGVyZSwgdGhpcyBzaG91bGQgYmUgcmVhZGlseSBhcHBhcmVudC4gSG1tLCBkaWQgSSBhY2NpZGVudGFsbHkgbWFrZSBhIGJyYW5jaGluZyBlcnJvciBzb21ld2hlcmU/IExldCBtZSByZXRyYWNlIG15IHN0ZXBzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCT05ESU5HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9Mzk9aWYgTkVUX0NPUkVcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXG5kcml2ZXJzL25ldC9LY29uZmlnOjQxOmNvbmZpZyBCT05ESU5HXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVx0dHJpc3RhdGUgXCYjMzQ7Qm9uZGluZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4OTcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyBDb25maWd1cmF0aW9uIGFuZCBGb2N1c2luZyBvbiBCb25kaW5nKioKClJpZ2h0LCB0aGlzIGZlZWxzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRlZCB0byBgQk9ORElOR2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoYXQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkgbmVlZCB0byBpbW1lZGlhdGVseSBjb25zaWRlciB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRlcm0uIEl0JiMzOTtzIGEgcXVpY2sgYXNzZXNzbWVudCB0byBjb25maXJtIHRoYXQgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgc29tZXRoaW5nIEkgY2FuIGxldmVyYWdlIG15IGV4cGVydGlzZSBpbi4KClRoZSBuZXh0IHRoaW5nIEkmIzM5O2QgZG8gaXMgY2hlY2suIE15IHRob3VnaHQgaXM6IEJlZm9yZSBkaXZpbmcgaW50byBhbnkgc3BlY2lmaWMgc2NlbmFyaW9zIG9yIHRyb3VibGVzaG9vdGluZyBzdGVwcywgSSBuZWVkIHRvIHNlZSB3aGF0IG90aGVyIGNvbmZpZ3MgYXJlIGZsb2F0aW5nIGFyb3VuZC4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZSB0aGF0IHRpZXMgaW50byB0aGlzIHRoYXQgSSBoYXZlbiYjMzk7dCBzZWVuIHlldD8gTGV0JiMzOTtzIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRERVZJQ0VTXG5kcml2ZXJzL25ldC9LY29uZmlnLTctXHRkZWZhdWx0IHkgaWYgVU1MXG5kcml2ZXJzL25ldC9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy05LVx0Ym9vbCBcJiMzNDtOZXR3b3JrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00MT1jb25maWcgQk9ORElOR1xuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0JvbmRpbmcgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ6XHRkZXBlbmRzIG9uIFRMUyB8fCBUTFNfREVWSUNFPW5cbmRyaXZlcnMvbmV0L0tjb25maWctNDUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz03ND1jb25maWcgV0lSRUdVQVJEXG5kcml2ZXJzL25ldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7V2lyZUd1YXJkIHNlY3VyZSBuZXR3b3JrIHR1bm5lbFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo3NjpcdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTc3LVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz05Mj1jb25maWcgV0lSRUdVQVJEX0RFQlVHXG5kcml2ZXJzL25ldC9LY29uZmlnLTkzLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgY2hlY2tzIGFuZCB2ZXJib3NlIG1lc3NhZ2VzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjk0Olx0ZGVwZW5kcyBvbiBXSVJFR1VBUkRcbmRyaXZlcnMvbmV0L0tjb25maWctOTUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cbmRyaXZlcnMvbmV0L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7T3BlblZQTiBkYXRhIGNoYW5uZWwgb2ZmbG9hZFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxMDU6XHRkZXBlbmRzIG9uIE5FVCBcdTAwMjZcdTAwMjYgSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDYtXHRzZWxlY3QgRFNUX0NBQ0hFXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMzY9Y29uZmlnIE5FVF9GQ1xuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzctXHRib29sIFwmIzM0O0ZpYnJlIENoYW5uZWwgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MTM4Olx0ZGVwZW5kcyBvbiBTQ1NJIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L0tjb25maWctMTM5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTQ5PWNvbmZpZyBJRkJcbmRyaXZlcnMvbmV0L0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZXJtZWRpYXRlIEZ1bmN0aW9uYWwgQmxvY2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxNTE6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfTUlSUkVEIHx8IE5GVF9GV0RfTkVUREVWXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1Mi1cdHNlbGVjdCBORVRfUkVESVJFQ1Rcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xODAtXHR0cmlzdGF0ZSBcJiMzNDtNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjE4MTpcdGRlcGVuZHMgb24gTUFDVkxBTlxuZHJpdmVycy9uZXQvS2NvbmZpZzoxODI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMTgzLVx0c2VsZWN0IFRBUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTkzPWNvbmZpZyBJUFZMQU5fTDNTXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NDpcdGRlcGVuZHMgb24gTkVURklMVEVSXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NTpcdGRlcGVuZHMgb24gSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Ni1cdGRlZl9ib29sIHlcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE5OT1jb25maWcgSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyMDE6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjAyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcbmRyaXZlcnMvbmV0L0tjb25maWctMjE3LVx0dHJpc3RhdGUgXCYjMzQ7SVAtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjIxODpcdGRlcGVuZHMgb24gSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnOjIxOTpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMjAtXHRzZWxlY3QgVEFQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjMzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNDU9Y29uZmlnIEdFTkVWRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDYtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gRW5jYXBzdWxhdGlvblwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDc6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ4LVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcbmRyaXZlcnMvbmV0L0tjb25maWctMjYxLVx0dHJpc3RhdGUgXCYjMzQ7QmFyZSBVRFAgRW5jYXBzdWxhdGlvblwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyNjI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjYzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzMtXHR0cmlzdGF0ZSBcJiMzNDtHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjI3NDpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzUtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTAtXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgRm9yd2FyZGluZyBDb250cm9sIFByb3RvY29sIChQRkNQKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTE6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjkyLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDMtXHR0cmlzdGF0ZSBcJiMzNDtBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZyAoQU1UKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozMDQ6XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElQX01VTFRJQ0FTVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDUtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMyNz1jb25maWcgTkVUQ09OU09MRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMjgtXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGNvbnNvbGUgbG9nZ2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMyOTpcdGRlcGVuZHMgb24gUFJJTlRLXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMzND1jb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzNS1cdGJvb2wgXCYjMzQ7RHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMzNjpcdGRlcGVuZHMgb24gTkVUQ09OU09MRSBcdTAwMjZcdTAwMjYgU1lTRlMgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTIFx1MDAyNlx1MDAyNiBcXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzctXHRcdFx0IShORVRDT05TT0xFPXkgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTPW0pXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNDU9Y29uZmlnIE5FVENPTlNPTEVfRVhURU5ERURfTE9HXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0Ni1cdGJvb2wgXCYjMzQ7U2V0IGtlcm5lbCBleHRlbmRlZCBtZXNzYWdlIGJ5IGRlZmF1bHRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBORVRDT05TT0xFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0OC1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzU1PWNvbmZpZyBORVRDT05TT0xFX1BSRVBFTkRfUkVMRUFTRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTYtXHRib29sIFwmIzM0O1ByZXBlbmQga2VybmVsIHJlbGVhc2UgdmVyc2lvbiBpbiB0aGUgbWVzc2FnZSBieSBkZWZhdWx0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM1NzpcdGRlcGVuZHMgb24gTkVUQ09OU09MRV9FWFRFTkRFRF9MT0dcbmRyaXZlcnMvbmV0L0tjb25maWctMzU4LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzM9Y29uZmlnIE5UQl9ORVRERVZcbmRyaXZlcnMvbmV0L0tjb25maWctMzc0LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc1Olx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3Ni1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mzc3PWNvbmZpZyBSSU9ORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMzc4LVx0dHJpc3RhdGUgXCYjMzQ7UmFwaWRJTyBFdGhlcm5ldCBvdmVyIG1lc3NhZ2luZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozNzk6XHRkZXBlbmRzIG9uIFJBUElESU9cbmRyaXZlcnMvbmV0L0tjb25maWctMzgwLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zODE9Y29uZmlnIFJJT05FVF9UWF9TSVpFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Mi1cdGludCBcJiMzNDtOdW1iZXIgb2Ygb3V0Ym91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozODM6XHRkZXBlbmRzIG9uIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODQtXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mzg2PWNvbmZpZyBSSU9ORVRfUlhfU0laRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODctXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGluYm91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozODg6XHRkZXBlbmRzIG9uIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODktXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzkxPWNvbmZpZyBUVU5cbmRyaXZlcnMvbmV0L0tjb25maWctMzkyLVx0dHJpc3RhdGUgXCYjMzQ7VW5pdmVyc2FsIFRVTi9UQVAgZGV2aWNlIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM5MzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTQtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ0Mz1jb25maWcgVklSVElPX05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gbmV0d29yayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ1Olx0ZGVwZW5kcyBvbiBWSVJUSU9cbmRyaXZlcnMvbmV0L0tjb25maWctNDQ2LVx0c2VsZWN0IE5FVF9GQUlMT1ZFUlxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcbmRyaXZlcnMvbmV0L0tjb25maWctNDY0LVx0Ym9vbCBcJiMzNDtCUEYtcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQ2NTpcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbmRyaXZlcnMvbmV0L0tjb25maWctNDY2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDcyPWNvbmZpZyBORVRfVlJGXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3My1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgUm91dGluZyBhbmQgRm9yd2FyZGluZyAoTGl0ZSlcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc0Olx0ZGVwZW5kcyBvbiBJUF9NVUxUSVBMRV9UQUJMRVNcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc1Olx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzY6XHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTIHx8IElQVjY9blxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODE9Y29uZmlnIFZTT0NLTU9OXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ4Mi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDgzOlx0ZGVwZW5kcyBvbiBWSE9TVF9WU09DS1xuZHJpdmVycy9uZXQvS2NvbmZpZy00ODQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODk9Y29uZmlnIE1ISV9ORVRcbmRyaXZlcnMvbmV0L0tjb25maWctNDkwLVx0dHJpc3RhdGUgXCYjMzQ7TUhJIG5ldHdvcmsgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQ5MTpcdGRlcGVuZHMgb24gTUhJX0JVU1xuZHJpdmVycy9uZXQvS2NvbmZpZy00OTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ1LVx0dHJpc3RhdGUgXCYjMzQ7WGVuIG5ldHdvcmsgZGV2aWNlIGZyb250ZW5kIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo1NDY6XHRkZXBlbmRzIG9uIFhFTlxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXHRzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NTYyPWNvbmZpZyBYRU5fTkVUREVWX0JBQ0tFTkRcbmRyaXZlcnMvbmV0L0tjb25maWctNTYzLVx0dHJpc3RhdGUgXCYjMzQ7WGVuIGJhY2tlbmQgbmV0d29yayBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTY0Olx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NjUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcbmRyaXZlcnMvbmV0L0tjb25maWctNTg1LVx0dHJpc3RhdGUgXCYjMzQ7Vk13YXJlIFZNWE5FVDMgZXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NjpcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NzpcdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OC1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xuZHJpdmVycy9uZXQvS2NvbmZpZy01OTUtXHR0cmlzdGF0ZSBcJiMzNDtGVUpJVFNVIEV4dGVuZGVkIFNvY2tldCBOZXR3b3JrIERldmljZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTk2Olx0ZGVwZW5kcyBvbiBBQ1BJXG5kcml2ZXJzL25ldC9LY29uZmlnLTU5Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDY6XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDg6XHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwOTpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxMDgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyB0aGUgQm9uZGluZyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gdGhlIGJvbmRpbmcgZHJpdmVyJiMzOTtzIGZ1bmN0aW9uYWxpdHkgc2VlbXMgY29udGluZ2VudCBvbiBgSU5FVGAgYmVpbmcgZW5hYmxlZCwgYW5kIHRoZW4gZWl0aGVyIGBUTFNgIG9yLCBpZiBUTFMgaXMgZGlzYWJsZWQsIHRoZSBgVExTX0RFVklDRWAgZmxhZyBuZWVkcyB0byBiZSBzZXQgdG8gJiMzOTtuJiMzOTsuIEVzc2VudGlhbGx5LCBpZiBJJiMzOTttIHVuZGVyc3RhbmRpbmcgdGhpcyBjb3JyZWN0bHksIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gc2hvdWxkIGJlIHVuZGVyIHRoZSBgQk9ORElOR2AgY29uZmlnIG9wdGlvbi4KCkhhbmcgb24gYSBzZWNvbmTigKYgdGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCwgc3BlY2lmaWNhbGx5LCBpcyBpbiBgZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jYC4gVGhhdCBtYWtlcyBtZSB3b25kZXIgaWYgdGhlcmUmIzM5O3MgYSBtb3JlIGdyYW51bGFyIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHNwZWNpZmljIHRvIDgwMi4zYWQgbGluayBhZ2dyZWdhdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlYCB0byBzZWUgaWYgaXQgZGVmaW5lcyBhbnkgZXh0cmEgY29uZmlnIHNwZWNpZmljIHRvIHRoYXQgbW9kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Ym9uZF8zYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfQk9ORElORykgJiM0Mzs9IGJvbmRpbmcub1xuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZTo4OmJvbmRpbmctb2JqcyA6PSBib25kX21haW4ubyBib25kXzNhZC5vIGJvbmRfYWxiLm8gYm9uZF9zeXNmcy5vIGJvbmRfc3lzZnNfc2xhdmUubyBib25kX2RlYnVnZnMubyBib25kX25ldGxpbmsubyBib25kX29wdGlvbnMub1xuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS05LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTEzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEZWJ1Z2dpbmcgdGhlIEJvbmRpbmcgRHJpdmVyJiMzOTtzIENvbXBpbGF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBpbW1lZGlhdGUgY29uY2VybiBpcyBgYm9uZF8zYWQub2Ag4oCTIHRoYXQgbW9kdWxlIGlzICphbHdheXMqIGJ1aWx0IHdoZW4gYENPTkZJR19CT05ESU5HYCBpcyBzZXQuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBlbGltaW5hdGluZyBvbmUgcG90ZW50aWFsIGF2ZW51ZSBvZiBpbnZlc3RpZ2F0aW9uLiBOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBjb2RlIGNoYW5nZXMuIFRoZSBwYXRjaCBhZmZlY3RzIGBhZF9tdXhfbWFjaGluZWAgYW5kIGBhZF9pbml0aWFsaXplX3BvcnRgLiBHb3QgaXQuIEhtbSwgYGFkX211eF9tYWNoaW5lYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaXMgZmluZSwgYnV0IG1lYW5zIGl0cyBkaXJlY3QgY2FsbHMgbWlnaHQgYmUgZmV3LiBUaW1lIHRvIG1hcCBvdXQgdGhlIDgwMi4zYWQgZW50cnkgcG9pbnRzIGludG8gdGhlIGJvbmRpbmcgZHJpdmVyLiBGaWd1cmluZyBvdXQgaG93IHRoZXNlIGNoYW5nZXMgaW50ZXJhY3Qgd2l0aCB0aGUgYnJvYWRlciA4MDIuM2FkIHN0YXRlIG1hY2hpbmUgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gRnJvbSB0aGUgZHJpdmVyLCB0byB0aGUga2VybmVsLCB0byB0aGUgdXNlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWRfbXV4X21hY2hpbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTk2PXN0YXRpYyBpbnQgYWRfbWFya2VyX3NlbmQoc3RydWN0IHBvcnQgKnBvcnQsIHN0cnVjdCBib25kX21hcmtlciAqbWFya2VyKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzo5NzpzdGF0aWMgdm9pZCBhZF9tdXhfbWFjaGluZShzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCAqdXBkYXRlX3NsYXZlX2Fycik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtOTgtc3RhdGljIHZvaWQgYWRfcnhfbWFjaGluZShzdHJ1Y3QgbGFjcGR1ICpsYWNwZHUsIHN0cnVjdCBwb3J0ICpwb3J0KTtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MTAzMT1zdGF0aWMgdm9pZCBhZF9jb25kX3NldF9wZWVyX25vdGlmKHN0cnVjdCBwb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xMDM5LS8qKlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjEwNDA6ICogYWRfbXV4X21hY2hpbmUgLSBoYW5kbGUgYSBwb3J0JiMzOTtzIG11eCBzdGF0ZSBtYWNoaW5lXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTA0MS0gKiBAcG9ydDogdGhlIHBvcnQgd2UmIzM5O3JlIGxvb2tpbmcgYXRcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTA0My0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxMDQ0OnN0YXRpYyB2b2lkIGFkX211eF9tYWNoaW5lKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sICp1cGRhdGVfc2xhdmVfYXJyKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNDUte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yNTUyPXZvaWQgYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjYwMy1cdFx0YWRfcG9ydF9zZWxlY3Rpb25fbG9naWMocG9ydCwgXHUwMDI2dXBkYXRlX3NsYXZlX2Fycik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjYwNDpcdFx0YWRfbXV4X21hY2hpbmUocG9ydCwgXHUwMDI2dXBkYXRlX3NsYXZlX2Fycik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjYwNS1cdFx0YWRfdHhfbWFjaGluZShwb3J0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMwNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkNvbnNpZGVyaW5nIFBvdGVudGlhbCBGb2N1cyBQb2ludHMgZm9yIFN5c3RlbSBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHdoZXJlIHRvIHN0YXJ0IHJlYWxseSBkaWdnaW5nIGludG8gdGhpcyBzeXN0ZW0uIGBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJgIGZlZWxzIGxpa2UgYSBnb29kLCBzb2xpZCBmb2NhbCBwb2ludC4gSXQmIzM5O3MgcHJvYmFibHkgY2VudHJhbCB0byBhIHNpZ25pZmljYW50IGNodW5rIG9mIHRoZSBib25kIG1hbmFnZW1lbnQgbG9naWMsIGFuZCB1bmRlcnN0YW5kaW5nIGl0IHdvdWxkIGdpdmUgbWUgYSBicm9hZCBvdmVydmlldyBvZiBob3cgdGhhdCBwYXJ0IG9mIHRoZSBzeXN0ZW0gd29ya3MuIEJ1dCwgdGhlbiBJIHN0YXJ0ZWQgd29uZGVyaW5nLi4uIHdoYXQgYWJvdXQgYGFkX2luaXRpYWxpemVfcG9ydGA/IElzIHRoYXQgYW5vdGhlciBjcnVjaWFsIGVudHJ5IHBvaW50PyBJdCBjb3VsZCBiZSB0aGUgZmlyc3QgY3JpdGljYWwgc3RlcCB0byBwb3J0IGluaXRpYWxpemF0aW9uLCBiZWZvcmUgaXQgZ2V0cyB0byB0aGUgc3RhdGUgbWFjaGluZSwgd2hpY2ggc3VnZ2VzdHMgYSBkaWZmZXJlbnQgYnV0IGVxdWFsbHkgaW1wb3J0YW50IHBlcnNwZWN0aXZlLiBJIG5lZWQgdG8gY29uc2lkZXIgYm90aCwgYW5kIHBlcmhhcHMgdGhlIGludGVycmVsYXRpb25zaGlwIGJldHdlZW4gdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWRfaW5pdGlhbGl6ZV9wb3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0xMDU9c3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9hZ2coc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZ3JlZ2F0b3IpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjEwNjpzdGF0aWMgdm9pZCBhZF9pbml0aWFsaXplX3BvcnQoc3RydWN0IHBvcnQgKnBvcnQsIGNvbnN0IHN0cnVjdCBib25kX3BhcmFtcyAqYm9uZF9wYXJhbXMpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNy1zdGF0aWMgdm9pZCBhZF9lbmFibGVfY29sbGVjdGluZyhzdHJ1Y3QgcG9ydCAqcG9ydCk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIwMTQ9c3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9hZ2coc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZ3JlZ2F0b3IpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIwMjUtLyoqXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjAyNjogKiBhZF9pbml0aWFsaXplX3BvcnQgLSBpbml0aWFsaXplIGEgZ2l2ZW4gcG9ydCYjMzk7cyBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjAyNy0gKiBAcG9ydDogdGhlIHBvcnQgd2UmIzM5O3JlIGxvb2tpbmcgYXRcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjAyOS0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMDMwOnN0YXRpYyB2b2lkIGFkX2luaXRpYWxpemVfcG9ydChzdHJ1Y3QgcG9ydCAqcG9ydCwgY29uc3Qgc3RydWN0IGJvbmRfcGFyYW1zICpib25kX3BhcmFtcylcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMDMxLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjI3NT12b2lkIGJvbmRfM2FkX2JpbmRfc2xhdmUoc3RydWN0IHNsYXZlICpzbGF2ZSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI4Ni1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjg3Olx0XHRhZF9pbml0aWFsaXplX3BvcnQocG9ydCwgXHUwMDI2Ym9uZC1cdTAwM2VwYXJhbXMpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyODgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgYGJvbmRfM2FkX2JpbmRfc2xhdmVgIOKAkyB0aGF0JiMzOTtzIGEgc29saWQsIGNvbmNpc2Ugc3ltYm9sIHRvIHplcm8gaW4gb24uIEl0IGltbWVkaWF0ZWx5IGZsYWdzIGEgY3JpdGljYWwgcGllY2Ugb2YgODAyLjNhZCBjb25maWd1cmF0aW9uLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgaW5zdGFudGx5IHRoaW5rLCAmIzM0O1doZXJlIGVsc2UgaW4gdGhlIHN5c3RlbSBpcyB0aGlzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gb2YgODAyLjNhZCB0b3VjaGVkPyYjMzQ7IE15IGdvYWwgaXMgdG8gbWFwIHRoZSBlbnRyeSBwb2ludHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUgcG90ZW50aWFsIHBhdGh3YXlzLCBjYWxscywgYW5kIGNvbnRleHRzIHJlbGF0ZWQgdG8gODAyLjNhZC4gQXJlIHRoZXJlIG90aGVyIGZ1bmN0aW9ucyBvciBtb2R1bGVzIHRoYXQgaW50ZXJhY3Qgd2l0aCBpdD8gSSYjMzk7bGwgbmVlZCB0byBpZGVudGlmeSBhbGwgcG9zc2libGUgcG9pbnRzIG9mIGNvbnRhY3Qgd2l0aCB0aGUgd2lkZXIgbmV0d29yayBzdGFjayB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUuIExldCYjMzk7cyBzZWUgd2hhdCBlbHNlIGlzIG91dCB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtib25kXzNhZF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTE4NjY9c3RhdGljIHZvaWQgYWRfYWdnX3NlbGVjdGlvbl9sb2dpYyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xOTgxLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjE5ODI6XHRib25kXzNhZF9zZXRfY2Fycmllcihib25kKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xOTgzLX1cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjExOT1zdGF0aWMgdm9pZCBhZF9kaXNhYmxlX2Rpc3RyaWJ1dGluZyhzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCAqdXBkYXRlX3NsYXZlX2Fycilcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjEyOC1cdFx0X19kaXNhYmxlX2Rpc3RyaWJ1dGluZ19wb3J0KHBvcnQpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIxMjk6XHRcdGJvbmRfM2FkX3NldF9jYXJyaWVyKHBvcnQtXHUwMDNlc2xhdmUtXHUwMDNlYm9uZCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjEzMC1cdFx0LyogU2xhdmUgYXJyYXkgbmVlZHMgYW4gdXBkYXRlICovXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIxNDI9c3RhdGljIHZvaWQgYWRfZW5hYmxlX2NvbGxlY3RpbmdfZGlzdHJpYnV0aW5nKHN0cnVjdCBwb3J0ICpwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMTUyLVx0XHRfX2VuYWJsZV9wb3J0KHBvcnQpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIxNTM6XHRcdGJvbmRfM2FkX3NldF9jYXJyaWVyKHBvcnQtXHUwMDNlc2xhdmUtXHUwMDNlYm9uZCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjE1NC1cdFx0LyogU2xhdmUgYXJyYXkgbmVlZHMgdXBkYXRlICovXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIxNjY9c3RhdGljIHZvaWQgYWRfZGlzYWJsZV9jb2xsZWN0aW5nX2Rpc3RyaWJ1dGluZyhzdHJ1Y3QgcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjE3Ni1cdFx0X19kaXNhYmxlX3BvcnQocG9ydCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjE3NzpcdFx0Ym9uZF8zYWRfc2V0X2NhcnJpZXIocG9ydC1cdTAwM2VzbGF2ZS1cdTAwM2Vib25kKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMTc4LVx0XHQvKiBTbGF2ZSBhcnJheSBuZWVkcyBhbiB1cGRhdGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjIxNz1zdGF0aWMgdm9pZCBhZF9tYXJrZXJfcmVzcG9uc2VfcmVjZWl2ZWQoc3RydWN0IGJvbmRfbWFya2VyICptYXJrZXIsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzEtLyoqXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjIzMjogKiBib25kXzNhZF9pbml0aWF0ZV9hZ2dfc2VsZWN0aW9uIC0gaW5pdGF0ZSBhZ2dyZWdhdG9yIHNlbGVjdGlvblxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzMtICogQGJvbmQ6IGJvbmRpbmcgc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzktICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjI0MDp2b2lkIGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCB0aW1lb3V0KVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNDEte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjQ1LS8qKlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNDY6ICogYm9uZF8zYWRfaW5pdGlhbGl6ZSAtIGluaXRpYWxpemUgYSBib25kJiMzOTtzIDgwMi4zYWQgcGFyYW1ldGVycyBhbmQgc3RydWN0dXJlc1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNDctICogQGJvbmQ6IGJvbmRpbmcgc3RydWN0IHRvIHdvcmsgb25cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI1MC0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjUxOnZvaWQgYm9uZF8zYWRfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjUyLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI2Mi1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjYzOlx0Ym9uZF8zYWRfaW5pdGlhdGVfYWdnX3NlbGVjdGlvbihib25kLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNjQtXHRcdFx0XHRcdEFEX0FHR1JFR0FUT1JfU0VMRUNUSU9OX1RJTUVSICpcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI2OC0vKipcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjY5OiAqIGJvbmRfM2FkX2JpbmRfc2xhdmUgLSBpbml0aWFsaXplIGEgc2xhdmUmIzM5O3MgcG9ydFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNzAtICogQHNsYXZlOiBzbGF2ZSBzdHJ1Y3QgdG8gd29yayBvblxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjc0LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNzU6dm9pZCBib25kXzNhZF9iaW5kX3NsYXZlKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI3Ni17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjEtLyoqXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjMyMjogKiBib25kXzNhZF91bmJpbmRfc2xhdmUgLSBkZWluaXRpYWxpemUgYSBzbGF2ZSYjMzk7cyBwb3J0XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjMyMy0gKiBAc2xhdmU6IHNsYXZlIHN0cnVjdCB0byB3b3JrIG9uXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjgtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjMyOTp2b2lkIGJvbmRfM2FkX3VuYmluZF9zbGF2ZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMzAte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMzM4LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIzMzk6XHQvKiBTeW5jIGFnYWluc3QgYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyKCkgKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMzQwLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmJvbmQtXHUwMDNlbW9kZV9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ4NS0vKipcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNDg2OiAqIGJvbmRfM2FkX3VwZGF0ZV9hZF9hY3Rvcl9zZXR0aW5ncyAtIHJlZmxlY3QgY2hhbmdlIG9mIGFjdG9yIHNldHRpbmdzIHRvIHBvcnRzXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ4Ny0gKiBAYm9uZDogYm9uZGluZyBzdHJ1Y3QgdG8gd29yayBvblxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNDkxLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI0OTI6dm9pZCBib25kXzNhZF91cGRhdGVfYWRfYWN0b3Jfc2V0dGluZ3Moc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ5My17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTI1MjM9c3RhdGljIGJvb2wgYm9uZF9hZ2dfdGltZXJfYWR2YW5jZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjUzOS0vKipcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNTQwOiAqIGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlciAtIGhhbmRsZSBzdGF0ZSBtYWNoaW5lcyB0aW1lb3V0XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjU0MS0gKiBAd29yazogd29yayBjb250ZXh0IHRvIGZldGNoIGJvbmRpbmcgc3RydWN0IHRvIHdvcmsgb24gZnJvbVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTUxLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI1NTI6dm9pZCBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI1NTMte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTYzLVx0LyogTG9jayB0byBwcm90ZWN0IGRhdGEgYWNjZXNzZWQgYnkgYWxsIChlLmcuLCBwb3J0LVx1MDAzZXNtX3ZhcnMpIGFuZFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI1NjQ6XHQgKiBhZ2FpbnN0IHJ1bm5pbmcgd2l0aCBib25kXzNhZF91bmJpbmRfc2xhdmUuIGFkX3J4X21hY2hpbmUgbWF5IHJ1blxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI1NjUtXHQgKiBjb25jdXJyZW50bHkgZHVlIHRvIGluY29taW5nIExBQ1BEVSBhcyB3ZWxsLlxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTg4LVx0XHR9XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjU4OTpcdFx0Ym9uZF8zYWRfc2V0X2NhcnJpZXIoYm9uZCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjU5MC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjYzMy0vKipcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNjM0OiAqIGJvbmRfM2FkX3J4X2luZGljYXRpb24gLSBoYW5kbGUgYSByZWNlaXZlZCBmcmFtZVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2MzUtICogQGxhY3BkdTogcmVjZWl2ZWQgbGFjcGR1XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2NDEtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjY0MjpzdGF0aWMgaW50IGJvbmRfM2FkX3J4X2luZGljYXRpb24oc3RydWN0IGxhY3BkdSAqbGFjcGR1LCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2NDMte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yNzEzPXN0YXRpYyB2b2lkIGFkX3VwZGF0ZV9hY3Rvcl9rZXlzKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sIHJlc2V0KVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzQ5LS8qKlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI3NTA6ICogYm9uZF8zYWRfYWRhcHRlcl9zcGVlZF9kdXBsZXhfY2hhbmdlZCAtIGhhbmRsZSBhIHNsYXZlJiMzOTtzIHNwZWVkIC8gZHVwbGV4XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjc1MS0gKiBjaGFuZ2UgaW5kaWNhdGlvblxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzU2LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI3NTc6dm9pZCBib25kXzNhZF9hZGFwdGVyX3NwZWVkX2R1cGxleF9jaGFuZ2VkKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjc1OC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3NzctLyoqXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Mjc3ODogKiBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2UgLSBoYW5kbGUgYSBzbGF2ZSYjMzk7cyBsaW5rIHN0YXR1cyBjaGFuZ2UgaW5kaWNhdGlvblxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3NzktICogQHNsYXZlOiBzbGF2ZSBzdHJ1Y3QgdG8gd29yayBvblxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzgzLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI3ODQ6dm9pZCBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2Uoc3RydWN0IHNsYXZlICpzbGF2ZSwgY2hhciBsaW5rKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3ODUte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODI5LS8qKlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI4MzA6ICogYm9uZF8zYWRfc2V0X2NhcnJpZXIgLSBzZXQgbGluayBzdGF0ZSBmb3IgYm9uZGluZyBtYXN0ZXJcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODMxLSAqIEBib25kOiBib25kaW5nIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODQxLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI4NDI6aW50IGJvbmRfM2FkX3NldF9jYXJyaWVyKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NDMte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODc2LS8qKlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI4Nzc6ICogX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvIC0gZ2V0IGluZm9ybWF0aW9uIG9mIHRoZSBhY3RpdmUgYWdncmVnYXRvclxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NzgtICogQGJvbmQ6IGJvbmRpbmcgc3RydWN0IHRvIHdvcmsgb25cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjg4My0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyODg0OmludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjg4NS1cdFx0XHRcdCAgIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTEyLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5MTM6aW50IGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MTQte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTE3LVx0cmN1X3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5MTg6XHRyZXQgPSBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oYm9uZCwgYWRfaW5mbyk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkxOS1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTIzLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5MjQ6aW50IGJvbmRfM2FkX2xhY3BkdV9yZWN2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kaW5nICpib25kLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MjUtXHRcdFx0IHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5NDEtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Mjk0MjpcdHJldHVybiBib25kXzNhZF9yeF9pbmRpY2F0aW9uKGxhY3BkdSwgc2xhdmUpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5NDMtfVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTQ1LS8qKlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5NDY6ICogYm9uZF8zYWRfdXBkYXRlX2xhY3BfcmF0ZSAtIGNoYW5nZSB0aGUgbGFjcCByYXRlXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk0Ny0gKiBAYm9uZDogYm9uZGluZyBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk1NS0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTU2OnZvaWQgYm9uZF8zYWRfdXBkYXRlX2xhY3BfcmF0ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTU3LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk3NS0vKipcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTc2OiAqIGJvbmRfM2FkX3VwZGF0ZV9sYWNwX2FjdGl2ZSAtIGNoYW5nZSB0aGUgbGFjcCBhY3RpdmVcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTc3LSAqIEBib25kOiBib25kaW5nIHN0cnVjdFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTgwLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5ODE6dm9pZCBib25kXzNhZF91cGRhdGVfbGFjcF9hY3RpdmUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk4Mi17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5OTktXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MzAwMDpzaXplX3QgYm9uZF8zYWRfc3RhdHNfc2l6ZSh2b2lkKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTMwMDEte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0zMDEyLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjMwMTM6aW50IGJvbmRfM2FkX3N0YXRzX2ZpbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRfM2FkX3N0YXRzICpzdGF0cylcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0zMDE0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4NTIKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogMzMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgbGV0JiMzOTtzIHNlZS4gSSBuZWVkIHRvIGlkZW50aWZ5IHNvbWUgZ29vZCBzeW1ib2xzIHdpdGhpbiB0aGUgYm9uZGluZyBjb2RlIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cy4gQmFzZWQgb24gbXkgaW5pdGlhbCBzY2FuLCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBsb29rIGxpa2UgcHJvbWlzaW5nIHRhcmdldHM6IGBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJgLCBgYm9uZF8zYWRfYmluZF9zbGF2ZWAsIGBib25kXzNhZF91bmJpbmRfc2xhdmVgLCBhbmQgYGJvbmRfM2FkX2xhY3BkdV9yZWN2YC4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlc2UgYXJlIGFsbCBub24tc3RhdGljIGZ1bmN0aW9ucywgc28gdGhhdCYjMzk7cyBhIGdvb2QgZmlyc3QgY2hlY2ssIGNvbmZpcm1pbmcgdGhleSYjMzk7cmUgdmlzaWJsZSBvdXRzaWRlIHRoZWlyIGNvbXBpbGF0aW9uIHVuaXQuCgpOb3csIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJcyBgQk9ORElOR2AgdGhlIHByaW1hcnkgY29uZmlnPyBZZXMsIGFuZCBpdCBhbHNvIHJlbGllcyBvbiBgSU5FVGAgYW5kIGVpdGhlciBgVExTYCBvciBgVExTX0RFVklDRT1uYC4gRmluZSwgdGhhdCBoZWxwcyBuYXJyb3cgdGhlIGJ1aWxkLiBJJiMzOTtsbCBpbmNsdWRlIGBCT05ESU5HYCBkaXJlY3RseSBpbiBteSBmdXp6aW5nIHNldHVwLgoKSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBwcm9wb3NlZCBwYXRjaCBub3cuIEFoLCB0aGlzIG5ldyBjb2RlOgoKYGBgYwogCWFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC0mZ3Q7YWdncmVnYXRvcik7CiYjNDM7CWlmICghYWdncmVnYXRvcikKJiM0MzsJCXJldHVybjsKYGBgCgpUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50LiBJdCBhZGRzIGEgbnVsbCBwb2ludGVyIGNoZWNrIGFmdGVyIGRlcmVmZXJlbmNpbmcgYHBvcnQtJmd0O2FnZ3JlZ2F0b3JgLiBUaGlzIHBhdGNoIHNlZW1zIGxpa2UgYSBjbGVhciBhZGRpdGlvbiB0byBwcmV2ZW50IGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggaXMgZ29vZCBmb3Igc3RhYmlsaXR5LiBUaGlzIGtpbmQgb2YgcGF0Y2ggaXMgY2VydGFpbmx5IHdvcnRoIGZ1enppbmcsIGFzIGl0IGxpa2VseSBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4KClNvLCB0byBzdW1tYXJpemUsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGlzIGBCT05ESU5HYCwgYW5kIG15IGZvY3VzIHN5bWJvbHMgYXJlIHN0aWxsIGBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJgLCBgYm9uZF8zYWRfYmluZF9zbGF2ZWAsIGBib25kXzNhZF91bmJpbmRfc2xhdmVgLCBhbmQgYGJvbmRfM2FkX2xhY3BkdV9yZWN2YC4gVGltZSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Qk9ORElORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9iaW5kX3NsYXZlJiMzNDssCiAgICAmIzM0O2JvbmRfM2FkX3VuYmluZF9zbGF2ZSYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9sYWNwZHVfcmVjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgODAyLjNhZCAoTEFDUCkgc3RhdGUgbWFjaGluZSBvZiB0aGUgYm9uZGluZyBkcml2ZXIuIFRoZSBib25kaW5nIGRyaXZlciBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY3JlYXRpbmcgYSBib25kIGludGVyZmFjZSBhbmQgYWRkaW5nIHNsYXZlcy4gVGhlIExBQ1Agc3RhdGUgbWFjaGluZSBydW5zIHBlcmlvZGljYWxseSBvciBvbiBldmVudHMsIG1ha2luZyB0aGlzIGEgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNoYW5nZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Qk9ORElORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9iaW5kX3NsYXZlJiMzNDssCiAgICAmIzM0O2JvbmRfM2FkX3VuYmluZF9zbGF2ZSYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9sYWNwZHVfcmVjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgODAyLjNhZCAoTEFDUCkgc3RhdGUgbWFjaGluZSBvZiB0aGUgYm9uZGluZyBkcml2ZXIuIFRoZSBib25kaW5nIGRyaXZlciBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY3JlYXRpbmcgYSBib25kIGludGVyZmFjZSBhbmQgYWRkaW5nIHNsYXZlcy4gVGhlIExBQ1Agc3RhdGUgbWFjaGluZSBydW5zIHBlcmlvZGljYWxseSBvciBvbiBldmVudHMsIG1ha2luZyB0aGlzIGEgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNoYW5nZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGEgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBiZWluZyBOVUxMIGluIGBhZF9tdXhfbWFjaGluZWAgYW5kIHVzaW5nIGBSQ1VfSU5JVF9QT0lOVEVSYCB0byBpbml0aWFsaXplIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3JgIHRvIE5VTEwgaW4gYGFkX2luaXRpYWxpemVfcG9ydGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyAobGlrZSBwYWdlIGZhdWx0cykgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIHN1Y2ggYXMgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGxlYWtpbmcga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM5NWQ0YmFjMzUzNzkwNzJhYjg2ZTVlMjNmY2M0MDBmN2Y1ZTI0OWIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAwODozODozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYwppbmRleCBhY2JiYTA4ZGJkZmFkLi5jNGRmY2FmY2ZmMjY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jCkBAIC0xMDUzLDYgJiM0MzsxMDUzLDkgQEAgc3RhdGljIHZvaWQgYWRfbXV4X21hY2hpbmUoc3RydWN0IHBvcnQgKnBvcnQsIGJvb2wgKnVwZGF0ZV9zbGF2ZV9hcnIpCiAJbGFzdF9zdGF0ZSA9IHBvcnQtJmd0O3NtX211eF9zdGF0ZTsKIAogCWFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC0mZ3Q7YWdncmVnYXRvcik7CiYjNDM7CWlmICghYWdncmVnYXRvcikKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlpZiAocG9ydC0mZ3Q7c21fdmFycyAmYW1wOyBBRF9QT1JUX0JFR0lOKSB7CiAJCXBvcnQtJmd0O3NtX211eF9zdGF0ZSA9IEFEX01VWF9ERVRBQ0hFRDsKIAl9IGVsc2UgewpAQCAtMjA3Miw3ICYjNDM7MjA3NSw3IEBAIHN0YXRpYyB2b2lkIGFkX2luaXRpYWxpemVfcG9ydChzdHJ1Y3QgcG9ydCAqcG9ydCwgY29uc3Qgc3RydWN0IGJvbmRfcGFyYW1zICpib25kCiAJCXBvcnQtJmd0O3NtX211eF9zdGF0ZSA9IDA7CiAJCXBvcnQtJmd0O3NtX211eF90aW1lcl9jb3VudGVyID0gMDsKIAkJcG9ydC0mZ3Q7c21fdHhfc3RhdGUgPSAwOwotCQlwb3J0LSZndDthZ2dyZWdhdG9yID0gTlVMTDsKJiM0MzsJCVJDVV9JTklUX1BPSU5URVIocG9ydC0mZ3Q7YWdncmVnYXRvciwgTlVMTCk7CiAJCXBvcnQtJmd0O25leHRfcG9ydF9pbl9hZ2dyZWdhdG9yID0gTlVMTDsKIAkJcG9ydC0mZ3Q7dHJhbnNhY3Rpb25faWQgPSAwOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM3CgkJCQkJCQlvdXRwdXQ6IDE0NwoJCQkJCQkJdGhvdWdodHM6IDM1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCb25kaW5nIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNgLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYGFkX211eF9tYWNoaW5lYCBhbmQgYGFkX2luaXRpYWxpemVfcG9ydGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIE5VTEwgY2hlY2tzIGFuZCBwb2ludGVyIGluaXRpYWxpemF0aW9uLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmaXggZm9yIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgYGFnZ3JlZ2F0b3JgIGJlaW5nIE5VTEwgd2l0aGluIGBhZF9tdXhfbWFjaGluZWAuICBUaGF0IGxpbmU6CmBgYGMKCWFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC0mZ3Q7YWdncmVnYXRvcik7CglpZiAoIWFnZ3JlZ2F0b3IpCgkJcmV0dXJuOwpgYGAKaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcy4gQW5kIHRoZSBjaGFuZ2UgZnJvbSBgcG9ydC0mZ3Q7YWdncmVnYXRvciA9IE5VTEw7YCB0byBgUkNVX0lOSVRfUE9JTlRFUihwb3J0LSZndDthZ2dyZWdhdG9yLCBOVUxMKTtgIGluIGBhZF9pbml0aWFsaXplX3BvcnRgIGlzIGFsc28gcmVsZXZhbnQuIFVzaW5nIGBSQ1VfSU5JVF9QT0lOVEVSYCBpcyB0aGUgY29ycmVjdCBhcHByb2FjaCBmb3IgaW5pdGlhbGl6aW5nIGFuIFJDVS1wcm90ZWN0ZWQgcG9pbnRlciwgc28gdGhhdCYjMzk7cyBnb29kIHByYWN0aWNlLgoKTm93LCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhcmUgcHJldHR5IGVmZmVjdGl2ZWx5IGNhdWdodCBieSB0aGUga2VybmVsJiMzOTtzIGV4aXN0aW5nIG1lY2hhbmlzbXMsIGxpa2UgcGFnZSBmYXVsdHMgYW5kIEtBU0FOLiAgV2UmIzM5O3JlIG5vdCB0YWxraW5nIGFib3V0IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBwb3RlbnRpYWwgaW5mb3JtYXRpb24gbGVha3MgaGVyZS4gU28sIG15IGluc3RpbmN0IGlzIHRoYXQgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXNuJiMzOTt0IHN0cmljdGx5IG5lY2Vzc2FyeSBmb3IgdGhpcyBmaXguCgpUbyBiZSB0aG9yb3VnaCwgSSBxdWlja2x5IGdsYW5jZWQgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2l0aGluIGBhZF9tdXhfbWFjaGluZWAuICBgYWdncmVnYXRvcmAgaXMgYSBwb2ludGVyIHRvIGBzdHJ1Y3QgYWdncmVnYXRvcmAsIHNvIGlmIGl0JiMzOTtzIE5VTEwsIHRoZSBmdW5jdGlvbiBqdXN0IHJldHVybnMuIFRoZSBsb2dpYyBpcyBzb3VuZCwgYW5kIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LgoKU28sIGhlcmUmIzM5O3MgbXkgcmVhc29uaW5nLCBkaXN0aWxsZWQ6IFRoaXMgcGF0Y2ggcmVzb2x2ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSBib25kaW5nIGRyaXZlci4gIEl0IGFkZHMgYSBzYWZldHkgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBpbiBgYWRfbXV4X21hY2hpbmVgIGFuZCBjb3JyZWN0bHkgaW5pdGlhbGl6ZXMgYHBvcnQtJmd0O2FnZ3JlZ2F0b3JgIHdpdGggYFJDVV9JTklUX1BPSU5URVJgLiBTdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyB3aWxsIGNhdGNoIGFueSByZXN1bHRpbmcgZXJyb3JzLiAgVGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZXMuIFRoZXJlZm9yZSwgYSBzcGVjaWFsaXplZCBLTVNBTiBmdXp6aW5nIGNhbXBhaWduIGlzbiYjMzk7dCB3YXJyYW50ZWQgaW4gdGhpcyBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGEgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBiZWluZyBOVUxMIGluIGBhZF9tdXhfbWFjaGluZWAgYW5kIHVzaW5nIGBSQ1VfSU5JVF9QT0lOVEVSYCB0byBpbml0aWFsaXplIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3JgIHRvIE5VTEwgaW4gYGFkX2luaXRpYWxpemVfcG9ydGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyAobGlrZSBwYWdlIGZhdWx0cykgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIHN1Y2ggYXMgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGxlYWtpbmcga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGEgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBiZWluZyBOVUxMIGluIGBhZF9tdXhfbWFjaGluZWAgYW5kIHVzaW5nIGBSQ1VfSU5JVF9QT0lOVEVSYCB0byBpbml0aWFsaXplIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3JgIHRvIE5VTEwgaW4gYGFkX2luaXRpYWxpemVfcG9ydGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyAobGlrZSBwYWdlIGZhdWx0cykgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIHN1Y2ggYXMgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGxlYWtpbmcga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjM2LjI1NzcyNjE3NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDU3Mjk2Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJPTkRJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJcIixcbiAgICBcImJvbmRfM2FkX2JpbmRfc2xhdmVcIixcbiAgICBcImJvbmRfM2FkX3VuYmluZF9zbGF2ZVwiLFxuICAgIFwiYm9uZF8zYWRfbGFjcGR1X3JlY3ZcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBieSBhZGRpbmcgYSBjaGVjayBmb3IgYGFnZ3JlZ2F0b3JgIGJlaW5nIE5VTEwgaW4gYGFkX211eF9tYWNoaW5lYCBhbmQgdXNpbmcgYFJDVV9JTklUX1BPSU5URVJgIHRvIGluaXRpYWxpemUgYHBvcnQtXFx1MDAzZWFnZ3JlZ2F0b3JgIHRvIE5VTEwgaW4gYGFkX2luaXRpYWxpemVfcG9ydGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyAobGlrZSBwYWdlIGZhdWx0cykgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIHN1Y2ggYXMgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGxlYWtpbmcga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gdGhlIDgwMi4zYWQgKExBQ1ApIHN0YXRlIG1hY2hpbmUgb2YgdGhlIGJvbmRpbmcgZHJpdmVyLiBUaGUgYm9uZGluZyBkcml2ZXIgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNyZWF0aW5nIGEgYm9uZCBpbnRlcmZhY2UgYW5kIGFkZGluZyBzbGF2ZXMuIFRoZSBMQUNQIHN0YXRlIG1hY2hpbmUgcnVucyBwZXJpb2RpY2FsbHkgb3Igb24gZXZlbnRzLCBtYWtpbmcgdGhpcyBhIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjaGFuZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjM2LjI1NzczMjgzNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk1MTg5NTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzk1ZDRiYWMzNTM3OTA3MmFiODZlNWUyM2ZjYzQwMGY3ZjVlMjQ5YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwODozODozNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcXG5pbmRleCBhY2JiYTA4ZGJkZmFkLi5jNGRmY2FmY2ZmMjY2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xcbkBAIC0xMDUzLDYgKzEwNTMsOSBAQCBzdGF0aWMgdm9pZCBhZF9tdXhfbWFjaGluZShzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCAqdXBkYXRlX3NsYXZlX2FycilcXG4gXFx0bGFzdF9zdGF0ZSA9IHBvcnQtXFx1MDAzZXNtX211eF9zdGF0ZTtcXG4gXFxuIFxcdGFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC1cXHUwMDNlYWdncmVnYXRvcik7XFxuK1xcdGlmICghYWdncmVnYXRvcilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0aWYgKHBvcnQtXFx1MDAzZXNtX3ZhcnMgXFx1MDAyNiBBRF9QT1JUX0JFR0lOKSB7XFxuIFxcdFxcdHBvcnQtXFx1MDAzZXNtX211eF9zdGF0ZSA9IEFEX01VWF9ERVRBQ0hFRDtcXG4gXFx0fSBlbHNlIHtcXG5AQCAtMjA3Miw3ICsyMDc1LDcgQEAgc3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9wb3J0KHN0cnVjdCBwb3J0ICpwb3J0LCBjb25zdCBzdHJ1Y3QgYm9uZF9wYXJhbXMgKmJvbmRcXG4gXFx0XFx0cG9ydC1cXHUwMDNlc21fbXV4X3N0YXRlID0gMDtcXG4gXFx0XFx0cG9ydC1cXHUwMDNlc21fbXV4X3RpbWVyX2NvdW50ZXIgPSAwO1xcbiBcXHRcXHRwb3J0LVxcdTAwM2VzbV90eF9zdGF0ZSA9IDA7XFxuLVxcdFxcdHBvcnQtXFx1MDAzZWFnZ3JlZ2F0b3IgPSBOVUxMO1xcbitcXHRcXHRSQ1VfSU5JVF9QT0lOVEVSKHBvcnQtXFx1MDAzZWFnZ3JlZ2F0b3IsIE5VTEwpO1xcbiBcXHRcXHRwb3J0LVxcdTAwM2VuZXh0X3BvcnRfaW5fYWdncmVnYXRvciA9IE5VTEw7XFxuIFxcdFxcdHBvcnQtXFx1MDAzZXRyYW5zYWN0aW9uX2lkID0gMDtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjM2LjY1MzY0MDUyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM4MDE0ODQ2NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJPTkRJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJcIixcbiAgICBcImJvbmRfM2FkX2JpbmRfc2xhdmVcIixcbiAgICBcImJvbmRfM2FkX3VuYmluZF9zbGF2ZVwiLFxuICAgIFwiYm9uZF8zYWRfbGFjcGR1X3JlY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgODAyLjNhZCAoTEFDUCkgc3RhdGUgbWFjaGluZSBvZiB0aGUgYm9uZGluZyBkcml2ZXIuIFRoZSBib25kaW5nIGRyaXZlciBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY3JlYXRpbmcgYSBib25kIGludGVyZmFjZSBhbmQgYWRkaW5nIHNsYXZlcy4gVGhlIExBQ1Agc3RhdGUgbWFjaGluZSBydW5zIHBlcmlvZGljYWxseSBvciBvbiBldmVudHMsIG1ha2luZyB0aGlzIGEgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNoYW5nZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzk1ZDRiYWMzNTM3OTA3MmFiODZlNWUyM2ZjYzQwMGY3ZjVlMjQ5YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDA4OjM4OjM1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXG5pbmRleCBhY2JiYTA4ZGJkZmFkLi5jNGRmY2FmY2ZmMjY2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcbkBAIC0xMDUzLDYgKzEwNTMsOSBAQCBzdGF0aWMgdm9pZCBhZF9tdXhfbWFjaGluZShzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCAqdXBkYXRlX3NsYXZlX2FycilcbiBcdGxhc3Rfc3RhdGUgPSBwb3J0LVx1MDAzZXNtX211eF9zdGF0ZTtcbiBcbiBcdGFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC1cdTAwM2VhZ2dyZWdhdG9yKTtcbitcdGlmICghYWdncmVnYXRvcilcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKHBvcnQtXHUwMDNlc21fdmFycyBcdTAwMjYgQURfUE9SVF9CRUdJTikge1xuIFx0XHRwb3J0LVx1MDAzZXNtX211eF9zdGF0ZSA9IEFEX01VWF9ERVRBQ0hFRDtcbiBcdH0gZWxzZSB7XG5AQCAtMjA3Miw3ICsyMDc1LDcgQEAgc3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9wb3J0KHN0cnVjdCBwb3J0ICpwb3J0LCBjb25zdCBzdHJ1Y3QgYm9uZF9wYXJhbXMgKmJvbmRcbiBcdFx0cG9ydC1cdTAwM2VzbV9tdXhfc3RhdGUgPSAwO1xuIFx0XHRwb3J0LVx1MDAzZXNtX211eF90aW1lcl9jb3VudGVyID0gMDtcbiBcdFx0cG9ydC1cdTAwM2VzbV90eF9zdGF0ZSA9IDA7XG4tXHRcdHBvcnQtXHUwMDNlYWdncmVnYXRvciA9IE5VTEw7XG4rXHRcdFJDVV9JTklUX1BPSU5URVIocG9ydC1cdTAwM2VhZ2dyZWdhdG9yLCBOVUxMKTtcbiBcdFx0cG9ydC1cdTAwM2VuZXh0X3BvcnRfaW5fYWdncmVnYXRvciA9IE5VTEw7XG4gXHRcdHBvcnQtXHUwMDNldHJhbnNhY3Rpb25faWQgPSAwO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzg6MzYuNjUzNjUzODQyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMwNjA4MjY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCb25kaW5nIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNgLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGJ1ZyBmaXgsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIDgwMi4zYWQgKExBQ1ApIGltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgYm9uZGluZyBkcml2ZXIuIE15IHVuZGVyc3RhbmRpbmcgaXMsIHRoaXMgZHJpdmVyIGlzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2Ug4oCTIHlvdSBjcmVhdGUgYm9uZCBpbnRlcmZhY2VzLCBhZGQgc2xhdmVzLCB0aGluZ3MgbGlrZSB0aGF0LCB1c2luZyBuZXRsaW5rIG9yIHN5c2ZzLiBUaGUgTEFDUCBzdGF0ZSBtYWNoaW5lIGlzIHRoZSBjb3JlIGhlcmUsIHJ1bm5pbmcgZWl0aGVyIHBlcmlvZGljYWxseSBvciByZWFjdGluZyB0byBldmVudHMuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgc2ltcGxlOyBpbiBgYWRfbXV4X21hY2hpbmVgLCBpdCdzIGFkZGluZyBhIGBOVUxMYCBjaGVjayBmb3IgYGFnZ3JlZ2F0b3JgIGFmdGVyIGRlcmVmZXJlbmNpbmcgaXQgd2l0aCBgcmN1X2RlcmVmZXJlbmNlYDpcblxuYGBgY1xuYWdncmVnYXRvciA9IHJjdV9kZXJlZmVyZW5jZShwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IpO1xuXHRpZiAoIWFnZ3JlZ2F0b3IpXG5cdFx0cmV0dXJuO1xuYGBgXG5cblRoaXMgbWFrZXMgc2Vuc2UuIElmIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3JgIGhhcHBlbnMgdG8gYmUgYE5VTExgIGF0IHRoYXQgcG9pbnQsIHByZXN1bWFibHkgZHVlIHRvIHNvbWUgcmFjZSBjb25kaXRpb24gb3IgdW5pbml0aWFsaXplZCBzdGF0ZSwgdGhlIGZ1bmN0aW9uIHdpbGwganVzdCByZXR1cm4sIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlLiBTbWFydCwgYSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgYXBwcm9hY2gsIG1pdGlnYXRpbmcgYSBjcmFzaC5cblxuVGhlIG90aGVyIGhhbGYgb2YgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IgPSBOVUxMO2AgdG8gYFJDVV9JTklUX1BPSU5URVIocG9ydC1cdTAwM2VhZ2dyZWdhdG9yLCBOVUxMKTtgIHdpdGhpbiBgYWRfaW5pdGlhbGl6ZV9wb3J0YC4gVGhpcyBsb29rcyBsaWtlIHRoZXkncmUgdHJ5aW5nIHRvIGltcHJvdmUgdGhlIHN5bmNocm9uaXphdGlvbiBhcm91bmQgdGhlIHBvaW50ZXIgYXNzaWdubWVudC4gVXNpbmcgYFJDVV9JTklUX1BPSU5URVJgIGlzIHRoZSBjb3JyZWN0IHdheSB0byBpbml0aWFsaXplIGFuIFJDVS1wcm90ZWN0ZWQgcG9pbnRlciwgZW5zdXJpbmcgcHJvcGVyIG1lbW9yeSBvcmRlcmluZyBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGNvbmN1cnJlbnQgYWNjZXNzLiBUaGlzIGlzIHRoZSBjb3JyZWN0IHdheSB0byBoYW5kbGUgdGhhdCBpbiB0aGUga2VybmVsLlxuXG5TbywgdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBwb3NzaWJsZSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBhY2Nlc3NpbmcgYHBvcnQtXHUwMDNlYWdncmVnYXRvcmAgaW4gdGhlIDgwMi4zYWQgTEFDUCBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgZnVuY3Rpb25zIGBhZF9tdXhfbWFjaGluZWAgYW5kIGBhZF9pbml0aWFsaXplX3BvcnRgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlc2UgY2hhbmdlcyBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBzY2VuYXJpb3MgY291bGQgbGVhZCB0byBgcG9ydC1cdTAwM2VhZ2dyZWdhdG9yYCBiZWNvbWluZyBudWxsIGluIHRoZSBmaXJzdCBwbGFjZSB0byB1bmRlcnN0YW5kIHRoZSByb290IGNhdXNlIG9mIHRoZSBidWcgYW5kIGFzc2VzcyB0aGUgZml4J3MgZWZmZWN0aXZlbmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjQxLjk1OTczOTU2NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY5MDI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZF9tdXhfbWFjaGluZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTk2PXN0YXRpYyBpbnQgYWRfbWFya2VyX3NlbmQoc3RydWN0IHBvcnQgKnBvcnQsIHN0cnVjdCBib25kX21hcmtlciAqbWFya2VyKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6OTc6c3RhdGljIHZvaWQgYWRfbXV4X21hY2hpbmUoc3RydWN0IHBvcnQgKnBvcnQsIGJvb2wgKnVwZGF0ZV9zbGF2ZV9hcnIpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy05OC1zdGF0aWMgdm9pZCBhZF9yeF9tYWNoaW5lKHN0cnVjdCBsYWNwZHUgKmxhY3BkdSwgc3RydWN0IHBvcnQgKnBvcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTEwMzE9c3RhdGljIHZvaWQgYWRfY29uZF9zZXRfcGVlcl9ub3RpZihzdHJ1Y3QgcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xMDM5LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxMDQwOiAqIGFkX211eF9tYWNoaW5lIC0gaGFuZGxlIGEgcG9ydCdzIG11eCBzdGF0ZSBtYWNoaW5lXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNDEtICogQHBvcnQ6IHRoZSBwb3J0IHdlJ3JlIGxvb2tpbmcgYXRcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xMDQzLSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxMDQ0OnN0YXRpYyB2b2lkIGFkX211eF9tYWNoaW5lKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sICp1cGRhdGVfc2xhdmVfYXJyKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xMDQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yNTUyPXZvaWQgYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNjAzLVxcdFxcdGFkX3BvcnRfc2VsZWN0aW9uX2xvZ2ljKHBvcnQsIFxcdTAwMjZ1cGRhdGVfc2xhdmVfYXJyKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjYwNDpcXHRcXHRhZF9tdXhfbWFjaGluZShwb3J0LCBcXHUwMDI2dXBkYXRlX3NsYXZlX2Fycik7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2MDUtXFx0XFx0YWRfdHhfbWFjaGluZShwb3J0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzg6NDIuMDA0NDM0NTk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzMTY1Nzg0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFBvdGVudGlhbDogQm9uZCAzYWQgU3RhdGUgTWFjaGluZSoqXG5cbk9rYXksIHNvIGBhZF9tdXhfbWFjaGluZWAgaXMgYmVpbmcgY2FsbGVkIGZyb20gYGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcmAuIEdpdmVuIHRoYXQgdGhlIGBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJgIGlzIHRoZSBwcmltYXJ5IGhhbmRsZXIgZm9yIDgwMi4zYWQsIHRoYXQgbWFrZXMgdGhpcyBhICp2ZXJ5KiBpbnRlcmVzdGluZyB0YXJnZXQgZm9yIGZ1enppbmcuIEl0J3MgY2xlYXJseSBhIHJlYWNoYWJsZSBjb2RlIHBhdGgsIGFuZCBnaXZlbiB0aGUgY29tcGxleGl0eSBvZiB0aGUgODAyLjNhZCBwcm90b2NvbCwgdGhlIHBvdGVudGlhbCBmb3IgZWRnZS1jYXNlIHZ1bG5lcmFiaWxpdGllcyBpcyBoaWdoLiBJIHNob3VsZCBhZGQgdGhpcyB0byB0aGUgdGVzdGluZyBxdWV1ZSBhcyBzb29uIGFzIHBvc3NpYmxlLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGJvbmRpbmcgY29uZmlndXJhdGlvbiB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgSSBzdGFydCBjcmFmdGluZyBhbnkgZnV6emluZyBpbnB1dHMuIFRoYXQncyBhbHdheXMgdGhlIHNtYXJ0IG1vdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozODo0NC45MzYwOTQ0ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3NjkyMzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCT05ESU5HXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzg6NDQuOTgyODczMjQ2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg1NjQ4MDQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkIHRoaW5raW5nIHRocm91Z2ggdGhpczpcblxuKipXaGVyZSdzIHRoZSBLY29uZmlnIGZvciBCb25kaW5nPyoqXG5cbkFscmlnaHQsIGhvbGQgb24gYSBzZWNvbmQuIEknbSBkZWVwIGludG8gdGhpcyBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24sIGFuZCBldmVyeXRoaW5nICpzaG91bGQqIGJlIGNvbWluZyB0b2dldGhlci4uLiBidXQgc29tZXRoaW5nIGZlZWxzIG9mZi4gSSdtIGV4cGVjdGluZyB0byBzZWUgdGhlIGJvbmRpbmctc3BlY2lmaWMgS2NvbmZpZyBmaWxlIHJpZ2h0IGFib3V0IG5vdywgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgY3VycmVudCBzY29wZSBvZiB0aGUgcHJvamVjdCBhbmQgdGhlIHdheSBJJ3ZlIHN0cnVjdHVyZWQgbXkgbWVudGFsIG1hcCBvZiB0aGUgc3lzdGVtLiBJJ3ZlIG1lbnRhbGx5IHRyYWNlZCB0aGUgZGVwZW5kZW5jaWVzLCBJJ3ZlIGdvdCBhIGdvb2QgaWRlYSBvZiB0aGUgbW9kdWxlcyBpbnZvbHZlZCwgYW5kIHRoaXMgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSBmb3IgaXQgdG8gYmUgaW50ZWdyYXRlZC4gV2hlcmUgaW4gdGhlIG1vZHVsZSBzdHJ1Y3R1cmUgaXMgdGhlIGJvbmRpbmcgS2NvbmZpZz8gSSBrbm93IEknbSBub3Qgb3Zlcmxvb2tpbmcgc29tZSBvYnNjdXJlIG5hbWluZyBjb252ZW50aW9uIGhlcmUsIHRoaXMgc2hvdWxkIGJlIHJlYWRpbHkgYXBwYXJlbnQuIEhtbSwgZGlkIEkgYWNjaWRlbnRhbGx5IG1ha2UgYSBicmFuY2hpbmcgZXJyb3Igc29tZXdoZXJlPyBMZXQgbWUgcmV0cmFjZSBteSBzdGVwcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MzYwMSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzg6NDcuODM5MzU1NjUxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTc0NDIzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0zOT1pZiBORVRfQ09SRVxcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIkJvbmRpbmcgZHJpdmVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjQ3Ljk2MTEwNDQyOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MzA1MTA5MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIENvbmZpZ3VyYXRpb24gYW5kIEZvY3VzaW5nIG9uIEJvbmRpbmcqKlxuXG5SaWdodCwgdGhpcyBmZWVscyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRlZCB0byBgQk9ORElOR2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoYXQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkgbmVlZCB0byBpbW1lZGlhdGVseSBjb25zaWRlciB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRlcm0uIEl0J3MgYSBxdWljayBhc3Nlc3NtZW50IHRvIGNvbmZpcm0gdGhhdCB3ZSdyZSB0YWxraW5nIGFib3V0IHNvbWV0aGluZyBJIGNhbiBsZXZlcmFnZSBteSBleHBlcnRpc2UgaW4uXG5cblRoZSBuZXh0IHRoaW5nIEknZCBkbyBpcyBjaGVjay4gTXkgdGhvdWdodCBpczogQmVmb3JlIGRpdmluZyBpbnRvIGFueSBzcGVjaWZpYyBzY2VuYXJpb3Mgb3IgdHJvdWJsZXNob290aW5nIHN0ZXBzLCBJIG5lZWQgdG8gc2VlIHdoYXQgb3RoZXIgY29uZmlncyBhcmUgZmxvYXRpbmcgYXJvdW5kLiBJcyB0aGVyZSBhbnl0aGluZyBlbHNlIHRoYXQgdGllcyBpbnRvIHRoaXMgdGhhdCBJIGhhdmVuJ3Qgc2VlbiB5ZXQ/IExldCdzIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODk3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzg6NTAuNTkxNjE4MDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzQ5NDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRERVZJQ0VTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03LVxcdGRlZmF1bHQgeSBpZiBVTUxcXG5kcml2ZXJzL25ldC9LY29uZmlnOjg6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTktXFx0Ym9vbCBcXFwiTmV0d29yayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDE9Y29uZmlnIEJPTkRJTkdcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVxcdHRyaXN0YXRlIFxcXCJCb25kaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDpcXHRkZXBlbmRzIG9uIFRMUyB8fCBUTFNfREVWSUNFPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NzQ9Y29uZmlnIFdJUkVHVUFSRFxcbmRyaXZlcnMvbmV0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcIldpcmVHdWFyZCBzZWN1cmUgbmV0d29yayB0dW5uZWxcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo3NjpcXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03Ny1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9OTI9Y29uZmlnIFdJUkVHVUFSRF9ERUJVR1xcbmRyaXZlcnMvbmV0L0tjb25maWctOTMtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGNoZWNrcyBhbmQgdmVyYm9zZSBtZXNzYWdlc1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjk0OlxcdGRlcGVuZHMgb24gV0lSRUdVQVJEXFxuZHJpdmVycy9uZXQvS2NvbmZpZy05NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEwMz1jb25maWcgT1ZQTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJPcGVuVlBOIGRhdGEgY2hhbm5lbCBvZmZsb2FkXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTA1OlxcdGRlcGVuZHMgb24gTkVUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cXHRzZWxlY3QgRFNUX0NBQ0hFXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEzNj1jb25maWcgTkVUX0ZDXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzctXFx0Ym9vbCBcXFwiRmlicmUgQ2hhbm5lbCBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjEzODpcXHRkZXBlbmRzIG9uIFNDU0kgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xNDk9Y29uZmlnIElGQlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTUwLVxcdHRyaXN0YXRlIFxcXCJJbnRlcm1lZGlhdGUgRnVuY3Rpb25hbCBCbG9jayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTUxOlxcdGRlcGVuZHMgb24gTkVUX0FDVF9NSVJSRUQgfHwgTkZUX0ZXRF9ORVRERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1Mi1cXHRzZWxlY3QgTkVUX1JFRElSRUNUXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTgwLVxcdHRyaXN0YXRlIFxcXCJNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgxOlxcdGRlcGVuZHMgb24gTUFDVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgyOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTgzLVxcdHNlbGVjdCBUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTkzPWNvbmZpZyBJUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTQ6XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NTpcXHRkZXBlbmRzIG9uIElQVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk2LVxcdGRlZl9ib29sIHlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTk5PWNvbmZpZyBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjAxOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjAyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIxNy1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjE4OlxcdGRlcGVuZHMgb24gSVBWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMTk6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMjAtXFx0c2VsZWN0IFRBUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzEtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMjpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMy1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjQ1PWNvbmZpZyBHRU5FVkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ni1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBOZXR3b3JrIFZpcnR1YWxpemF0aW9uIEVuY2Fwc3VsYXRpb25cXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDc6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDgtXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYxLVxcdHRyaXN0YXRlIFxcXCJCYXJlIFVEUCBFbmNhcHN1bGF0aW9uXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjYyOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYzLVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjczLVxcdHRyaXN0YXRlIFxcXCJHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc0OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjc1LVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1BcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5MC1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEZvcndhcmRpbmcgQ29udHJvbCBQcm90b2NvbCAoUEZDUClcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTE6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTItXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMwMj1jb25maWcgQU1UXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDMtXFx0dHJpc3RhdGUgXFxcIkF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nIChBTVQpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzA0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJUF9NVUxUSUNBU1RcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNS1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzI3PWNvbmZpZyBORVRDT05TT0xFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMjgtXFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgY29uc29sZSBsb2dnaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozMjk6XFx0ZGVwZW5kcyBvbiBQUklOVEtcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMzND1jb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzUtXFx0Ym9vbCBcXFwiRHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzM2OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRSBcXHUwMDI2XFx1MDAyNiBTWVNGUyBcXHUwMDI2XFx1MDAyNiBDT05GSUdGU19GUyBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzctXFx0XFx0XFx0IShORVRDT05TT0xFPXkgXFx1MDAyNlxcdTAwMjYgQ09ORklHRlNfRlM9bSlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzQ1PWNvbmZpZyBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ2LVxcdGJvb2wgXFxcIlNldCBrZXJuZWwgZXh0ZW5kZWQgbWVzc2FnZSBieSBkZWZhdWx0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzQ3OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNTU9Y29uZmlnIE5FVENPTlNPTEVfUFJFUEVORF9SRUxFQVNFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTYtXFx0Ym9vbCBcXFwiUHJlcGVuZCBrZXJuZWwgcmVsZWFzZSB2ZXJzaW9uIGluIHRoZSBtZXNzYWdlIGJ5IGRlZmF1bHRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozNTc6XFx0ZGVwZW5kcyBvbiBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzU4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzM9Y29uZmlnIE5UQl9ORVRERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozNzU6XFx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzYtXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzc9Y29uZmlnIFJJT05FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzc4LVxcdHRyaXN0YXRlIFxcXCJSYXBpZElPIEV0aGVybmV0IG92ZXIgbWVzc2FnaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc5OlxcdGRlcGVuZHMgb24gUkFQSURJT1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzgxPWNvbmZpZyBSSU9ORVRfVFhfU0laRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzgyLVxcdGludCBcXFwiTnVtYmVyIG9mIG91dGJvdW5kIHF1ZXVlIGVudHJpZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozODM6XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4NC1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM4Nj1jb25maWcgUklPTkVUX1JYX1NJWkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Ny1cXHRpbnQgXFxcIk51bWJlciBvZiBpbmJvdW5kIHF1ZXVlIGVudHJpZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozODg6XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4OS1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM5MT1jb25maWcgVFVOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTItXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCBUVU4vVEFQIGRldmljZSBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjM5MzpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM5NC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBuZXR3b3JrIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0NTpcXHRkZXBlbmRzIG9uIFZJUlRJT1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ2LVxcdHNlbGVjdCBORVRfRkFJTE9WRVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ2NC1cXHRib29sIFxcXCJCUEYtcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDY1OlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ2Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ3Mj1jb25maWcgTkVUX1ZSRlxcbmRyaXZlcnMvbmV0L0tjb25maWctNDczLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFJvdXRpbmcgYW5kIEZvcndhcmRpbmcgKExpdGUpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc0OlxcdGRlcGVuZHMgb24gSVBfTVVMVElQTEVfVEFCTEVTXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzU6XFx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc2OlxcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVMgfHwgSVBWNj1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODE9Y29uZmlnIFZTT0NLTU9OXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00ODItXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0ODM6XFx0ZGVwZW5kcyBvbiBWSE9TVF9WU09DS1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDg0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDg5PWNvbmZpZyBNSElfTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00OTAtXFx0dHJpc3RhdGUgXFxcIk1ISSBuZXR3b3JrIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ5MTpcXHRkZXBlbmRzIG9uIE1ISV9CVVNcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ5Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU0ND1jb25maWcgWEVOX05FVERFVl9GUk9OVEVORFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ1LVxcdHRyaXN0YXRlIFxcXCJYZW4gbmV0d29yayBkZXZpY2UgZnJvbnRlbmQgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTQ2OlxcdGRlcGVuZHMgb24gWEVOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXFx0c2VsZWN0IFhFTl9YRU5CVVNfRlJPTlRFTkRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTYyPWNvbmZpZyBYRU5fTkVUREVWX0JBQ0tFTkRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU2My1cXHR0cmlzdGF0ZSBcXFwiWGVuIGJhY2tlbmQgbmV0d29yayBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1NjQ6XFx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTY1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTg0PWNvbmZpZyBWTVhORVQzXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODUtXFx0dHJpc3RhdGUgXFxcIlZNd2FyZSBWTVhORVQzIGV0aGVybmV0IGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NjpcXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODc6XFx0ZGVwZW5kcyBvbiBQQUdFX1NJWkVfTEVTU19USEFOXzY0S0JcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xcbmRyaXZlcnMvbmV0L0tjb25maWctNTk1LVxcdHRyaXN0YXRlIFxcXCJGVUpJVFNVIEV4dGVuZGVkIFNvY2tldCBOZXR3b3JrIERldmljZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1OTY6XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01OTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDY6XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA3OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA4OlxcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwOTpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTAtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjUwLjYzNjM3MjQ3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzYwMzUwMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEJvbmRpbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gdGhlIGJvbmRpbmcgZHJpdmVyJ3MgZnVuY3Rpb25hbGl0eSBzZWVtcyBjb250aW5nZW50IG9uIGBJTkVUYCBiZWluZyBlbmFibGVkLCBhbmQgdGhlbiBlaXRoZXIgYFRMU2Agb3IsIGlmIFRMUyBpcyBkaXNhYmxlZCwgdGhlIGBUTFNfREVWSUNFYCBmbGFnIG5lZWRzIHRvIGJlIHNldCB0byAnbicuIEVzc2VudGlhbGx5LCBpZiBJJ20gdW5kZXJzdGFuZGluZyB0aGlzIGNvcnJlY3RseSwgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBzaG91bGQgYmUgdW5kZXIgdGhlIGBCT05ESU5HYCBjb25maWcgb3B0aW9uLlxuXG5IYW5nIG9uIGEgc2Vjb25k4oCmIHRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCwgc3BlY2lmaWNhbGx5LCBpcyBpbiBgZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jYC4gVGhhdCBtYWtlcyBtZSB3b25kZXIgaWYgdGhlcmUncyBhIG1vcmUgZ3JhbnVsYXIgY29uZmlndXJhdGlvbiBvcHRpb24gc3BlY2lmaWMgdG8gODAyLjNhZCBsaW5rIGFnZ3JlZ2F0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGVgIHRvIHNlZSBpZiBpdCBkZWZpbmVzIGFueSBleHRyYSBjb25maWcgc3BlY2lmaWMgdG8gdGhhdCBtb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTA4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzg6NTMuOTk2NzM3NzE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDcyODk3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJib25kXzNhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfQk9ORElORykgKz0gYm9uZGluZy5vXFxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS03LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU6ODpib25kaW5nLW9ianMgOj0gYm9uZF9tYWluLm8gYm9uZF8zYWQubyBib25kX2FsYi5vIGJvbmRfc3lzZnMubyBib25kX3N5c2ZzX3NsYXZlLm8gYm9uZF9kZWJ1Z2ZzLm8gYm9uZF9uZXRsaW5rLm8gYm9uZF9vcHRpb25zLm9cXG5kcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlLTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjU0LjA0MTQ3Mjc0OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjIzNDYzMzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRlYnVnZ2luZyB0aGUgQm9uZGluZyBEcml2ZXIncyBDb21waWxhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBpbW1lZGlhdGUgY29uY2VybiBpcyBgYm9uZF8zYWQub2Ag4oCTIHRoYXQgbW9kdWxlIGlzICphbHdheXMqIGJ1aWx0IHdoZW4gYENPTkZJR19CT05ESU5HYCBpcyBzZXQuIFRoYXQncyBnb29kIHRvIGtub3csIGVsaW1pbmF0aW5nIG9uZSBwb3RlbnRpYWwgYXZlbnVlIG9mIGludmVzdGlnYXRpb24uIE5vdywgbGV0J3MgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29kZSBjaGFuZ2VzLiBUaGUgcGF0Y2ggYWZmZWN0cyBgYWRfbXV4X21hY2hpbmVgIGFuZCBgYWRfaW5pdGlhbGl6ZV9wb3J0YC4gR290IGl0LiBIbW0sIGBhZF9tdXhfbWFjaGluZWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGlzIGZpbmUsIGJ1dCBtZWFucyBpdHMgZGlyZWN0IGNhbGxzIG1pZ2h0IGJlIGZldy4gVGltZSB0byBtYXAgb3V0IHRoZSA4MDIuM2FkIGVudHJ5IHBvaW50cyBpbnRvIHRoZSBib25kaW5nIGRyaXZlci4gRmlndXJpbmcgb3V0IGhvdyB0aGVzZSBjaGFuZ2VzIGludGVyYWN0IHdpdGggdGhlIGJyb2FkZXIgODAyLjNhZCBzdGF0ZSBtYWNoaW5lIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEZyb20gdGhlIGRyaXZlciwgdG8gdGhlIGtlcm5lbCwgdG8gdGhlIHVzZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozODo1Ny42NjQ5MzkzMDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDEwNjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFkX211eF9tYWNoaW5lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9OTY9c3RhdGljIGludCBhZF9tYXJrZXJfc2VuZChzdHJ1Y3QgcG9ydCAqcG9ydCwgc3RydWN0IGJvbmRfbWFya2VyICptYXJrZXIpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzo5NzpzdGF0aWMgdm9pZCBhZF9tdXhfbWFjaGluZShzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCAqdXBkYXRlX3NsYXZlX2Fycik7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTk4LXN0YXRpYyB2b2lkIGFkX3J4X21hY2hpbmUoc3RydWN0IGxhY3BkdSAqbGFjcGR1LCBzdHJ1Y3QgcG9ydCAqcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MTAzMT1zdGF0aWMgdm9pZCBhZF9jb25kX3NldF9wZWVyX25vdGlmKHN0cnVjdCBwb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwMzktLyoqXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjEwNDA6ICogYWRfbXV4X21hY2hpbmUgLSBoYW5kbGUgYSBwb3J0J3MgbXV4IHN0YXRlIG1hY2hpbmVcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTA0MS0gKiBAcG9ydDogdGhlIHBvcnQgd2UncmUgbG9va2luZyBhdFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNDMtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjEwNDQ6c3RhdGljIHZvaWQgYWRfbXV4X21hY2hpbmUoc3RydWN0IHBvcnQgKnBvcnQsIGJvb2wgKnVwZGF0ZV9zbGF2ZV9hcnIpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTI1NTI9dm9pZCBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2MDMtXFx0XFx0YWRfcG9ydF9zZWxlY3Rpb25fbG9naWMocG9ydCwgXFx1MDAyNnVwZGF0ZV9zbGF2ZV9hcnIpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNjA0OlxcdFxcdGFkX211eF9tYWNoaW5lKHBvcnQsIFxcdTAwMjZ1cGRhdGVfc2xhdmVfYXJyKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjYwNS1cXHRcXHRhZF90eF9tYWNoaW5lKHBvcnQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozODo1Ny43MTA5NTU4M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTE0NzY0NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipDb25zaWRlcmluZyBQb3RlbnRpYWwgRm9jdXMgUG9pbnRzIGZvciBTeXN0ZW0gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdG8gc3RhcnQgcmVhbGx5IGRpZ2dpbmcgaW50byB0aGlzIHN5c3RlbS4gYGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcmAgZmVlbHMgbGlrZSBhIGdvb2QsIHNvbGlkIGZvY2FsIHBvaW50LiBJdCdzIHByb2JhYmx5IGNlbnRyYWwgdG8gYSBzaWduaWZpY2FudCBjaHVuayBvZiB0aGUgYm9uZCBtYW5hZ2VtZW50IGxvZ2ljLCBhbmQgdW5kZXJzdGFuZGluZyBpdCB3b3VsZCBnaXZlIG1lIGEgYnJvYWQgb3ZlcnZpZXcgb2YgaG93IHRoYXQgcGFydCBvZiB0aGUgc3lzdGVtIHdvcmtzLiBCdXQsIHRoZW4gSSBzdGFydGVkIHdvbmRlcmluZy4uLiB3aGF0IGFib3V0IGBhZF9pbml0aWFsaXplX3BvcnRgPyBJcyB0aGF0IGFub3RoZXIgY3J1Y2lhbCBlbnRyeSBwb2ludD8gSXQgY291bGQgYmUgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAgdG8gcG9ydCBpbml0aWFsaXphdGlvbiwgYmVmb3JlIGl0IGdldHMgdG8gdGhlIHN0YXRlIG1hY2hpbmUsIHdoaWNoIHN1Z2dlc3RzIGEgZGlmZmVyZW50IGJ1dCBlcXVhbGx5IGltcG9ydGFudCBwZXJzcGVjdGl2ZS4gSSBuZWVkIHRvIGNvbnNpZGVyIGJvdGgsIGFuZCBwZXJoYXBzIHRoZSBpbnRlcnJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzMDQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozOTowMC42MjU3MjI0NTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzgwNzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFkX2luaXRpYWxpemVfcG9ydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTEwNT1zdGF0aWMgdm9pZCBhZF9pbml0aWFsaXplX2FnZyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdncmVnYXRvcik7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjEwNjpzdGF0aWMgdm9pZCBhZF9pbml0aWFsaXplX3BvcnQoc3RydWN0IHBvcnQgKnBvcnQsIGNvbnN0IHN0cnVjdCBib25kX3BhcmFtcyAqYm9uZF9wYXJhbXMpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xMDctc3RhdGljIHZvaWQgYWRfZW5hYmxlX2NvbGxlY3Rpbmcoc3RydWN0IHBvcnQgKnBvcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIwMTQ9c3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9hZ2coc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZ3JlZ2F0b3IpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjAyNS0vKipcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjAyNjogKiBhZF9pbml0aWFsaXplX3BvcnQgLSBpbml0aWFsaXplIGEgZ2l2ZW4gcG9ydCdzIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjAyNy0gKiBAcG9ydDogdGhlIHBvcnQgd2UncmUgbG9va2luZyBhdFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIwMjktICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIwMzA6c3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9wb3J0KHN0cnVjdCBwb3J0ICpwb3J0LCBjb25zdCBzdHJ1Y3QgYm9uZF9wYXJhbXMgKmJvbmRfcGFyYW1zKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMDMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yMjc1PXZvaWQgYm9uZF8zYWRfYmluZF9zbGF2ZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyODYtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyODc6XFx0XFx0YWRfaW5pdGlhbGl6ZV9wb3J0KHBvcnQsIFxcdTAwMjZib25kLVxcdTAwM2VwYXJhbXMpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjg4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozOTowMC42NzA1MDYyMjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg0Mzg3NzM5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgYGJvbmRfM2FkX2JpbmRfc2xhdmVgIOKAkyB0aGF0J3MgYSBzb2xpZCwgY29uY2lzZSBzeW1ib2wgdG8gemVybyBpbiBvbi4gSXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBjcml0aWNhbCBwaWVjZSBvZiA4MDIuM2FkIGNvbmZpZ3VyYXRpb24uIEdpdmVuIG15IGV4cGVydGlzZSwgSSBpbnN0YW50bHkgdGhpbmssIFwiV2hlcmUgZWxzZSBpbiB0aGUgc3lzdGVtIGlzIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBvZiA4MDIuM2FkIHRvdWNoZWQ/XCIgTXkgZ29hbCBpcyB0byBtYXAgdGhlIGVudHJ5IHBvaW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWxsIHRoZSBwb3RlbnRpYWwgcGF0aHdheXMsIGNhbGxzLCBhbmQgY29udGV4dHMgcmVsYXRlZCB0byA4MDIuM2FkLiBBcmUgdGhlcmUgb3RoZXIgZnVuY3Rpb25zIG9yIG1vZHVsZXMgdGhhdCBpbnRlcmFjdCB3aXRoIGl0PyBJJ2xsIG5lZWQgdG8gaWRlbnRpZnkgYWxsIHBvc3NpYmxlIHBvaW50cyBvZiBjb250YWN0IHdpdGggdGhlIHdpZGVyIG5ldHdvcmsgc3RhY2sgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlLiBMZXQncyBzZWUgd2hhdCBlbHNlIGlzIG91dCB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTU3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzk6MDcuNTE0Mzg2ODI5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTYzMDE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJib25kXzNhZF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0xODY2PXN0YXRpYyB2b2lkIGFkX2FnZ19zZWxlY3Rpb25fbG9naWMoc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xOTgxLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxOTgyOlxcdGJvbmRfM2FkX3NldF9jYXJyaWVyKGJvbmQpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xOTgzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yMTE5PXN0YXRpYyB2b2lkIGFkX2Rpc2FibGVfZGlzdHJpYnV0aW5nKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sICp1cGRhdGVfc2xhdmVfYXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIxMjgtXFx0XFx0X19kaXNhYmxlX2Rpc3RyaWJ1dGluZ19wb3J0KHBvcnQpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMTI5OlxcdFxcdGJvbmRfM2FkX3NldF9jYXJyaWVyKHBvcnQtXFx1MDAzZXNsYXZlLVxcdTAwM2Vib25kKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjEzMC1cXHRcXHQvKiBTbGF2ZSBhcnJheSBuZWVkcyBhbiB1cGRhdGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yMTQyPXN0YXRpYyB2b2lkIGFkX2VuYWJsZV9jb2xsZWN0aW5nX2Rpc3RyaWJ1dGluZyhzdHJ1Y3QgcG9ydCAqcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMTUyLVxcdFxcdF9fZW5hYmxlX3BvcnQocG9ydCk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIxNTM6XFx0XFx0Ym9uZF8zYWRfc2V0X2NhcnJpZXIocG9ydC1cXHUwMDNlc2xhdmUtXFx1MDAzZWJvbmQpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMTU0LVxcdFxcdC8qIFNsYXZlIGFycmF5IG5lZWRzIHVwZGF0ZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIxNjY9c3RhdGljIHZvaWQgYWRfZGlzYWJsZV9jb2xsZWN0aW5nX2Rpc3RyaWJ1dGluZyhzdHJ1Y3QgcG9ydCAqcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMTc2LVxcdFxcdF9fZGlzYWJsZV9wb3J0KHBvcnQpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMTc3OlxcdFxcdGJvbmRfM2FkX3NldF9jYXJyaWVyKHBvcnQtXFx1MDAzZXNsYXZlLVxcdTAwM2Vib25kKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjE3OC1cXHRcXHQvKiBTbGF2ZSBhcnJheSBuZWVkcyBhbiB1cGRhdGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yMjE3PXN0YXRpYyB2b2lkIGFkX21hcmtlcl9yZXNwb25zZV9yZWNlaXZlZChzdHJ1Y3QgYm9uZF9tYXJrZXIgKm1hcmtlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjMxLS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjMyOiAqIGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24gLSBpbml0YXRlIGFnZ3JlZ2F0b3Igc2VsZWN0aW9uXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzMtICogQGJvbmQ6IGJvbmRpbmcgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjIzOS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjI0MDp2b2lkIGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCB0aW1lb3V0KVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjQxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjQ1LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjQ2OiAqIGJvbmRfM2FkX2luaXRpYWxpemUgLSBpbml0aWFsaXplIGEgYm9uZCdzIDgwMi4zYWQgcGFyYW1ldGVycyBhbmQgc3RydWN0dXJlc1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjQ3LSAqIEBib25kOiBib25kaW5nIHN0cnVjdCB0byB3b3JrIG9uXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI1MC0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjI1MTp2b2lkIGJvbmRfM2FkX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNjItXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNjM6XFx0Ym9uZF8zYWRfaW5pdGlhdGVfYWdnX3NlbGVjdGlvbihib25kLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjY0LVxcdFxcdFxcdFxcdFxcdEFEX0FHR1JFR0FUT1JfU0VMRUNUSU9OX1RJTUVSICpcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjY4LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjY5OiAqIGJvbmRfM2FkX2JpbmRfc2xhdmUgLSBpbml0aWFsaXplIGEgc2xhdmUncyBwb3J0XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNzAtICogQHNsYXZlOiBzbGF2ZSBzdHJ1Y3QgdG8gd29yayBvblxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNzQtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNzU6dm9pZCBib25kXzNhZF9iaW5kX3NsYXZlKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjEtLyoqXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIzMjI6ICogYm9uZF8zYWRfdW5iaW5kX3NsYXZlIC0gZGVpbml0aWFsaXplIGEgc2xhdmUncyBwb3J0XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjMtICogQHNsYXZlOiBzbGF2ZSBzdHJ1Y3QgdG8gd29yayBvblxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjgtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIzMjk6dm9pZCBib25kXzNhZF91bmJpbmRfc2xhdmUoc3RydWN0IHNsYXZlICpzbGF2ZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjMzMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjMzOC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjMzOTpcXHQvKiBTeW5jIGFnYWluc3QgYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyKCkgKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjM0MC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmJvbmQtXFx1MDAzZW1vZGVfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ4NS0vKipcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjQ4NjogKiBib25kXzNhZF91cGRhdGVfYWRfYWN0b3Jfc2V0dGluZ3MgLSByZWZsZWN0IGNoYW5nZSBvZiBhY3RvciBzZXR0aW5ncyB0byBwb3J0c1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNDg3LSAqIEBib25kOiBib25kaW5nIHN0cnVjdCB0byB3b3JrIG9uXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ5MS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjQ5Mjp2b2lkIGJvbmRfM2FkX3VwZGF0ZV9hZF9hY3Rvcl9zZXR0aW5ncyhzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ5My17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjUyMz1zdGF0aWMgYm9vbCBib25kX2FnZ190aW1lcl9hZHZhbmNlKHN0cnVjdCBib25kaW5nICpib25kKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI1MzktLyoqXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI1NDA6ICogYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyIC0gaGFuZGxlIHN0YXRlIG1hY2hpbmVzIHRpbWVvdXRcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjU0MS0gKiBAd29yazogd29yayBjb250ZXh0IHRvIGZldGNoIGJvbmRpbmcgc3RydWN0IHRvIHdvcmsgb24gZnJvbVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI1NTEtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI1NTI6dm9pZCBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTYzLVxcdC8qIExvY2sgdG8gcHJvdGVjdCBkYXRhIGFjY2Vzc2VkIGJ5IGFsbCAoZS5nLiwgcG9ydC1cXHUwMDNlc21fdmFycykgYW5kXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI1NjQ6XFx0ICogYWdhaW5zdCBydW5uaW5nIHdpdGggYm9uZF8zYWRfdW5iaW5kX3NsYXZlLiBhZF9yeF9tYWNoaW5lIG1heSBydW5cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjU2NS1cXHQgKiBjb25jdXJyZW50bHkgZHVlIHRvIGluY29taW5nIExBQ1BEVSBhcyB3ZWxsLlxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI1ODgtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNTg5OlxcdFxcdGJvbmRfM2FkX3NldF9jYXJyaWVyKGJvbmQpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTkwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNjMzLS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNjM0OiAqIGJvbmRfM2FkX3J4X2luZGljYXRpb24gLSBoYW5kbGUgYSByZWNlaXZlZCBmcmFtZVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNjM1LSAqIEBsYWNwZHU6IHJlY2VpdmVkIGxhY3BkdVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2NDEtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI2NDI6c3RhdGljIGludCBib25kXzNhZF9yeF9pbmRpY2F0aW9uKHN0cnVjdCBsYWNwZHUgKmxhY3BkdSwgc3RydWN0IHNsYXZlICpzbGF2ZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjY0My17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjcxMz1zdGF0aWMgdm9pZCBhZF91cGRhdGVfYWN0b3Jfa2V5cyhzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCByZXNldClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzQ5LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNzUwOiAqIGJvbmRfM2FkX2FkYXB0ZXJfc3BlZWRfZHVwbGV4X2NoYW5nZWQgLSBoYW5kbGUgYSBzbGF2ZSdzIHNwZWVkIC8gZHVwbGV4XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3NTEtICogY2hhbmdlIGluZGljYXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzU2LSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNzU3OnZvaWQgYm9uZF8zYWRfYWRhcHRlcl9zcGVlZF9kdXBsZXhfY2hhbmdlZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzU4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzc3LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNzc4OiAqIGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZSAtIGhhbmRsZSBhIHNsYXZlJ3MgbGluayBzdGF0dXMgY2hhbmdlIGluZGljYXRpb25cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjc3OS0gKiBAc2xhdmU6IHNsYXZlIHN0cnVjdCB0byB3b3JrIG9uXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjc4My0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Mjc4NDp2b2lkIGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBjaGFyIGxpbmspXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4MjktLyoqXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI4MzA6ICogYm9uZF8zYWRfc2V0X2NhcnJpZXIgLSBzZXQgbGluayBzdGF0ZSBmb3IgYm9uZGluZyBtYXN0ZXJcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjgzMS0gKiBAYm9uZDogYm9uZGluZyBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODQxLSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyODQyOmludCBib25kXzNhZF9zZXRfY2FycmllcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjg0My17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjg3Ni0vKipcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Mjg3NzogKiBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8gLSBnZXQgaW5mb3JtYXRpb24gb2YgdGhlIGFjdGl2ZSBhZ2dyZWdhdG9yXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NzgtICogQGJvbmQ6IGJvbmRpbmcgc3RydWN0IHRvIHdvcmsgb25cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODgzLSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyODg0OmludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4ODUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkxMi1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjkxMzppbnQgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MTctXFx0cmN1X3JlYWRfbG9jaygpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTE4OlxcdHJldCA9IF9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhib25kLCBhZF9pbmZvKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkxOS1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTIzLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTI0OmludCBib25kXzNhZF9sYWNwZHVfcmVjdihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkyNS1cXHRcXHRcXHQgc3RydWN0IHNsYXZlICpzbGF2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTQxLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTQyOlxcdHJldHVybiBib25kXzNhZF9yeF9pbmRpY2F0aW9uKGxhY3BkdSwgc2xhdmUpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTQzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTQ1LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTQ2OiAqIGJvbmRfM2FkX3VwZGF0ZV9sYWNwX3JhdGUgLSBjaGFuZ2UgdGhlIGxhY3AgcmF0ZVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTQ3LSAqIEBib25kOiBib25kaW5nIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5NTUtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5NTY6dm9pZCBib25kXzNhZF91cGRhdGVfbGFjcF9yYXRlKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTc1LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTc2OiAqIGJvbmRfM2FkX3VwZGF0ZV9sYWNwX2FjdGl2ZSAtIGNoYW5nZSB0aGUgbGFjcCBhY3RpdmVcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk3Ny0gKiBAYm9uZDogYm9uZGluZyBzdHJ1Y3RcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTgwLSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTgxOnZvaWQgYm9uZF8zYWRfdXBkYXRlX2xhY3BfYWN0aXZlKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTk5LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzozMDAwOnNpemVfdCBib25kXzNhZF9zdGF0c19zaXplKHZvaWQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTMwMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTMwMTItXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjMwMTM6aW50IGJvbmRfM2FkX3N0YXRzX2ZpbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRfM2FkX3N0YXRzICpzdGF0cylcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMzAxNC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM5OjA3LjU2MDAyMzkwOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDI4OTQwOTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBsZXQncyBzZWUuIEkgbmVlZCB0byBpZGVudGlmeSBzb21lIGdvb2Qgc3ltYm9scyB3aXRoaW4gdGhlIGJvbmRpbmcgY29kZSB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuIEJhc2VkIG9uIG15IGluaXRpYWwgc2NhbiwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbG9vayBsaWtlIHByb21pc2luZyB0YXJnZXRzOiBgYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyYCwgYGJvbmRfM2FkX2JpbmRfc2xhdmVgLCBgYm9uZF8zYWRfdW5iaW5kX3NsYXZlYCwgYW5kIGBib25kXzNhZF9sYWNwZHVfcmVjdmAuIEkndmUgY29uZmlybWVkIHRoYXQgdGhlc2UgYXJlIGFsbCBub24tc3RhdGljIGZ1bmN0aW9ucywgc28gdGhhdCdzIGEgZ29vZCBmaXJzdCBjaGVjaywgY29uZmlybWluZyB0aGV5J3JlIHZpc2libGUgb3V0c2lkZSB0aGVpciBjb21waWxhdGlvbiB1bml0LlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJcyBgQk9ORElOR2AgdGhlIHByaW1hcnkgY29uZmlnPyBZZXMsIGFuZCBpdCBhbHNvIHJlbGllcyBvbiBgSU5FVGAgYW5kIGVpdGhlciBgVExTYCBvciBgVExTX0RFVklDRT1uYC4gRmluZSwgdGhhdCBoZWxwcyBuYXJyb3cgdGhlIGJ1aWxkLiBJJ2xsIGluY2x1ZGUgYEJPTkRJTkdgIGRpcmVjdGx5IGluIG15IGZ1enppbmcgc2V0dXAuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgcHJvcG9zZWQgcGF0Y2ggbm93LiBBaCwgdGhpcyBuZXcgY29kZTpcblxuYGBgY1xuIFx0YWdncmVnYXRvciA9IHJjdV9kZXJlZmVyZW5jZShwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IpO1xuK1x0aWYgKCFhZ2dyZWdhdG9yKVxuK1x0XHRyZXR1cm47XG5gYGBcblxuVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gSXQgYWRkcyBhIG51bGwgcG9pbnRlciBjaGVjayBhZnRlciBkZXJlZmVyZW5jaW5nIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3JgLiBUaGlzIHBhdGNoIHNlZW1zIGxpa2UgYSBjbGVhciBhZGRpdGlvbiB0byBwcmV2ZW50IGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggaXMgZ29vZCBmb3Igc3RhYmlsaXR5LiBUaGlzIGtpbmQgb2YgcGF0Y2ggaXMgY2VydGFpbmx5IHdvcnRoIGZ1enppbmcsIGFzIGl0IGxpa2VseSBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS5cblxuU28sIHRvIHN1bW1hcml6ZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gaXMgYEJPTkRJTkdgLCBhbmQgbXkgZm9jdXMgc3ltYm9scyBhcmUgc3RpbGwgYGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcmAsIGBib25kXzNhZF9iaW5kX3NsYXZlYCwgYGJvbmRfM2FkX3VuYmluZF9zbGF2ZWAsIGFuZCBgYm9uZF8zYWRfbGFjcGR1X3JlY3ZgLiBUaW1lIHRvIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODUyLCJPdXRwdXRUb2tlbnMiOjE0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozOToxNC41ODg5NjczNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NTE2NjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyXCIsXG4gICAgXCJib25kXzNhZF9iaW5kX3NsYXZlXCIsXG4gICAgXCJib25kXzNhZF91bmJpbmRfc2xhdmVcIixcbiAgICBcImJvbmRfM2FkX2xhY3BkdV9yZWN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gdGhlIDgwMi4zYWQgKExBQ1ApIHN0YXRlIG1hY2hpbmUgb2YgdGhlIGJvbmRpbmcgZHJpdmVyLiBUaGUgYm9uZGluZyBkcml2ZXIgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNyZWF0aW5nIGEgYm9uZCBpbnRlcmZhY2UgYW5kIGFkZGluZyBzbGF2ZXMuIFRoZSBMQUNQIHN0YXRlIG1hY2hpbmUgcnVucyBwZXJpb2RpY2FsbHkgb3Igb24gZXZlbnRzLCBtYWtpbmcgdGhpcyBhIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjaGFuZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQk9ORElOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlclwiLFxuICAgIFwiYm9uZF8zYWRfYmluZF9zbGF2ZVwiLFxuICAgIFwiYm9uZF8zYWRfdW5iaW5kX3NsYXZlXCIsXG4gICAgXCJib25kXzNhZF9sYWNwZHVfcmVjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSA4MDIuM2FkIChMQUNQKSBzdGF0ZSBtYWNoaW5lIG9mIHRoZSBib25kaW5nIGRyaXZlci4gVGhlIGJvbmRpbmcgZHJpdmVyIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjcmVhdGluZyBhIGJvbmQgaW50ZXJmYWNlIGFuZCBhZGRpbmcgc2xhdmVzLiBUaGUgTEFDUCBzdGF0ZSBtYWNoaW5lIHJ1bnMgcGVyaW9kaWNhbGx5IG9yIG9uIGV2ZW50cywgbWFraW5nIHRoaXMgYSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY2hhbmdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozOToxNC42Njg0OTExMjhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NDY1MjIzNzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozOToxNC42Njg5OTY2MzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzY0NjAxMjY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ5IGFkZGluZyBhIGNoZWNrIGZvciBgYWdncmVnYXRvcmAgYmVpbmcgTlVMTCBpbiBgYWRfbXV4X21hY2hpbmVgIGFuZCB1c2luZyBgUkNVX0lOSVRfUE9JTlRFUmAgdG8gaW5pdGlhbGl6ZSBgcG9ydC1cXHUwMDNlYWdncmVnYXRvcmAgdG8gTlVMTCBpbiBgYWRfaW5pdGlhbGl6ZV9wb3J0YC4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChsaWtlIHBhZ2UgZmF1bHRzKSBhbmQgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgc3VjaCBhcyByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMgb3IgbGVha2luZyBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzOTVkNGJhYzM1Mzc5MDcyYWI4NmU1ZTIzZmNjNDAwZjdmNWUyNDliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDg6Mzg6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcbmluZGV4IGFjYmJhMDhkYmRmYWQuLmM0ZGZjYWZjZmYyNjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcbisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xuQEAgLTEwNTMsNiArMTA1Myw5IEBAIHN0YXRpYyB2b2lkIGFkX211eF9tYWNoaW5lKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sICp1cGRhdGVfc2xhdmVfYXJyKVxuIFx0bGFzdF9zdGF0ZSA9IHBvcnQtXHUwMDNlc21fbXV4X3N0YXRlO1xuIFxuIFx0YWdncmVnYXRvciA9IHJjdV9kZXJlZmVyZW5jZShwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IpO1xuK1x0aWYgKCFhZ2dyZWdhdG9yKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRpZiAocG9ydC1cdTAwM2VzbV92YXJzIFx1MDAyNiBBRF9QT1JUX0JFR0lOKSB7XG4gXHRcdHBvcnQtXHUwMDNlc21fbXV4X3N0YXRlID0gQURfTVVYX0RFVEFDSEVEO1xuIFx0fSBlbHNlIHtcbkBAIC0yMDcyLDcgKzIwNzUsNyBAQCBzdGF0aWMgdm9pZCBhZF9pbml0aWFsaXplX3BvcnQoc3RydWN0IHBvcnQgKnBvcnQsIGNvbnN0IHN0cnVjdCBib25kX3BhcmFtcyAqYm9uZFxuIFx0XHRwb3J0LVx1MDAzZXNtX211eF9zdGF0ZSA9IDA7XG4gXHRcdHBvcnQtXHUwMDNlc21fbXV4X3RpbWVyX2NvdW50ZXIgPSAwO1xuIFx0XHRwb3J0LVx1MDAzZXNtX3R4X3N0YXRlID0gMDtcbi1cdFx0cG9ydC1cdTAwM2VhZ2dyZWdhdG9yID0gTlVMTDtcbitcdFx0UkNVX0lOSVRfUE9JTlRFUihwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IsIE5VTEwpO1xuIFx0XHRwb3J0LVx1MDAzZW5leHRfcG9ydF9pbl9hZ2dyZWdhdG9yID0gTlVMTDtcbiBcdFx0cG9ydC1cdTAwM2V0cmFuc2FjdGlvbl9pZCA9IDA7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozOToxNC42Njg5OTc0NDhaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY0NTk4OTg3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCb25kaW5nIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBhZF9tdXhfbWFjaGluZWAgYW5kIGBhZF9pbml0aWFsaXplX3BvcnRgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBOVUxMIGNoZWNrcyBhbmQgcG9pbnRlciBpbml0aWFsaXphdGlvbi5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmaXggZm9yIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgYGFnZ3JlZ2F0b3JgIGJlaW5nIE5VTEwgd2l0aGluIGBhZF9tdXhfbWFjaGluZWAuICBUaGF0IGxpbmU6XG5gYGBjXG5cdGFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC1cdTAwM2VhZ2dyZWdhdG9yKTtcblx0aWYgKCFhZ2dyZWdhdG9yKVxuXHRcdHJldHVybjtcbmBgYFxuaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcy4gQW5kIHRoZSBjaGFuZ2UgZnJvbSBgcG9ydC1cdTAwM2VhZ2dyZWdhdG9yID0gTlVMTDtgIHRvIGBSQ1VfSU5JVF9QT0lOVEVSKHBvcnQtXHUwMDNlYWdncmVnYXRvciwgTlVMTCk7YCBpbiBgYWRfaW5pdGlhbGl6ZV9wb3J0YCBpcyBhbHNvIHJlbGV2YW50LiBVc2luZyBgUkNVX0lOSVRfUE9JTlRFUmAgaXMgdGhlIGNvcnJlY3QgYXBwcm9hY2ggZm9yIGluaXRpYWxpemluZyBhbiBSQ1UtcHJvdGVjdGVkIHBvaW50ZXIsIHNvIHRoYXQncyBnb29kIHByYWN0aWNlLlxuXG5Ob3csIG15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSBwcmV0dHkgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHRoZSBrZXJuZWwncyBleGlzdGluZyBtZWNoYW5pc21zLCBsaWtlIHBhZ2UgZmF1bHRzIGFuZCBLQVNBTi4gIFdlJ3JlIG5vdCB0YWxraW5nIGFib3V0IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBwb3RlbnRpYWwgaW5mb3JtYXRpb24gbGVha3MgaGVyZS4gU28sIG15IGluc3RpbmN0IGlzIHRoYXQgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGZvciB0aGlzIGZpeC5cblxuVG8gYmUgdGhvcm91Z2gsIEkgcXVpY2tseSBnbGFuY2VkIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpdGhpbiBgYWRfbXV4X21hY2hpbmVgLiAgYGFnZ3JlZ2F0b3JgIGlzIGEgcG9pbnRlciB0byBgc3RydWN0IGFnZ3JlZ2F0b3JgLCBzbyBpZiBpdCdzIE5VTEwsIHRoZSBmdW5jdGlvbiBqdXN0IHJldHVybnMuIFRoZSBsb2dpYyBpcyBzb3VuZCwgYW5kIGl0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuXG5cblNvLCBoZXJlJ3MgbXkgcmVhc29uaW5nLCBkaXN0aWxsZWQ6IFRoaXMgcGF0Y2ggcmVzb2x2ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSBib25kaW5nIGRyaXZlci4gIEl0IGFkZHMgYSBzYWZldHkgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBpbiBgYWRfbXV4X21hY2hpbmVgIGFuZCBjb3JyZWN0bHkgaW5pdGlhbGl6ZXMgYHBvcnQtXHUwMDNlYWdncmVnYXRvcmAgd2l0aCBgUkNVX0lOSVRfUE9JTlRFUmAuIFN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIHdpbGwgY2F0Y2ggYW55IHJlc3VsdGluZyBlcnJvcnMuICBUaGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmVzLiBUaGVyZWZvcmUsIGEgc3BlY2lhbGl6ZWQgS01TQU4gZnV6emluZyBjYW1wYWlnbiBpc24ndCB3YXJyYW50ZWQgaW4gdGhpcyBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTM3LCJPdXRwdXRUb2tlbnMiOjE0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM5OjIyLjMxNDk5MDc4MloiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ5IGFkZGluZyBhIGNoZWNrIGZvciBgYWdncmVnYXRvcmAgYmVpbmcgTlVMTCBpbiBgYWRfbXV4X21hY2hpbmVgIGFuZCB1c2luZyBgUkNVX0lOSVRfUE9JTlRFUmAgdG8gaW5pdGlhbGl6ZSBgcG9ydC1cXHUwMDNlYWdncmVnYXRvcmAgdG8gTlVMTCBpbiBgYWRfaW5pdGlhbGl6ZV9wb3J0YC4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChsaWtlIHBhZ2UgZmF1bHRzKSBhbmQgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgc3VjaCBhcyByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMgb3IgbGVha2luZyBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGEgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBiZWluZyBOVUxMIGluIGBhZF9tdXhfbWFjaGluZWAgYW5kIHVzaW5nIGBSQ1VfSU5JVF9QT0lOVEVSYCB0byBpbml0aWFsaXplIGBwb3J0LVxcdTAwM2VhZ2dyZWdhdG9yYCB0byBOVUxMIGluIGBhZF9pbml0aWFsaXplX3BvcnRgLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIG1lY2hhbmlzbXMgKGxpa2UgcGFnZSBmYXVsdHMpIGFuZCBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBzdWNoIGFzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcyBvciBsZWFraW5nIGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowjzrwb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-17 08:37:23 +0000 UTC FinishedAt: 2026-08-17 08:39:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "44871eadd07a7f004aa00cb87399461eea08c630", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BONDING" ], "series_id": "5757e25d-a367-41e7-a10e-4c1735842f59" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bond_3ad_state_machine_handler", "bond_3ad_bind_slave", "bond_3ad_unbind_slave", "bond_3ad_lacpdu_recv" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JPTkRJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXImIzM0OywKICAgICYjMzQ7Ym9uZF8zYWRfYmluZF9zbGF2ZSYjMzQ7LAogICAgJiMzNDtib25kXzNhZF91bmJpbmRfc2xhdmUmIzM0OywKICAgICYjMzQ7Ym9uZF8zYWRfbGFjcGR1X3JlY3YmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGEgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBiZWluZyBOVUxMIGluIGBhZF9tdXhfbWFjaGluZWAgYW5kIHVzaW5nIGBSQ1VfSU5JVF9QT0lOVEVSYCB0byBpbml0aWFsaXplIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3JgIHRvIE5VTEwgaW4gYGFkX2luaXRpYWxpemVfcG9ydGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyAobGlrZSBwYWdlIGZhdWx0cykgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIHN1Y2ggYXMgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGxlYWtpbmcga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSA4MDIuM2FkIChMQUNQKSBzdGF0ZSBtYWNoaW5lIG9mIHRoZSBib25kaW5nIGRyaXZlci4gVGhlIGJvbmRpbmcgZHJpdmVyIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjcmVhdGluZyBhIGJvbmQgaW50ZXJmYWNlIGFuZCBhZGRpbmcgc2xhdmVzLiBUaGUgTEFDUCBzdGF0ZSBtYWNoaW5lIHJ1bnMgcGVyaW9kaWNhbGx5IG9yIG9uIGV2ZW50cywgbWFraW5nIHRoaXMgYSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY2hhbmdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzk1ZDRiYWMzNTM3OTA3MmFiODZlNWUyM2ZjYzQwMGY3ZjVlMjQ5YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDA4OjM4OjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xuaW5kZXggYWNiYmEwOGRiZGZhZC4uYzRkZmNhZmNmZjI2NiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXG5AQCAtMTA1Myw2ICYjNDM7MTA1Myw5IEBAIHN0YXRpYyB2b2lkIGFkX211eF9tYWNoaW5lKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sICp1cGRhdGVfc2xhdmVfYXJyKVxuIFx0bGFzdF9zdGF0ZSA9IHBvcnQtXHUwMDNlc21fbXV4X3N0YXRlO1xuIFxuIFx0YWdncmVnYXRvciA9IHJjdV9kZXJlZmVyZW5jZShwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IpO1xuJiM0MztcdGlmICghYWdncmVnYXRvcilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRpZiAocG9ydC1cdTAwM2VzbV92YXJzIFx1MDAyNiBBRF9QT1JUX0JFR0lOKSB7XG4gXHRcdHBvcnQtXHUwMDNlc21fbXV4X3N0YXRlID0gQURfTVVYX0RFVEFDSEVEO1xuIFx0fSBlbHNlIHtcbkBAIC0yMDcyLDcgJiM0MzsyMDc1LDcgQEAgc3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9wb3J0KHN0cnVjdCBwb3J0ICpwb3J0LCBjb25zdCBzdHJ1Y3QgYm9uZF9wYXJhbXMgKmJvbmRcbiBcdFx0cG9ydC1cdTAwM2VzbV9tdXhfc3RhdGUgPSAwO1xuIFx0XHRwb3J0LVx1MDAzZXNtX211eF90aW1lcl9jb3VudGVyID0gMDtcbiBcdFx0cG9ydC1cdTAwM2VzbV90eF9zdGF0ZSA9IDA7XG4tXHRcdHBvcnQtXHUwMDNlYWdncmVnYXRvciA9IE5VTEw7XG4mIzQzO1x0XHRSQ1VfSU5JVF9QT0lOVEVSKHBvcnQtXHUwMDNlYWdncmVnYXRvciwgTlVMTCk7XG4gXHRcdHBvcnQtXHUwMDNlbmV4dF9wb3J0X2luX2FnZ3JlZ2F0b3IgPSBOVUxMO1xuIFx0XHRwb3J0LVx1MDAzZXRyYW5zYWN0aW9uX2lkID0gMDtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Qk9ORElORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9iaW5kX3NsYXZlJiMzNDssCiAgICAmIzM0O2JvbmRfM2FkX3VuYmluZF9zbGF2ZSYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9sYWNwZHVfcmVjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgODAyLjNhZCAoTEFDUCkgc3RhdGUgbWFjaGluZSBvZiB0aGUgYm9uZGluZyBkcml2ZXIuIFRoZSBib25kaW5nIGRyaXZlciBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY3JlYXRpbmcgYSBib25kIGludGVyZmFjZSBhbmQgYWRkaW5nIHNsYXZlcy4gVGhlIExBQ1Agc3RhdGUgbWFjaGluZSBydW5zIHBlcmlvZGljYWxseSBvciBvbiBldmVudHMsIG1ha2luZyB0aGlzIGEgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNoYW5nZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM5NWQ0YmFjMzUzNzkwNzJhYjg2ZTVlMjNmY2M0MDBmN2Y1ZTI0OWIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAwODozODozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYwppbmRleCBhY2JiYTA4ZGJkZmFkLi5jNGRmY2FmY2ZmMjY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jCkBAIC0xMDUzLDYgJiM0MzsxMDUzLDkgQEAgc3RhdGljIHZvaWQgYWRfbXV4X21hY2hpbmUoc3RydWN0IHBvcnQgKnBvcnQsIGJvb2wgKnVwZGF0ZV9zbGF2ZV9hcnIpCiAJbGFzdF9zdGF0ZSA9IHBvcnQtJmd0O3NtX211eF9zdGF0ZTsKIAogCWFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC0mZ3Q7YWdncmVnYXRvcik7CiYjNDM7CWlmICghYWdncmVnYXRvcikKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlpZiAocG9ydC0mZ3Q7c21fdmFycyAmYW1wOyBBRF9QT1JUX0JFR0lOKSB7CiAJCXBvcnQtJmd0O3NtX211eF9zdGF0ZSA9IEFEX01VWF9ERVRBQ0hFRDsKIAl9IGVsc2UgewpAQCAtMjA3Miw3ICYjNDM7MjA3NSw3IEBAIHN0YXRpYyB2b2lkIGFkX2luaXRpYWxpemVfcG9ydChzdHJ1Y3QgcG9ydCAqcG9ydCwgY29uc3Qgc3RydWN0IGJvbmRfcGFyYW1zICpib25kCiAJCXBvcnQtJmd0O3NtX211eF9zdGF0ZSA9IDA7CiAJCXBvcnQtJmd0O3NtX211eF90aW1lcl9jb3VudGVyID0gMDsKIAkJcG9ydC0mZ3Q7c21fdHhfc3RhdGUgPSAwOwotCQlwb3J0LSZndDthZ2dyZWdhdG9yID0gTlVMTDsKJiM0MzsJCVJDVV9JTklUX1BPSU5URVIocG9ydC0mZ3Q7YWdncmVnYXRvciwgTlVMTCk7CiAJCXBvcnQtJmd0O25leHRfcG9ydF9pbl9hZ2dyZWdhdG9yID0gTlVMTDsKIAkJcG9ydC0mZ3Q7dHJhbnNhY3Rpb25faWQgPSAwOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQm9uZGluZyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNgLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGJ1ZyBmaXgsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIDgwMi4zYWQgKExBQ1ApIGltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgYm9uZGluZyBkcml2ZXIuIE15IHVuZGVyc3RhbmRpbmcgaXMsIHRoaXMgZHJpdmVyIGlzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2Ug4oCTIHlvdSBjcmVhdGUgYm9uZCBpbnRlcmZhY2VzLCBhZGQgc2xhdmVzLCB0aGluZ3MgbGlrZSB0aGF0LCB1c2luZyBuZXRsaW5rIG9yIHN5c2ZzLiBUaGUgTEFDUCBzdGF0ZSBtYWNoaW5lIGlzIHRoZSBjb3JlIGhlcmUsIHJ1bm5pbmcgZWl0aGVyIHBlcmlvZGljYWxseSBvciByZWFjdGluZyB0byBldmVudHMuCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIHNpbXBsZTsgaW4gYGFkX211eF9tYWNoaW5lYCwgaXQmIzM5O3MgYWRkaW5nIGEgYE5VTExgIGNoZWNrIGZvciBgYWdncmVnYXRvcmAgYWZ0ZXIgZGVyZWZlcmVuY2luZyBpdCB3aXRoIGByY3VfZGVyZWZlcmVuY2VgOgoKYGBgYwphZ2dyZWdhdG9yID0gcmN1X2RlcmVmZXJlbmNlKHBvcnQtJmd0O2FnZ3JlZ2F0b3IpOwoJaWYgKCFhZ2dyZWdhdG9yKQoJCXJldHVybjsKYGBgCgpUaGlzIG1ha2VzIHNlbnNlLiBJZiBgcG9ydC0mZ3Q7YWdncmVnYXRvcmAgaGFwcGVucyB0byBiZSBgTlVMTGAgYXQgdGhhdCBwb2ludCwgcHJlc3VtYWJseSBkdWUgdG8gc29tZSByYWNlIGNvbmRpdGlvbiBvciB1bmluaXRpYWxpemVkIHN0YXRlLCB0aGUgZnVuY3Rpb24gd2lsbCBqdXN0IHJldHVybiwgcHJldmVudGluZyBhIHBvdGVudGlhbCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UuIFNtYXJ0LCBhIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBhcHByb2FjaCwgbWl0aWdhdGluZyBhIGNyYXNoLgoKVGhlIG90aGVyIGhhbGYgb2YgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGBwb3J0LSZndDthZ2dyZWdhdG9yID0gTlVMTDtgIHRvIGBSQ1VfSU5JVF9QT0lOVEVSKHBvcnQtJmd0O2FnZ3JlZ2F0b3IsIE5VTEwpO2Agd2l0aGluIGBhZF9pbml0aWFsaXplX3BvcnRgLiBUaGlzIGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgdHJ5aW5nIHRvIGltcHJvdmUgdGhlIHN5bmNocm9uaXphdGlvbiBhcm91bmQgdGhlIHBvaW50ZXIgYXNzaWdubWVudC4gVXNpbmcgYFJDVV9JTklUX1BPSU5URVJgIGlzIHRoZSBjb3JyZWN0IHdheSB0byBpbml0aWFsaXplIGFuIFJDVS1wcm90ZWN0ZWQgcG9pbnRlciwgZW5zdXJpbmcgcHJvcGVyIG1lbW9yeSBvcmRlcmluZyBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGNvbmN1cnJlbnQgYWNjZXNzLiBUaGlzIGlzIHRoZSBjb3JyZWN0IHdheSB0byBoYW5kbGUgdGhhdCBpbiB0aGUga2VybmVsLgoKU28sIHRoaXMgcGF0Y2ggaXMgZml4aW5nIGEgcG9zc2libGUgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIHdoZW4gYWNjZXNzaW5nIGBwb3J0LSZndDthZ2dyZWdhdG9yYCBpbiB0aGUgODAyLjNhZCBMQUNQIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBmdW5jdGlvbnMgYGFkX211eF9tYWNoaW5lYCBhbmQgYGFkX2luaXRpYWxpemVfcG9ydGAgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGVzZSBjaGFuZ2VzIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBzY2VuYXJpb3MgY291bGQgbGVhZCB0byBgcG9ydC0mZ3Q7YWdncmVnYXRvcmAgYmVjb21pbmcgbnVsbCBpbiB0aGUgZmlyc3QgcGxhY2UgdG8gdW5kZXJzdGFuZCB0aGUgcm9vdCBjYXVzZSBvZiB0aGUgYnVnIGFuZCBhc3Nlc3MgdGhlIGZpeCYjMzk7cyBlZmZlY3RpdmVuZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkX211eF9tYWNoaW5lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz05Nj1zdGF0aWMgaW50IGFkX21hcmtlcl9zZW5kKHN0cnVjdCBwb3J0ICpwb3J0LCBzdHJ1Y3QgYm9uZF9tYXJrZXIgKm1hcmtlcik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6OTc6c3RhdGljIHZvaWQgYWRfbXV4X21hY2hpbmUoc3RydWN0IHBvcnQgKnBvcnQsIGJvb2wgKnVwZGF0ZV9zbGF2ZV9hcnIpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTk4LXN0YXRpYyB2b2lkIGFkX3J4X21hY2hpbmUoc3RydWN0IGxhY3BkdSAqbGFjcGR1LCBzdHJ1Y3QgcG9ydCAqcG9ydCk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTEwMzE9c3RhdGljIHZvaWQgYWRfY29uZF9zZXRfcGVlcl9ub3RpZihzdHJ1Y3QgcG9ydCAqcG9ydClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTAzOS0vKipcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxMDQwOiAqIGFkX211eF9tYWNoaW5lIC0gaGFuZGxlIGEgcG9ydCYjMzk7cyBtdXggc3RhdGUgbWFjaGluZVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNDEtICogQHBvcnQ6IHRoZSBwb3J0IHdlJiMzOTtyZSBsb29raW5nIGF0XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNDMtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MTA0NDpzdGF0aWMgdm9pZCBhZF9tdXhfbWFjaGluZShzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCAqdXBkYXRlX3NsYXZlX2FycilcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xMDQ1LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjU1Mj12b2lkIGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2MDMtXHRcdGFkX3BvcnRfc2VsZWN0aW9uX2xvZ2ljKHBvcnQsIFx1MDAyNnVwZGF0ZV9zbGF2ZV9hcnIpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI2MDQ6XHRcdGFkX211eF9tYWNoaW5lKHBvcnQsIFx1MDAyNnVwZGF0ZV9zbGF2ZV9hcnIpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2MDUtXHRcdGFkX3R4X21hY2hpbmUocG9ydCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMyNAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUG90ZW50aWFsOiBCb25kIDNhZCBTdGF0ZSBNYWNoaW5lKioKCk9rYXksIHNvIGBhZF9tdXhfbWFjaGluZWAgaXMgYmVpbmcgY2FsbGVkIGZyb20gYGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcmAuIEdpdmVuIHRoYXQgdGhlIGBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJgIGlzIHRoZSBwcmltYXJ5IGhhbmRsZXIgZm9yIDgwMi4zYWQsIHRoYXQgbWFrZXMgdGhpcyBhICp2ZXJ5KiBpbnRlcmVzdGluZyB0YXJnZXQgZm9yIGZ1enppbmcuIEl0JiMzOTtzIGNsZWFybHkgYSByZWFjaGFibGUgY29kZSBwYXRoLCBhbmQgZ2l2ZW4gdGhlIGNvbXBsZXhpdHkgb2YgdGhlIDgwMi4zYWQgcHJvdG9jb2wsIHRoZSBwb3RlbnRpYWwgZm9yIGVkZ2UtY2FzZSB2dWxuZXJhYmlsaXRpZXMgaXMgaGlnaC4gSSBzaG91bGQgYWRkIHRoaXMgdG8gdGhlIHRlc3RpbmcgcXVldWUgYXMgc29vbiBhcyBwb3NzaWJsZS4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBib25kaW5nIGNvbmZpZ3VyYXRpb24gdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZW52aXJvbm1lbnQgYmVmb3JlIEkgc3RhcnQgY3JhZnRpbmcgYW55IGZ1enppbmcgaW5wdXRzLiBUaGF0JiMzOTtzIGFsd2F5cyB0aGUgc21hcnQgbW92ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCT05ESU5HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjAxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJiMzOTttIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgdGhpbmtpbmcgdGhyb3VnaCB0aGlzOgoKKipXaGVyZSYjMzk7cyB0aGUgS2NvbmZpZyBmb3IgQm9uZGluZz8qKgoKQWxyaWdodCwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBkZWVwIGludG8gdGhpcyBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24sIGFuZCBldmVyeXRoaW5nICpzaG91bGQqIGJlIGNvbWluZyB0b2dldGhlci4uLiBidXQgc29tZXRoaW5nIGZlZWxzIG9mZi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoZSBib25kaW5nLXNwZWNpZmljIEtjb25maWcgZmlsZSByaWdodCBhYm91dCBub3csIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhlIGN1cnJlbnQgc2NvcGUgb2YgdGhlIHByb2plY3QgYW5kIHRoZSB3YXkgSSYjMzk7dmUgc3RydWN0dXJlZCBteSBtZW50YWwgbWFwIG9mIHRoZSBzeXN0ZW0uIEkmIzM5O3ZlIG1lbnRhbGx5IHRyYWNlZCB0aGUgZGVwZW5kZW5jaWVzLCBJJiMzOTt2ZSBnb3QgYSBnb29kIGlkZWEgb2YgdGhlIG1vZHVsZXMgaW52b2x2ZWQsIGFuZCB0aGlzIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UgZm9yIGl0IHRvIGJlIGludGVncmF0ZWQuIFdoZXJlIGluIHRoZSBtb2R1bGUgc3RydWN0dXJlIGlzIHRoZSBib25kaW5nIEtjb25maWc/IEkga25vdyBJJiMzOTttIG5vdCBvdmVybG9va2luZyBzb21lIG9ic2N1cmUgbmFtaW5nIGNvbnZlbnRpb24gaGVyZSwgdGhpcyBzaG91bGQgYmUgcmVhZGlseSBhcHBhcmVudC4gSG1tLCBkaWQgSSBhY2NpZGVudGFsbHkgbWFrZSBhIGJyYW5jaGluZyBlcnJvciBzb21ld2hlcmU/IExldCBtZSByZXRyYWNlIG15IHN0ZXBzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCT05ESU5HJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9Mzk9aWYgTkVUX0NPUkVcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXG5kcml2ZXJzL25ldC9LY29uZmlnOjQxOmNvbmZpZyBCT05ESU5HXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVx0dHJpc3RhdGUgXCYjMzQ7Qm9uZGluZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4OTcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyBDb25maWd1cmF0aW9uIGFuZCBGb2N1c2luZyBvbiBCb25kaW5nKioKClJpZ2h0LCB0aGlzIGZlZWxzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRlZCB0byBgQk9ORElOR2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoYXQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkgbmVlZCB0byBpbW1lZGlhdGVseSBjb25zaWRlciB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRlcm0uIEl0JiMzOTtzIGEgcXVpY2sgYXNzZXNzbWVudCB0byBjb25maXJtIHRoYXQgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgc29tZXRoaW5nIEkgY2FuIGxldmVyYWdlIG15IGV4cGVydGlzZSBpbi4KClRoZSBuZXh0IHRoaW5nIEkmIzM5O2QgZG8gaXMgY2hlY2suIE15IHRob3VnaHQgaXM6IEJlZm9yZSBkaXZpbmcgaW50byBhbnkgc3BlY2lmaWMgc2NlbmFyaW9zIG9yIHRyb3VibGVzaG9vdGluZyBzdGVwcywgSSBuZWVkIHRvIHNlZSB3aGF0IG90aGVyIGNvbmZpZ3MgYXJlIGZsb2F0aW5nIGFyb3VuZC4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZSB0aGF0IHRpZXMgaW50byB0aGlzIHRoYXQgSSBoYXZlbiYjMzk7dCBzZWVuIHlldD8gTGV0JiMzOTtzIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRERVZJQ0VTXG5kcml2ZXJzL25ldC9LY29uZmlnLTctXHRkZWZhdWx0IHkgaWYgVU1MXG5kcml2ZXJzL25ldC9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy05LVx0Ym9vbCBcJiMzNDtOZXR3b3JrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00MT1jb25maWcgQk9ORElOR1xuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0JvbmRpbmcgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ6XHRkZXBlbmRzIG9uIFRMUyB8fCBUTFNfREVWSUNFPW5cbmRyaXZlcnMvbmV0L0tjb25maWctNDUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz03ND1jb25maWcgV0lSRUdVQVJEXG5kcml2ZXJzL25ldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7V2lyZUd1YXJkIHNlY3VyZSBuZXR3b3JrIHR1bm5lbFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo3NjpcdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTc3LVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz05Mj1jb25maWcgV0lSRUdVQVJEX0RFQlVHXG5kcml2ZXJzL25ldC9LY29uZmlnLTkzLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgY2hlY2tzIGFuZCB2ZXJib3NlIG1lc3NhZ2VzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjk0Olx0ZGVwZW5kcyBvbiBXSVJFR1VBUkRcbmRyaXZlcnMvbmV0L0tjb25maWctOTUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cbmRyaXZlcnMvbmV0L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7T3BlblZQTiBkYXRhIGNoYW5uZWwgb2ZmbG9hZFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxMDU6XHRkZXBlbmRzIG9uIE5FVCBcdTAwMjZcdTAwMjYgSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDYtXHRzZWxlY3QgRFNUX0NBQ0hFXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMzY9Y29uZmlnIE5FVF9GQ1xuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzctXHRib29sIFwmIzM0O0ZpYnJlIENoYW5uZWwgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MTM4Olx0ZGVwZW5kcyBvbiBTQ1NJIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L0tjb25maWctMTM5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTQ5PWNvbmZpZyBJRkJcbmRyaXZlcnMvbmV0L0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZXJtZWRpYXRlIEZ1bmN0aW9uYWwgQmxvY2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxNTE6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfTUlSUkVEIHx8IE5GVF9GV0RfTkVUREVWXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1Mi1cdHNlbGVjdCBORVRfUkVESVJFQ1Rcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xODAtXHR0cmlzdGF0ZSBcJiMzNDtNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjE4MTpcdGRlcGVuZHMgb24gTUFDVkxBTlxuZHJpdmVycy9uZXQvS2NvbmZpZzoxODI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMTgzLVx0c2VsZWN0IFRBUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTkzPWNvbmZpZyBJUFZMQU5fTDNTXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NDpcdGRlcGVuZHMgb24gTkVURklMVEVSXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NTpcdGRlcGVuZHMgb24gSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Ni1cdGRlZl9ib29sIHlcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE5OT1jb25maWcgSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyMDE6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjAyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcbmRyaXZlcnMvbmV0L0tjb25maWctMjE3LVx0dHJpc3RhdGUgXCYjMzQ7SVAtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjIxODpcdGRlcGVuZHMgb24gSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnOjIxOTpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMjAtXHRzZWxlY3QgVEFQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjMzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNDU9Y29uZmlnIEdFTkVWRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDYtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gRW5jYXBzdWxhdGlvblwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDc6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ4LVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcbmRyaXZlcnMvbmV0L0tjb25maWctMjYxLVx0dHJpc3RhdGUgXCYjMzQ7QmFyZSBVRFAgRW5jYXBzdWxhdGlvblwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyNjI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjYzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzMtXHR0cmlzdGF0ZSBcJiMzNDtHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjI3NDpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzUtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTAtXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgRm9yd2FyZGluZyBDb250cm9sIFByb3RvY29sIChQRkNQKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTE6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjkyLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDMtXHR0cmlzdGF0ZSBcJiMzNDtBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZyAoQU1UKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozMDQ6XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElQX01VTFRJQ0FTVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDUtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMyNz1jb25maWcgTkVUQ09OU09MRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMjgtXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGNvbnNvbGUgbG9nZ2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMyOTpcdGRlcGVuZHMgb24gUFJJTlRLXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMzND1jb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzNS1cdGJvb2wgXCYjMzQ7RHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMzNjpcdGRlcGVuZHMgb24gTkVUQ09OU09MRSBcdTAwMjZcdTAwMjYgU1lTRlMgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTIFx1MDAyNlx1MDAyNiBcXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzctXHRcdFx0IShORVRDT05TT0xFPXkgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTPW0pXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNDU9Y29uZmlnIE5FVENPTlNPTEVfRVhURU5ERURfTE9HXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0Ni1cdGJvb2wgXCYjMzQ7U2V0IGtlcm5lbCBleHRlbmRlZCBtZXNzYWdlIGJ5IGRlZmF1bHRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBORVRDT05TT0xFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0OC1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzU1PWNvbmZpZyBORVRDT05TT0xFX1BSRVBFTkRfUkVMRUFTRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTYtXHRib29sIFwmIzM0O1ByZXBlbmQga2VybmVsIHJlbGVhc2UgdmVyc2lvbiBpbiB0aGUgbWVzc2FnZSBieSBkZWZhdWx0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM1NzpcdGRlcGVuZHMgb24gTkVUQ09OU09MRV9FWFRFTkRFRF9MT0dcbmRyaXZlcnMvbmV0L0tjb25maWctMzU4LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzM9Y29uZmlnIE5UQl9ORVRERVZcbmRyaXZlcnMvbmV0L0tjb25maWctMzc0LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc1Olx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3Ni1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mzc3PWNvbmZpZyBSSU9ORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMzc4LVx0dHJpc3RhdGUgXCYjMzQ7UmFwaWRJTyBFdGhlcm5ldCBvdmVyIG1lc3NhZ2luZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozNzk6XHRkZXBlbmRzIG9uIFJBUElESU9cbmRyaXZlcnMvbmV0L0tjb25maWctMzgwLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zODE9Y29uZmlnIFJJT05FVF9UWF9TSVpFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Mi1cdGludCBcJiMzNDtOdW1iZXIgb2Ygb3V0Ym91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozODM6XHRkZXBlbmRzIG9uIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODQtXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mzg2PWNvbmZpZyBSSU9ORVRfUlhfU0laRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODctXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGluYm91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozODg6XHRkZXBlbmRzIG9uIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODktXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzkxPWNvbmZpZyBUVU5cbmRyaXZlcnMvbmV0L0tjb25maWctMzkyLVx0dHJpc3RhdGUgXCYjMzQ7VW5pdmVyc2FsIFRVTi9UQVAgZGV2aWNlIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM5MzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTQtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ0Mz1jb25maWcgVklSVElPX05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gbmV0d29yayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ1Olx0ZGVwZW5kcyBvbiBWSVJUSU9cbmRyaXZlcnMvbmV0L0tjb25maWctNDQ2LVx0c2VsZWN0IE5FVF9GQUlMT1ZFUlxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcbmRyaXZlcnMvbmV0L0tjb25maWctNDY0LVx0Ym9vbCBcJiMzNDtCUEYtcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQ2NTpcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbmRyaXZlcnMvbmV0L0tjb25maWctNDY2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDcyPWNvbmZpZyBORVRfVlJGXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3My1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgUm91dGluZyBhbmQgRm9yd2FyZGluZyAoTGl0ZSlcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc0Olx0ZGVwZW5kcyBvbiBJUF9NVUxUSVBMRV9UQUJMRVNcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc1Olx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzY6XHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTIHx8IElQVjY9blxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODE9Y29uZmlnIFZTT0NLTU9OXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ4Mi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDgzOlx0ZGVwZW5kcyBvbiBWSE9TVF9WU09DS1xuZHJpdmVycy9uZXQvS2NvbmZpZy00ODQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODk9Y29uZmlnIE1ISV9ORVRcbmRyaXZlcnMvbmV0L0tjb25maWctNDkwLVx0dHJpc3RhdGUgXCYjMzQ7TUhJIG5ldHdvcmsgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQ5MTpcdGRlcGVuZHMgb24gTUhJX0JVU1xuZHJpdmVycy9uZXQvS2NvbmZpZy00OTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ1LVx0dHJpc3RhdGUgXCYjMzQ7WGVuIG5ldHdvcmsgZGV2aWNlIGZyb250ZW5kIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo1NDY6XHRkZXBlbmRzIG9uIFhFTlxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXHRzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NTYyPWNvbmZpZyBYRU5fTkVUREVWX0JBQ0tFTkRcbmRyaXZlcnMvbmV0L0tjb25maWctNTYzLVx0dHJpc3RhdGUgXCYjMzQ7WGVuIGJhY2tlbmQgbmV0d29yayBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTY0Olx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NjUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcbmRyaXZlcnMvbmV0L0tjb25maWctNTg1LVx0dHJpc3RhdGUgXCYjMzQ7Vk13YXJlIFZNWE5FVDMgZXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NjpcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NzpcdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OC1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xuZHJpdmVycy9uZXQvS2NvbmZpZy01OTUtXHR0cmlzdGF0ZSBcJiMzNDtGVUpJVFNVIEV4dGVuZGVkIFNvY2tldCBOZXR3b3JrIERldmljZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTk2Olx0ZGVwZW5kcyBvbiBBQ1BJXG5kcml2ZXJzL25ldC9LY29uZmlnLTU5Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDY6XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDg6XHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwOTpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxMDgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyB0aGUgQm9uZGluZyBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gdGhlIGJvbmRpbmcgZHJpdmVyJiMzOTtzIGZ1bmN0aW9uYWxpdHkgc2VlbXMgY29udGluZ2VudCBvbiBgSU5FVGAgYmVpbmcgZW5hYmxlZCwgYW5kIHRoZW4gZWl0aGVyIGBUTFNgIG9yLCBpZiBUTFMgaXMgZGlzYWJsZWQsIHRoZSBgVExTX0RFVklDRWAgZmxhZyBuZWVkcyB0byBiZSBzZXQgdG8gJiMzOTtuJiMzOTsuIEVzc2VudGlhbGx5LCBpZiBJJiMzOTttIHVuZGVyc3RhbmRpbmcgdGhpcyBjb3JyZWN0bHksIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gc2hvdWxkIGJlIHVuZGVyIHRoZSBgQk9ORElOR2AgY29uZmlnIG9wdGlvbi4KCkhhbmcgb24gYSBzZWNvbmTigKYgdGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCwgc3BlY2lmaWNhbGx5LCBpcyBpbiBgZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jYC4gVGhhdCBtYWtlcyBtZSB3b25kZXIgaWYgdGhlcmUmIzM5O3MgYSBtb3JlIGdyYW51bGFyIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHNwZWNpZmljIHRvIDgwMi4zYWQgbGluayBhZ2dyZWdhdGlvbi4gSSBzaG91bGQgcHJvYmFibHkgZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlYCB0byBzZWUgaWYgaXQgZGVmaW5lcyBhbnkgZXh0cmEgY29uZmlnIHNwZWNpZmljIHRvIHRoYXQgbW9kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Ym9uZF8zYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfQk9ORElORykgJiM0Mzs9IGJvbmRpbmcub1xuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS03LVxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZTo4OmJvbmRpbmctb2JqcyA6PSBib25kX21haW4ubyBib25kXzNhZC5vIGJvbmRfYWxiLm8gYm9uZF9zeXNmcy5vIGJvbmRfc3lzZnNfc2xhdmUubyBib25kX2RlYnVnZnMubyBib25kX25ldGxpbmsubyBib25kX29wdGlvbnMub1xuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS05LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTEzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEZWJ1Z2dpbmcgdGhlIEJvbmRpbmcgRHJpdmVyJiMzOTtzIENvbXBpbGF0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBpbW1lZGlhdGUgY29uY2VybiBpcyBgYm9uZF8zYWQub2Ag4oCTIHRoYXQgbW9kdWxlIGlzICphbHdheXMqIGJ1aWx0IHdoZW4gYENPTkZJR19CT05ESU5HYCBpcyBzZXQuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBlbGltaW5hdGluZyBvbmUgcG90ZW50aWFsIGF2ZW51ZSBvZiBpbnZlc3RpZ2F0aW9uLiBOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBjb2RlIGNoYW5nZXMuIFRoZSBwYXRjaCBhZmZlY3RzIGBhZF9tdXhfbWFjaGluZWAgYW5kIGBhZF9pbml0aWFsaXplX3BvcnRgLiBHb3QgaXQuIEhtbSwgYGFkX211eF9tYWNoaW5lYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaXMgZmluZSwgYnV0IG1lYW5zIGl0cyBkaXJlY3QgY2FsbHMgbWlnaHQgYmUgZmV3LiBUaW1lIHRvIG1hcCBvdXQgdGhlIDgwMi4zYWQgZW50cnkgcG9pbnRzIGludG8gdGhlIGJvbmRpbmcgZHJpdmVyLiBGaWd1cmluZyBvdXQgaG93IHRoZXNlIGNoYW5nZXMgaW50ZXJhY3Qgd2l0aCB0aGUgYnJvYWRlciA4MDIuM2FkIHN0YXRlIG1hY2hpbmUgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS4gRnJvbSB0aGUgZHJpdmVyLCB0byB0aGUga2VybmVsLCB0byB0aGUgdXNlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWRfbXV4X21hY2hpbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTk2PXN0YXRpYyBpbnQgYWRfbWFya2VyX3NlbmQoc3RydWN0IHBvcnQgKnBvcnQsIHN0cnVjdCBib25kX21hcmtlciAqbWFya2VyKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzo5NzpzdGF0aWMgdm9pZCBhZF9tdXhfbWFjaGluZShzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCAqdXBkYXRlX3NsYXZlX2Fycik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtOTgtc3RhdGljIHZvaWQgYWRfcnhfbWFjaGluZShzdHJ1Y3QgbGFjcGR1ICpsYWNwZHUsIHN0cnVjdCBwb3J0ICpwb3J0KTtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MTAzMT1zdGF0aWMgdm9pZCBhZF9jb25kX3NldF9wZWVyX25vdGlmKHN0cnVjdCBwb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xMDM5LS8qKlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjEwNDA6ICogYWRfbXV4X21hY2hpbmUgLSBoYW5kbGUgYSBwb3J0JiMzOTtzIG11eCBzdGF0ZSBtYWNoaW5lXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTA0MS0gKiBAcG9ydDogdGhlIHBvcnQgd2UmIzM5O3JlIGxvb2tpbmcgYXRcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTA0My0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxMDQ0OnN0YXRpYyB2b2lkIGFkX211eF9tYWNoaW5lKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sICp1cGRhdGVfc2xhdmVfYXJyKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNDUte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yNTUyPXZvaWQgYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjYwMy1cdFx0YWRfcG9ydF9zZWxlY3Rpb25fbG9naWMocG9ydCwgXHUwMDI2dXBkYXRlX3NsYXZlX2Fycik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjYwNDpcdFx0YWRfbXV4X21hY2hpbmUocG9ydCwgXHUwMDI2dXBkYXRlX3NsYXZlX2Fycik7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjYwNS1cdFx0YWRfdHhfbWFjaGluZShwb3J0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODMwNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkNvbnNpZGVyaW5nIFBvdGVudGlhbCBGb2N1cyBQb2ludHMgZm9yIFN5c3RlbSBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHdoZXJlIHRvIHN0YXJ0IHJlYWxseSBkaWdnaW5nIGludG8gdGhpcyBzeXN0ZW0uIGBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJgIGZlZWxzIGxpa2UgYSBnb29kLCBzb2xpZCBmb2NhbCBwb2ludC4gSXQmIzM5O3MgcHJvYmFibHkgY2VudHJhbCB0byBhIHNpZ25pZmljYW50IGNodW5rIG9mIHRoZSBib25kIG1hbmFnZW1lbnQgbG9naWMsIGFuZCB1bmRlcnN0YW5kaW5nIGl0IHdvdWxkIGdpdmUgbWUgYSBicm9hZCBvdmVydmlldyBvZiBob3cgdGhhdCBwYXJ0IG9mIHRoZSBzeXN0ZW0gd29ya3MuIEJ1dCwgdGhlbiBJIHN0YXJ0ZWQgd29uZGVyaW5nLi4uIHdoYXQgYWJvdXQgYGFkX2luaXRpYWxpemVfcG9ydGA/IElzIHRoYXQgYW5vdGhlciBjcnVjaWFsIGVudHJ5IHBvaW50PyBJdCBjb3VsZCBiZSB0aGUgZmlyc3QgY3JpdGljYWwgc3RlcCB0byBwb3J0IGluaXRpYWxpemF0aW9uLCBiZWZvcmUgaXQgZ2V0cyB0byB0aGUgc3RhdGUgbWFjaGluZSwgd2hpY2ggc3VnZ2VzdHMgYSBkaWZmZXJlbnQgYnV0IGVxdWFsbHkgaW1wb3J0YW50IHBlcnNwZWN0aXZlLiBJIG5lZWQgdG8gY29uc2lkZXIgYm90aCwgYW5kIHBlcmhhcHMgdGhlIGludGVycmVsYXRpb25zaGlwIGJldHdlZW4gdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWRfaW5pdGlhbGl6ZV9wb3J0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0xMDU9c3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9hZ2coc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZ3JlZ2F0b3IpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjEwNjpzdGF0aWMgdm9pZCBhZF9pbml0aWFsaXplX3BvcnQoc3RydWN0IHBvcnQgKnBvcnQsIGNvbnN0IHN0cnVjdCBib25kX3BhcmFtcyAqYm9uZF9wYXJhbXMpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNy1zdGF0aWMgdm9pZCBhZF9lbmFibGVfY29sbGVjdGluZyhzdHJ1Y3QgcG9ydCAqcG9ydCk7XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIwMTQ9c3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9hZ2coc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZ3JlZ2F0b3IpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIwMjUtLyoqXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjAyNjogKiBhZF9pbml0aWFsaXplX3BvcnQgLSBpbml0aWFsaXplIGEgZ2l2ZW4gcG9ydCYjMzk7cyBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjAyNy0gKiBAcG9ydDogdGhlIHBvcnQgd2UmIzM5O3JlIGxvb2tpbmcgYXRcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjAyOS0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMDMwOnN0YXRpYyB2b2lkIGFkX2luaXRpYWxpemVfcG9ydChzdHJ1Y3QgcG9ydCAqcG9ydCwgY29uc3Qgc3RydWN0IGJvbmRfcGFyYW1zICpib25kX3BhcmFtcylcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMDMxLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjI3NT12b2lkIGJvbmRfM2FkX2JpbmRfc2xhdmUoc3RydWN0IHNsYXZlICpzbGF2ZSlcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI4Ni1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjg3Olx0XHRhZF9pbml0aWFsaXplX3BvcnQocG9ydCwgXHUwMDI2Ym9uZC1cdTAwM2VwYXJhbXMpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyODgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA4OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5NTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgYGJvbmRfM2FkX2JpbmRfc2xhdmVgIOKAkyB0aGF0JiMzOTtzIGEgc29saWQsIGNvbmNpc2Ugc3ltYm9sIHRvIHplcm8gaW4gb24uIEl0IGltbWVkaWF0ZWx5IGZsYWdzIGEgY3JpdGljYWwgcGllY2Ugb2YgODAyLjNhZCBjb25maWd1cmF0aW9uLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgaW5zdGFudGx5IHRoaW5rLCAmIzM0O1doZXJlIGVsc2UgaW4gdGhlIHN5c3RlbSBpcyB0aGlzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gb2YgODAyLjNhZCB0b3VjaGVkPyYjMzQ7IE15IGdvYWwgaXMgdG8gbWFwIHRoZSBlbnRyeSBwb2ludHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFsbCB0aGUgcG90ZW50aWFsIHBhdGh3YXlzLCBjYWxscywgYW5kIGNvbnRleHRzIHJlbGF0ZWQgdG8gODAyLjNhZC4gQXJlIHRoZXJlIG90aGVyIGZ1bmN0aW9ucyBvciBtb2R1bGVzIHRoYXQgaW50ZXJhY3Qgd2l0aCBpdD8gSSYjMzk7bGwgbmVlZCB0byBpZGVudGlmeSBhbGwgcG9zc2libGUgcG9pbnRzIG9mIGNvbnRhY3Qgd2l0aCB0aGUgd2lkZXIgbmV0d29yayBzdGFjayB0byBidWlsZCBhIGNvbXBsZXRlIHBpY3R1cmUuIExldCYjMzk7cyBzZWUgd2hhdCBlbHNlIGlzIG91dCB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtib25kXzNhZF8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTE4NjY9c3RhdGljIHZvaWQgYWRfYWdnX3NlbGVjdGlvbl9sb2dpYyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdnLFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xOTgxLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjE5ODI6XHRib25kXzNhZF9zZXRfY2Fycmllcihib25kKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xOTgzLX1cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjExOT1zdGF0aWMgdm9pZCBhZF9kaXNhYmxlX2Rpc3RyaWJ1dGluZyhzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCAqdXBkYXRlX3NsYXZlX2Fycilcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjEyOC1cdFx0X19kaXNhYmxlX2Rpc3RyaWJ1dGluZ19wb3J0KHBvcnQpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIxMjk6XHRcdGJvbmRfM2FkX3NldF9jYXJyaWVyKHBvcnQtXHUwMDNlc2xhdmUtXHUwMDNlYm9uZCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjEzMC1cdFx0LyogU2xhdmUgYXJyYXkgbmVlZHMgYW4gdXBkYXRlICovXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIxNDI9c3RhdGljIHZvaWQgYWRfZW5hYmxlX2NvbGxlY3RpbmdfZGlzdHJpYnV0aW5nKHN0cnVjdCBwb3J0ICpwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMTUyLVx0XHRfX2VuYWJsZV9wb3J0KHBvcnQpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIxNTM6XHRcdGJvbmRfM2FkX3NldF9jYXJyaWVyKHBvcnQtXHUwMDNlc2xhdmUtXHUwMDNlYm9uZCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjE1NC1cdFx0LyogU2xhdmUgYXJyYXkgbmVlZHMgdXBkYXRlICovXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIxNjY9c3RhdGljIHZvaWQgYWRfZGlzYWJsZV9jb2xsZWN0aW5nX2Rpc3RyaWJ1dGluZyhzdHJ1Y3QgcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjE3Ni1cdFx0X19kaXNhYmxlX3BvcnQocG9ydCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjE3NzpcdFx0Ym9uZF8zYWRfc2V0X2NhcnJpZXIocG9ydC1cdTAwM2VzbGF2ZS1cdTAwM2Vib25kKTtcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMTc4LVx0XHQvKiBTbGF2ZSBhcnJheSBuZWVkcyBhbiB1cGRhdGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjIxNz1zdGF0aWMgdm9pZCBhZF9tYXJrZXJfcmVzcG9uc2VfcmVjZWl2ZWQoc3RydWN0IGJvbmRfbWFya2VyICptYXJrZXIsXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzEtLyoqXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjIzMjogKiBib25kXzNhZF9pbml0aWF0ZV9hZ2dfc2VsZWN0aW9uIC0gaW5pdGF0ZSBhZ2dyZWdhdG9yIHNlbGVjdGlvblxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzMtICogQGJvbmQ6IGJvbmRpbmcgc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzktICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjI0MDp2b2lkIGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCB0aW1lb3V0KVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNDEte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjQ1LS8qKlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNDY6ICogYm9uZF8zYWRfaW5pdGlhbGl6ZSAtIGluaXRpYWxpemUgYSBib25kJiMzOTtzIDgwMi4zYWQgcGFyYW1ldGVycyBhbmQgc3RydWN0dXJlc1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNDctICogQGJvbmQ6IGJvbmRpbmcgc3RydWN0IHRvIHdvcmsgb25cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI1MC0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjUxOnZvaWQgYm9uZF8zYWRfaW5pdGlhbGl6ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjUyLXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI2Mi1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjYzOlx0Ym9uZF8zYWRfaW5pdGlhdGVfYWdnX3NlbGVjdGlvbihib25kLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNjQtXHRcdFx0XHRcdEFEX0FHR1JFR0FUT1JfU0VMRUNUSU9OX1RJTUVSICpcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI2OC0vKipcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjY5OiAqIGJvbmRfM2FkX2JpbmRfc2xhdmUgLSBpbml0aWFsaXplIGEgc2xhdmUmIzM5O3MgcG9ydFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNzAtICogQHNsYXZlOiBzbGF2ZSBzdHJ1Y3QgdG8gd29yayBvblxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjc0LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNzU6dm9pZCBib25kXzNhZF9iaW5kX3NsYXZlKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI3Ni17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjEtLyoqXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjMyMjogKiBib25kXzNhZF91bmJpbmRfc2xhdmUgLSBkZWluaXRpYWxpemUgYSBzbGF2ZSYjMzk7cyBwb3J0XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjMyMy0gKiBAc2xhdmU6IHNsYXZlIHN0cnVjdCB0byB3b3JrIG9uXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjgtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjMyOTp2b2lkIGJvbmRfM2FkX3VuYmluZF9zbGF2ZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMzAte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMzM4LVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIzMzk6XHQvKiBTeW5jIGFnYWluc3QgYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyKCkgKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMzQwLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmJvbmQtXHUwMDNlbW9kZV9sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ4NS0vKipcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNDg2OiAqIGJvbmRfM2FkX3VwZGF0ZV9hZF9hY3Rvcl9zZXR0aW5ncyAtIHJlZmxlY3QgY2hhbmdlIG9mIGFjdG9yIHNldHRpbmdzIHRvIHBvcnRzXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ4Ny0gKiBAYm9uZDogYm9uZGluZyBzdHJ1Y3QgdG8gd29yayBvblxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNDkxLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI0OTI6dm9pZCBib25kXzNhZF91cGRhdGVfYWRfYWN0b3Jfc2V0dGluZ3Moc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ5My17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTI1MjM9c3RhdGljIGJvb2wgYm9uZF9hZ2dfdGltZXJfYWR2YW5jZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjUzOS0vKipcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNTQwOiAqIGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlciAtIGhhbmRsZSBzdGF0ZSBtYWNoaW5lcyB0aW1lb3V0XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjU0MS0gKiBAd29yazogd29yayBjb250ZXh0IHRvIGZldGNoIGJvbmRpbmcgc3RydWN0IHRvIHdvcmsgb24gZnJvbVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTUxLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI1NTI6dm9pZCBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI1NTMte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTYzLVx0LyogTG9jayB0byBwcm90ZWN0IGRhdGEgYWNjZXNzZWQgYnkgYWxsIChlLmcuLCBwb3J0LVx1MDAzZXNtX3ZhcnMpIGFuZFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI1NjQ6XHQgKiBhZ2FpbnN0IHJ1bm5pbmcgd2l0aCBib25kXzNhZF91bmJpbmRfc2xhdmUuIGFkX3J4X21hY2hpbmUgbWF5IHJ1blxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI1NjUtXHQgKiBjb25jdXJyZW50bHkgZHVlIHRvIGluY29taW5nIExBQ1BEVSBhcyB3ZWxsLlxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTg4LVx0XHR9XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjU4OTpcdFx0Ym9uZF8zYWRfc2V0X2NhcnJpZXIoYm9uZCk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjU5MC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjYzMy0vKipcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNjM0OiAqIGJvbmRfM2FkX3J4X2luZGljYXRpb24gLSBoYW5kbGUgYSByZWNlaXZlZCBmcmFtZVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2MzUtICogQGxhY3BkdTogcmVjZWl2ZWQgbGFjcGR1XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2NDEtICovXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjY0MjpzdGF0aWMgaW50IGJvbmRfM2FkX3J4X2luZGljYXRpb24oc3RydWN0IGxhY3BkdSAqbGFjcGR1LCBzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2NDMte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yNzEzPXN0YXRpYyB2b2lkIGFkX3VwZGF0ZV9hY3Rvcl9rZXlzKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sIHJlc2V0KVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzQ5LS8qKlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI3NTA6ICogYm9uZF8zYWRfYWRhcHRlcl9zcGVlZF9kdXBsZXhfY2hhbmdlZCAtIGhhbmRsZSBhIHNsYXZlJiMzOTtzIHNwZWVkIC8gZHVwbGV4XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjc1MS0gKiBjaGFuZ2UgaW5kaWNhdGlvblxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzU2LSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI3NTc6dm9pZCBib25kXzNhZF9hZGFwdGVyX3NwZWVkX2R1cGxleF9jaGFuZ2VkKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjc1OC17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3NzctLyoqXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Mjc3ODogKiBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2UgLSBoYW5kbGUgYSBzbGF2ZSYjMzk7cyBsaW5rIHN0YXR1cyBjaGFuZ2UgaW5kaWNhdGlvblxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3NzktICogQHNsYXZlOiBzbGF2ZSBzdHJ1Y3QgdG8gd29yayBvblxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzgzLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI3ODQ6dm9pZCBib25kXzNhZF9oYW5kbGVfbGlua19jaGFuZ2Uoc3RydWN0IHNsYXZlICpzbGF2ZSwgY2hhciBsaW5rKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3ODUte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODI5LS8qKlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI4MzA6ICogYm9uZF8zYWRfc2V0X2NhcnJpZXIgLSBzZXQgbGluayBzdGF0ZSBmb3IgYm9uZGluZyBtYXN0ZXJcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODMxLSAqIEBib25kOiBib25kaW5nIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODQxLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI4NDI6aW50IGJvbmRfM2FkX3NldF9jYXJyaWVyKHN0cnVjdCBib25kaW5nICpib25kKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NDMte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODc2LS8qKlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI4Nzc6ICogX19ib25kXzNhZF9nZXRfYWN0aXZlX2FnZ19pbmZvIC0gZ2V0IGluZm9ybWF0aW9uIG9mIHRoZSBhY3RpdmUgYWdncmVnYXRvclxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NzgtICogQGJvbmQ6IGJvbmRpbmcgc3RydWN0IHRvIHdvcmsgb25cbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjg4My0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyODg0OmludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjg4NS1cdFx0XHRcdCAgIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTEyLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5MTM6aW50IGJvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsIHN0cnVjdCBhZF9pbmZvICphZF9pbmZvKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MTQte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTE3LVx0cmN1X3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5MTg6XHRyZXQgPSBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oYm9uZCwgYWRfaW5mbyk7XG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkxOS1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTIzLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5MjQ6aW50IGJvbmRfM2FkX2xhY3BkdV9yZWN2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBib25kaW5nICpib25kLFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MjUtXHRcdFx0IHN0cnVjdCBzbGF2ZSAqc2xhdmUpXG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5NDEtXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Mjk0MjpcdHJldHVybiBib25kXzNhZF9yeF9pbmRpY2F0aW9uKGxhY3BkdSwgc2xhdmUpO1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5NDMtfVxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTQ1LS8qKlxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5NDY6ICogYm9uZF8zYWRfdXBkYXRlX2xhY3BfcmF0ZSAtIGNoYW5nZSB0aGUgbGFjcCByYXRlXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk0Ny0gKiBAYm9uZDogYm9uZGluZyBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk1NS0gKi9cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTU2OnZvaWQgYm9uZF8zYWRfdXBkYXRlX2xhY3BfcmF0ZShzdHJ1Y3QgYm9uZGluZyAqYm9uZClcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTU3LXtcbi0tXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk3NS0vKipcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTc2OiAqIGJvbmRfM2FkX3VwZGF0ZV9sYWNwX2FjdGl2ZSAtIGNoYW5nZSB0aGUgbGFjcCBhY3RpdmVcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTc3LSAqIEBib25kOiBib25kaW5nIHN0cnVjdFxuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTgwLSAqL1xuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5ODE6dm9pZCBib25kXzNhZF91cGRhdGVfbGFjcF9hY3RpdmUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk4Mi17XG4tLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5OTktXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MzAwMDpzaXplX3QgYm9uZF8zYWRfc3RhdHNfc2l6ZSh2b2lkKVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTMwMDEte1xuLS1cbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0zMDEyLVxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjMwMTM6aW50IGJvbmRfM2FkX3N0YXRzX2ZpbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRfM2FkX3N0YXRzICpzdGF0cylcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0zMDE0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4NTIKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogMzMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgbGV0JiMzOTtzIHNlZS4gSSBuZWVkIHRvIGlkZW50aWZ5IHNvbWUgZ29vZCBzeW1ib2xzIHdpdGhpbiB0aGUgYm9uZGluZyBjb2RlIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cy4gQmFzZWQgb24gbXkgaW5pdGlhbCBzY2FuLCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBsb29rIGxpa2UgcHJvbWlzaW5nIHRhcmdldHM6IGBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJgLCBgYm9uZF8zYWRfYmluZF9zbGF2ZWAsIGBib25kXzNhZF91bmJpbmRfc2xhdmVgLCBhbmQgYGJvbmRfM2FkX2xhY3BkdV9yZWN2YC4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgdGhlc2UgYXJlIGFsbCBub24tc3RhdGljIGZ1bmN0aW9ucywgc28gdGhhdCYjMzk7cyBhIGdvb2QgZmlyc3QgY2hlY2ssIGNvbmZpcm1pbmcgdGhleSYjMzk7cmUgdmlzaWJsZSBvdXRzaWRlIHRoZWlyIGNvbXBpbGF0aW9uIHVuaXQuCgpOb3csIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJcyBgQk9ORElOR2AgdGhlIHByaW1hcnkgY29uZmlnPyBZZXMsIGFuZCBpdCBhbHNvIHJlbGllcyBvbiBgSU5FVGAgYW5kIGVpdGhlciBgVExTYCBvciBgVExTX0RFVklDRT1uYC4gRmluZSwgdGhhdCBoZWxwcyBuYXJyb3cgdGhlIGJ1aWxkLiBJJiMzOTtsbCBpbmNsdWRlIGBCT05ESU5HYCBkaXJlY3RseSBpbiBteSBmdXp6aW5nIHNldHVwLgoKSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBwcm9wb3NlZCBwYXRjaCBub3cuIEFoLCB0aGlzIG5ldyBjb2RlOgoKYGBgYwogCWFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC0mZ3Q7YWdncmVnYXRvcik7CiYjNDM7CWlmICghYWdncmVnYXRvcikKJiM0MzsJCXJldHVybjsKYGBgCgpUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50LiBJdCBhZGRzIGEgbnVsbCBwb2ludGVyIGNoZWNrIGFmdGVyIGRlcmVmZXJlbmNpbmcgYHBvcnQtJmd0O2FnZ3JlZ2F0b3JgLiBUaGlzIHBhdGNoIHNlZW1zIGxpa2UgYSBjbGVhciBhZGRpdGlvbiB0byBwcmV2ZW50IGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggaXMgZ29vZCBmb3Igc3RhYmlsaXR5LiBUaGlzIGtpbmQgb2YgcGF0Y2ggaXMgY2VydGFpbmx5IHdvcnRoIGZ1enppbmcsIGFzIGl0IGxpa2VseSBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4KClNvLCB0byBzdW1tYXJpemUsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGlzIGBCT05ESU5HYCwgYW5kIG15IGZvY3VzIHN5bWJvbHMgYXJlIHN0aWxsIGBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJgLCBgYm9uZF8zYWRfYmluZF9zbGF2ZWAsIGBib25kXzNhZF91bmJpbmRfc2xhdmVgLCBhbmQgYGJvbmRfM2FkX2xhY3BkdV9yZWN2YC4gVGltZSB0byBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Qk9ORElORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9iaW5kX3NsYXZlJiMzNDssCiAgICAmIzM0O2JvbmRfM2FkX3VuYmluZF9zbGF2ZSYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9sYWNwZHVfcmVjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgODAyLjNhZCAoTEFDUCkgc3RhdGUgbWFjaGluZSBvZiB0aGUgYm9uZGluZyBkcml2ZXIuIFRoZSBib25kaW5nIGRyaXZlciBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY3JlYXRpbmcgYSBib25kIGludGVyZmFjZSBhbmQgYWRkaW5nIHNsYXZlcy4gVGhlIExBQ1Agc3RhdGUgbWFjaGluZSBydW5zIHBlcmlvZGljYWxseSBvciBvbiBldmVudHMsIG1ha2luZyB0aGlzIGEgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNoYW5nZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Qk9ORElORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9iaW5kX3NsYXZlJiMzNDssCiAgICAmIzM0O2JvbmRfM2FkX3VuYmluZF9zbGF2ZSYjMzQ7LAogICAgJiMzNDtib25kXzNhZF9sYWNwZHVfcmVjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgODAyLjNhZCAoTEFDUCkgc3RhdGUgbWFjaGluZSBvZiB0aGUgYm9uZGluZyBkcml2ZXIuIFRoZSBib25kaW5nIGRyaXZlciBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY3JlYXRpbmcgYSBib25kIGludGVyZmFjZSBhbmQgYWRkaW5nIHNsYXZlcy4gVGhlIExBQ1Agc3RhdGUgbWFjaGluZSBydW5zIHBlcmlvZGljYWxseSBvciBvbiBldmVudHMsIG1ha2luZyB0aGlzIGEgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNoYW5nZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDg6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGEgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBiZWluZyBOVUxMIGluIGBhZF9tdXhfbWFjaGluZWAgYW5kIHVzaW5nIGBSQ1VfSU5JVF9QT0lOVEVSYCB0byBpbml0aWFsaXplIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3JgIHRvIE5VTEwgaW4gYGFkX2luaXRpYWxpemVfcG9ydGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyAobGlrZSBwYWdlIGZhdWx0cykgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIHN1Y2ggYXMgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGxlYWtpbmcga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM5NWQ0YmFjMzUzNzkwNzJhYjg2ZTVlMjNmY2M0MDBmN2Y1ZTI0OWIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAwODozODozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYwppbmRleCBhY2JiYTA4ZGJkZmFkLi5jNGRmY2FmY2ZmMjY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jCkBAIC0xMDUzLDYgJiM0MzsxMDUzLDkgQEAgc3RhdGljIHZvaWQgYWRfbXV4X21hY2hpbmUoc3RydWN0IHBvcnQgKnBvcnQsIGJvb2wgKnVwZGF0ZV9zbGF2ZV9hcnIpCiAJbGFzdF9zdGF0ZSA9IHBvcnQtJmd0O3NtX211eF9zdGF0ZTsKIAogCWFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC0mZ3Q7YWdncmVnYXRvcik7CiYjNDM7CWlmICghYWdncmVnYXRvcikKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlpZiAocG9ydC0mZ3Q7c21fdmFycyAmYW1wOyBBRF9QT1JUX0JFR0lOKSB7CiAJCXBvcnQtJmd0O3NtX211eF9zdGF0ZSA9IEFEX01VWF9ERVRBQ0hFRDsKIAl9IGVsc2UgewpAQCAtMjA3Miw3ICYjNDM7MjA3NSw3IEBAIHN0YXRpYyB2b2lkIGFkX2luaXRpYWxpemVfcG9ydChzdHJ1Y3QgcG9ydCAqcG9ydCwgY29uc3Qgc3RydWN0IGJvbmRfcGFyYW1zICpib25kCiAJCXBvcnQtJmd0O3NtX211eF9zdGF0ZSA9IDA7CiAJCXBvcnQtJmd0O3NtX211eF90aW1lcl9jb3VudGVyID0gMDsKIAkJcG9ydC0mZ3Q7c21fdHhfc3RhdGUgPSAwOwotCQlwb3J0LSZndDthZ2dyZWdhdG9yID0gTlVMTDsKJiM0MzsJCVJDVV9JTklUX1BPSU5URVIocG9ydC0mZ3Q7YWdncmVnYXRvciwgTlVMTCk7CiAJCXBvcnQtJmd0O25leHRfcG9ydF9pbl9hZ2dyZWdhdG9yID0gTlVMTDsKIAkJcG9ydC0mZ3Q7dHJhbnNhY3Rpb25faWQgPSAwOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM3CgkJCQkJCQlvdXRwdXQ6IDE0NwoJCQkJCQkJdGhvdWdodHM6IDM1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCb25kaW5nIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNgLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYGFkX211eF9tYWNoaW5lYCBhbmQgYGFkX2luaXRpYWxpemVfcG9ydGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIE5VTEwgY2hlY2tzIGFuZCBwb2ludGVyIGluaXRpYWxpemF0aW9uLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmaXggZm9yIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgYGFnZ3JlZ2F0b3JgIGJlaW5nIE5VTEwgd2l0aGluIGBhZF9tdXhfbWFjaGluZWAuICBUaGF0IGxpbmU6CmBgYGMKCWFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC0mZ3Q7YWdncmVnYXRvcik7CglpZiAoIWFnZ3JlZ2F0b3IpCgkJcmV0dXJuOwpgYGAKaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcy4gQW5kIHRoZSBjaGFuZ2UgZnJvbSBgcG9ydC0mZ3Q7YWdncmVnYXRvciA9IE5VTEw7YCB0byBgUkNVX0lOSVRfUE9JTlRFUihwb3J0LSZndDthZ2dyZWdhdG9yLCBOVUxMKTtgIGluIGBhZF9pbml0aWFsaXplX3BvcnRgIGlzIGFsc28gcmVsZXZhbnQuIFVzaW5nIGBSQ1VfSU5JVF9QT0lOVEVSYCBpcyB0aGUgY29ycmVjdCBhcHByb2FjaCBmb3IgaW5pdGlhbGl6aW5nIGFuIFJDVS1wcm90ZWN0ZWQgcG9pbnRlciwgc28gdGhhdCYjMzk7cyBnb29kIHByYWN0aWNlLgoKTm93LCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhcmUgcHJldHR5IGVmZmVjdGl2ZWx5IGNhdWdodCBieSB0aGUga2VybmVsJiMzOTtzIGV4aXN0aW5nIG1lY2hhbmlzbXMsIGxpa2UgcGFnZSBmYXVsdHMgYW5kIEtBU0FOLiAgV2UmIzM5O3JlIG5vdCB0YWxraW5nIGFib3V0IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBwb3RlbnRpYWwgaW5mb3JtYXRpb24gbGVha3MgaGVyZS4gU28sIG15IGluc3RpbmN0IGlzIHRoYXQgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXNuJiMzOTt0IHN0cmljdGx5IG5lY2Vzc2FyeSBmb3IgdGhpcyBmaXguCgpUbyBiZSB0aG9yb3VnaCwgSSBxdWlja2x5IGdsYW5jZWQgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2l0aGluIGBhZF9tdXhfbWFjaGluZWAuICBgYWdncmVnYXRvcmAgaXMgYSBwb2ludGVyIHRvIGBzdHJ1Y3QgYWdncmVnYXRvcmAsIHNvIGlmIGl0JiMzOTtzIE5VTEwsIHRoZSBmdW5jdGlvbiBqdXN0IHJldHVybnMuIFRoZSBsb2dpYyBpcyBzb3VuZCwgYW5kIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LgoKU28sIGhlcmUmIzM5O3MgbXkgcmVhc29uaW5nLCBkaXN0aWxsZWQ6IFRoaXMgcGF0Y2ggcmVzb2x2ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSBib25kaW5nIGRyaXZlci4gIEl0IGFkZHMgYSBzYWZldHkgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBpbiBgYWRfbXV4X21hY2hpbmVgIGFuZCBjb3JyZWN0bHkgaW5pdGlhbGl6ZXMgYHBvcnQtJmd0O2FnZ3JlZ2F0b3JgIHdpdGggYFJDVV9JTklUX1BPSU5URVJgLiBTdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyB3aWxsIGNhdGNoIGFueSByZXN1bHRpbmcgZXJyb3JzLiAgVGhpcyBwYXRjaCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZXMuIFRoZXJlZm9yZSwgYSBzcGVjaWFsaXplZCBLTVNBTiBmdXp6aW5nIGNhbXBhaWduIGlzbiYjMzk7dCB3YXJyYW50ZWQgaW4gdGhpcyBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwODozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGEgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBiZWluZyBOVUxMIGluIGBhZF9tdXhfbWFjaGluZWAgYW5kIHVzaW5nIGBSQ1VfSU5JVF9QT0lOVEVSYCB0byBpbml0aWFsaXplIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3JgIHRvIE5VTEwgaW4gYGFkX2luaXRpYWxpemVfcG9ydGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyAobGlrZSBwYWdlIGZhdWx0cykgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIHN1Y2ggYXMgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGxlYWtpbmcga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGEgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBiZWluZyBOVUxMIGluIGBhZF9tdXhfbWFjaGluZWAgYW5kIHVzaW5nIGBSQ1VfSU5JVF9QT0lOVEVSYCB0byBpbml0aWFsaXplIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3JgIHRvIE5VTEwgaW4gYGFkX2luaXRpYWxpemVfcG9ydGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyAobGlrZSBwYWdlIGZhdWx0cykgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIHN1Y2ggYXMgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGxlYWtpbmcga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjM2LjI1NzcyNjE3NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDU3Mjk2Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJPTkRJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJcIixcbiAgICBcImJvbmRfM2FkX2JpbmRfc2xhdmVcIixcbiAgICBcImJvbmRfM2FkX3VuYmluZF9zbGF2ZVwiLFxuICAgIFwiYm9uZF8zYWRfbGFjcGR1X3JlY3ZcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBieSBhZGRpbmcgYSBjaGVjayBmb3IgYGFnZ3JlZ2F0b3JgIGJlaW5nIE5VTEwgaW4gYGFkX211eF9tYWNoaW5lYCBhbmQgdXNpbmcgYFJDVV9JTklUX1BPSU5URVJgIHRvIGluaXRpYWxpemUgYHBvcnQtXFx1MDAzZWFnZ3JlZ2F0b3JgIHRvIE5VTEwgaW4gYGFkX2luaXRpYWxpemVfcG9ydGAuIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgYXJlIHJlbGlhYmx5IGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyAobGlrZSBwYWdlIGZhdWx0cykgYW5kIEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MsIHN1Y2ggYXMgcmVhZGluZyB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgdmFyaWFibGVzIG9yIGxlYWtpbmcga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gdGhlIDgwMi4zYWQgKExBQ1ApIHN0YXRlIG1hY2hpbmUgb2YgdGhlIGJvbmRpbmcgZHJpdmVyLiBUaGUgYm9uZGluZyBkcml2ZXIgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNyZWF0aW5nIGEgYm9uZCBpbnRlcmZhY2UgYW5kIGFkZGluZyBzbGF2ZXMuIFRoZSBMQUNQIHN0YXRlIG1hY2hpbmUgcnVucyBwZXJpb2RpY2FsbHkgb3Igb24gZXZlbnRzLCBtYWtpbmcgdGhpcyBhIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjaGFuZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjM2LjI1NzczMjgzNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk1MTg5NTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzk1ZDRiYWMzNTM3OTA3MmFiODZlNWUyM2ZjYzQwMGY3ZjVlMjQ5YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwODozODozNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcXG5pbmRleCBhY2JiYTA4ZGJkZmFkLi5jNGRmY2FmY2ZmMjY2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xcbkBAIC0xMDUzLDYgKzEwNTMsOSBAQCBzdGF0aWMgdm9pZCBhZF9tdXhfbWFjaGluZShzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCAqdXBkYXRlX3NsYXZlX2FycilcXG4gXFx0bGFzdF9zdGF0ZSA9IHBvcnQtXFx1MDAzZXNtX211eF9zdGF0ZTtcXG4gXFxuIFxcdGFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC1cXHUwMDNlYWdncmVnYXRvcik7XFxuK1xcdGlmICghYWdncmVnYXRvcilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0aWYgKHBvcnQtXFx1MDAzZXNtX3ZhcnMgXFx1MDAyNiBBRF9QT1JUX0JFR0lOKSB7XFxuIFxcdFxcdHBvcnQtXFx1MDAzZXNtX211eF9zdGF0ZSA9IEFEX01VWF9ERVRBQ0hFRDtcXG4gXFx0fSBlbHNlIHtcXG5AQCAtMjA3Miw3ICsyMDc1LDcgQEAgc3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9wb3J0KHN0cnVjdCBwb3J0ICpwb3J0LCBjb25zdCBzdHJ1Y3QgYm9uZF9wYXJhbXMgKmJvbmRcXG4gXFx0XFx0cG9ydC1cXHUwMDNlc21fbXV4X3N0YXRlID0gMDtcXG4gXFx0XFx0cG9ydC1cXHUwMDNlc21fbXV4X3RpbWVyX2NvdW50ZXIgPSAwO1xcbiBcXHRcXHRwb3J0LVxcdTAwM2VzbV90eF9zdGF0ZSA9IDA7XFxuLVxcdFxcdHBvcnQtXFx1MDAzZWFnZ3JlZ2F0b3IgPSBOVUxMO1xcbitcXHRcXHRSQ1VfSU5JVF9QT0lOVEVSKHBvcnQtXFx1MDAzZWFnZ3JlZ2F0b3IsIE5VTEwpO1xcbiBcXHRcXHRwb3J0LVxcdTAwM2VuZXh0X3BvcnRfaW5fYWdncmVnYXRvciA9IE5VTEw7XFxuIFxcdFxcdHBvcnQtXFx1MDAzZXRyYW5zYWN0aW9uX2lkID0gMDtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjM2LjY1MzY0MDUyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM4MDE0ODQ2NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJPTkRJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJcIixcbiAgICBcImJvbmRfM2FkX2JpbmRfc2xhdmVcIixcbiAgICBcImJvbmRfM2FkX3VuYmluZF9zbGF2ZVwiLFxuICAgIFwiYm9uZF8zYWRfbGFjcGR1X3JlY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiB0aGUgODAyLjNhZCAoTEFDUCkgc3RhdGUgbWFjaGluZSBvZiB0aGUgYm9uZGluZyBkcml2ZXIuIFRoZSBib25kaW5nIGRyaXZlciBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY3JlYXRpbmcgYSBib25kIGludGVyZmFjZSBhbmQgYWRkaW5nIHNsYXZlcy4gVGhlIExBQ1Agc3RhdGUgbWFjaGluZSBydW5zIHBlcmlvZGljYWxseSBvciBvbiBldmVudHMsIG1ha2luZyB0aGlzIGEgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNoYW5nZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzk1ZDRiYWMzNTM3OTA3MmFiODZlNWUyM2ZjYzQwMGY3ZjVlMjQ5YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDA4OjM4OjM1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXG5pbmRleCBhY2JiYTA4ZGJkZmFkLi5jNGRmY2FmY2ZmMjY2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXG4rKysgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcbkBAIC0xMDUzLDYgKzEwNTMsOSBAQCBzdGF0aWMgdm9pZCBhZF9tdXhfbWFjaGluZShzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCAqdXBkYXRlX3NsYXZlX2FycilcbiBcdGxhc3Rfc3RhdGUgPSBwb3J0LVx1MDAzZXNtX211eF9zdGF0ZTtcbiBcbiBcdGFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC1cdTAwM2VhZ2dyZWdhdG9yKTtcbitcdGlmICghYWdncmVnYXRvcilcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKHBvcnQtXHUwMDNlc21fdmFycyBcdTAwMjYgQURfUE9SVF9CRUdJTikge1xuIFx0XHRwb3J0LVx1MDAzZXNtX211eF9zdGF0ZSA9IEFEX01VWF9ERVRBQ0hFRDtcbiBcdH0gZWxzZSB7XG5AQCAtMjA3Miw3ICsyMDc1LDcgQEAgc3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9wb3J0KHN0cnVjdCBwb3J0ICpwb3J0LCBjb25zdCBzdHJ1Y3QgYm9uZF9wYXJhbXMgKmJvbmRcbiBcdFx0cG9ydC1cdTAwM2VzbV9tdXhfc3RhdGUgPSAwO1xuIFx0XHRwb3J0LVx1MDAzZXNtX211eF90aW1lcl9jb3VudGVyID0gMDtcbiBcdFx0cG9ydC1cdTAwM2VzbV90eF9zdGF0ZSA9IDA7XG4tXHRcdHBvcnQtXHUwMDNlYWdncmVnYXRvciA9IE5VTEw7XG4rXHRcdFJDVV9JTklUX1BPSU5URVIocG9ydC1cdTAwM2VhZ2dyZWdhdG9yLCBOVUxMKTtcbiBcdFx0cG9ydC1cdTAwM2VuZXh0X3BvcnRfaW5fYWdncmVnYXRvciA9IE5VTEw7XG4gXHRcdHBvcnQtXHUwMDNldHJhbnNhY3Rpb25faWQgPSAwO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzg6MzYuNjUzNjUzODQyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMwNjA4MjY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCb25kaW5nIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNgLiBTZWVtcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGJ1ZyBmaXgsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIDgwMi4zYWQgKExBQ1ApIGltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgYm9uZGluZyBkcml2ZXIuIE15IHVuZGVyc3RhbmRpbmcgaXMsIHRoaXMgZHJpdmVyIGlzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2Ug4oCTIHlvdSBjcmVhdGUgYm9uZCBpbnRlcmZhY2VzLCBhZGQgc2xhdmVzLCB0aGluZ3MgbGlrZSB0aGF0LCB1c2luZyBuZXRsaW5rIG9yIHN5c2ZzLiBUaGUgTEFDUCBzdGF0ZSBtYWNoaW5lIGlzIHRoZSBjb3JlIGhlcmUsIHJ1bm5pbmcgZWl0aGVyIHBlcmlvZGljYWxseSBvciByZWFjdGluZyB0byBldmVudHMuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgc2ltcGxlOyBpbiBgYWRfbXV4X21hY2hpbmVgLCBpdCdzIGFkZGluZyBhIGBOVUxMYCBjaGVjayBmb3IgYGFnZ3JlZ2F0b3JgIGFmdGVyIGRlcmVmZXJlbmNpbmcgaXQgd2l0aCBgcmN1X2RlcmVmZXJlbmNlYDpcblxuYGBgY1xuYWdncmVnYXRvciA9IHJjdV9kZXJlZmVyZW5jZShwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IpO1xuXHRpZiAoIWFnZ3JlZ2F0b3IpXG5cdFx0cmV0dXJuO1xuYGBgXG5cblRoaXMgbWFrZXMgc2Vuc2UuIElmIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3JgIGhhcHBlbnMgdG8gYmUgYE5VTExgIGF0IHRoYXQgcG9pbnQsIHByZXN1bWFibHkgZHVlIHRvIHNvbWUgcmFjZSBjb25kaXRpb24gb3IgdW5pbml0aWFsaXplZCBzdGF0ZSwgdGhlIGZ1bmN0aW9uIHdpbGwganVzdCByZXR1cm4sIHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlLiBTbWFydCwgYSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgYXBwcm9hY2gsIG1pdGlnYXRpbmcgYSBjcmFzaC5cblxuVGhlIG90aGVyIGhhbGYgb2YgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IgPSBOVUxMO2AgdG8gYFJDVV9JTklUX1BPSU5URVIocG9ydC1cdTAwM2VhZ2dyZWdhdG9yLCBOVUxMKTtgIHdpdGhpbiBgYWRfaW5pdGlhbGl6ZV9wb3J0YC4gVGhpcyBsb29rcyBsaWtlIHRoZXkncmUgdHJ5aW5nIHRvIGltcHJvdmUgdGhlIHN5bmNocm9uaXphdGlvbiBhcm91bmQgdGhlIHBvaW50ZXIgYXNzaWdubWVudC4gVXNpbmcgYFJDVV9JTklUX1BPSU5URVJgIGlzIHRoZSBjb3JyZWN0IHdheSB0byBpbml0aWFsaXplIGFuIFJDVS1wcm90ZWN0ZWQgcG9pbnRlciwgZW5zdXJpbmcgcHJvcGVyIG1lbW9yeSBvcmRlcmluZyBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGNvbmN1cnJlbnQgYWNjZXNzLiBUaGlzIGlzIHRoZSBjb3JyZWN0IHdheSB0byBoYW5kbGUgdGhhdCBpbiB0aGUga2VybmVsLlxuXG5TbywgdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBwb3NzaWJsZSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiBhY2Nlc3NpbmcgYHBvcnQtXHUwMDNlYWdncmVnYXRvcmAgaW4gdGhlIDgwMi4zYWQgTEFDUCBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgZnVuY3Rpb25zIGBhZF9tdXhfbWFjaGluZWAgYW5kIGBhZF9pbml0aWFsaXplX3BvcnRgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlc2UgY2hhbmdlcyBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBzY2VuYXJpb3MgY291bGQgbGVhZCB0byBgcG9ydC1cdTAwM2VhZ2dyZWdhdG9yYCBiZWNvbWluZyBudWxsIGluIHRoZSBmaXJzdCBwbGFjZSB0byB1bmRlcnN0YW5kIHRoZSByb290IGNhdXNlIG9mIHRoZSBidWcgYW5kIGFzc2VzcyB0aGUgZml4J3MgZWZmZWN0aXZlbmVzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjQxLjk1OTczOTU2NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDY5MDI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZF9tdXhfbWFjaGluZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTk2PXN0YXRpYyBpbnQgYWRfbWFya2VyX3NlbmQoc3RydWN0IHBvcnQgKnBvcnQsIHN0cnVjdCBib25kX21hcmtlciAqbWFya2VyKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6OTc6c3RhdGljIHZvaWQgYWRfbXV4X21hY2hpbmUoc3RydWN0IHBvcnQgKnBvcnQsIGJvb2wgKnVwZGF0ZV9zbGF2ZV9hcnIpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy05OC1zdGF0aWMgdm9pZCBhZF9yeF9tYWNoaW5lKHN0cnVjdCBsYWNwZHUgKmxhY3BkdSwgc3RydWN0IHBvcnQgKnBvcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTEwMzE9c3RhdGljIHZvaWQgYWRfY29uZF9zZXRfcGVlcl9ub3RpZihzdHJ1Y3QgcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xMDM5LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxMDQwOiAqIGFkX211eF9tYWNoaW5lIC0gaGFuZGxlIGEgcG9ydCdzIG11eCBzdGF0ZSBtYWNoaW5lXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNDEtICogQHBvcnQ6IHRoZSBwb3J0IHdlJ3JlIGxvb2tpbmcgYXRcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xMDQzLSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxMDQ0OnN0YXRpYyB2b2lkIGFkX211eF9tYWNoaW5lKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sICp1cGRhdGVfc2xhdmVfYXJyKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xMDQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yNTUyPXZvaWQgYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNjAzLVxcdFxcdGFkX3BvcnRfc2VsZWN0aW9uX2xvZ2ljKHBvcnQsIFxcdTAwMjZ1cGRhdGVfc2xhdmVfYXJyKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjYwNDpcXHRcXHRhZF9tdXhfbWFjaGluZShwb3J0LCBcXHUwMDI2dXBkYXRlX3NsYXZlX2Fycik7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2MDUtXFx0XFx0YWRfdHhfbWFjaGluZShwb3J0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzg6NDIuMDA0NDM0NTk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzMTY1Nzg0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFBvdGVudGlhbDogQm9uZCAzYWQgU3RhdGUgTWFjaGluZSoqXG5cbk9rYXksIHNvIGBhZF9tdXhfbWFjaGluZWAgaXMgYmVpbmcgY2FsbGVkIGZyb20gYGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcmAuIEdpdmVuIHRoYXQgdGhlIGBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXJgIGlzIHRoZSBwcmltYXJ5IGhhbmRsZXIgZm9yIDgwMi4zYWQsIHRoYXQgbWFrZXMgdGhpcyBhICp2ZXJ5KiBpbnRlcmVzdGluZyB0YXJnZXQgZm9yIGZ1enppbmcuIEl0J3MgY2xlYXJseSBhIHJlYWNoYWJsZSBjb2RlIHBhdGgsIGFuZCBnaXZlbiB0aGUgY29tcGxleGl0eSBvZiB0aGUgODAyLjNhZCBwcm90b2NvbCwgdGhlIHBvdGVudGlhbCBmb3IgZWRnZS1jYXNlIHZ1bG5lcmFiaWxpdGllcyBpcyBoaWdoLiBJIHNob3VsZCBhZGQgdGhpcyB0byB0aGUgdGVzdGluZyBxdWV1ZSBhcyBzb29uIGFzIHBvc3NpYmxlLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGJvbmRpbmcgY29uZmlndXJhdGlvbiB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgSSBzdGFydCBjcmFmdGluZyBhbnkgZnV6emluZyBpbnB1dHMuIFRoYXQncyBhbHdheXMgdGhlIHNtYXJ0IG1vdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMjQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozODo0NC45MzYwOTQ0ODhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3NjkyMzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCT05ESU5HXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzg6NDQuOTgyODczMjQ2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg1NjQ4MDQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIGlmIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkIHRoaW5raW5nIHRocm91Z2ggdGhpczpcblxuKipXaGVyZSdzIHRoZSBLY29uZmlnIGZvciBCb25kaW5nPyoqXG5cbkFscmlnaHQsIGhvbGQgb24gYSBzZWNvbmQuIEknbSBkZWVwIGludG8gdGhpcyBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24sIGFuZCBldmVyeXRoaW5nICpzaG91bGQqIGJlIGNvbWluZyB0b2dldGhlci4uLiBidXQgc29tZXRoaW5nIGZlZWxzIG9mZi4gSSdtIGV4cGVjdGluZyB0byBzZWUgdGhlIGJvbmRpbmctc3BlY2lmaWMgS2NvbmZpZyBmaWxlIHJpZ2h0IGFib3V0IG5vdywgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGUgY3VycmVudCBzY29wZSBvZiB0aGUgcHJvamVjdCBhbmQgdGhlIHdheSBJJ3ZlIHN0cnVjdHVyZWQgbXkgbWVudGFsIG1hcCBvZiB0aGUgc3lzdGVtLiBJJ3ZlIG1lbnRhbGx5IHRyYWNlZCB0aGUgZGVwZW5kZW5jaWVzLCBJJ3ZlIGdvdCBhIGdvb2QgaWRlYSBvZiB0aGUgbW9kdWxlcyBpbnZvbHZlZCwgYW5kIHRoaXMgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSBmb3IgaXQgdG8gYmUgaW50ZWdyYXRlZC4gV2hlcmUgaW4gdGhlIG1vZHVsZSBzdHJ1Y3R1cmUgaXMgdGhlIGJvbmRpbmcgS2NvbmZpZz8gSSBrbm93IEknbSBub3Qgb3Zlcmxvb2tpbmcgc29tZSBvYnNjdXJlIG5hbWluZyBjb252ZW50aW9uIGhlcmUsIHRoaXMgc2hvdWxkIGJlIHJlYWRpbHkgYXBwYXJlbnQuIEhtbSwgZGlkIEkgYWNjaWRlbnRhbGx5IG1ha2UgYSBicmFuY2hpbmcgZXJyb3Igc29tZXdoZXJlPyBMZXQgbWUgcmV0cmFjZSBteSBzdGVwcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MzYwMSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzg6NDcuODM5MzU1NjUxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTc0NDIzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk9ORElOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0zOT1pZiBORVRfQ09SRVxcbmRyaXZlcnMvbmV0L0tjb25maWctNDAtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0MTpjb25maWcgQk9ORElOR1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIkJvbmRpbmcgZHJpdmVyIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjQ3Ljk2MTEwNDQyOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MzA1MTA5MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIENvbmZpZ3VyYXRpb24gYW5kIEZvY3VzaW5nIG9uIEJvbmRpbmcqKlxuXG5SaWdodCwgdGhpcyBmZWVscyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRlZCB0byBgQk9ORElOR2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoYXQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkgbmVlZCB0byBpbW1lZGlhdGVseSBjb25zaWRlciB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRlcm0uIEl0J3MgYSBxdWljayBhc3Nlc3NtZW50IHRvIGNvbmZpcm0gdGhhdCB3ZSdyZSB0YWxraW5nIGFib3V0IHNvbWV0aGluZyBJIGNhbiBsZXZlcmFnZSBteSBleHBlcnRpc2UgaW4uXG5cblRoZSBuZXh0IHRoaW5nIEknZCBkbyBpcyBjaGVjay4gTXkgdGhvdWdodCBpczogQmVmb3JlIGRpdmluZyBpbnRvIGFueSBzcGVjaWZpYyBzY2VuYXJpb3Mgb3IgdHJvdWJsZXNob290aW5nIHN0ZXBzLCBJIG5lZWQgdG8gc2VlIHdoYXQgb3RoZXIgY29uZmlncyBhcmUgZmxvYXRpbmcgYXJvdW5kLiBJcyB0aGVyZSBhbnl0aGluZyBlbHNlIHRoYXQgdGllcyBpbnRvIHRoaXMgdGhhdCBJIGhhdmVuJ3Qgc2VlbiB5ZXQ/IExldCdzIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODk3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzg6NTAuNTkxNjE4MDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzQ5NDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRERVZJQ0VTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03LVxcdGRlZmF1bHQgeSBpZiBVTUxcXG5kcml2ZXJzL25ldC9LY29uZmlnOjg6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTktXFx0Ym9vbCBcXFwiTmV0d29yayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDE9Y29uZmlnIEJPTkRJTkdcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVxcdHRyaXN0YXRlIFxcXCJCb25kaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDpcXHRkZXBlbmRzIG9uIFRMUyB8fCBUTFNfREVWSUNFPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NzQ9Y29uZmlnIFdJUkVHVUFSRFxcbmRyaXZlcnMvbmV0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcIldpcmVHdWFyZCBzZWN1cmUgbmV0d29yayB0dW5uZWxcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo3NjpcXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03Ny1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9OTI9Y29uZmlnIFdJUkVHVUFSRF9ERUJVR1xcbmRyaXZlcnMvbmV0L0tjb25maWctOTMtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGNoZWNrcyBhbmQgdmVyYm9zZSBtZXNzYWdlc1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjk0OlxcdGRlcGVuZHMgb24gV0lSRUdVQVJEXFxuZHJpdmVycy9uZXQvS2NvbmZpZy05NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEwMz1jb25maWcgT1ZQTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJPcGVuVlBOIGRhdGEgY2hhbm5lbCBvZmZsb2FkXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTA1OlxcdGRlcGVuZHMgb24gTkVUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cXHRzZWxlY3QgRFNUX0NBQ0hFXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEzNj1jb25maWcgTkVUX0ZDXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzctXFx0Ym9vbCBcXFwiRmlicmUgQ2hhbm5lbCBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjEzODpcXHRkZXBlbmRzIG9uIFNDU0kgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xNDk9Y29uZmlnIElGQlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTUwLVxcdHRyaXN0YXRlIFxcXCJJbnRlcm1lZGlhdGUgRnVuY3Rpb25hbCBCbG9jayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTUxOlxcdGRlcGVuZHMgb24gTkVUX0FDVF9NSVJSRUQgfHwgTkZUX0ZXRF9ORVRERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1Mi1cXHRzZWxlY3QgTkVUX1JFRElSRUNUXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTgwLVxcdHRyaXN0YXRlIFxcXCJNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgxOlxcdGRlcGVuZHMgb24gTUFDVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgyOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTgzLVxcdHNlbGVjdCBUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTkzPWNvbmZpZyBJUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTQ6XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NTpcXHRkZXBlbmRzIG9uIElQVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk2LVxcdGRlZl9ib29sIHlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTk5PWNvbmZpZyBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjAxOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjAyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIxNy1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjE4OlxcdGRlcGVuZHMgb24gSVBWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMTk6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMjAtXFx0c2VsZWN0IFRBUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzEtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMjpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMy1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjQ1PWNvbmZpZyBHRU5FVkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ni1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBOZXR3b3JrIFZpcnR1YWxpemF0aW9uIEVuY2Fwc3VsYXRpb25cXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDc6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDgtXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYxLVxcdHRyaXN0YXRlIFxcXCJCYXJlIFVEUCBFbmNhcHN1bGF0aW9uXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjYyOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYzLVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjczLVxcdHRyaXN0YXRlIFxcXCJHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc0OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjc1LVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1BcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5MC1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEZvcndhcmRpbmcgQ29udHJvbCBQcm90b2NvbCAoUEZDUClcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTE6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTItXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMwMj1jb25maWcgQU1UXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDMtXFx0dHJpc3RhdGUgXFxcIkF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nIChBTVQpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzA0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJUF9NVUxUSUNBU1RcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNS1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzI3PWNvbmZpZyBORVRDT05TT0xFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMjgtXFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgY29uc29sZSBsb2dnaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozMjk6XFx0ZGVwZW5kcyBvbiBQUklOVEtcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMzND1jb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzUtXFx0Ym9vbCBcXFwiRHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzM2OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRSBcXHUwMDI2XFx1MDAyNiBTWVNGUyBcXHUwMDI2XFx1MDAyNiBDT05GSUdGU19GUyBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzctXFx0XFx0XFx0IShORVRDT05TT0xFPXkgXFx1MDAyNlxcdTAwMjYgQ09ORklHRlNfRlM9bSlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzQ1PWNvbmZpZyBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ2LVxcdGJvb2wgXFxcIlNldCBrZXJuZWwgZXh0ZW5kZWQgbWVzc2FnZSBieSBkZWZhdWx0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzQ3OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNTU9Y29uZmlnIE5FVENPTlNPTEVfUFJFUEVORF9SRUxFQVNFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTYtXFx0Ym9vbCBcXFwiUHJlcGVuZCBrZXJuZWwgcmVsZWFzZSB2ZXJzaW9uIGluIHRoZSBtZXNzYWdlIGJ5IGRlZmF1bHRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozNTc6XFx0ZGVwZW5kcyBvbiBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzU4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzM9Y29uZmlnIE5UQl9ORVRERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozNzU6XFx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzYtXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzc9Y29uZmlnIFJJT05FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzc4LVxcdHRyaXN0YXRlIFxcXCJSYXBpZElPIEV0aGVybmV0IG92ZXIgbWVzc2FnaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc5OlxcdGRlcGVuZHMgb24gUkFQSURJT1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzgxPWNvbmZpZyBSSU9ORVRfVFhfU0laRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzgyLVxcdGludCBcXFwiTnVtYmVyIG9mIG91dGJvdW5kIHF1ZXVlIGVudHJpZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozODM6XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4NC1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM4Nj1jb25maWcgUklPTkVUX1JYX1NJWkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Ny1cXHRpbnQgXFxcIk51bWJlciBvZiBpbmJvdW5kIHF1ZXVlIGVudHJpZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozODg6XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4OS1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM5MT1jb25maWcgVFVOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTItXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCBUVU4vVEFQIGRldmljZSBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjM5MzpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM5NC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBuZXR3b3JrIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0NTpcXHRkZXBlbmRzIG9uIFZJUlRJT1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ2LVxcdHNlbGVjdCBORVRfRkFJTE9WRVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ2NC1cXHRib29sIFxcXCJCUEYtcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDY1OlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ2Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ3Mj1jb25maWcgTkVUX1ZSRlxcbmRyaXZlcnMvbmV0L0tjb25maWctNDczLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFJvdXRpbmcgYW5kIEZvcndhcmRpbmcgKExpdGUpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc0OlxcdGRlcGVuZHMgb24gSVBfTVVMVElQTEVfVEFCTEVTXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzU6XFx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc2OlxcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVMgfHwgSVBWNj1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODE9Y29uZmlnIFZTT0NLTU9OXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00ODItXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0ODM6XFx0ZGVwZW5kcyBvbiBWSE9TVF9WU09DS1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDg0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDg5PWNvbmZpZyBNSElfTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00OTAtXFx0dHJpc3RhdGUgXFxcIk1ISSBuZXR3b3JrIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ5MTpcXHRkZXBlbmRzIG9uIE1ISV9CVVNcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ5Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU0ND1jb25maWcgWEVOX05FVERFVl9GUk9OVEVORFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ1LVxcdHRyaXN0YXRlIFxcXCJYZW4gbmV0d29yayBkZXZpY2UgZnJvbnRlbmQgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTQ2OlxcdGRlcGVuZHMgb24gWEVOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXFx0c2VsZWN0IFhFTl9YRU5CVVNfRlJPTlRFTkRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTYyPWNvbmZpZyBYRU5fTkVUREVWX0JBQ0tFTkRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU2My1cXHR0cmlzdGF0ZSBcXFwiWGVuIGJhY2tlbmQgbmV0d29yayBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1NjQ6XFx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTY1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTg0PWNvbmZpZyBWTVhORVQzXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODUtXFx0dHJpc3RhdGUgXFxcIlZNd2FyZSBWTVhORVQzIGV0aGVybmV0IGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NjpcXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODc6XFx0ZGVwZW5kcyBvbiBQQUdFX1NJWkVfTEVTU19USEFOXzY0S0JcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xcbmRyaXZlcnMvbmV0L0tjb25maWctNTk1LVxcdHRyaXN0YXRlIFxcXCJGVUpJVFNVIEV4dGVuZGVkIFNvY2tldCBOZXR3b3JrIERldmljZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1OTY6XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01OTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDY6XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA3OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA4OlxcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwOTpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTAtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjUwLjYzNjM3MjQ3OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzYwMzUwMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEJvbmRpbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gdGhlIGJvbmRpbmcgZHJpdmVyJ3MgZnVuY3Rpb25hbGl0eSBzZWVtcyBjb250aW5nZW50IG9uIGBJTkVUYCBiZWluZyBlbmFibGVkLCBhbmQgdGhlbiBlaXRoZXIgYFRMU2Agb3IsIGlmIFRMUyBpcyBkaXNhYmxlZCwgdGhlIGBUTFNfREVWSUNFYCBmbGFnIG5lZWRzIHRvIGJlIHNldCB0byAnbicuIEVzc2VudGlhbGx5LCBpZiBJJ20gdW5kZXJzdGFuZGluZyB0aGlzIGNvcnJlY3RseSwgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBzaG91bGQgYmUgdW5kZXIgdGhlIGBCT05ESU5HYCBjb25maWcgb3B0aW9uLlxuXG5IYW5nIG9uIGEgc2Vjb25k4oCmIHRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCwgc3BlY2lmaWNhbGx5LCBpcyBpbiBgZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jYC4gVGhhdCBtYWtlcyBtZSB3b25kZXIgaWYgdGhlcmUncyBhIG1vcmUgZ3JhbnVsYXIgY29uZmlndXJhdGlvbiBvcHRpb24gc3BlY2lmaWMgdG8gODAyLjNhZCBsaW5rIGFnZ3JlZ2F0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGVgIHRvIHNlZSBpZiBpdCBkZWZpbmVzIGFueSBleHRyYSBjb25maWcgc3BlY2lmaWMgdG8gdGhhdCBtb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTA4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzg6NTMuOTk2NzM3NzE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDcyODk3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJib25kXzNhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfQk9ORElORykgKz0gYm9uZGluZy5vXFxuZHJpdmVycy9uZXQvYm9uZGluZy9NYWtlZmlsZS03LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvTWFrZWZpbGU6ODpib25kaW5nLW9ianMgOj0gYm9uZF9tYWluLm8gYm9uZF8zYWQubyBib25kX2FsYi5vIGJvbmRfc3lzZnMubyBib25kX3N5c2ZzX3NsYXZlLm8gYm9uZF9kZWJ1Z2ZzLm8gYm9uZF9uZXRsaW5rLm8gYm9uZF9vcHRpb25zLm9cXG5kcml2ZXJzL25ldC9ib25kaW5nL01ha2VmaWxlLTktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM4OjU0LjA0MTQ3Mjc0OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjIzNDYzMzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRlYnVnZ2luZyB0aGUgQm9uZGluZyBEcml2ZXIncyBDb21waWxhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBpbW1lZGlhdGUgY29uY2VybiBpcyBgYm9uZF8zYWQub2Ag4oCTIHRoYXQgbW9kdWxlIGlzICphbHdheXMqIGJ1aWx0IHdoZW4gYENPTkZJR19CT05ESU5HYCBpcyBzZXQuIFRoYXQncyBnb29kIHRvIGtub3csIGVsaW1pbmF0aW5nIG9uZSBwb3RlbnRpYWwgYXZlbnVlIG9mIGludmVzdGlnYXRpb24uIE5vdywgbGV0J3MgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29kZSBjaGFuZ2VzLiBUaGUgcGF0Y2ggYWZmZWN0cyBgYWRfbXV4X21hY2hpbmVgIGFuZCBgYWRfaW5pdGlhbGl6ZV9wb3J0YC4gR290IGl0LiBIbW0sIGBhZF9tdXhfbWFjaGluZWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGlzIGZpbmUsIGJ1dCBtZWFucyBpdHMgZGlyZWN0IGNhbGxzIG1pZ2h0IGJlIGZldy4gVGltZSB0byBtYXAgb3V0IHRoZSA4MDIuM2FkIGVudHJ5IHBvaW50cyBpbnRvIHRoZSBib25kaW5nIGRyaXZlci4gRmlndXJpbmcgb3V0IGhvdyB0aGVzZSBjaGFuZ2VzIGludGVyYWN0IHdpdGggdGhlIGJyb2FkZXIgODAyLjNhZCBzdGF0ZSBtYWNoaW5lIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIEZyb20gdGhlIGRyaXZlciwgdG8gdGhlIGtlcm5lbCwgdG8gdGhlIHVzZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozODo1Ny42NjQ5MzkzMDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDEwNjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFkX211eF9tYWNoaW5lXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9OTY9c3RhdGljIGludCBhZF9tYXJrZXJfc2VuZChzdHJ1Y3QgcG9ydCAqcG9ydCwgc3RydWN0IGJvbmRfbWFya2VyICptYXJrZXIpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzo5NzpzdGF0aWMgdm9pZCBhZF9tdXhfbWFjaGluZShzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCAqdXBkYXRlX3NsYXZlX2Fycik7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTk4LXN0YXRpYyB2b2lkIGFkX3J4X21hY2hpbmUoc3RydWN0IGxhY3BkdSAqbGFjcGR1LCBzdHJ1Y3QgcG9ydCAqcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MTAzMT1zdGF0aWMgdm9pZCBhZF9jb25kX3NldF9wZWVyX25vdGlmKHN0cnVjdCBwb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwMzktLyoqXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjEwNDA6ICogYWRfbXV4X21hY2hpbmUgLSBoYW5kbGUgYSBwb3J0J3MgbXV4IHN0YXRlIG1hY2hpbmVcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMTA0MS0gKiBAcG9ydDogdGhlIHBvcnQgd2UncmUgbG9va2luZyBhdFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNDMtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjEwNDQ6c3RhdGljIHZvaWQgYWRfbXV4X21hY2hpbmUoc3RydWN0IHBvcnQgKnBvcnQsIGJvb2wgKnVwZGF0ZV9zbGF2ZV9hcnIpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTEwNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTI1NTI9dm9pZCBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2MDMtXFx0XFx0YWRfcG9ydF9zZWxlY3Rpb25fbG9naWMocG9ydCwgXFx1MDAyNnVwZGF0ZV9zbGF2ZV9hcnIpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNjA0OlxcdFxcdGFkX211eF9tYWNoaW5lKHBvcnQsIFxcdTAwMjZ1cGRhdGVfc2xhdmVfYXJyKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjYwNS1cXHRcXHRhZF90eF9tYWNoaW5lKHBvcnQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozODo1Ny43MTA5NTU4M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTE0NzY0NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipDb25zaWRlcmluZyBQb3RlbnRpYWwgRm9jdXMgUG9pbnRzIGZvciBTeXN0ZW0gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdG8gc3RhcnQgcmVhbGx5IGRpZ2dpbmcgaW50byB0aGlzIHN5c3RlbS4gYGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcmAgZmVlbHMgbGlrZSBhIGdvb2QsIHNvbGlkIGZvY2FsIHBvaW50LiBJdCdzIHByb2JhYmx5IGNlbnRyYWwgdG8gYSBzaWduaWZpY2FudCBjaHVuayBvZiB0aGUgYm9uZCBtYW5hZ2VtZW50IGxvZ2ljLCBhbmQgdW5kZXJzdGFuZGluZyBpdCB3b3VsZCBnaXZlIG1lIGEgYnJvYWQgb3ZlcnZpZXcgb2YgaG93IHRoYXQgcGFydCBvZiB0aGUgc3lzdGVtIHdvcmtzLiBCdXQsIHRoZW4gSSBzdGFydGVkIHdvbmRlcmluZy4uLiB3aGF0IGFib3V0IGBhZF9pbml0aWFsaXplX3BvcnRgPyBJcyB0aGF0IGFub3RoZXIgY3J1Y2lhbCBlbnRyeSBwb2ludD8gSXQgY291bGQgYmUgdGhlIGZpcnN0IGNyaXRpY2FsIHN0ZXAgdG8gcG9ydCBpbml0aWFsaXphdGlvbiwgYmVmb3JlIGl0IGdldHMgdG8gdGhlIHN0YXRlIG1hY2hpbmUsIHdoaWNoIHN1Z2dlc3RzIGEgZGlmZmVyZW50IGJ1dCBlcXVhbGx5IGltcG9ydGFudCBwZXJzcGVjdGl2ZS4gSSBuZWVkIHRvIGNvbnNpZGVyIGJvdGgsIGFuZCBwZXJoYXBzIHRoZSBpbnRlcnJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzMDQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozOTowMC42MjU3MjI0NTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzgwNzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFkX2luaXRpYWxpemVfcG9ydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTEwNT1zdGF0aWMgdm9pZCBhZF9pbml0aWFsaXplX2FnZyhzdHJ1Y3QgYWdncmVnYXRvciAqYWdncmVnYXRvcik7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjEwNjpzdGF0aWMgdm9pZCBhZF9pbml0aWFsaXplX3BvcnQoc3RydWN0IHBvcnQgKnBvcnQsIGNvbnN0IHN0cnVjdCBib25kX3BhcmFtcyAqYm9uZF9wYXJhbXMpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xMDctc3RhdGljIHZvaWQgYWRfZW5hYmxlX2NvbGxlY3Rpbmcoc3RydWN0IHBvcnQgKnBvcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIwMTQ9c3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9hZ2coc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZ3JlZ2F0b3IpXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjAyNS0vKipcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjAyNjogKiBhZF9pbml0aWFsaXplX3BvcnQgLSBpbml0aWFsaXplIGEgZ2l2ZW4gcG9ydCdzIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjAyNy0gKiBAcG9ydDogdGhlIHBvcnQgd2UncmUgbG9va2luZyBhdFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIwMjktICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIwMzA6c3RhdGljIHZvaWQgYWRfaW5pdGlhbGl6ZV9wb3J0KHN0cnVjdCBwb3J0ICpwb3J0LCBjb25zdCBzdHJ1Y3QgYm9uZF9wYXJhbXMgKmJvbmRfcGFyYW1zKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMDMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yMjc1PXZvaWQgYm9uZF8zYWRfYmluZF9zbGF2ZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyODYtXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyODc6XFx0XFx0YWRfaW5pdGlhbGl6ZV9wb3J0KHBvcnQsIFxcdTAwMjZib25kLVxcdTAwM2VwYXJhbXMpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjg4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozOTowMC42NzA1MDYyMjJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg0Mzg3NzM5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgYGJvbmRfM2FkX2JpbmRfc2xhdmVgIOKAkyB0aGF0J3MgYSBzb2xpZCwgY29uY2lzZSBzeW1ib2wgdG8gemVybyBpbiBvbi4gSXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBjcml0aWNhbCBwaWVjZSBvZiA4MDIuM2FkIGNvbmZpZ3VyYXRpb24uIEdpdmVuIG15IGV4cGVydGlzZSwgSSBpbnN0YW50bHkgdGhpbmssIFwiV2hlcmUgZWxzZSBpbiB0aGUgc3lzdGVtIGlzIHRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBvZiA4MDIuM2FkIHRvdWNoZWQ/XCIgTXkgZ29hbCBpcyB0byBtYXAgdGhlIGVudHJ5IHBvaW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYWxsIHRoZSBwb3RlbnRpYWwgcGF0aHdheXMsIGNhbGxzLCBhbmQgY29udGV4dHMgcmVsYXRlZCB0byA4MDIuM2FkLiBBcmUgdGhlcmUgb3RoZXIgZnVuY3Rpb25zIG9yIG1vZHVsZXMgdGhhdCBpbnRlcmFjdCB3aXRoIGl0PyBJJ2xsIG5lZWQgdG8gaWRlbnRpZnkgYWxsIHBvc3NpYmxlIHBvaW50cyBvZiBjb250YWN0IHdpdGggdGhlIHdpZGVyIG5ldHdvcmsgc3RhY2sgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlLiBMZXQncyBzZWUgd2hhdCBlbHNlIGlzIG91dCB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTU3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDg6Mzk6MDcuNTE0Mzg2ODI5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTYzMDE3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJib25kXzNhZF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0xODY2PXN0YXRpYyB2b2lkIGFkX2FnZ19zZWxlY3Rpb25fbG9naWMoc3RydWN0IGFnZ3JlZ2F0b3IgKmFnZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xOTgxLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoxOTgyOlxcdGJvbmRfM2FkX3NldF9jYXJyaWVyKGJvbmQpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0xOTgzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yMTE5PXN0YXRpYyB2b2lkIGFkX2Rpc2FibGVfZGlzdHJpYnV0aW5nKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sICp1cGRhdGVfc2xhdmVfYXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIxMjgtXFx0XFx0X19kaXNhYmxlX2Rpc3RyaWJ1dGluZ19wb3J0KHBvcnQpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMTI5OlxcdFxcdGJvbmRfM2FkX3NldF9jYXJyaWVyKHBvcnQtXFx1MDAzZXNsYXZlLVxcdTAwM2Vib25kKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjEzMC1cXHRcXHQvKiBTbGF2ZSBhcnJheSBuZWVkcyBhbiB1cGRhdGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yMTQyPXN0YXRpYyB2b2lkIGFkX2VuYWJsZV9jb2xsZWN0aW5nX2Rpc3RyaWJ1dGluZyhzdHJ1Y3QgcG9ydCAqcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMTUyLVxcdFxcdF9fZW5hYmxlX3BvcnQocG9ydCk7XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIxNTM6XFx0XFx0Ym9uZF8zYWRfc2V0X2NhcnJpZXIocG9ydC1cXHUwMDNlc2xhdmUtXFx1MDAzZWJvbmQpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMTU0LVxcdFxcdC8qIFNsYXZlIGFycmF5IG5lZWRzIHVwZGF0ZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jPTIxNjY9c3RhdGljIHZvaWQgYWRfZGlzYWJsZV9jb2xsZWN0aW5nX2Rpc3RyaWJ1dGluZyhzdHJ1Y3QgcG9ydCAqcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMTc2LVxcdFxcdF9fZGlzYWJsZV9wb3J0KHBvcnQpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMTc3OlxcdFxcdGJvbmRfM2FkX3NldF9jYXJyaWVyKHBvcnQtXFx1MDAzZXNsYXZlLVxcdTAwM2Vib25kKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjE3OC1cXHRcXHQvKiBTbGF2ZSBhcnJheSBuZWVkcyBhbiB1cGRhdGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYz0yMjE3PXN0YXRpYyB2b2lkIGFkX21hcmtlcl9yZXNwb25zZV9yZWNlaXZlZChzdHJ1Y3QgYm9uZF9tYXJrZXIgKm1hcmtlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjMxLS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjMyOiAqIGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24gLSBpbml0YXRlIGFnZ3JlZ2F0b3Igc2VsZWN0aW9uXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyMzMtICogQGJvbmQ6IGJvbmRpbmcgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjIzOS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjI0MDp2b2lkIGJvbmRfM2FkX2luaXRpYXRlX2FnZ19zZWxlY3Rpb24oc3RydWN0IGJvbmRpbmcgKmJvbmQsIGludCB0aW1lb3V0KVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjQxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjQ1LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjQ2OiAqIGJvbmRfM2FkX2luaXRpYWxpemUgLSBpbml0aWFsaXplIGEgYm9uZCdzIDgwMi4zYWQgcGFyYW1ldGVycyBhbmQgc3RydWN0dXJlc1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjQ3LSAqIEBib25kOiBib25kaW5nIHN0cnVjdCB0byB3b3JrIG9uXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjI1MC0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjI1MTp2b2lkIGJvbmRfM2FkX2luaXRpYWxpemUoc3RydWN0IGJvbmRpbmcgKmJvbmQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNjItXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNjM6XFx0Ym9uZF8zYWRfaW5pdGlhdGVfYWdnX3NlbGVjdGlvbihib25kLFxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjY0LVxcdFxcdFxcdFxcdFxcdEFEX0FHR1JFR0FUT1JfU0VMRUNUSU9OX1RJTUVSICpcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yMjY4LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyMjY5OiAqIGJvbmRfM2FkX2JpbmRfc2xhdmUgLSBpbml0aWFsaXplIGEgc2xhdmUncyBwb3J0XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNzAtICogQHNsYXZlOiBzbGF2ZSBzdHJ1Y3QgdG8gd29yayBvblxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNzQtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIyNzU6dm9pZCBib25kXzNhZF9iaW5kX3NsYXZlKHN0cnVjdCBzbGF2ZSAqc2xhdmUpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIyNzYte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjEtLyoqXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIzMjI6ICogYm9uZF8zYWRfdW5iaW5kX3NsYXZlIC0gZGVpbml0aWFsaXplIGEgc2xhdmUncyBwb3J0XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjMtICogQHNsYXZlOiBzbGF2ZSBzdHJ1Y3QgdG8gd29yayBvblxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTIzMjgtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjIzMjk6dm9pZCBib25kXzNhZF91bmJpbmRfc2xhdmUoc3RydWN0IHNsYXZlICpzbGF2ZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjMzMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjMzOC1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjMzOTpcXHQvKiBTeW5jIGFnYWluc3QgYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyKCkgKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjM0MC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmJvbmQtXFx1MDAzZW1vZGVfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ4NS0vKipcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjQ4NjogKiBib25kXzNhZF91cGRhdGVfYWRfYWN0b3Jfc2V0dGluZ3MgLSByZWZsZWN0IGNoYW5nZSBvZiBhY3RvciBzZXR0aW5ncyB0byBwb3J0c1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNDg3LSAqIEBib25kOiBib25kaW5nIHN0cnVjdCB0byB3b3JrIG9uXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ5MS0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjQ5Mjp2b2lkIGJvbmRfM2FkX3VwZGF0ZV9hZF9hY3Rvcl9zZXR0aW5ncyhzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjQ5My17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjUyMz1zdGF0aWMgYm9vbCBib25kX2FnZ190aW1lcl9hZHZhbmNlKHN0cnVjdCBib25kaW5nICpib25kKVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI1MzktLyoqXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI1NDA6ICogYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyIC0gaGFuZGxlIHN0YXRlIG1hY2hpbmVzIHRpbWVvdXRcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjU0MS0gKiBAd29yazogd29yayBjb250ZXh0IHRvIGZldGNoIGJvbmRpbmcgc3RydWN0IHRvIHdvcmsgb24gZnJvbVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI1NTEtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI1NTI6dm9pZCBib25kXzNhZF9zdGF0ZV9tYWNoaW5lX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTYzLVxcdC8qIExvY2sgdG8gcHJvdGVjdCBkYXRhIGFjY2Vzc2VkIGJ5IGFsbCAoZS5nLiwgcG9ydC1cXHUwMDNlc21fdmFycykgYW5kXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI1NjQ6XFx0ICogYWdhaW5zdCBydW5uaW5nIHdpdGggYm9uZF8zYWRfdW5iaW5kX3NsYXZlLiBhZF9yeF9tYWNoaW5lIG1heSBydW5cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjU2NS1cXHQgKiBjb25jdXJyZW50bHkgZHVlIHRvIGluY29taW5nIExBQ1BEVSBhcyB3ZWxsLlxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI1ODgtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNTg5OlxcdFxcdGJvbmRfM2FkX3NldF9jYXJyaWVyKGJvbmQpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNTkwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNjMzLS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNjM0OiAqIGJvbmRfM2FkX3J4X2luZGljYXRpb24gLSBoYW5kbGUgYSByZWNlaXZlZCBmcmFtZVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNjM1LSAqIEBsYWNwZHU6IHJlY2VpdmVkIGxhY3BkdVxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI2NDEtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI2NDI6c3RhdGljIGludCBib25kXzNhZF9yeF9pbmRpY2F0aW9uKHN0cnVjdCBsYWNwZHUgKmxhY3BkdSwgc3RydWN0IHNsYXZlICpzbGF2ZSlcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjY0My17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM9MjcxMz1zdGF0aWMgdm9pZCBhZF91cGRhdGVfYWN0b3Jfa2V5cyhzdHJ1Y3QgcG9ydCAqcG9ydCwgYm9vbCByZXNldClcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzQ5LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNzUwOiAqIGJvbmRfM2FkX2FkYXB0ZXJfc3BlZWRfZHVwbGV4X2NoYW5nZWQgLSBoYW5kbGUgYSBzbGF2ZSdzIHNwZWVkIC8gZHVwbGV4XFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3NTEtICogY2hhbmdlIGluZGljYXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzU2LSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNzU3OnZvaWQgYm9uZF8zYWRfYWRhcHRlcl9zcGVlZF9kdXBsZXhfY2hhbmdlZChzdHJ1Y3Qgc2xhdmUgKnNsYXZlKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzU4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yNzc3LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyNzc4OiAqIGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZSAtIGhhbmRsZSBhIHNsYXZlJ3MgbGluayBzdGF0dXMgY2hhbmdlIGluZGljYXRpb25cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjc3OS0gKiBAc2xhdmU6IHNsYXZlIHN0cnVjdCB0byB3b3JrIG9uXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjc4My0gKi9cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Mjc4NDp2b2lkIGJvbmRfM2FkX2hhbmRsZV9saW5rX2NoYW5nZShzdHJ1Y3Qgc2xhdmUgKnNsYXZlLCBjaGFyIGxpbmspXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI3ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4MjktLyoqXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI4MzA6ICogYm9uZF8zYWRfc2V0X2NhcnJpZXIgLSBzZXQgbGluayBzdGF0ZSBmb3IgYm9uZGluZyBtYXN0ZXJcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjgzMS0gKiBAYm9uZDogYm9uZGluZyBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODQxLSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyODQyOmludCBib25kXzNhZF9zZXRfY2FycmllcihzdHJ1Y3QgYm9uZGluZyAqYm9uZClcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjg0My17XFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjg3Ni0vKipcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6Mjg3NzogKiBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8gLSBnZXQgaW5mb3JtYXRpb24gb2YgdGhlIGFjdGl2ZSBhZ2dyZWdhdG9yXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4NzgtICogQGJvbmQ6IGJvbmRpbmcgc3RydWN0IHRvIHdvcmsgb25cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yODgzLSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyODg0OmludCBfX2JvbmRfM2FkX2dldF9hY3RpdmVfYWdnX2luZm8oc3RydWN0IGJvbmRpbmcgKmJvbmQsXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI4ODUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pXFxuLS1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkxMi1cXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmM6MjkxMzppbnQgYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhzdHJ1Y3QgYm9uZGluZyAqYm9uZCwgc3RydWN0IGFkX2luZm8gKmFkX2luZm8pXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5MTctXFx0cmN1X3JlYWRfbG9jaygpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTE4OlxcdHJldCA9IF9fYm9uZF8zYWRfZ2V0X2FjdGl2ZV9hZ2dfaW5mbyhib25kLCBhZF9pbmZvKTtcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkxOS1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTIzLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTI0OmludCBib25kXzNhZF9sYWNwZHVfcmVjdihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYm9uZGluZyAqYm9uZCxcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjkyNS1cXHRcXHRcXHQgc3RydWN0IHNsYXZlICpzbGF2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTQxLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTQyOlxcdHJldHVybiBib25kXzNhZF9yeF9pbmRpY2F0aW9uKGxhY3BkdSwgc2xhdmUpO1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTQzLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTQ1LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTQ2OiAqIGJvbmRfM2FkX3VwZGF0ZV9sYWNwX3JhdGUgLSBjaGFuZ2UgdGhlIGxhY3AgcmF0ZVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTQ3LSAqIEBib25kOiBib25kaW5nIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTI5NTUtICovXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjI5NTY6dm9pZCBib25kXzNhZF91cGRhdGVfbGFjcF9yYXRlKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTc1LS8qKlxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTc2OiAqIGJvbmRfM2FkX3VwZGF0ZV9sYWNwX2FjdGl2ZSAtIGNoYW5nZSB0aGUgbGFjcCBhY3RpdmVcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMjk3Ny0gKiBAYm9uZDogYm9uZGluZyBzdHJ1Y3RcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTgwLSAqL1xcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzoyOTgxOnZvaWQgYm9uZF8zYWRfdXBkYXRlX2xhY3BfYWN0aXZlKHN0cnVjdCBib25kaW5nICpib25kKVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYy0yOTk5LVxcbmRyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuYzozMDAwOnNpemVfdCBib25kXzNhZF9zdGF0c19zaXplKHZvaWQpXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTMwMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jLTMwMTItXFxuZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jOjMwMTM6aW50IGJvbmRfM2FkX3N0YXRzX2ZpbGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJvbmRfM2FkX3N0YXRzICpzdGF0cylcXG5kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMtMzAxNC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM5OjA3LjU2MDAyMzkwOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDI4OTQwOTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBsZXQncyBzZWUuIEkgbmVlZCB0byBpZGVudGlmeSBzb21lIGdvb2Qgc3ltYm9scyB3aXRoaW4gdGhlIGJvbmRpbmcgY29kZSB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuIEJhc2VkIG9uIG15IGluaXRpYWwgc2NhbiwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbG9vayBsaWtlIHByb21pc2luZyB0YXJnZXRzOiBgYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyYCwgYGJvbmRfM2FkX2JpbmRfc2xhdmVgLCBgYm9uZF8zYWRfdW5iaW5kX3NsYXZlYCwgYW5kIGBib25kXzNhZF9sYWNwZHVfcmVjdmAuIEkndmUgY29uZmlybWVkIHRoYXQgdGhlc2UgYXJlIGFsbCBub24tc3RhdGljIGZ1bmN0aW9ucywgc28gdGhhdCdzIGEgZ29vZCBmaXJzdCBjaGVjaywgY29uZmlybWluZyB0aGV5J3JlIHZpc2libGUgb3V0c2lkZSB0aGVpciBjb21waWxhdGlvbiB1bml0LlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJcyBgQk9ORElOR2AgdGhlIHByaW1hcnkgY29uZmlnPyBZZXMsIGFuZCBpdCBhbHNvIHJlbGllcyBvbiBgSU5FVGAgYW5kIGVpdGhlciBgVExTYCBvciBgVExTX0RFVklDRT1uYC4gRmluZSwgdGhhdCBoZWxwcyBuYXJyb3cgdGhlIGJ1aWxkLiBJJ2xsIGluY2x1ZGUgYEJPTkRJTkdgIGRpcmVjdGx5IGluIG15IGZ1enppbmcgc2V0dXAuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGUgcHJvcG9zZWQgcGF0Y2ggbm93LiBBaCwgdGhpcyBuZXcgY29kZTpcblxuYGBgY1xuIFx0YWdncmVnYXRvciA9IHJjdV9kZXJlZmVyZW5jZShwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IpO1xuK1x0aWYgKCFhZ2dyZWdhdG9yKVxuK1x0XHRyZXR1cm47XG5gYGBcblxuVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gSXQgYWRkcyBhIG51bGwgcG9pbnRlciBjaGVjayBhZnRlciBkZXJlZmVyZW5jaW5nIGBwb3J0LVx1MDAzZWFnZ3JlZ2F0b3JgLiBUaGlzIHBhdGNoIHNlZW1zIGxpa2UgYSBjbGVhciBhZGRpdGlvbiB0byBwcmV2ZW50IGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgd2hpY2ggaXMgZ29vZCBmb3Igc3RhYmlsaXR5LiBUaGlzIGtpbmQgb2YgcGF0Y2ggaXMgY2VydGFpbmx5IHdvcnRoIGZ1enppbmcsIGFzIGl0IGxpa2VseSBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS5cblxuU28sIHRvIHN1bW1hcml6ZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gaXMgYEJPTkRJTkdgLCBhbmQgbXkgZm9jdXMgc3ltYm9scyBhcmUgc3RpbGwgYGJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlcmAsIGBib25kXzNhZF9iaW5kX3NsYXZlYCwgYGJvbmRfM2FkX3VuYmluZF9zbGF2ZWAsIGFuZCBgYm9uZF8zYWRfbGFjcGR1X3JlY3ZgLiBUaW1lIHRvIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODUyLCJPdXRwdXRUb2tlbnMiOjE0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozOToxNC41ODg5NjczNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NTE2NjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCT05ESU5HXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm9uZF8zYWRfc3RhdGVfbWFjaGluZV9oYW5kbGVyXCIsXG4gICAgXCJib25kXzNhZF9iaW5kX3NsYXZlXCIsXG4gICAgXCJib25kXzNhZF91bmJpbmRfc2xhdmVcIixcbiAgICBcImJvbmRfM2FkX2xhY3BkdV9yZWN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gdGhlIDgwMi4zYWQgKExBQ1ApIHN0YXRlIG1hY2hpbmUgb2YgdGhlIGJvbmRpbmcgZHJpdmVyLiBUaGUgYm9uZGluZyBkcml2ZXIgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNyZWF0aW5nIGEgYm9uZCBpbnRlcmZhY2UgYW5kIGFkZGluZyBzbGF2ZXMuIFRoZSBMQUNQIHN0YXRlIG1hY2hpbmUgcnVucyBwZXJpb2RpY2FsbHkgb3Igb24gZXZlbnRzLCBtYWtpbmcgdGhpcyBhIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjaGFuZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQk9ORElOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJvbmRfM2FkX3N0YXRlX21hY2hpbmVfaGFuZGxlclwiLFxuICAgIFwiYm9uZF8zYWRfYmluZF9zbGF2ZVwiLFxuICAgIFwiYm9uZF8zYWRfdW5iaW5kX3NsYXZlXCIsXG4gICAgXCJib25kXzNhZF9sYWNwZHVfcmVjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSA4MDIuM2FkIChMQUNQKSBzdGF0ZSBtYWNoaW5lIG9mIHRoZSBib25kaW5nIGRyaXZlci4gVGhlIGJvbmRpbmcgZHJpdmVyIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjcmVhdGluZyBhIGJvbmQgaW50ZXJmYWNlIGFuZCBhZGRpbmcgc2xhdmVzLiBUaGUgTEFDUCBzdGF0ZSBtYWNoaW5lIHJ1bnMgcGVyaW9kaWNhbGx5IG9yIG9uIGV2ZW50cywgbWFraW5nIHRoaXMgYSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY2hhbmdlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozOToxNC42Njg0OTExMjhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NDY1MjIzNzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozOToxNC42Njg5OTY2MzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzY0NjAxMjY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ5IGFkZGluZyBhIGNoZWNrIGZvciBgYWdncmVnYXRvcmAgYmVpbmcgTlVMTCBpbiBgYWRfbXV4X21hY2hpbmVgIGFuZCB1c2luZyBgUkNVX0lOSVRfUE9JTlRFUmAgdG8gaW5pdGlhbGl6ZSBgcG9ydC1cXHUwMDNlYWdncmVnYXRvcmAgdG8gTlVMTCBpbiBgYWRfaW5pdGlhbGl6ZV9wb3J0YC4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChsaWtlIHBhZ2UgZmF1bHRzKSBhbmQgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgc3VjaCBhcyByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMgb3IgbGVha2luZyBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzOTVkNGJhYzM1Mzc5MDcyYWI4NmU1ZTIzZmNjNDAwZjdmNWUyNDliXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDg6Mzg6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmMgYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcbmluZGV4IGFjYmJhMDhkYmRmYWQuLmM0ZGZjYWZjZmYyNjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfM2FkLmNcbisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF8zYWQuY1xuQEAgLTEwNTMsNiArMTA1Myw5IEBAIHN0YXRpYyB2b2lkIGFkX211eF9tYWNoaW5lKHN0cnVjdCBwb3J0ICpwb3J0LCBib29sICp1cGRhdGVfc2xhdmVfYXJyKVxuIFx0bGFzdF9zdGF0ZSA9IHBvcnQtXHUwMDNlc21fbXV4X3N0YXRlO1xuIFxuIFx0YWdncmVnYXRvciA9IHJjdV9kZXJlZmVyZW5jZShwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IpO1xuK1x0aWYgKCFhZ2dyZWdhdG9yKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRpZiAocG9ydC1cdTAwM2VzbV92YXJzIFx1MDAyNiBBRF9QT1JUX0JFR0lOKSB7XG4gXHRcdHBvcnQtXHUwMDNlc21fbXV4X3N0YXRlID0gQURfTVVYX0RFVEFDSEVEO1xuIFx0fSBlbHNlIHtcbkBAIC0yMDcyLDcgKzIwNzUsNyBAQCBzdGF0aWMgdm9pZCBhZF9pbml0aWFsaXplX3BvcnQoc3RydWN0IHBvcnQgKnBvcnQsIGNvbnN0IHN0cnVjdCBib25kX3BhcmFtcyAqYm9uZFxuIFx0XHRwb3J0LVx1MDAzZXNtX211eF9zdGF0ZSA9IDA7XG4gXHRcdHBvcnQtXHUwMDNlc21fbXV4X3RpbWVyX2NvdW50ZXIgPSAwO1xuIFx0XHRwb3J0LVx1MDAzZXNtX3R4X3N0YXRlID0gMDtcbi1cdFx0cG9ydC1cdTAwM2VhZ2dyZWdhdG9yID0gTlVMTDtcbitcdFx0UkNVX0lOSVRfUE9JTlRFUihwb3J0LVx1MDAzZWFnZ3JlZ2F0b3IsIE5VTEwpO1xuIFx0XHRwb3J0LVx1MDAzZW5leHRfcG9ydF9pbl9hZ2dyZWdhdG9yID0gTlVMTDtcbiBcdFx0cG9ydC1cdTAwM2V0cmFuc2FjdGlvbl9pZCA9IDA7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwODozOToxNC42Njg5OTc0NDhaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY0NTk4OTg3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCb25kaW5nIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvYm9uZGluZy9ib25kXzNhZC5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBhZF9tdXhfbWFjaGluZWAgYW5kIGBhZF9pbml0aWFsaXplX3BvcnRgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBOVUxMIGNoZWNrcyBhbmQgcG9pbnRlciBpbml0aWFsaXphdGlvbi5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmaXggZm9yIGEgcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS4gVGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgYGFnZ3JlZ2F0b3JgIGJlaW5nIE5VTEwgd2l0aGluIGBhZF9tdXhfbWFjaGluZWAuICBUaGF0IGxpbmU6XG5gYGBjXG5cdGFnZ3JlZ2F0b3IgPSByY3VfZGVyZWZlcmVuY2UocG9ydC1cdTAwM2VhZ2dyZWdhdG9yKTtcblx0aWYgKCFhZ2dyZWdhdG9yKVxuXHRcdHJldHVybjtcbmBgYFxuaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcy4gQW5kIHRoZSBjaGFuZ2UgZnJvbSBgcG9ydC1cdTAwM2VhZ2dyZWdhdG9yID0gTlVMTDtgIHRvIGBSQ1VfSU5JVF9QT0lOVEVSKHBvcnQtXHUwMDNlYWdncmVnYXRvciwgTlVMTCk7YCBpbiBgYWRfaW5pdGlhbGl6ZV9wb3J0YCBpcyBhbHNvIHJlbGV2YW50LiBVc2luZyBgUkNVX0lOSVRfUE9JTlRFUmAgaXMgdGhlIGNvcnJlY3QgYXBwcm9hY2ggZm9yIGluaXRpYWxpemluZyBhbiBSQ1UtcHJvdGVjdGVkIHBvaW50ZXIsIHNvIHRoYXQncyBnb29kIHByYWN0aWNlLlxuXG5Ob3csIG15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSBwcmV0dHkgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHRoZSBrZXJuZWwncyBleGlzdGluZyBtZWNoYW5pc21zLCBsaWtlIHBhZ2UgZmF1bHRzIGFuZCBLQVNBTi4gIFdlJ3JlIG5vdCB0YWxraW5nIGFib3V0IGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBwb3RlbnRpYWwgaW5mb3JtYXRpb24gbGVha3MgaGVyZS4gU28sIG15IGluc3RpbmN0IGlzIHRoYXQgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGZvciB0aGlzIGZpeC5cblxuVG8gYmUgdGhvcm91Z2gsIEkgcXVpY2tseSBnbGFuY2VkIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpdGhpbiBgYWRfbXV4X21hY2hpbmVgLiAgYGFnZ3JlZ2F0b3JgIGlzIGEgcG9pbnRlciB0byBgc3RydWN0IGFnZ3JlZ2F0b3JgLCBzbyBpZiBpdCdzIE5VTEwsIHRoZSBmdW5jdGlvbiBqdXN0IHJldHVybnMuIFRoZSBsb2dpYyBpcyBzb3VuZCwgYW5kIGl0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuXG5cblNvLCBoZXJlJ3MgbXkgcmVhc29uaW5nLCBkaXN0aWxsZWQ6IFRoaXMgcGF0Y2ggcmVzb2x2ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHRoZSBib25kaW5nIGRyaXZlci4gIEl0IGFkZHMgYSBzYWZldHkgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBpbiBgYWRfbXV4X21hY2hpbmVgIGFuZCBjb3JyZWN0bHkgaW5pdGlhbGl6ZXMgYHBvcnQtXHUwMDNlYWdncmVnYXRvcmAgd2l0aCBgUkNVX0lOSVRfUE9JTlRFUmAuIFN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIHdpbGwgY2F0Y2ggYW55IHJlc3VsdGluZyBlcnJvcnMuICBUaGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmVzLiBUaGVyZWZvcmUsIGEgc3BlY2lhbGl6ZWQgS01TQU4gZnV6emluZyBjYW1wYWlnbiBpc24ndCB3YXJyYW50ZWQgaW4gdGhpcyBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTM3LCJPdXRwdXRUb2tlbnMiOjE0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA4OjM5OjIyLjMxNDk5MDc4MloiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ5IGFkZGluZyBhIGNoZWNrIGZvciBgYWdncmVnYXRvcmAgYmVpbmcgTlVMTCBpbiBgYWRfbXV4X21hY2hpbmVgIGFuZCB1c2luZyBgUkNVX0lOSVRfUE9JTlRFUmAgdG8gaW5pdGlhbGl6ZSBgcG9ydC1cXHUwMDNlYWdncmVnYXRvcmAgdG8gTlVMTCBpbiBgYWRfaW5pdGlhbGl6ZV9wb3J0YC4gTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBhcmUgcmVsaWFibHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIChsaWtlIHBhZ2UgZmF1bHRzKSBhbmQgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgc3VjaCBhcyByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCB2YXJpYWJsZXMgb3IgbGVha2luZyBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnkgYWRkaW5nIGEgY2hlY2sgZm9yIGBhZ2dyZWdhdG9yYCBiZWluZyBOVUxMIGluIGBhZF9tdXhfbWFjaGluZWAgYW5kIHVzaW5nIGBSQ1VfSU5JVF9QT0lOVEVSYCB0byBpbml0aWFsaXplIGBwb3J0LVxcdTAwM2VhZ2dyZWdhdG9yYCB0byBOVUxMIGluIGBhZF9pbml0aWFsaXplX3BvcnRgLiBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGFyZSByZWxpYWJseSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIG1lY2hhbmlzbXMgKGxpa2UgcGFnZSBmYXVsdHMpIGFuZCBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLCBzdWNoIGFzIHJlYWRpbmcgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHZhcmlhYmxlcyBvciBsZWFraW5nIGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowjzrwb[1] Phase: Succeeded StartedAt: 2026-08-17 08:39:34 +0000 UTC FinishedAt: 2026-08-17 08:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-17 08:39:34 +0000 UTC FinishedAt: 2026-08-17 08:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2] Phase: Succeeded StartedAt: 2026-08-17 08:39:34 +0000 UTC FinishedAt: 2026-08-17 12:23:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-17 08:39:34 +0000 UTC FinishedAt: 2026-08-17 12:23:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-17 08:39:34 +0000 UTC FinishedAt: 2026-08-17 08:39:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-17 08:39:34 +0000 UTC FinishedAt: 2026-08-17 08:39:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowjzrwb/series-workflowjzrwb-convert-artifact-1902949387/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-17 08:39:44 +0000 UTC FinishedAt: 2026-08-17 08:55:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-17 08:39:44 +0000 UTC FinishedAt: 2026-08-17 08:55:52 +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:*b4cba2d3-c4a8-492a-be37-f4a04bddbc2b,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-workflowjzrwb/series-workflowjzrwb-convert-artifact-1902949387/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": "bddbe3de-ca24-462a-a27e-87582342b659", "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-workflowjzrwb/series-workflowjzrwb-build-action-112242441/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-17 08:39:44 +0000 UTC FinishedAt: 2026-08-17 08:55:42 +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:*b4cba2d3-c4a8-492a-be37-f4a04bddbc2b,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-workflowjzrwb/series-workflowjzrwb-convert-artifact-1902949387/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": "bddbe3de-ca24-462a-a27e-87582342b659", "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-workflowjzrwb/series-workflowjzrwb-build-action-112242441/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-17 08:55:52 +0000 UTC FinishedAt: 2026-08-17 08:55:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-17 08:55:52 +0000 UTC FinishedAt: 2026-08-17 08:55:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-17 08:55:52 +0000 UTC FinishedAt: 2026-08-17 08:56:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-17 08:55:52 +0000 UTC FinishedAt: 2026-08-17 08:55:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowjzrwb/series-workflowjzrwb-convert-artifact-556074338/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-17 08:56:02 +0000 UTC FinishedAt: 2026-08-17 08:58:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-17 08:56:02 +0000 UTC FinishedAt: 2026-08-17 08:57:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bddbe3de-ca24-462a-a27e-87582342b659,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-workflowjzrwb/series-workflowjzrwb-build-action-112242441/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-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-17 08:58:06 +0000 UTC FinishedAt: 2026-08-17 08:58:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-17 08:58:06 +0000 UTC FinishedAt: 2026-08-17 08:58:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-17 08:58:06 +0000 UTC FinishedAt: 2026-08-17 09:17:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-17 08:58:06 +0000 UTC FinishedAt: 2026-08-17 09:17:42 +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:*b4cba2d3-c4a8-492a-be37-f4a04bddbc2b,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-workflowjzrwb/series-workflowjzrwb-convert-artifact-556074338/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": "f6ababa1-a6c8-4968-868b-ba194bc1fc71", "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-workflowjzrwb/series-workflowjzrwb-build-action-2166845878/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-17 08:58:06 +0000 UTC FinishedAt: 2026-08-17 09:17:32 +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:*b4cba2d3-c4a8-492a-be37-f4a04bddbc2b,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-workflowjzrwb/series-workflowjzrwb-convert-artifact-556074338/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": "f6ababa1-a6c8-4968-868b-ba194bc1fc71", "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-workflowjzrwb/series-workflowjzrwb-build-action-2166845878/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-17 09:17:42 +0000 UTC FinishedAt: 2026-08-17 09:17:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-17 09:17:42 +0000 UTC FinishedAt: 2026-08-17 09:17:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-17 09:17:42 +0000 UTC FinishedAt: 2026-08-17 09:19:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-17 09:17:42 +0000 UTC FinishedAt: 2026-08-17 09:19:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f6ababa1-a6c8-4968-868b-ba194bc1fc71,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjzrwb/series-workflowjzrwb-build-action-2166845878/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-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-17 09:19:49 +0000 UTC FinishedAt: 2026-08-17 12:23:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-17 09:19:49 +0000 UTC FinishedAt: 2026-08-17 12:23:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*bddbe3de-ca24-462a-a27e-87582342b659,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f6ababa1-a6c8-4968-868b-ba194bc1fc71,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjzrwb/series-workflowjzrwb-build-action-112242441/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjzrwb/series-workflowjzrwb-build-action-2166845878/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-17 09:19:49 +0000 UTC FinishedAt: 2026-08-17 09:20:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-17 09:19:49 +0000 UTC FinishedAt: 2026-08-17 09:19:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjzrwb/series-workflowjzrwb-convert-artifact-3618828951/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-17 09:19:49 +0000 UTC FinishedAt: 2026-08-17 09:19:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-17 09:19:49 +0000 UTC FinishedAt: 2026-08-17 09:19:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-17 09:19:49 +0000 UTC FinishedAt: 2026-08-17 09:19:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-17 09:20:00 +0000 UTC FinishedAt: 2026-08-17 12:23:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzrwb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bond_3ad_state_machine_handler","bond_3ad_bind_slave","bond_3ad_unbind_slave","bond_3ad_lacpdu_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44871eadd07a7f004aa00cb87399461eea08c630","config_name":"upstream-apparmor-kasan.config","enable_configs":["BONDING"],"series_id":"5757e25d-a367-41e7-a10e-4c1735842f59","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-17 09:20:00 +0000 UTC FinishedAt: 2026-08-17 12:23:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bddbe3de-ca24-462a-a27e-87582342b659,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f6ababa1-a6c8-4968-868b-ba194bc1fc71,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjzrwb/series-workflowjzrwb-build-action-112242441/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjzrwb/series-workflowjzrwb-build-action-2166845878/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjzrwb/series-workflowjzrwb-convert-artifact-3618828951/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}