Name: series-workflow58l6j Phase: Succeeded StartedAt: 2026-07-01 15:36:56 +0000 UTC FinishedAt: 2026-07-01 20:11:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[0] Phase: Succeeded StartedAt: 2026-07-01 15:36:56 +0000 UTC FinishedAt: 2026-07-01 15:54:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 15:36:56 +0000 UTC FinishedAt: 2026-07-01 15:54:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "1c664ec4b9ea827b609d296921ed5bad8a40a158", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACSEC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "1c664ec4b9ea827b609d296921ed5bad8a40a158", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACSEC" ], "series_id": "162a5013-75d4-4c59-b081-57eeec08bbd1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macsec_update_offload", "macsec_changelink_common", "macsec_fill_info" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1NFQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hY3NlY191cGRhdGVfb2ZmbG9hZCYjMzQ7LAogICAgJiMzNDttYWNzZWNfY2hhbmdlbGlua19jb21tb24mIzM0OywKICAgICYjMzQ7bWFjc2VjX2ZpbGxfaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGluIE1BQ3NlYyBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gaGFuZGxlcnMgYnkgYWRkaW5nIFJFQURfT05DRS9XUklURV9PTkNFLiBGdXp6aW5nIG5ldGxpbmsgbWVzc2FnZXMgdG8gTUFDc2VjIGludGVyZmFjZXMgY2FuIHZlcmlmeSB0aGF0IHRoZXNlIGNoYW5nZXMgcHJldmVudCB0aGUgZGF0YSByYWNlcyBhbmQgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTo1NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDg5YjhjN2VlMTkzZjEzYzJkYmZjZGE0M2I5ZTA3Y2ZmMjM0OGRmYTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDE1OjU0OjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3NlYy5jIGIvZHJpdmVycy9uZXQvbWFjc2VjLmNcbmluZGV4IGZiMDA5MTIwYTkyNDE1Li4xYTk2ODU5NmNhNDViOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3NlYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tYWNzZWMuY1xuQEAgLTI2MzYsNyAmIzQzOzI2MzYsNyBAQCBzdGF0aWMgaW50IG1hY3NlY191cGRhdGVfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHR2bGFuX2Ryb3BfcnhfY3RhZ19maWx0ZXJfaW5mbyhkZXYpO1xuIFx0XHR2bGFuX2Ryb3Bfcnhfc3RhZ19maWx0ZXJfaW5mbyhkZXYpO1xuIFx0fVxuLVx0bWFjc2VjLVx1MDAzZW9mZmxvYWQgPSBvZmZsb2FkO1xuJiM0MztcdFdSSVRFX09OQ0UobWFjc2VjLVx1MDAzZW9mZmxvYWQsIG9mZmxvYWQpO1xuIFx0LyogQWRkIFZMQU4gZmlsdGVycyB3aGVuIGVuYWJsaW5nIG9mZmxvYWQuICovXG4gXHRpZiAocHJldl9vZmZsb2FkID09IE1BQ1NFQ19PRkZMT0FEX09GRikge1xuIFx0XHRyZXQgPSB2bGFuX2dldF9yeF9jdGFnX2ZpbHRlcl9pbmZvKGRldik7XG5AQCAtMjY2Niw3ICYjNDM7MjY2Niw3IEBAIHN0YXRpYyBpbnQgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRyZXR1cm4gMDtcbiBcbiByb2xsYmFja19vZmZsb2FkOlxuLVx0bWFjc2VjLVx1MDAzZW9mZmxvYWQgPSBwcmV2X29mZmxvYWQ7XG4mIzQzO1x0V1JJVEVfT05DRShtYWNzZWMtXHUwMDNlb2ZmbG9hZCwgcHJldl9vZmZsb2FkKTtcbiBcdG1hY3NlY19vZmZsb2FkKG9wcy1cdTAwM2VtZG9fZGVsX3NlY3ksIFx1MDAyNmN0eCk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuQEAgLTM4NzUsNTIgJiM0MzszODc1LDUzIEBAIHN0YXRpYyBpbnQgbWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19FTkNPRElOR19TQV0pIHtcbiBcdFx0c3RydWN0IG1hY3NlY190eF9zYSAqdHhfc2E7XG4mIzQzO1x0XHR1OCBlbmNvZGluZ19zYSA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FTkNPRElOR19TQV0pO1xuIFxuLVx0XHR0eF9zYy1cdTAwM2VlbmNvZGluZ19zYSA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FTkNPRElOR19TQV0pO1xuLVx0XHR0eF9zYSA9IHJ0bmxfZGVyZWZlcmVuY2UodHhfc2MtXHUwMDNlc2FbdHhfc2MtXHUwMDNlZW5jb2Rpbmdfc2FdKTtcbiYjNDM7XHRcdFdSSVRFX09OQ0UodHhfc2MtXHUwMDNlZW5jb2Rpbmdfc2EsIGVuY29kaW5nX3NhKTtcbiYjNDM7XHRcdHR4X3NhID0gcnRubF9kZXJlZmVyZW5jZSh0eF9zYy1cdTAwM2VzYVtlbmNvZGluZ19zYV0pO1xuIFxuIFx0XHRzZWN5LVx1MDAzZW9wZXJhdGlvbmFsID0gdHhfc2EgXHUwMDI2XHUwMDI2IHR4X3NhLVx1MDAzZWFjdGl2ZTtcbiBcdH1cbiBcbiBcdGlmIChkYXRhW0lGTEFfTUFDU0VDX0VOQ1JZUFRdKVxuLVx0XHR0eF9zYy1cdTAwM2VlbmNyeXB0ID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfRU5DUllQVF0pO1xuJiM0MztcdFx0V1JJVEVfT05DRSh0eF9zYy1cdTAwM2VlbmNyeXB0LCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FTkNSWVBUXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfUFJPVEVDVF0pXG4tXHRcdHNlY3ktXHUwMDNlcHJvdGVjdF9mcmFtZXMgPSAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSk7XG4mIzQzO1x0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNlcHJvdGVjdF9mcmFtZXMsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1BST1RFQ1RdKSk7XG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19JTkNfU0NJXSlcbi1cdFx0dHhfc2MtXHUwMDNlc2VuZF9zY2kgPSAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19JTkNfU0NJXSk7XG4mIzQzO1x0XHRXUklURV9PTkNFKHR4X3NjLVx1MDAzZXNlbmRfc2NpLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19JTkNfU0NJXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfRVNdKVxuLVx0XHR0eF9zYy1cdTAwM2VlbmRfc3RhdGlvbiA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VTXSk7XG4mIzQzO1x0XHRXUklURV9PTkNFKHR4X3NjLVx1MDAzZWVuZF9zdGF0aW9uLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FU10pKTtcbiBcbiBcdGlmIChkYXRhW0lGTEFfTUFDU0VDX1NDQl0pXG4tXHRcdHR4X3NjLVx1MDAzZXNjYiA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1NDQl0pO1xuJiM0MztcdFx0V1JJVEVfT05DRSh0eF9zYy1cdTAwM2VzY2IsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1NDQl0pKTtcbiBcbiBcdGlmIChkYXRhW0lGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNUXSlcbi1cdFx0c2VjeS1cdTAwM2VyZXBsYXlfcHJvdGVjdCA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNUXSk7XG4mIzQzO1x0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNlcmVwbGF5X3Byb3RlY3QsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNUXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfVkFMSURBVElPTl0pXG4tXHRcdHNlY3ktXHUwMDNldmFsaWRhdGVfZnJhbWVzID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1ZBTElEQVRJT05dKTtcbiYjNDM7XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2V2YWxpZGF0ZV9mcmFtZXMsIG5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19WQUxJREFUSU9OXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfQ0lQSEVSX1NVSVRFXSkge1xuIFx0XHRzd2l0Y2ggKG5sYV9nZXRfdTY0KGRhdGFbSUZMQV9NQUNTRUNfQ0lQSEVSX1NVSVRFXSkpIHtcbiBcdFx0Y2FzZSBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfMTI4OlxuIFx0XHRjYXNlIE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDpcbi1cdFx0XHRzZWN5LVx1MDAzZWtleV9sZW4gPSBNQUNTRUNfR0NNX0FFU18xMjhfU0FLX0xFTjtcbi1cdFx0XHRzZWN5LVx1MDAzZXhwbiA9IGZhbHNlO1xuJiM0MztcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNla2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMTI4X1NBS19MRU4pO1xuJiM0MztcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNleHBuLCBmYWxzZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTXzI1Njpcbi1cdFx0XHRzZWN5LVx1MDAzZWtleV9sZW4gPSBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTjtcbi1cdFx0XHRzZWN5LVx1MDAzZXhwbiA9IGZhbHNlO1xuJiM0MztcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNla2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMjU2X1NBS19MRU4pO1xuJiM0MztcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNleHBuLCBmYWxzZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTX1hQTl8xMjg6XG4tXHRcdFx0c2VjeS1cdTAwM2VrZXlfbGVuID0gTUFDU0VDX0dDTV9BRVNfMTI4X1NBS19MRU47XG4tXHRcdFx0c2VjeS1cdTAwM2V4cG4gPSB0cnVlO1xuJiM0MztcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNla2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMTI4X1NBS19MRU4pO1xuJiM0MztcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNleHBuLCB0cnVlKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzI1Njpcbi1cdFx0XHRzZWN5LVx1MDAzZWtleV9sZW4gPSBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTjtcbi1cdFx0XHRzZWN5LVx1MDAzZXhwbiA9IHRydWU7XG4mIzQzO1x0XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2VrZXlfbGVuLCBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTik7XG4mIzQzO1x0XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2V4cG4sIHRydWUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTM5MjgsMTMgJiM0MzszOTI5LDE0IEBAIHN0YXRpYyBpbnQgbWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHR9XG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19XSU5ET1ddKSB7XG4tXHRcdHNlY3ktXHUwMDNlcmVwbGF5X3dpbmRvdyA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNTRUNfV0lORE9XXSk7XG4mIzQzO1x0XHR1MzIgcmVwbGF5X3dpbmRvdyA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNTRUNfV0lORE9XXSk7XG4gXG4gXHRcdC8qIElFRUUgODAyLjFBRWJ3LTIwMTMgMTAuNy44IC0gbWF4aW11bSByZXBsYXkgd2luZG93XG4gXHRcdCAqIGZvciBYUE4gY2lwaGVyIHN1aXRlcyAqL1xuIFx0XHRpZiAoc2VjeS1cdTAwM2V4cG4gXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBzZWN5LVx1MDAzZXJlcGxheV93aW5kb3cgXHUwMDNlIE1BQ1NFQ19YUE5fTUFYX1JFUExBWV9XSU5ET1cpXG4mIzQzO1x0XHQgICAgcmVwbGF5X3dpbmRvdyBcdTAwM2UgTUFDU0VDX1hQTl9NQVhfUkVQTEFZX1dJTkRPVylcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2VyZXBsYXlfd2luZG93LCByZXBsYXlfd2luZG93KTtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuQEAgLTQzODIsMjEgJiM0Mzs0Mzg0LDIxIEBAIHN0YXRpYyBzaXplX3QgbWFjc2VjX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gc3RhdGljIGludCBtYWNzZWNfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IG1hY3NlY190eF9zYyAqdHhfc2M7XG4tXHRzdHJ1Y3QgbWFjc2VjX2RldiAqbWFjc2VjO1xuLVx0c3RydWN0IG1hY3NlY19zZWN5ICpzZWN5O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBtYWNzZWNfdHhfc2MgKnR4X3NjO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBtYWNzZWNfZGV2ICptYWNzZWM7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG1hY3NlY19zZWN5ICpzZWN5O1xuIFx0dTY0IGNzaWQ7XG4gXG4gXHRtYWNzZWMgPSBtYWNzZWNfcHJpdihkZXYpO1xuIFx0c2VjeSA9IFx1MDAyNm1hY3NlYy1cdTAwM2VzZWN5O1xuIFx0dHhfc2MgPSBcdTAwMjZzZWN5LVx1MDAzZXR4X3NjO1xuIFxuLVx0c3dpdGNoIChzZWN5LVx1MDAzZWtleV9sZW4pIHtcbiYjNDM7XHRzd2l0Y2ggKFJFQURfT05DRShzZWN5LVx1MDAzZWtleV9sZW4pKSB7XG4gXHRjYXNlIE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOOlxuLVx0XHRjc2lkID0gc2VjeS1cdTAwM2V4cG4gPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzEyOCA6IE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDtcbiYjNDM7XHRcdGNzaWQgPSBSRUFEX09OQ0Uoc2VjeS1cdTAwM2V4cG4pID8gTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTX1hQTl8xMjggOiBNQUNTRUNfREVGQVVMVF9DSVBIRVJfSUQ7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTjpcbi1cdFx0Y3NpZCA9IHNlY3ktXHUwMDNleHBuID8gTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTX1hQTl8yNTYgOiBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfMjU2O1xuJiM0MztcdFx0Y3NpZCA9IFJFQURfT05DRShzZWN5LVx1MDAzZXhwbikgPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzI1NiA6IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18yNTY7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG5AQCAtNDQwNywyMCAmIzQzOzQ0MDksMjAgQEAgc3RhdGljIGludCBtYWNzZWNfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0lDVl9MRU4sIHNlY3ktXHUwMDNlaWN2X2xlbikgfHxcbiBcdCAgICBubGFfcHV0X3U2NF82NGJpdChza2IsIElGTEFfTUFDU0VDX0NJUEhFUl9TVUlURSxcbiBcdFx0XHQgICAgICBjc2lkLCBJRkxBX01BQ1NFQ19QQUQpIHx8XG4tXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ09ESU5HX1NBLCB0eF9zYy1cdTAwM2VlbmNvZGluZ19zYSkgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRU5DUllQVCwgdHhfc2MtXHUwMDNlZW5jcnlwdCkgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfUFJPVEVDVCwgc2VjeS1cdTAwM2Vwcm90ZWN0X2ZyYW1lcykgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfSU5DX1NDSSwgdHhfc2MtXHUwMDNlc2VuZF9zY2kpIHx8XG4tXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VTLCB0eF9zYy1cdTAwM2VlbmRfc3RhdGlvbikgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfU0NCLCB0eF9zYy1cdTAwM2VzY2IpIHx8XG4tXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNULCBzZWN5LVx1MDAzZXJlcGxheV9wcm90ZWN0KSB8fFxuLVx0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19WQUxJREFUSU9OLCBzZWN5LVx1MDAzZXZhbGlkYXRlX2ZyYW1lcykgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfT0ZGTE9BRCwgbWFjc2VjLVx1MDAzZW9mZmxvYWQpIHx8XG4mIzQzO1x0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19FTkNPRElOR19TQSwgUkVBRF9PTkNFKHR4X3NjLVx1MDAzZWVuY29kaW5nX3NhKSkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ1JZUFQsIFJFQURfT05DRSh0eF9zYy1cdTAwM2VlbmNyeXB0KSkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1BST1RFQ1QsIFJFQURfT05DRShzZWN5LVx1MDAzZXByb3RlY3RfZnJhbWVzKSkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0lOQ19TQ0ksIFJFQURfT05DRSh0eF9zYy1cdTAwM2VzZW5kX3NjaSkpIHx8XG4mIzQzO1x0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19FUywgUkVBRF9PTkNFKHR4X3NjLVx1MDAzZWVuZF9zdGF0aW9uKSkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1NDQiwgUkVBRF9PTkNFKHR4X3NjLVx1MDAzZXNjYikpIHx8XG4mIzQzO1x0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19SRVBMQVlfUFJPVEVDVCwgUkVBRF9PTkNFKHNlY3ktXHUwMDNlcmVwbGF5X3Byb3RlY3QpKSB8fFxuJiM0MztcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfVkFMSURBVElPTiwgUkVBRF9PTkNFKHNlY3ktXHUwMDNldmFsaWRhdGVfZnJhbWVzKSkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX09GRkxPQUQsIFJFQURfT05DRShtYWNzZWMtXHUwMDNlb2ZmbG9hZCkpIHx8XG4gXHQgICAgMClcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4tXHRpZiAoc2VjeS1cdTAwM2VyZXBsYXlfcHJvdGVjdCkge1xuLVx0XHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX01BQ1NFQ19XSU5ET1csIHNlY3ktXHUwMDNlcmVwbGF5X3dpbmRvdykpXG4mIzQzO1x0aWYgKFJFQURfT05DRShzZWN5LVx1MDAzZXJlcGxheV9wcm90ZWN0KSkge1xuJiM0MztcdFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9NQUNTRUNfV0lORE9XLCBSRUFEX09OQ0Uoc2VjeS1cdTAwM2VyZXBsYXlfd2luZG93KSkpXG4gXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDU0VDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjc2VjX3VwZGF0ZV9vZmZsb2FkJiMzNDssCiAgICAmIzM0O21hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbiYjMzQ7LAogICAgJiMzNDttYWNzZWNfZmlsbF9pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gTUFDc2VjIG5ldGxpbmsgY29uZmlndXJhdGlvbiBoYW5kbGVycyBieSBhZGRpbmcgUkVBRF9PTkNFL1dSSVRFX09OQ0UuIEZ1enppbmcgbmV0bGluayBtZXNzYWdlcyB0byBNQUNzZWMgaW50ZXJmYWNlcyBjYW4gdmVyaWZ5IHRoYXQgdGhlc2UgY2hhbmdlcyBwcmV2ZW50IHRoZSBkYXRhIHJhY2VzIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4OWI4YzdlZTE5M2YxM2MyZGJmY2RhNDNiOWUwN2NmZjIzNDhkZmEwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAxNTo1NDoxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3NlYy5jIGIvZHJpdmVycy9uZXQvbWFjc2VjLmMKaW5kZXggZmIwMDkxMjBhOTI0MTUuLjFhOTY4NTk2Y2E0NWI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tYWNzZWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tYWNzZWMuYwpAQCAtMjYzNiw3ICYjNDM7MjYzNiw3IEBAIHN0YXRpYyBpbnQgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCXZsYW5fZHJvcF9yeF9jdGFnX2ZpbHRlcl9pbmZvKGRldik7CiAJCXZsYW5fZHJvcF9yeF9zdGFnX2ZpbHRlcl9pbmZvKGRldik7CiAJfQotCW1hY3NlYy0mZ3Q7b2ZmbG9hZCA9IG9mZmxvYWQ7CiYjNDM7CVdSSVRFX09OQ0UobWFjc2VjLSZndDtvZmZsb2FkLCBvZmZsb2FkKTsKIAkvKiBBZGQgVkxBTiBmaWx0ZXJzIHdoZW4gZW5hYmxpbmcgb2ZmbG9hZC4gKi8KIAlpZiAocHJldl9vZmZsb2FkID09IE1BQ1NFQ19PRkZMT0FEX09GRikgewogCQlyZXQgPSB2bGFuX2dldF9yeF9jdGFnX2ZpbHRlcl9pbmZvKGRldik7CkBAIC0yNjY2LDcgJiM0MzsyNjY2LDcgQEAgc3RhdGljIGludCBtYWNzZWNfdXBkYXRlX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlyZXR1cm4gMDsKIAogcm9sbGJhY2tfb2ZmbG9hZDoKLQltYWNzZWMtJmd0O29mZmxvYWQgPSBwcmV2X29mZmxvYWQ7CiYjNDM7CVdSSVRFX09OQ0UobWFjc2VjLSZndDtvZmZsb2FkLCBwcmV2X29mZmxvYWQpOwogCW1hY3NlY19vZmZsb2FkKG9wcy0mZ3Q7bWRvX2RlbF9zZWN5LCAmYW1wO2N0eCk7CiAKIAlyZXR1cm4gcmV0OwpAQCAtMzg3NSw1MiAmIzQzOzM4NzUsNTMgQEAgc3RhdGljIGludCBtYWNzZWNfY2hhbmdlbGlua19jb21tb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAogCWlmIChkYXRhW0lGTEFfTUFDU0VDX0VOQ09ESU5HX1NBXSkgewogCQlzdHJ1Y3QgbWFjc2VjX3R4X3NhICp0eF9zYTsKJiM0MzsJCXU4IGVuY29kaW5nX3NhID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ09ESU5HX1NBXSk7CiAKLQkJdHhfc2MtJmd0O2VuY29kaW5nX3NhID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ09ESU5HX1NBXSk7Ci0JCXR4X3NhID0gcnRubF9kZXJlZmVyZW5jZSh0eF9zYy0mZ3Q7c2FbdHhfc2MtJmd0O2VuY29kaW5nX3NhXSk7CiYjNDM7CQlXUklURV9PTkNFKHR4X3NjLSZndDtlbmNvZGluZ19zYSwgZW5jb2Rpbmdfc2EpOwomIzQzOwkJdHhfc2EgPSBydG5sX2RlcmVmZXJlbmNlKHR4X3NjLSZndDtzYVtlbmNvZGluZ19zYV0pOwogCiAJCXNlY3ktJmd0O29wZXJhdGlvbmFsID0gdHhfc2EgJmFtcDsmYW1wOyB0eF9zYS0mZ3Q7YWN0aXZlOwogCX0KIAogCWlmIChkYXRhW0lGTEFfTUFDU0VDX0VOQ1JZUFRdKQotCQl0eF9zYy0mZ3Q7ZW5jcnlwdCA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ1JZUFRdKTsKJiM0MzsJCVdSSVRFX09OQ0UodHhfc2MtJmd0O2VuY3J5cHQsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ1JZUFRdKSk7CiAKIAlpZiAoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSkKLQkJc2VjeS0mZ3Q7cHJvdGVjdF9mcmFtZXMgPSAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSk7CiYjNDM7CQlXUklURV9PTkNFKHNlY3ktJmd0O3Byb3RlY3RfZnJhbWVzLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSkpOwogCiAJaWYgKGRhdGFbSUZMQV9NQUNTRUNfSU5DX1NDSV0pCi0JCXR4X3NjLSZndDtzZW5kX3NjaSA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0lOQ19TQ0ldKTsKJiM0MzsJCVdSSVRFX09OQ0UodHhfc2MtJmd0O3NlbmRfc2NpLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19JTkNfU0NJXSkpOwogCiAJaWYgKGRhdGFbSUZMQV9NQUNTRUNfRVNdKQotCQl0eF9zYy0mZ3Q7ZW5kX3N0YXRpb24gPSAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FU10pOwomIzQzOwkJV1JJVEVfT05DRSh0eF9zYy0mZ3Q7ZW5kX3N0YXRpb24sICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VTXSkpOwogCiAJaWYgKGRhdGFbSUZMQV9NQUNTRUNfU0NCXSkKLQkJdHhfc2MtJmd0O3NjYiA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1NDQl0pOwomIzQzOwkJV1JJVEVfT05DRSh0eF9zYy0mZ3Q7c2NiLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19TQ0JdKSk7CiAKIAlpZiAoZGF0YVtJRkxBX01BQ1NFQ19SRVBMQVlfUFJPVEVDVF0pCi0JCXNlY3ktJmd0O3JlcGxheV9wcm90ZWN0ID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfUkVQTEFZX1BST1RFQ1RdKTsKJiM0MzsJCVdSSVRFX09OQ0Uoc2VjeS0mZ3Q7cmVwbGF5X3Byb3RlY3QsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNUXSkpOwogCiAJaWYgKGRhdGFbSUZMQV9NQUNTRUNfVkFMSURBVElPTl0pCi0JCXNlY3ktJmd0O3ZhbGlkYXRlX2ZyYW1lcyA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19WQUxJREFUSU9OXSk7CiYjNDM7CQlXUklURV9PTkNFKHNlY3ktJmd0O3ZhbGlkYXRlX2ZyYW1lcywgbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1ZBTElEQVRJT05dKSk7CiAKIAlpZiAoZGF0YVtJRkxBX01BQ1NFQ19DSVBIRVJfU1VJVEVdKSB7CiAJCXN3aXRjaCAobmxhX2dldF91NjQoZGF0YVtJRkxBX01BQ1NFQ19DSVBIRVJfU1VJVEVdKSkgewogCQljYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18xMjg6CiAJCWNhc2UgTUFDU0VDX0RFRkFVTFRfQ0lQSEVSX0lEOgotCQkJc2VjeS0mZ3Q7a2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOOwotCQkJc2VjeS0mZ3Q7eHBuID0gZmFsc2U7CiYjNDM7CQkJV1JJVEVfT05DRShzZWN5LSZndDtrZXlfbGVuLCBNQUNTRUNfR0NNX0FFU18xMjhfU0FLX0xFTik7CiYjNDM7CQkJV1JJVEVfT05DRShzZWN5LSZndDt4cG4sIGZhbHNlKTsKIAkJCWJyZWFrOwogCQljYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18yNTY6Ci0JCQlzZWN5LSZndDtrZXlfbGVuID0gTUFDU0VDX0dDTV9BRVNfMjU2X1NBS19MRU47Ci0JCQlzZWN5LSZndDt4cG4gPSBmYWxzZTsKJiM0MzsJCQlXUklURV9PTkNFKHNlY3ktJmd0O2tleV9sZW4sIE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOKTsKJiM0MzsJCQlXUklURV9PTkNFKHNlY3ktJmd0O3hwbiwgZmFsc2UpOwogCQkJYnJlYWs7CiAJCWNhc2UgTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTX1hQTl8xMjg6Ci0JCQlzZWN5LSZndDtrZXlfbGVuID0gTUFDU0VDX0dDTV9BRVNfMTI4X1NBS19MRU47Ci0JCQlzZWN5LSZndDt4cG4gPSB0cnVlOwomIzQzOwkJCVdSSVRFX09OQ0Uoc2VjeS0mZ3Q7a2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMTI4X1NBS19MRU4pOwomIzQzOwkJCVdSSVRFX09OQ0Uoc2VjeS0mZ3Q7eHBuLCB0cnVlKTsKIAkJCWJyZWFrOwogCQljYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMjU2OgotCQkJc2VjeS0mZ3Q7a2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOOwotCQkJc2VjeS0mZ3Q7eHBuID0gdHJ1ZTsKJiM0MzsJCQlXUklURV9PTkNFKHNlY3ktJmd0O2tleV9sZW4sIE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOKTsKJiM0MzsJCQlXUklURV9PTkNFKHNlY3ktJmd0O3hwbiwgdHJ1ZSk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldHVybiAtRUlOVkFMOwpAQCAtMzkyOCwxMyAmIzQzOzM5MjksMTQgQEAgc3RhdGljIGludCBtYWNzZWNfY2hhbmdlbGlua19jb21tb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAl9CiAKIAlpZiAoZGF0YVtJRkxBX01BQ1NFQ19XSU5ET1ddKSB7Ci0JCXNlY3ktJmd0O3JlcGxheV93aW5kb3cgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDU0VDX1dJTkRPV10pOwomIzQzOwkJdTMyIHJlcGxheV93aW5kb3cgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDU0VDX1dJTkRPV10pOwogCiAJCS8qIElFRUUgODAyLjFBRWJ3LTIwMTMgMTAuNy44IC0gbWF4aW11bSByZXBsYXkgd2luZG93CiAJCSAqIGZvciBYUE4gY2lwaGVyIHN1aXRlcyAqLwogCQlpZiAoc2VjeS0mZ3Q7eHBuICZhbXA7JmFtcDsKLQkJICAgIHNlY3ktJmd0O3JlcGxheV93aW5kb3cgJmd0OyBNQUNTRUNfWFBOX01BWF9SRVBMQVlfV0lORE9XKQomIzQzOwkJICAgIHJlcGxheV93aW5kb3cgJmd0OyBNQUNTRUNfWFBOX01BWF9SRVBMQVlfV0lORE9XKQogCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQlXUklURV9PTkNFKHNlY3ktJmd0O3JlcGxheV93aW5kb3csIHJlcGxheV93aW5kb3cpOwogCX0KIAogCXJldHVybiAwOwpAQCAtNDM4MiwyMSAmIzQzOzQzODQsMjEgQEAgc3RhdGljIHNpemVfdCBtYWNzZWNfZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHN0YXRpYyBpbnQgbWFjc2VjX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0Jc3RydWN0IG1hY3NlY190eF9zYyAqdHhfc2M7Ci0Jc3RydWN0IG1hY3NlY19kZXYgKm1hY3NlYzsKLQlzdHJ1Y3QgbWFjc2VjX3NlY3kgKnNlY3k7CiYjNDM7CWNvbnN0IHN0cnVjdCBtYWNzZWNfdHhfc2MgKnR4X3NjOwomIzQzOwljb25zdCBzdHJ1Y3QgbWFjc2VjX2RldiAqbWFjc2VjOwomIzQzOwljb25zdCBzdHJ1Y3QgbWFjc2VjX3NlY3kgKnNlY3k7CiAJdTY0IGNzaWQ7CiAKIAltYWNzZWMgPSBtYWNzZWNfcHJpdihkZXYpOwogCXNlY3kgPSAmYW1wO21hY3NlYy0mZ3Q7c2VjeTsKIAl0eF9zYyA9ICZhbXA7c2VjeS0mZ3Q7dHhfc2M7CiAKLQlzd2l0Y2ggKHNlY3ktJmd0O2tleV9sZW4pIHsKJiM0MzsJc3dpdGNoIChSRUFEX09OQ0Uoc2VjeS0mZ3Q7a2V5X2xlbikpIHsKIAljYXNlIE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOOgotCQljc2lkID0gc2VjeS0mZ3Q7eHBuID8gTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTX1hQTl8xMjggOiBNQUNTRUNfREVGQVVMVF9DSVBIRVJfSUQ7CiYjNDM7CQljc2lkID0gUkVBRF9PTkNFKHNlY3ktJmd0O3hwbikgPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzEyOCA6IE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDsKIAkJYnJlYWs7CiAJY2FzZSBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTjoKLQkJY3NpZCA9IHNlY3ktJmd0O3hwbiA/IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMjU2IDogTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTXzI1NjsKJiM0MzsJCWNzaWQgPSBSRUFEX09OQ0Uoc2VjeS0mZ3Q7eHBuKSA/IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMjU2IDogTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTXzI1NjsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CkBAIC00NDA3LDIwICYjNDM7NDQwOSwyMCBAQCBzdGF0aWMgaW50IG1hY3NlY19maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0lDVl9MRU4sIHNlY3ktJmd0O2ljdl9sZW4pIHx8CiAJICAgIG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgSUZMQV9NQUNTRUNfQ0lQSEVSX1NVSVRFLAogCQkJICAgICAgY3NpZCwgSUZMQV9NQUNTRUNfUEFEKSB8fAotCSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRU5DT0RJTkdfU0EsIHR4X3NjLSZndDtlbmNvZGluZ19zYSkgfHwKLQkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ1JZUFQsIHR4X3NjLSZndDtlbmNyeXB0KSB8fAotCSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfUFJPVEVDVCwgc2VjeS0mZ3Q7cHJvdGVjdF9mcmFtZXMpIHx8Ci0JICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19JTkNfU0NJLCB0eF9zYy0mZ3Q7c2VuZF9zY2kpIHx8Ci0JICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19FUywgdHhfc2MtJmd0O2VuZF9zdGF0aW9uKSB8fAotCSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfU0NCLCB0eF9zYy0mZ3Q7c2NiKSB8fAotCSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfUkVQTEFZX1BST1RFQ1QsIHNlY3ktJmd0O3JlcGxheV9wcm90ZWN0KSB8fAotCSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfVkFMSURBVElPTiwgc2VjeS0mZ3Q7dmFsaWRhdGVfZnJhbWVzKSB8fAotCSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfT0ZGTE9BRCwgbWFjc2VjLSZndDtvZmZsb2FkKSB8fAomIzQzOwkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ09ESU5HX1NBLCBSRUFEX09OQ0UodHhfc2MtJmd0O2VuY29kaW5nX3NhKSkgfHwKJiM0MzsJICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19FTkNSWVBULCBSRUFEX09OQ0UodHhfc2MtJmd0O2VuY3J5cHQpKSB8fAomIzQzOwkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1BST1RFQ1QsIFJFQURfT05DRShzZWN5LSZndDtwcm90ZWN0X2ZyYW1lcykpIHx8CiYjNDM7CSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfSU5DX1NDSSwgUkVBRF9PTkNFKHR4X3NjLSZndDtzZW5kX3NjaSkpIHx8CiYjNDM7CSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRVMsIFJFQURfT05DRSh0eF9zYy0mZ3Q7ZW5kX3N0YXRpb24pKSB8fAomIzQzOwkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1NDQiwgUkVBRF9PTkNFKHR4X3NjLSZndDtzY2IpKSB8fAomIzQzOwkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNULCBSRUFEX09OQ0Uoc2VjeS0mZ3Q7cmVwbGF5X3Byb3RlY3QpKSB8fAomIzQzOwkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1ZBTElEQVRJT04sIFJFQURfT05DRShzZWN5LSZndDt2YWxpZGF0ZV9mcmFtZXMpKSB8fAomIzQzOwkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX09GRkxPQUQsIFJFQURfT05DRShtYWNzZWMtJmd0O29mZmxvYWQpKSB8fAogCSAgICAwKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAotCWlmIChzZWN5LSZndDtyZXBsYXlfcHJvdGVjdCkgewotCQlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX01BQ1NFQ19XSU5ET1csIHNlY3ktJmd0O3JlcGxheV93aW5kb3cpKQomIzQzOwlpZiAoUkVBRF9PTkNFKHNlY3ktJmd0O3JlcGxheV9wcm90ZWN0KSkgewomIzQzOwkJaWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9NQUNTRUNfV0lORE9XLCBSRUFEX09OQ0Uoc2VjeS0mZ3Q7cmVwbGF5X3dpbmRvdykpKQogCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5OTUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTUFDc2VjIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9tYWNzZWMuY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgcmVwbGFjaW5nIGRpcmVjdCBhc3NpZ25tZW50cyBhbmQgcmVhZHMgb2YgZmllbGRzIHdpdGhpbiBgbWFjc2VjX2RldmAsIGBtYWNzZWNfc2VjeWAsIGFuZCBgbWFjc2VjX3R4X3NjYCBzdHJ1Y3R1cmVzIHdpdGggYFdSSVRFX09OQ0VgIGFuZCBgUkVBRF9PTkNFYC4gSG1tLCBzb3VuZHMgbGlrZSBhIGRhdGEgcmFjZSBmaXgsIHdoaWNoIGlzIGRlZmluaXRlbHkgYSBnb29kIHRoaW5nLiBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gaW5kaWNhdGVzIHRoaXMgcHJldmVudHMgY29tcGlsZXIgb3B0aW1pemF0aW9ucyB0aGF0ICpjb3VsZCogbGVhZCB0byBkYXRhIHJhY2VzLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgbmVlZCB0byBiZSBwcmVjaXNlIGhlcmUuIERvZXMgdGhpcyBqdXN0IHByZXZlbnQgcmVvcmRlcmluZywgb3IgZG9lcyBpdCBhY3R1YWxseSBpbXBhY3QgaG93IHRoZSBjb2RlIGV4ZWN1dGVzPyBgV1JJVEVfT05DRWAgYW5kIGBSRUFEX09OQ0VgIHVzZSBjYXN0cyB0byB2b2xhdGlsZS4gVGhleSBjZXJ0YWlubHkgKmFsdGVyKiB0aGUgZXhlY3V0aW9uIGZsb3cgYnkgaW1wb3NpbmcgbWVtb3J5IGFjY2VzcyBvcmRlcmluZyAob3IgYXQgbGVhc3QsIHByZXZlbnRpbmcgY29tcGlsZXIgcmVvcmRlcmluZyBhbmQgZWxpc2lvbikuIFNvLCBpdOKAmXMgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGJlY2F1c2UgaXQgZml4ZXMgYSByZWFsIGJ1Zy4KClRoZSBwcm9tcHTigJlzIGFkdmljZSBhYm91dCAmIzM0O25vIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbiYjMzQ7IGZvciBmdXp6aW5nIGdvdCBtZSB0aGlua2luZy4gSXQmIzM5O3MgYSB0cmlja3kgZGlzdGluY3Rpb24uIFdoaWxlIHRlY2huaWNhbGx5IGl0JiMzOTtzIGEgZGF0YSByYWNlIGZpeCBhbmQgbm90IGEgbmV3IGZlYXR1cmUsIGl0IGNoYW5nZXMgaG93IHRoZSBtZW1vcnkgYWNjZXNzZXMgYXJlIGhhbmRsZWQsIG1ha2luZyBpdCBmdW5jdGlvbmFsbHkgcmVsZXZhbnQgZm9yIHRoZSBwdXJwb3NlIG9mIGZ1enppbmcuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIHRvdWNoZXMgdG8gbWFrZSBzdXJlIEkgYW0gY29ycmVjdDogYG1hY3NlY191cGRhdGVfb2ZmbG9hZGAsIGBtYWNzZWNfY2hhbmdlbGlua19jb21tb25gLCBhbmQgYG1hY3NlY19maWxsX2luZm9gIGFyZSBtb2RpZmllZC4gWXVwLCB0aGF0IG1ha2VzIHNlbnNlLgoKTm93LCBiZWNhdXNlIGl04oCZcyBhIGNvcmUgbmV0d29ya2luZyBkcml2ZXIgKE1BQ3NlYyksIGZ1enppbmcgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gY29uc2lkZXIuIFNpbmNlIEkgbmVlZCB0byBjb25zaWRlciBjb25maWd1cmF0aW9uIG9wdGlvbnMsIEkgc2hvdWxkIHNlYXJjaCBmb3IgYENPTkZJR19NQUNTRUNgIHVzaW5nIHRoZSBncmVwcGVyIHRvb2wgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDU0VDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTMwMj1jb25maWcgQU1UXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMTctXG5kcml2ZXJzL25ldC9LY29uZmlnOjMxODpjb25maWcgTUFDU0VDXG5kcml2ZXJzL25ldC9LY29uZmlnLTMxOS1cdHRyaXN0YXRlIFwmIzM0O0lFRUUgODAyLjFBRSBNQUMtbGV2ZWwgZW5jcnlwdGlvbiAoTUFDc2VjKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3ODIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKk1BQ3NlYyBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGZvY3VzIGlzIGRlZmluaXRlbHkgb24gYE1BQ1NFQ2Ag4oCTIHRoYXQmIzM5O3MgdGhlIGNvbmZpZ3VyYXRpb24gcGllY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbm90IGdldCB0dW5uZWwtdmlzaW9uZWQsIHRob3VnaC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkLCBvciBwb3RlbnRpYWxseSBpbnRlcmZlcmluZywgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBhbHNvIGJlIGluIHBsYXkuIFdlIG5lZWQgYSBob2xpc3RpYyB2aWV3IGJlZm9yZSBtYWtpbmcgYW55IGFzc3VtcHRpb25zIG9yIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoZSBgTUFDU0VDYCBzcGVjaWZpYyBwYXJhbWV0ZXJzLiBHb3R0YSBydWxlIG91dCBhbnkgb3RoZXIgcmVsZXZhbnQgc2V0dGluZ3MgdGhhdCBtaWdodCBpbXBhY3Qgb3IgYmUgaW1wYWN0ZWQgYnkgaXQuIExldCYjMzk7cyBtYWtlIHN1cmUgbm90aGluZyBpcyBvdmVybG9va2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3NlYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19JRkIpICYjNDM7PSBpZmIub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX01BQ1NFQykgJiM0Mzs9IG1hY3NlYy5vXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfQU1UKSAmIzQzOz0gYW10Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDM4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1BQ3NlYyBOZXRsaW5rIE9wZXJhdGlvbnMgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gdGhlIGNvbmZpZyBpcyBgTUFDU0VDYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIEkmIzM5O3ZlIGdvdCB0aHJlZSBtb2RpZmllZCBmdW5jdGlvbnMgdG8gbG9vayBhdDogYG1hY3NlY191cGRhdGVfb2ZmbG9hZGAsIGBtYWNzZWNfY2hhbmdlbGlua19jb21tb25gLCBhbmQgYG1hY3NlY19maWxsX2luZm9gLiBMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgcmVhY2hhYmlsaXR5LCBiZWNhdXNlIHRoYXQmIzM5O3Mga2V5LiBgbWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uYCBpcyBoaXQgZnJvbSBgbWFjc2VjX2NoYW5nZWxpbmtgIGFuZCBgbWFjc2VjX25ld2xpbmtgLiAgYG1hY3NlY19maWxsX2luZm9gIGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG1hY3NlY19nZXRfc2l6ZWAgYW5kIGl0c2VsZiwgYW5kIGZpbmFsbHksIGBtYWNzZWNfdXBkYXRlX29mZmxvYWRgIGlzIGNhbGxlZCBmcm9tIGBtYWNzZWNfY2hhbmdlbGlua2AuICBQZXJmZWN0LCB0aGVzZSBhcmUgYWxsIG5ldGxpbmsgb3BlcmF0aW9ucyBmb3IgTUFDc2VjLCBzbyB0aGV5IGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCB2aWEgbmV0bGluay4KClRoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgZGF0YSByYWNlcyBvbiBzZXZlcmFsIGtleSBkYXRhIHN0cnVjdHVyZXMgd2l0aGluIE1BQ3NlYzogYG1hY3NlYy0mZ3Q7b2ZmbG9hZGAsIGB0eF9zYy0mZ3Q7ZW5jb2Rpbmdfc2FgLCBgdHhfc2MtJmd0O2VuY3J5cHRgLCBgc2VjeS0mZ3Q7cHJvdGVjdF9mcmFtZXNgLCBgdHhfc2MtJmd0O3NlbmRfc2NpYCwgYHR4X3NjLSZndDtlbmRfc3RhdGlvbmAsIGB0eF9zYy0mZ3Q7c2NiYCwgYHNlY3ktJmd0O3JlcGxheV9wcm90ZWN0YCwgYHNlY3ktJmd0O3ZhbGlkYXRlX2ZyYW1lc2AsIGBzZWN5LSZndDtrZXlfbGVuYCwgYHNlY3ktJmd0O3hwbmAsIGFuZCBgc2VjeS0mZ3Q7cmVwbGF5X3dpbmRvd2AuICBUaGlzIGlzIGdvb2QuCgpBbHJpZ2h0LCBkZWZpbml0ZWx5IHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIG1haW4gZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSBgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkYCwgYG1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbmAsIGFuZCBgbWFjc2VjX2ZpbGxfaW5mb2AuICBUaG9zZSBhcmUgZ29pbmcgdG8gYmUgbXkgYEZvY3VzU3ltYm9sc2AuIEFuZCBvZiBjb3Vyc2UsIGBFbmFibGVDb25maWdzOiBNQUNTRUNgLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgbGV0JiMzOTtzIGRvdWJsZSBjaGVjayBmb3Igb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3MuIE1BQ3NlYyByZWxpZXMgb24gQ1JZUFRPLCBDUllQVE9fR0NNLCBhbmQgdGhlIGxpa2UsIGJ1dCB0aG9zZSBhcmUgZ2VuZXJhbGx5IGVuYWJsZWQgb3Igc2VsZWN0ZWQgYXV0b21hdGljYWxseSBieSBgTUFDU0VDYC4gSSB3aWxsIGNoZWNrIEtjb25maWcgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBqdXN0IHRvIGNvdmVyIGFsbCBiYXNlcyBhbmQgZW5zdXJlIG1heGltdW0gY292ZXJhZ2UsIGJ1dCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUNTRUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MzAyPWNvbmZpZyBBTVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTMxNy1cbmRyaXZlcnMvbmV0L0tjb25maWc6MzE4OmNvbmZpZyBNQUNTRUNcbmRyaXZlcnMvbmV0L0tjb25maWctMzE5LVx0dHJpc3RhdGUgXCYjMzQ7SUVFRSA4MDIuMUFFIE1BQy1sZXZlbCBlbmNyeXB0aW9uIChNQUNzZWMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk1OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIENvbmZpZ3VyYXRpb24gS2VybmVsIENvZGUqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBoZWFkIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBkcml2ZXJzL25ldC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBuZXR3b3JrIGRldmljZSBvcHRpb25zIGFyZSBsaWtlbHkgZGVmaW5lZCwgYW5kIEkgc3VzcGVjdCB0aGF0IGxpbmUgMzE4IHdpbGwgaGF2ZSB0aGUgcGFydGljdWxhciBlbnRyeSBJIG5lZWQgdG8gZXhhbWluZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZ2V0IG15c2VsZiBmYW1pbGlhcmlzZWQgd2l0aCB0aGUgb3B0aW9ucyBhcm91bmQgdGhhdCBsaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMxODpcdGNvbmZpZyBNQUNTRUNcbiAzMTk6XHRcdHRyaXN0YXRlIFwmIzM0O0lFRUUgODAyLjFBRSBNQUMtbGV2ZWwgZW5jcnlwdGlvbiAoTUFDc2VjKVwmIzM0O1xuIDMyMDpcdFx0c2VsZWN0IENSWVBUT1xuIDMyMTpcdFx0c2VsZWN0IENSWVBUT19BRVNcbiAzMjI6XHRcdHNlbGVjdCBDUllQVE9fR0NNXG4gMzIzOlx0XHRzZWxlY3QgR1JPX0NFTExTXG4gMzI0Olx0XHRoZWxwXG4gMzI1Olx0XHQgICBNQUNzZWMgaXMgYW4gZW5jcnlwdGlvbiBzdGFuZGFyZCBmb3IgRXRoZXJuZXQuXG4gMzI2Olx0XG4gMzI3Olx0Y29uZmlnIE5FVENPTlNPTEVcbiAzMjg6XHRcdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgY29uc29sZSBsb2dnaW5nIHN1cHBvcnRcJiMzNDtcbiAzMjk6XHRcdGRlcGVuZHMgb24gUFJJTlRLXG4gMzMwOlx0XHRoZWxwXG4gMzMxOlx0XHQgIElmIHlvdSB3YW50IHRvIGxvZyBrZXJuZWwgbWVzc2FnZXMgb3ZlciB0aGUgbmV0d29yaywgZW5hYmxlIHRoaXMuXG4gMzMyOlx0XHQgIFNlZSBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRjb25zb2xlLnJzdFx1MDAzZSBmb3IgZGV0YWlscy5cbiAzMzM6XHRcbiAzMzQ6XHRjb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXG4gMzM1Olx0XHRib29sIFwmIzM0O0R5bmFtaWMgcmVjb25maWd1cmF0aW9uIG9mIGxvZ2dpbmcgdGFyZ2V0c1wmIzM0O1xuIDMzNjpcdFx0ZGVwZW5kcyBvbiBORVRDT05TT0xFIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgQ09ORklHRlNfRlMgXHUwMDI2XHUwMDI2IFxcXG4gMzM3Olx0XHRcdFx0IShORVRDT05TT0xFPXkgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTPW0pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MzMKCQkJCQkJCW91dHB1dDogMTEyCgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1BQ1NFQyBDb25maWd1cmF0aW9uIFRob3VnaHRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgYE1BQ1NFQ2AgY29uZmlndXJhdGlvbiBsb2dpYy4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBNQUNTRUNgIGl0c2VsZiBoYW5kbGVzIHRoZSBjcnlwdG9ncmFwaGljIHNlbGVjdGlvbjsgaXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIHNlY3VyaXR5IGltcGxlbWVudGF0aW9uLiBUaGF0IG1lYW5zLCBmb2N1c2luZyBvbiB0aGUgYE1BQ1NFQ2AgY29uZmlndXJhdGlvbiBpcyB0aGUgcHJpbWFyeSB0aGluZy4gV2Ugc2hvdWxkbiYjMzk7dCBuZWVkIHRvIGNvbmZpZ3VyZSBhbnkgb3RoZXIgY3J5cHRvIHNlcGFyYXRlbHkgYXMgYE1BQ1NFQ2AgZG9lcyB0aGlzLgoKSSYjMzk7bSBzZWVpbmcgYSBmZXcga2V5IGZ1bmN0aW9ucyBoaWdobGlnaHRlZDogYG1hY3NlY191cGRhdGVfb2ZmbG9hZGAsIGBtYWNzZWNfY2hhbmdlbGlua19jb21tb25gLCBhbmQgYG1hY3NlY19maWxsX2luZm9gLiBUaGVzZSBhcmUgbGlrZWx5IHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBjb25maWd1cmF0aW9uIGhhbmRsaW5nIGxpZXMuCgpUaGUgcGF0Y2ggaXRzZWxmIGFwcGVhcnMgdG8gYmUgYWRkcmVzc2luZyBkYXRhIHJhY2VzIHdpdGhpbiB0aGUgbmV0bGluayBjb25maWd1cmF0aW9uIGhhbmRsZXJzIGZvciBgTUFDU0VDYC4gVGhlIGFkZGl0aW9uIG9mIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgaW5kaWNhdGVzIHdlJiMzOTtyZSB0cnlpbmcgdG8gcmVzb2x2ZSBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoZSBzdWdnZXN0ZWQgdGVzdCBpcyBzbWFydDogZnV6emluZyBuZXRsaW5rIG1lc3NhZ2VzIHRvIHRoZSBgTUFDU0VDYCBpbnRlcmZhY2VzIHNob3VsZCBlZmZlY3RpdmVseSB0ZXN0IHdoZXRoZXIgdGhlIGNoYW5nZXMgdHJ1bHkgZWxpbWluYXRlIHRoZSByYWNlcyBhbmQgZG9uJiMzOTt0IGNyZWF0ZSBuZXcgcHJvYmxlbXMuIFRoaXMgaXMgYSB2ZXJ5IHNvbGlkIHZlcmlmaWNhdGlvbiBhcHByb2FjaC4gSSYjMzk7bGwgbmVlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2Agbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDU0VDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjc2VjX3VwZGF0ZV9vZmZsb2FkJiMzNDssCiAgICAmIzM0O21hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbiYjMzQ7LAogICAgJiMzNDttYWNzZWNfZmlsbF9pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gTUFDc2VjIG5ldGxpbmsgY29uZmlndXJhdGlvbiBoYW5kbGVycyBieSBhZGRpbmcgUkVBRF9PTkNFL1dSSVRFX09OQ0UuIEZ1enppbmcgbmV0bGluayBtZXNzYWdlcyB0byBNQUNzZWMgaW50ZXJmYWNlcyBjYW4gdmVyaWZ5IHRoYXQgdGhlc2UgY2hhbmdlcyBwcmV2ZW50IHRoZSBkYXRhIHJhY2VzIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUNTRUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWNzZWNfdXBkYXRlX29mZmxvYWQmIzM0OywKICAgICYjMzQ7bWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uJiMzNDssCiAgICAmIzM0O21hY3NlY19maWxsX2luZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgZGF0YSByYWNlcyBpbiBNQUNzZWMgbmV0bGluayBjb25maWd1cmF0aW9uIGhhbmRsZXJzIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRS4gRnV6emluZyBuZXRsaW5rIG1lc3NhZ2VzIHRvIE1BQ3NlYyBpbnRlcmZhY2VzIGNhbiB2ZXJpZnkgdGhhdCB0aGVzZSBjaGFuZ2VzIHByZXZlbnQgdGhlIGRhdGEgcmFjZXMgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNTo1NDoxMy4wNzU3MTc1NzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDIzMjUyNzA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUNTRUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWNzZWNfdXBkYXRlX29mZmxvYWRcIixcbiAgICBcIm1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vblwiLFxuICAgIFwibWFjc2VjX2ZpbGxfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gTUFDc2VjIG5ldGxpbmsgY29uZmlndXJhdGlvbiBoYW5kbGVycyBieSBhZGRpbmcgUkVBRF9PTkNFL1dSSVRFX09OQ0UuIEZ1enppbmcgbmV0bGluayBtZXNzYWdlcyB0byBNQUNzZWMgaW50ZXJmYWNlcyBjYW4gdmVyaWZ5IHRoYXQgdGhlc2UgY2hhbmdlcyBwcmV2ZW50IHRoZSBkYXRhIHJhY2VzIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNTo1NDoxMy4wNzU3MjU1OTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NDY1OTExNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg5YjhjN2VlMTkzZjEzYzJkYmZjZGE0M2I5ZTA3Y2ZmMjM0OGRmYTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAxNTo1NDoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tYWNzZWMuYyBiL2RyaXZlcnMvbmV0L21hY3NlYy5jXFxuaW5kZXggZmIwMDkxMjBhOTI0MTUuLjFhOTY4NTk2Y2E0NWI4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3NlYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvbWFjc2VjLmNcXG5AQCAtMjYzNiw3ICsyNjM2LDcgQEAgc3RhdGljIGludCBtYWNzZWNfdXBkYXRlX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0dmxhbl9kcm9wX3J4X2N0YWdfZmlsdGVyX2luZm8oZGV2KTtcXG4gXFx0XFx0dmxhbl9kcm9wX3J4X3N0YWdfZmlsdGVyX2luZm8oZGV2KTtcXG4gXFx0fVxcbi1cXHRtYWNzZWMtXFx1MDAzZW9mZmxvYWQgPSBvZmZsb2FkO1xcbitcXHRXUklURV9PTkNFKG1hY3NlYy1cXHUwMDNlb2ZmbG9hZCwgb2ZmbG9hZCk7XFxuIFxcdC8qIEFkZCBWTEFOIGZpbHRlcnMgd2hlbiBlbmFibGluZyBvZmZsb2FkLiAqL1xcbiBcXHRpZiAocHJldl9vZmZsb2FkID09IE1BQ1NFQ19PRkZMT0FEX09GRikge1xcbiBcXHRcXHRyZXQgPSB2bGFuX2dldF9yeF9jdGFnX2ZpbHRlcl9pbmZvKGRldik7XFxuQEAgLTI2NjYsNyArMjY2Niw3IEBAIHN0YXRpYyBpbnQgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gcm9sbGJhY2tfb2ZmbG9hZDpcXG4tXFx0bWFjc2VjLVxcdTAwM2VvZmZsb2FkID0gcHJldl9vZmZsb2FkO1xcbitcXHRXUklURV9PTkNFKG1hY3NlYy1cXHUwMDNlb2ZmbG9hZCwgcHJldl9vZmZsb2FkKTtcXG4gXFx0bWFjc2VjX29mZmxvYWQob3BzLVxcdTAwM2VtZG9fZGVsX3NlY3ksIFxcdTAwMjZjdHgpO1xcbiBcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtMzg3NSw1MiArMzg3NSw1MyBAQCBzdGF0aWMgaW50IG1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXG4gXFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfRU5DT0RJTkdfU0FdKSB7XFxuIFxcdFxcdHN0cnVjdCBtYWNzZWNfdHhfc2EgKnR4X3NhO1xcbitcXHRcXHR1OCBlbmNvZGluZ19zYSA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FTkNPRElOR19TQV0pO1xcbiBcXG4tXFx0XFx0dHhfc2MtXFx1MDAzZWVuY29kaW5nX3NhID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ09ESU5HX1NBXSk7XFxuLVxcdFxcdHR4X3NhID0gcnRubF9kZXJlZmVyZW5jZSh0eF9zYy1cXHUwMDNlc2FbdHhfc2MtXFx1MDAzZWVuY29kaW5nX3NhXSk7XFxuK1xcdFxcdFdSSVRFX09OQ0UodHhfc2MtXFx1MDAzZWVuY29kaW5nX3NhLCBlbmNvZGluZ19zYSk7XFxuK1xcdFxcdHR4X3NhID0gcnRubF9kZXJlZmVyZW5jZSh0eF9zYy1cXHUwMDNlc2FbZW5jb2Rpbmdfc2FdKTtcXG4gXFxuIFxcdFxcdHNlY3ktXFx1MDAzZW9wZXJhdGlvbmFsID0gdHhfc2EgXFx1MDAyNlxcdTAwMjYgdHhfc2EtXFx1MDAzZWFjdGl2ZTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfRU5DUllQVF0pXFxuLVxcdFxcdHR4X3NjLVxcdTAwM2VlbmNyeXB0ID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfRU5DUllQVF0pO1xcbitcXHRcXHRXUklURV9PTkNFKHR4X3NjLVxcdTAwM2VlbmNyeXB0LCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FTkNSWVBUXSkpO1xcbiBcXG4gXFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfUFJPVEVDVF0pXFxuLVxcdFxcdHNlY3ktXFx1MDAzZXByb3RlY3RfZnJhbWVzID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfUFJPVEVDVF0pO1xcbitcXHRcXHRXUklURV9PTkNFKHNlY3ktXFx1MDAzZXByb3RlY3RfZnJhbWVzLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSkpO1xcbiBcXG4gXFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfSU5DX1NDSV0pXFxuLVxcdFxcdHR4X3NjLVxcdTAwM2VzZW5kX3NjaSA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0lOQ19TQ0ldKTtcXG4rXFx0XFx0V1JJVEVfT05DRSh0eF9zYy1cXHUwMDNlc2VuZF9zY2ksICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0lOQ19TQ0ldKSk7XFxuIFxcbiBcXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19FU10pXFxuLVxcdFxcdHR4X3NjLVxcdTAwM2VlbmRfc3RhdGlvbiA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VTXSk7XFxuK1xcdFxcdFdSSVRFX09OQ0UodHhfc2MtXFx1MDAzZWVuZF9zdGF0aW9uLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FU10pKTtcXG4gXFxuIFxcdGlmIChkYXRhW0lGTEFfTUFDU0VDX1NDQl0pXFxuLVxcdFxcdHR4X3NjLVxcdTAwM2VzY2IgPSAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19TQ0JdKTtcXG4rXFx0XFx0V1JJVEVfT05DRSh0eF9zYy1cXHUwMDNlc2NiLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19TQ0JdKSk7XFxuIFxcbiBcXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19SRVBMQVlfUFJPVEVDVF0pXFxuLVxcdFxcdHNlY3ktXFx1MDAzZXJlcGxheV9wcm90ZWN0ID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfUkVQTEFZX1BST1RFQ1RdKTtcXG4rXFx0XFx0V1JJVEVfT05DRShzZWN5LVxcdTAwM2VyZXBsYXlfcHJvdGVjdCwgISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfUkVQTEFZX1BST1RFQ1RdKSk7XFxuIFxcbiBcXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19WQUxJREFUSU9OXSlcXG4tXFx0XFx0c2VjeS1cXHUwMDNldmFsaWRhdGVfZnJhbWVzID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1ZBTElEQVRJT05dKTtcXG4rXFx0XFx0V1JJVEVfT05DRShzZWN5LVxcdTAwM2V2YWxpZGF0ZV9mcmFtZXMsIG5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19WQUxJREFUSU9OXSkpO1xcbiBcXG4gXFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfQ0lQSEVSX1NVSVRFXSkge1xcbiBcXHRcXHRzd2l0Y2ggKG5sYV9nZXRfdTY0KGRhdGFbSUZMQV9NQUNTRUNfQ0lQSEVSX1NVSVRFXSkpIHtcXG4gXFx0XFx0Y2FzZSBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfMTI4OlxcbiBcXHRcXHRjYXNlIE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDpcXG4tXFx0XFx0XFx0c2VjeS1cXHUwMDNla2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOO1xcbi1cXHRcXHRcXHRzZWN5LVxcdTAwM2V4cG4gPSBmYWxzZTtcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShzZWN5LVxcdTAwM2VrZXlfbGVuLCBNQUNTRUNfR0NNX0FFU18xMjhfU0FLX0xFTik7XFxuK1xcdFxcdFxcdFdSSVRFX09OQ0Uoc2VjeS1cXHUwMDNleHBuLCBmYWxzZSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18yNTY6XFxuLVxcdFxcdFxcdHNlY3ktXFx1MDAzZWtleV9sZW4gPSBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTjtcXG4tXFx0XFx0XFx0c2VjeS1cXHUwMDNleHBuID0gZmFsc2U7XFxuK1xcdFxcdFxcdFdSSVRFX09OQ0Uoc2VjeS1cXHUwMDNla2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMjU2X1NBS19MRU4pO1xcbitcXHRcXHRcXHRXUklURV9PTkNFKHNlY3ktXFx1MDAzZXhwbiwgZmFsc2UpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzEyODpcXG4tXFx0XFx0XFx0c2VjeS1cXHUwMDNla2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOO1xcbi1cXHRcXHRcXHRzZWN5LVxcdTAwM2V4cG4gPSB0cnVlO1xcbitcXHRcXHRcXHRXUklURV9PTkNFKHNlY3ktXFx1MDAzZWtleV9sZW4sIE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOKTtcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShzZWN5LVxcdTAwM2V4cG4sIHRydWUpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzI1NjpcXG4tXFx0XFx0XFx0c2VjeS1cXHUwMDNla2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOO1xcbi1cXHRcXHRcXHRzZWN5LVxcdTAwM2V4cG4gPSB0cnVlO1xcbitcXHRcXHRcXHRXUklURV9PTkNFKHNlY3ktXFx1MDAzZWtleV9sZW4sIE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOKTtcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShzZWN5LVxcdTAwM2V4cG4sIHRydWUpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZGVmYXVsdDpcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuQEAgLTM5MjgsMTMgKzM5MjksMTQgQEAgc3RhdGljIGludCBtYWNzZWNfY2hhbmdlbGlua19jb21tb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfV0lORE9XXSkge1xcbi1cXHRcXHRzZWN5LVxcdTAwM2VyZXBsYXlfd2luZG93ID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1NFQ19XSU5ET1ddKTtcXG4rXFx0XFx0dTMyIHJlcGxheV93aW5kb3cgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDU0VDX1dJTkRPV10pO1xcbiBcXG4gXFx0XFx0LyogSUVFRSA4MDIuMUFFYnctMjAxMyAxMC43LjggLSBtYXhpbXVtIHJlcGxheSB3aW5kb3dcXG4gXFx0XFx0ICogZm9yIFhQTiBjaXBoZXIgc3VpdGVzICovXFxuIFxcdFxcdGlmIChzZWN5LVxcdTAwM2V4cG4gXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIHNlY3ktXFx1MDAzZXJlcGxheV93aW5kb3cgXFx1MDAzZSBNQUNTRUNfWFBOX01BWF9SRVBMQVlfV0lORE9XKVxcbitcXHRcXHQgICAgcmVwbGF5X3dpbmRvdyBcXHUwMDNlIE1BQ1NFQ19YUE5fTUFYX1JFUExBWV9XSU5ET1cpXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRXUklURV9PTkNFKHNlY3ktXFx1MDAzZXJlcGxheV93aW5kb3csIHJlcGxheV93aW5kb3cpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5AQCAtNDM4MiwyMSArNDM4NCwyMSBAQCBzdGF0aWMgc2l6ZV90IG1hY3NlY19nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBzdGF0aWMgaW50IG1hY3NlY19maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0c3RydWN0IG1hY3NlY190eF9zYyAqdHhfc2M7XFxuLVxcdHN0cnVjdCBtYWNzZWNfZGV2ICptYWNzZWM7XFxuLVxcdHN0cnVjdCBtYWNzZWNfc2VjeSAqc2VjeTtcXG4rXFx0Y29uc3Qgc3RydWN0IG1hY3NlY190eF9zYyAqdHhfc2M7XFxuK1xcdGNvbnN0IHN0cnVjdCBtYWNzZWNfZGV2ICptYWNzZWM7XFxuK1xcdGNvbnN0IHN0cnVjdCBtYWNzZWNfc2VjeSAqc2VjeTtcXG4gXFx0dTY0IGNzaWQ7XFxuIFxcbiBcXHRtYWNzZWMgPSBtYWNzZWNfcHJpdihkZXYpO1xcbiBcXHRzZWN5ID0gXFx1MDAyNm1hY3NlYy1cXHUwMDNlc2VjeTtcXG4gXFx0dHhfc2MgPSBcXHUwMDI2c2VjeS1cXHUwMDNldHhfc2M7XFxuIFxcbi1cXHRzd2l0Y2ggKHNlY3ktXFx1MDAzZWtleV9sZW4pIHtcXG4rXFx0c3dpdGNoIChSRUFEX09OQ0Uoc2VjeS1cXHUwMDNla2V5X2xlbikpIHtcXG4gXFx0Y2FzZSBNQUNTRUNfR0NNX0FFU18xMjhfU0FLX0xFTjpcXG4tXFx0XFx0Y3NpZCA9IHNlY3ktXFx1MDAzZXhwbiA/IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMTI4IDogTUFDU0VDX0RFRkFVTFRfQ0lQSEVSX0lEO1xcbitcXHRcXHRjc2lkID0gUkVBRF9PTkNFKHNlY3ktXFx1MDAzZXhwbikgPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzEyOCA6IE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgTUFDU0VDX0dDTV9BRVNfMjU2X1NBS19MRU46XFxuLVxcdFxcdGNzaWQgPSBzZWN5LVxcdTAwM2V4cG4gPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzI1NiA6IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18yNTY7XFxuK1xcdFxcdGNzaWQgPSBSRUFEX09OQ0Uoc2VjeS1cXHUwMDNleHBuKSA/IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMjU2IDogTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTXzI1NjtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbkBAIC00NDA3LDIwICs0NDA5LDIwIEBAIHN0YXRpYyBpbnQgbWFjc2VjX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0lDVl9MRU4sIHNlY3ktXFx1MDAzZWljdl9sZW4pIHx8XFxuIFxcdCAgICBubGFfcHV0X3U2NF82NGJpdChza2IsIElGTEFfTUFDU0VDX0NJUEhFUl9TVUlURSxcXG4gXFx0XFx0XFx0ICAgICAgY3NpZCwgSUZMQV9NQUNTRUNfUEFEKSB8fFxcbi1cXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ09ESU5HX1NBLCB0eF9zYy1cXHUwMDNlZW5jb2Rpbmdfc2EpIHx8XFxuLVxcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRU5DUllQVCwgdHhfc2MtXFx1MDAzZWVuY3J5cHQpIHx8XFxuLVxcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfUFJPVEVDVCwgc2VjeS1cXHUwMDNlcHJvdGVjdF9mcmFtZXMpIHx8XFxuLVxcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfSU5DX1NDSSwgdHhfc2MtXFx1MDAzZXNlbmRfc2NpKSB8fFxcbi1cXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VTLCB0eF9zYy1cXHUwMDNlZW5kX3N0YXRpb24pIHx8XFxuLVxcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfU0NCLCB0eF9zYy1cXHUwMDNlc2NiKSB8fFxcbi1cXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNULCBzZWN5LVxcdTAwM2VyZXBsYXlfcHJvdGVjdCkgfHxcXG4tXFx0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19WQUxJREFUSU9OLCBzZWN5LVxcdTAwM2V2YWxpZGF0ZV9mcmFtZXMpIHx8XFxuLVxcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfT0ZGTE9BRCwgbWFjc2VjLVxcdTAwM2VvZmZsb2FkKSB8fFxcbitcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ09ESU5HX1NBLCBSRUFEX09OQ0UodHhfc2MtXFx1MDAzZWVuY29kaW5nX3NhKSkgfHxcXG4rXFx0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19FTkNSWVBULCBSRUFEX09OQ0UodHhfc2MtXFx1MDAzZWVuY3J5cHQpKSB8fFxcbitcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1BST1RFQ1QsIFJFQURfT05DRShzZWN5LVxcdTAwM2Vwcm90ZWN0X2ZyYW1lcykpIHx8XFxuK1xcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfSU5DX1NDSSwgUkVBRF9PTkNFKHR4X3NjLVxcdTAwM2VzZW5kX3NjaSkpIHx8XFxuK1xcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRVMsIFJFQURfT05DRSh0eF9zYy1cXHUwMDNlZW5kX3N0YXRpb24pKSB8fFxcbitcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1NDQiwgUkVBRF9PTkNFKHR4X3NjLVxcdTAwM2VzY2IpKSB8fFxcbitcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNULCBSRUFEX09OQ0Uoc2VjeS1cXHUwMDNlcmVwbGF5X3Byb3RlY3QpKSB8fFxcbitcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1ZBTElEQVRJT04sIFJFQURfT05DRShzZWN5LVxcdTAwM2V2YWxpZGF0ZV9mcmFtZXMpKSB8fFxcbitcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX09GRkxPQUQsIFJFQURfT05DRShtYWNzZWMtXFx1MDAzZW9mZmxvYWQpKSB8fFxcbiBcXHQgICAgMClcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbi1cXHRpZiAoc2VjeS1cXHUwMDNlcmVwbGF5X3Byb3RlY3QpIHtcXG4tXFx0XFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9NQUNTRUNfV0lORE9XLCBzZWN5LVxcdTAwM2VyZXBsYXlfd2luZG93KSlcXG4rXFx0aWYgKFJFQURfT05DRShzZWN5LVxcdTAwM2VyZXBsYXlfcHJvdGVjdCkpIHtcXG4rXFx0XFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9NQUNTRUNfV0lORE9XLCBSRUFEX09OQ0Uoc2VjeS1cXHUwMDNlcmVwbGF5X3dpbmRvdykpKVxcbiBcXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6NTQ6MTMuNDMxMjAzMTIyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMzg3NzAyOTU2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUNTRUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWNzZWNfdXBkYXRlX29mZmxvYWRcIixcbiAgICBcIm1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vblwiLFxuICAgIFwibWFjc2VjX2ZpbGxfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gTUFDc2VjIG5ldGxpbmsgY29uZmlndXJhdGlvbiBoYW5kbGVycyBieSBhZGRpbmcgUkVBRF9PTkNFL1dSSVRFX09OQ0UuIEZ1enppbmcgbmV0bGluayBtZXNzYWdlcyB0byBNQUNzZWMgaW50ZXJmYWNlcyBjYW4gdmVyaWZ5IHRoYXQgdGhlc2UgY2hhbmdlcyBwcmV2ZW50IHRoZSBkYXRhIHJhY2VzIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg5YjhjN2VlMTkzZjEzYzJkYmZjZGE0M2I5ZTA3Y2ZmMjM0OGRmYTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDE1OjU0OjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjc2VjLmMgYi9kcml2ZXJzL25ldC9tYWNzZWMuY1xuaW5kZXggZmIwMDkxMjBhOTI0MTUuLjFhOTY4NTk2Y2E0NWI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWFjc2VjLmNcbisrKyBiL2RyaXZlcnMvbmV0L21hY3NlYy5jXG5AQCAtMjYzNiw3ICsyNjM2LDcgQEAgc3RhdGljIGludCBtYWNzZWNfdXBkYXRlX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0dmxhbl9kcm9wX3J4X2N0YWdfZmlsdGVyX2luZm8oZGV2KTtcbiBcdFx0dmxhbl9kcm9wX3J4X3N0YWdfZmlsdGVyX2luZm8oZGV2KTtcbiBcdH1cbi1cdG1hY3NlYy1cdTAwM2VvZmZsb2FkID0gb2ZmbG9hZDtcbitcdFdSSVRFX09OQ0UobWFjc2VjLVx1MDAzZW9mZmxvYWQsIG9mZmxvYWQpO1xuIFx0LyogQWRkIFZMQU4gZmlsdGVycyB3aGVuIGVuYWJsaW5nIG9mZmxvYWQuICovXG4gXHRpZiAocHJldl9vZmZsb2FkID09IE1BQ1NFQ19PRkZMT0FEX09GRikge1xuIFx0XHRyZXQgPSB2bGFuX2dldF9yeF9jdGFnX2ZpbHRlcl9pbmZvKGRldik7XG5AQCAtMjY2Niw3ICsyNjY2LDcgQEAgc3RhdGljIGludCBtYWNzZWNfdXBkYXRlX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHJldHVybiAwO1xuIFxuIHJvbGxiYWNrX29mZmxvYWQ6XG4tXHRtYWNzZWMtXHUwMDNlb2ZmbG9hZCA9IHByZXZfb2ZmbG9hZDtcbitcdFdSSVRFX09OQ0UobWFjc2VjLVx1MDAzZW9mZmxvYWQsIHByZXZfb2ZmbG9hZCk7XG4gXHRtYWNzZWNfb2ZmbG9hZChvcHMtXHUwMDNlbWRvX2RlbF9zZWN5LCBcdTAwMjZjdHgpO1xuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC0zODc1LDUyICszODc1LDUzIEBAIHN0YXRpYyBpbnQgbWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19FTkNPRElOR19TQV0pIHtcbiBcdFx0c3RydWN0IG1hY3NlY190eF9zYSAqdHhfc2E7XG4rXHRcdHU4IGVuY29kaW5nX3NhID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ09ESU5HX1NBXSk7XG4gXG4tXHRcdHR4X3NjLVx1MDAzZWVuY29kaW5nX3NhID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ09ESU5HX1NBXSk7XG4tXHRcdHR4X3NhID0gcnRubF9kZXJlZmVyZW5jZSh0eF9zYy1cdTAwM2VzYVt0eF9zYy1cdTAwM2VlbmNvZGluZ19zYV0pO1xuK1x0XHRXUklURV9PTkNFKHR4X3NjLVx1MDAzZWVuY29kaW5nX3NhLCBlbmNvZGluZ19zYSk7XG4rXHRcdHR4X3NhID0gcnRubF9kZXJlZmVyZW5jZSh0eF9zYy1cdTAwM2VzYVtlbmNvZGluZ19zYV0pO1xuIFxuIFx0XHRzZWN5LVx1MDAzZW9wZXJhdGlvbmFsID0gdHhfc2EgXHUwMDI2XHUwMDI2IHR4X3NhLVx1MDAzZWFjdGl2ZTtcbiBcdH1cbiBcbiBcdGlmIChkYXRhW0lGTEFfTUFDU0VDX0VOQ1JZUFRdKVxuLVx0XHR0eF9zYy1cdTAwM2VlbmNyeXB0ID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfRU5DUllQVF0pO1xuK1x0XHRXUklURV9PTkNFKHR4X3NjLVx1MDAzZWVuY3J5cHQsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ1JZUFRdKSk7XG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSlcbi1cdFx0c2VjeS1cdTAwM2Vwcm90ZWN0X2ZyYW1lcyA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1BST1RFQ1RdKTtcbitcdFx0V1JJVEVfT05DRShzZWN5LVx1MDAzZXByb3RlY3RfZnJhbWVzLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfSU5DX1NDSV0pXG4tXHRcdHR4X3NjLVx1MDAzZXNlbmRfc2NpID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfSU5DX1NDSV0pO1xuK1x0XHRXUklURV9PTkNFKHR4X3NjLVx1MDAzZXNlbmRfc2NpLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19JTkNfU0NJXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfRVNdKVxuLVx0XHR0eF9zYy1cdTAwM2VlbmRfc3RhdGlvbiA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VTXSk7XG4rXHRcdFdSSVRFX09OQ0UodHhfc2MtXHUwMDNlZW5kX3N0YXRpb24sICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VTXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfU0NCXSlcbi1cdFx0dHhfc2MtXHUwMDNlc2NiID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfU0NCXSk7XG4rXHRcdFdSSVRFX09OQ0UodHhfc2MtXHUwMDNlc2NiLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19TQ0JdKSk7XG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19SRVBMQVlfUFJPVEVDVF0pXG4tXHRcdHNlY3ktXHUwMDNlcmVwbGF5X3Byb3RlY3QgPSAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19SRVBMQVlfUFJPVEVDVF0pO1xuK1x0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNlcmVwbGF5X3Byb3RlY3QsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNUXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfVkFMSURBVElPTl0pXG4tXHRcdHNlY3ktXHUwMDNldmFsaWRhdGVfZnJhbWVzID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1ZBTElEQVRJT05dKTtcbitcdFx0V1JJVEVfT05DRShzZWN5LVx1MDAzZXZhbGlkYXRlX2ZyYW1lcywgbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1ZBTElEQVRJT05dKSk7XG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19DSVBIRVJfU1VJVEVdKSB7XG4gXHRcdHN3aXRjaCAobmxhX2dldF91NjQoZGF0YVtJRkxBX01BQ1NFQ19DSVBIRVJfU1VJVEVdKSkge1xuIFx0XHRjYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18xMjg6XG4gXHRcdGNhc2UgTUFDU0VDX0RFRkFVTFRfQ0lQSEVSX0lEOlxuLVx0XHRcdHNlY3ktXHUwMDNla2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOO1xuLVx0XHRcdHNlY3ktXHUwMDNleHBuID0gZmFsc2U7XG4rXHRcdFx0V1JJVEVfT05DRShzZWN5LVx1MDAzZWtleV9sZW4sIE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOKTtcbitcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNleHBuLCBmYWxzZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTXzI1Njpcbi1cdFx0XHRzZWN5LVx1MDAzZWtleV9sZW4gPSBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTjtcbi1cdFx0XHRzZWN5LVx1MDAzZXhwbiA9IGZhbHNlO1xuK1x0XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2VrZXlfbGVuLCBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTik7XG4rXHRcdFx0V1JJVEVfT05DRShzZWN5LVx1MDAzZXhwbiwgZmFsc2UpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMTI4OlxuLVx0XHRcdHNlY3ktXHUwMDNla2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOO1xuLVx0XHRcdHNlY3ktXHUwMDNleHBuID0gdHJ1ZTtcbitcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNla2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMTI4X1NBS19MRU4pO1xuK1x0XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2V4cG4sIHRydWUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMjU2OlxuLVx0XHRcdHNlY3ktXHUwMDNla2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOO1xuLVx0XHRcdHNlY3ktXHUwMDNleHBuID0gdHJ1ZTtcbitcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNla2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMjU2X1NBS19MRU4pO1xuK1x0XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2V4cG4sIHRydWUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTM5MjgsMTMgKzM5MjksMTQgQEAgc3RhdGljIGludCBtYWNzZWNfY2hhbmdlbGlua19jb21tb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdH1cbiBcbiBcdGlmIChkYXRhW0lGTEFfTUFDU0VDX1dJTkRPV10pIHtcbi1cdFx0c2VjeS1cdTAwM2VyZXBsYXlfd2luZG93ID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1NFQ19XSU5ET1ddKTtcbitcdFx0dTMyIHJlcGxheV93aW5kb3cgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDU0VDX1dJTkRPV10pO1xuIFxuIFx0XHQvKiBJRUVFIDgwMi4xQUVidy0yMDEzIDEwLjcuOCAtIG1heGltdW0gcmVwbGF5IHdpbmRvd1xuIFx0XHQgKiBmb3IgWFBOIGNpcGhlciBzdWl0ZXMgKi9cbiBcdFx0aWYgKHNlY3ktXHUwMDNleHBuIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgc2VjeS1cdTAwM2VyZXBsYXlfd2luZG93IFx1MDAzZSBNQUNTRUNfWFBOX01BWF9SRVBMQVlfV0lORE9XKVxuK1x0XHQgICAgcmVwbGF5X3dpbmRvdyBcdTAwM2UgTUFDU0VDX1hQTl9NQVhfUkVQTEFZX1dJTkRPVylcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0V1JJVEVfT05DRShzZWN5LVx1MDAzZXJlcGxheV93aW5kb3csIHJlcGxheV93aW5kb3cpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtNDM4MiwyMSArNDM4NCwyMSBAQCBzdGF0aWMgc2l6ZV90IG1hY3NlY19nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHN0YXRpYyBpbnQgbWFjc2VjX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbi1cdHN0cnVjdCBtYWNzZWNfdHhfc2MgKnR4X3NjO1xuLVx0c3RydWN0IG1hY3NlY19kZXYgKm1hY3NlYztcbi1cdHN0cnVjdCBtYWNzZWNfc2VjeSAqc2VjeTtcbitcdGNvbnN0IHN0cnVjdCBtYWNzZWNfdHhfc2MgKnR4X3NjO1xuK1x0Y29uc3Qgc3RydWN0IG1hY3NlY19kZXYgKm1hY3NlYztcbitcdGNvbnN0IHN0cnVjdCBtYWNzZWNfc2VjeSAqc2VjeTtcbiBcdHU2NCBjc2lkO1xuIFxuIFx0bWFjc2VjID0gbWFjc2VjX3ByaXYoZGV2KTtcbiBcdHNlY3kgPSBcdTAwMjZtYWNzZWMtXHUwMDNlc2VjeTtcbiBcdHR4X3NjID0gXHUwMDI2c2VjeS1cdTAwM2V0eF9zYztcbiBcbi1cdHN3aXRjaCAoc2VjeS1cdTAwM2VrZXlfbGVuKSB7XG4rXHRzd2l0Y2ggKFJFQURfT05DRShzZWN5LVx1MDAzZWtleV9sZW4pKSB7XG4gXHRjYXNlIE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOOlxuLVx0XHRjc2lkID0gc2VjeS1cdTAwM2V4cG4gPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzEyOCA6IE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDtcbitcdFx0Y3NpZCA9IFJFQURfT05DRShzZWN5LVx1MDAzZXhwbikgPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzEyOCA6IE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOOlxuLVx0XHRjc2lkID0gc2VjeS1cdTAwM2V4cG4gPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzI1NiA6IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18yNTY7XG4rXHRcdGNzaWQgPSBSRUFEX09OQ0Uoc2VjeS1cdTAwM2V4cG4pID8gTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTX1hQTl8yNTYgOiBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfMjU2O1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuQEAgLTQ0MDcsMjAgKzQ0MDksMjAgQEAgc3RhdGljIGludCBtYWNzZWNfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0lDVl9MRU4sIHNlY3ktXHUwMDNlaWN2X2xlbikgfHxcbiBcdCAgICBubGFfcHV0X3U2NF82NGJpdChza2IsIElGTEFfTUFDU0VDX0NJUEhFUl9TVUlURSxcbiBcdFx0XHQgICAgICBjc2lkLCBJRkxBX01BQ1NFQ19QQUQpIHx8XG4tXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ09ESU5HX1NBLCB0eF9zYy1cdTAwM2VlbmNvZGluZ19zYSkgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRU5DUllQVCwgdHhfc2MtXHUwMDNlZW5jcnlwdCkgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfUFJPVEVDVCwgc2VjeS1cdTAwM2Vwcm90ZWN0X2ZyYW1lcykgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfSU5DX1NDSSwgdHhfc2MtXHUwMDNlc2VuZF9zY2kpIHx8XG4tXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VTLCB0eF9zYy1cdTAwM2VlbmRfc3RhdGlvbikgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfU0NCLCB0eF9zYy1cdTAwM2VzY2IpIHx8XG4tXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNULCBzZWN5LVx1MDAzZXJlcGxheV9wcm90ZWN0KSB8fFxuLVx0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19WQUxJREFUSU9OLCBzZWN5LVx1MDAzZXZhbGlkYXRlX2ZyYW1lcykgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfT0ZGTE9BRCwgbWFjc2VjLVx1MDAzZW9mZmxvYWQpIHx8XG4rXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ09ESU5HX1NBLCBSRUFEX09OQ0UodHhfc2MtXHUwMDNlZW5jb2Rpbmdfc2EpKSB8fFxuK1x0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19FTkNSWVBULCBSRUFEX09OQ0UodHhfc2MtXHUwMDNlZW5jcnlwdCkpIHx8XG4rXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1BST1RFQ1QsIFJFQURfT05DRShzZWN5LVx1MDAzZXByb3RlY3RfZnJhbWVzKSkgfHxcbitcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfSU5DX1NDSSwgUkVBRF9PTkNFKHR4X3NjLVx1MDAzZXNlbmRfc2NpKSkgfHxcbitcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRVMsIFJFQURfT05DRSh0eF9zYy1cdTAwM2VlbmRfc3RhdGlvbikpIHx8XG4rXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1NDQiwgUkVBRF9PTkNFKHR4X3NjLVx1MDAzZXNjYikpIHx8XG4rXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNULCBSRUFEX09OQ0Uoc2VjeS1cdTAwM2VyZXBsYXlfcHJvdGVjdCkpIHx8XG4rXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1ZBTElEQVRJT04sIFJFQURfT05DRShzZWN5LVx1MDAzZXZhbGlkYXRlX2ZyYW1lcykpIHx8XG4rXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX09GRkxPQUQsIFJFQURfT05DRShtYWNzZWMtXHUwMDNlb2ZmbG9hZCkpIHx8XG4gXHQgICAgMClcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4tXHRpZiAoc2VjeS1cdTAwM2VyZXBsYXlfcHJvdGVjdCkge1xuLVx0XHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX01BQ1NFQ19XSU5ET1csIHNlY3ktXHUwMDNlcmVwbGF5X3dpbmRvdykpXG4rXHRpZiAoUkVBRF9PTkNFKHNlY3ktXHUwMDNlcmVwbGF5X3Byb3RlY3QpKSB7XG4rXHRcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfTUFDU0VDX1dJTkRPVywgUkVBRF9PTkNFKHNlY3ktXHUwMDNlcmVwbGF5X3dpbmRvdykpKVxuIFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6NTQ6MTMuNDMxMjA1MzgyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM0NDQ1NDQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNQUNzZWMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvbWFjc2VjLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgcmVwbGFjaW5nIGRpcmVjdCBhc3NpZ25tZW50cyBhbmQgcmVhZHMgb2YgZmllbGRzIHdpdGhpbiBgbWFjc2VjX2RldmAsIGBtYWNzZWNfc2VjeWAsIGFuZCBgbWFjc2VjX3R4X3NjYCBzdHJ1Y3R1cmVzIHdpdGggYFdSSVRFX09OQ0VgIGFuZCBgUkVBRF9PTkNFYC4gSG1tLCBzb3VuZHMgbGlrZSBhIGRhdGEgcmFjZSBmaXgsIHdoaWNoIGlzIGRlZmluaXRlbHkgYSBnb29kIHRoaW5nLiBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gaW5kaWNhdGVzIHRoaXMgcHJldmVudHMgY29tcGlsZXIgb3B0aW1pemF0aW9ucyB0aGF0ICpjb3VsZCogbGVhZCB0byBkYXRhIHJhY2VzLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGJlIHByZWNpc2UgaGVyZS4gRG9lcyB0aGlzIGp1c3QgcHJldmVudCByZW9yZGVyaW5nLCBvciBkb2VzIGl0IGFjdHVhbGx5IGltcGFjdCBob3cgdGhlIGNvZGUgZXhlY3V0ZXM/IGBXUklURV9PTkNFYCBhbmQgYFJFQURfT05DRWAgdXNlIGNhc3RzIHRvIHZvbGF0aWxlLiBUaGV5IGNlcnRhaW5seSAqYWx0ZXIqIHRoZSBleGVjdXRpb24gZmxvdyBieSBpbXBvc2luZyBtZW1vcnkgYWNjZXNzIG9yZGVyaW5nIChvciBhdCBsZWFzdCwgcHJldmVudGluZyBjb21waWxlciByZW9yZGVyaW5nIGFuZCBlbGlzaW9uKS4gU28sIGl04oCZcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBmaXhlcyBhIHJlYWwgYnVnLlxuXG5UaGUgcHJvbXB04oCZcyBhZHZpY2UgYWJvdXQgXCJubyBmdW5jdGlvbmFsIGFsdGVyYXRpb25cIiBmb3IgZnV6emluZyBnb3QgbWUgdGhpbmtpbmcuIEl0J3MgYSB0cmlja3kgZGlzdGluY3Rpb24uIFdoaWxlIHRlY2huaWNhbGx5IGl0J3MgYSBkYXRhIHJhY2UgZml4IGFuZCBub3QgYSBuZXcgZmVhdHVyZSwgaXQgY2hhbmdlcyBob3cgdGhlIG1lbW9yeSBhY2Nlc3NlcyBhcmUgaGFuZGxlZCwgbWFraW5nIGl0IGZ1bmN0aW9uYWxseSByZWxldmFudCBmb3IgdGhlIHB1cnBvc2Ugb2YgZnV6emluZy4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZnVuY3Rpb25zIHRoaXMgcGF0Y2ggdG91Y2hlcyB0byBtYWtlIHN1cmUgSSBhbSBjb3JyZWN0OiBgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkYCwgYG1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbmAsIGFuZCBgbWFjc2VjX2ZpbGxfaW5mb2AgYXJlIG1vZGlmaWVkLiBZdXAsIHRoYXQgbWFrZXMgc2Vuc2UuXG5cbk5vdywgYmVjYXVzZSBpdOKAmXMgYSBjb3JlIG5ldHdvcmtpbmcgZHJpdmVyIChNQUNzZWMpLCBmdXp6aW5nIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRvIGNvbnNpZGVyLiBTaW5jZSBJIG5lZWQgdG8gY29uc2lkZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLCBJIHNob3VsZCBzZWFyY2ggZm9yIGBDT05GSUdfTUFDU0VDYCB1c2luZyB0aGUgZ3JlcHBlciB0b29sIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTk1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6NTQ6MjAuNzc1NjYzNTc2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjgxODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1BQ1NFQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9MzAyPWNvbmZpZyBBTVRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzE3LVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzE4OmNvbmZpZyBNQUNTRUNcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMxOS1cXHR0cmlzdGF0ZSBcXFwiSUVFRSA4MDIuMUFFIE1BQy1sZXZlbCBlbmNyeXB0aW9uIChNQUNzZWMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNTo1NDoyMC44MzYzNTkxOTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc2MzczMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKk1BQ3NlYyBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgZm9jdXMgaXMgZGVmaW5pdGVseSBvbiBgTUFDU0VDYCDigJMgdGhhdCdzIHRoZSBjb25maWd1cmF0aW9uIHBpZWNlIHdlJ3JlIGRlYWxpbmcgd2l0aC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbm90IGdldCB0dW5uZWwtdmlzaW9uZWQsIHRob3VnaC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgYW55IHJlbGF0ZWQsIG9yIHBvdGVudGlhbGx5IGludGVyZmVyaW5nLCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGFsc28gYmUgaW4gcGxheS4gV2UgbmVlZCBhIGhvbGlzdGljIHZpZXcgYmVmb3JlIG1ha2luZyBhbnkgYXNzdW1wdGlvbnMgb3IgZGl2aW5nIHRvbyBkZWVwIGludG8gdGhlIGBNQUNTRUNgIHNwZWNpZmljIHBhcmFtZXRlcnMuIEdvdHRhIHJ1bGUgb3V0IGFueSBvdGhlciByZWxldmFudCBzZXR0aW5ncyB0aGF0IG1pZ2h0IGltcGFjdCBvciBiZSBpbXBhY3RlZCBieSBpdC4gTGV0J3MgbWFrZSBzdXJlIG5vdGhpbmcgaXMgb3Zlcmxvb2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc4MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjU0OjI0LjAxMjczODA0MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDgzMjEwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWNzZWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX0lGQikgKz0gaWZiLm9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfTUFDU0VDKSArPSBtYWNzZWMub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19BTVQpICs9IGFtdC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjU0OjI0LjA3MzU3ODI2NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNzM3NjQ1ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTUFDc2VjIE5ldGxpbmsgT3BlcmF0aW9ucyBhbmQgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIHRoZSBjb25maWcgaXMgYE1BQ1NFQ2AuIFRoYXQncyB0aGUgYmFzZWxpbmUuIEkndmUgZ290IHRocmVlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0byBsb29rIGF0OiBgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkYCwgYG1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbmAsIGFuZCBgbWFjc2VjX2ZpbGxfaW5mb2AuIExldCdzIHF1aWNrbHkgdmVyaWZ5IHJlYWNoYWJpbGl0eSwgYmVjYXVzZSB0aGF0J3Mga2V5LiBgbWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uYCBpcyBoaXQgZnJvbSBgbWFjc2VjX2NoYW5nZWxpbmtgIGFuZCBgbWFjc2VjX25ld2xpbmtgLiAgYG1hY3NlY19maWxsX2luZm9gIGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgZnJvbSBgbWFjc2VjX2dldF9zaXplYCBhbmQgaXRzZWxmLCBhbmQgZmluYWxseSwgYG1hY3NlY191cGRhdGVfb2ZmbG9hZGAgaXMgY2FsbGVkIGZyb20gYG1hY3NlY19jaGFuZ2VsaW5rYC4gIFBlcmZlY3QsIHRoZXNlIGFyZSBhbGwgbmV0bGluayBvcGVyYXRpb25zIGZvciBNQUNzZWMsIHNvIHRoZXkgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIHZpYSBuZXRsaW5rLlxuXG5UaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIGRhdGEgcmFjZXMgb24gc2V2ZXJhbCBrZXkgZGF0YSBzdHJ1Y3R1cmVzIHdpdGhpbiBNQUNzZWM6IGBtYWNzZWMtXHUwMDNlb2ZmbG9hZGAsIGB0eF9zYy1cdTAwM2VlbmNvZGluZ19zYWAsIGB0eF9zYy1cdTAwM2VlbmNyeXB0YCwgYHNlY3ktXHUwMDNlcHJvdGVjdF9mcmFtZXNgLCBgdHhfc2MtXHUwMDNlc2VuZF9zY2lgLCBgdHhfc2MtXHUwMDNlZW5kX3N0YXRpb25gLCBgdHhfc2MtXHUwMDNlc2NiYCwgYHNlY3ktXHUwMDNlcmVwbGF5X3Byb3RlY3RgLCBgc2VjeS1cdTAwM2V2YWxpZGF0ZV9mcmFtZXNgLCBgc2VjeS1cdTAwM2VrZXlfbGVuYCwgYHNlY3ktXHUwMDNleHBuYCwgYW5kIGBzZWN5LVx1MDAzZXJlcGxheV93aW5kb3dgLiAgVGhpcyBpcyBnb29kLlxuXG5BbHJpZ2h0LCBkZWZpbml0ZWx5IHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIG1haW4gZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSBgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkYCwgYG1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbmAsIGFuZCBgbWFjc2VjX2ZpbGxfaW5mb2AuICBUaG9zZSBhcmUgZ29pbmcgdG8gYmUgbXkgYEZvY3VzU3ltYm9sc2AuIEFuZCBvZiBjb3Vyc2UsIGBFbmFibGVDb25maWdzOiBNQUNTRUNgLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBsZXQncyBkb3VibGUgY2hlY2sgZm9yIG90aGVyIGRlcGVuZGVudCBjb25maWdzLiBNQUNzZWMgcmVsaWVzIG9uIENSWVBUTywgQ1JZUFRPX0dDTSwgYW5kIHRoZSBsaWtlLCBidXQgdGhvc2UgYXJlIGdlbmVyYWxseSBlbmFibGVkIG9yIHNlbGVjdGVkIGF1dG9tYXRpY2FsbHkgYnkgYE1BQ1NFQ2AuIEkgd2lsbCBjaGVjayBLY29uZmlnIHRvIGJlIGFic29sdXRlbHkgc3VyZSwganVzdCB0byBjb3ZlciBhbGwgYmFzZXMgYW5kIGVuc3VyZSBtYXhpbXVtIGNvdmVyYWdlLCBidXQgSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDM4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjU0OjMwLjI0NzM0NjU4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzQwMTA5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDU0VDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMTctXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozMTg6Y29uZmlnIE1BQ1NFQ1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzE5LVxcdHRyaXN0YXRlIFxcXCJJRUVFIDgwMi4xQUUgTUFDLWxldmVsIGVuY3J5cHRpb24gKE1BQ3NlYylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjU0OjMwLjMxMDc1NDM0OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1Njk2MDM0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIENvbmZpZ3VyYXRpb24gS2VybmVsIENvZGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgYWJvdXQgdGhlIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbmV0d29yayBkZXZpY2Ugb3B0aW9ucyBhcmUgbGlrZWx5IGRlZmluZWQsIGFuZCBJIHN1c3BlY3QgdGhhdCBsaW5lIDMxOCB3aWxsIGhhdmUgdGhlIHBhcnRpY3VsYXIgZW50cnkgSSBuZWVkIHRvIGV4YW1pbmUuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuIEknbSBnb2luZyB0byBxdWlja2x5IGdldCBteXNlbGYgZmFtaWxpYXJpc2VkIHdpdGggdGhlIG9wdGlvbnMgYXJvdW5kIHRoYXQgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk1OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjU0OjMyLjg4MDM2MDYzOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMTgsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMTg6XFx0Y29uZmlnIE1BQ1NFQ1xcbiAzMTk6XFx0XFx0dHJpc3RhdGUgXFxcIklFRUUgODAyLjFBRSBNQUMtbGV2ZWwgZW5jcnlwdGlvbiAoTUFDc2VjKVxcXCJcXG4gMzIwOlxcdFxcdHNlbGVjdCBDUllQVE9cXG4gMzIxOlxcdFxcdHNlbGVjdCBDUllQVE9fQUVTXFxuIDMyMjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0dDTVxcbiAzMjM6XFx0XFx0c2VsZWN0IEdST19DRUxMU1xcbiAzMjQ6XFx0XFx0aGVscFxcbiAzMjU6XFx0XFx0ICAgTUFDc2VjIGlzIGFuIGVuY3J5cHRpb24gc3RhbmRhcmQgZm9yIEV0aGVybmV0LlxcbiAzMjY6XFx0XFxuIDMyNzpcXHRjb25maWcgTkVUQ09OU09MRVxcbiAzMjg6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgY29uc29sZSBsb2dnaW5nIHN1cHBvcnRcXFwiXFxuIDMyOTpcXHRcXHRkZXBlbmRzIG9uIFBSSU5US1xcbiAzMzA6XFx0XFx0aGVscFxcbiAzMzE6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBsb2cga2VybmVsIG1lc3NhZ2VzIG92ZXIgdGhlIG5ldHdvcmssIGVuYWJsZSB0aGlzLlxcbiAzMzI6XFx0XFx0ICBTZWUgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGNvbnNvbGUucnN0XFx1MDAzZSBmb3IgZGV0YWlscy5cXG4gMzMzOlxcdFxcbiAzMzQ6XFx0Y29uZmlnIE5FVENPTlNPTEVfRFlOQU1JQ1xcbiAzMzU6XFx0XFx0Ym9vbCBcXFwiRHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXFxcIlxcbiAzMzY6XFx0XFx0ZGVwZW5kcyBvbiBORVRDT05TT0xFIFxcdTAwMjZcXHUwMDI2IFNZU0ZTIFxcdTAwMjZcXHUwMDI2IENPTkZJR0ZTX0ZTIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gMzM3OlxcdFxcdFxcdFxcdCEoTkVUQ09OU09MRT15IFxcdTAwMjZcXHUwMDI2IENPTkZJR0ZTX0ZTPW0pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjU0OjMyLjg4MDQ2ODAwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQwMTA2NDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1BQ1NFQyBDb25maWd1cmF0aW9uIFRob3VnaHRzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHJldmlld2luZyB0aGlzIGBNQUNTRUNgIGNvbmZpZ3VyYXRpb24gbG9naWMuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgTUFDU0VDYCBpdHNlbGYgaGFuZGxlcyB0aGUgY3J5cHRvZ3JhcGhpYyBzZWxlY3Rpb247IGl0J3MgdGhlIGNvcmUgb2YgdGhlIHNlY3VyaXR5IGltcGxlbWVudGF0aW9uLiBUaGF0IG1lYW5zLCBmb2N1c2luZyBvbiB0aGUgYE1BQ1NFQ2AgY29uZmlndXJhdGlvbiBpcyB0aGUgcHJpbWFyeSB0aGluZy4gV2Ugc2hvdWxkbid0IG5lZWQgdG8gY29uZmlndXJlIGFueSBvdGhlciBjcnlwdG8gc2VwYXJhdGVseSBhcyBgTUFDU0VDYCBkb2VzIHRoaXMuXG5cbkknbSBzZWVpbmcgYSBmZXcga2V5IGZ1bmN0aW9ucyBoaWdobGlnaHRlZDogYG1hY3NlY191cGRhdGVfb2ZmbG9hZGAsIGBtYWNzZWNfY2hhbmdlbGlua19jb21tb25gLCBhbmQgYG1hY3NlY19maWxsX2luZm9gLiBUaGVzZSBhcmUgbGlrZWx5IHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBjb25maWd1cmF0aW9uIGhhbmRsaW5nIGxpZXMuXG5cblRoZSBwYXRjaCBpdHNlbGYgYXBwZWFycyB0byBiZSBhZGRyZXNzaW5nIGRhdGEgcmFjZXMgd2l0aGluIHRoZSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gaGFuZGxlcnMgZm9yIGBNQUNTRUNgLiBUaGUgYWRkaXRpb24gb2YgYFJFQURfT05DRWAgYW5kIGBXUklURV9PTkNFYCBpbmRpY2F0ZXMgd2UncmUgdHJ5aW5nIHRvIHJlc29sdmUgY29uY3VycmVuY3kgaXNzdWVzLiBUaGUgc3VnZ2VzdGVkIHRlc3QgaXMgc21hcnQ6IGZ1enppbmcgbmV0bGluayBtZXNzYWdlcyB0byB0aGUgYE1BQ1NFQ2AgaW50ZXJmYWNlcyBzaG91bGQgZWZmZWN0aXZlbHkgdGVzdCB3aGV0aGVyIHRoZSBjaGFuZ2VzIHRydWx5IGVsaW1pbmF0ZSB0aGUgcmFjZXMgYW5kIGRvbid0IGNyZWF0ZSBuZXcgcHJvYmxlbXMuIFRoaXMgaXMgYSB2ZXJ5IHNvbGlkIHZlcmlmaWNhdGlvbiBhcHByb2FjaC4gSSdsbCBuZWVkIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0MzMsIk91dHB1dFRva2VucyI6MTEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6NTQ6MzcuMjIwNTc3NDc1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc2NDg3MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQ1NFQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3NlY191cGRhdGVfb2ZmbG9hZFwiLFxuICAgIFwibWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uXCIsXG4gICAgXCJtYWNzZWNfZmlsbF9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgZGF0YSByYWNlcyBpbiBNQUNzZWMgbmV0bGluayBjb25maWd1cmF0aW9uIGhhbmRsZXJzIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRS4gRnV6emluZyBuZXRsaW5rIG1lc3NhZ2VzIHRvIE1BQ3NlYyBpbnRlcmZhY2VzIGNhbiB2ZXJpZnkgdGhhdCB0aGVzZSBjaGFuZ2VzIHByZXZlbnQgdGhlIGRhdGEgcmFjZXMgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDU0VDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjc2VjX3VwZGF0ZV9vZmZsb2FkXCIsXG4gICAgXCJtYWNzZWNfY2hhbmdlbGlua19jb21tb25cIixcbiAgICBcIm1hY3NlY19maWxsX2luZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGluIE1BQ3NlYyBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gaGFuZGxlcnMgYnkgYWRkaW5nIFJFQURfT05DRS9XUklURV9PTkNFLiBGdXp6aW5nIG5ldGxpbmsgbWVzc2FnZXMgdG8gTUFDc2VjIGludGVyZmFjZXMgY2FuIHZlcmlmeSB0aGF0IHRoZXNlIGNoYW5nZXMgcHJldmVudCB0aGUgZGF0YSByYWNlcyBhbmQgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow58l6j[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 15:36:56 +0000 UTC FinishedAt: 2026-07-01 15:54:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "1c664ec4b9ea827b609d296921ed5bad8a40a158", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACSEC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "1c664ec4b9ea827b609d296921ed5bad8a40a158", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACSEC" ], "series_id": "162a5013-75d4-4c59-b081-57eeec08bbd1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macsec_update_offload", "macsec_changelink_common", "macsec_fill_info" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1NFQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hY3NlY191cGRhdGVfb2ZmbG9hZCYjMzQ7LAogICAgJiMzNDttYWNzZWNfY2hhbmdlbGlua19jb21tb24mIzM0OywKICAgICYjMzQ7bWFjc2VjX2ZpbGxfaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGluIE1BQ3NlYyBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gaGFuZGxlcnMgYnkgYWRkaW5nIFJFQURfT05DRS9XUklURV9PTkNFLiBGdXp6aW5nIG5ldGxpbmsgbWVzc2FnZXMgdG8gTUFDc2VjIGludGVyZmFjZXMgY2FuIHZlcmlmeSB0aGF0IHRoZXNlIGNoYW5nZXMgcHJldmVudCB0aGUgZGF0YSByYWNlcyBhbmQgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTo1NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDg5YjhjN2VlMTkzZjEzYzJkYmZjZGE0M2I5ZTA3Y2ZmMjM0OGRmYTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDE1OjU0OjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3NlYy5jIGIvZHJpdmVycy9uZXQvbWFjc2VjLmNcbmluZGV4IGZiMDA5MTIwYTkyNDE1Li4xYTk2ODU5NmNhNDViOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3NlYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tYWNzZWMuY1xuQEAgLTI2MzYsNyAmIzQzOzI2MzYsNyBAQCBzdGF0aWMgaW50IG1hY3NlY191cGRhdGVfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHR2bGFuX2Ryb3BfcnhfY3RhZ19maWx0ZXJfaW5mbyhkZXYpO1xuIFx0XHR2bGFuX2Ryb3Bfcnhfc3RhZ19maWx0ZXJfaW5mbyhkZXYpO1xuIFx0fVxuLVx0bWFjc2VjLVx1MDAzZW9mZmxvYWQgPSBvZmZsb2FkO1xuJiM0MztcdFdSSVRFX09OQ0UobWFjc2VjLVx1MDAzZW9mZmxvYWQsIG9mZmxvYWQpO1xuIFx0LyogQWRkIFZMQU4gZmlsdGVycyB3aGVuIGVuYWJsaW5nIG9mZmxvYWQuICovXG4gXHRpZiAocHJldl9vZmZsb2FkID09IE1BQ1NFQ19PRkZMT0FEX09GRikge1xuIFx0XHRyZXQgPSB2bGFuX2dldF9yeF9jdGFnX2ZpbHRlcl9pbmZvKGRldik7XG5AQCAtMjY2Niw3ICYjNDM7MjY2Niw3IEBAIHN0YXRpYyBpbnQgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRyZXR1cm4gMDtcbiBcbiByb2xsYmFja19vZmZsb2FkOlxuLVx0bWFjc2VjLVx1MDAzZW9mZmxvYWQgPSBwcmV2X29mZmxvYWQ7XG4mIzQzO1x0V1JJVEVfT05DRShtYWNzZWMtXHUwMDNlb2ZmbG9hZCwgcHJldl9vZmZsb2FkKTtcbiBcdG1hY3NlY19vZmZsb2FkKG9wcy1cdTAwM2VtZG9fZGVsX3NlY3ksIFx1MDAyNmN0eCk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuQEAgLTM4NzUsNTIgJiM0MzszODc1LDUzIEBAIHN0YXRpYyBpbnQgbWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19FTkNPRElOR19TQV0pIHtcbiBcdFx0c3RydWN0IG1hY3NlY190eF9zYSAqdHhfc2E7XG4mIzQzO1x0XHR1OCBlbmNvZGluZ19zYSA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FTkNPRElOR19TQV0pO1xuIFxuLVx0XHR0eF9zYy1cdTAwM2VlbmNvZGluZ19zYSA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FTkNPRElOR19TQV0pO1xuLVx0XHR0eF9zYSA9IHJ0bmxfZGVyZWZlcmVuY2UodHhfc2MtXHUwMDNlc2FbdHhfc2MtXHUwMDNlZW5jb2Rpbmdfc2FdKTtcbiYjNDM7XHRcdFdSSVRFX09OQ0UodHhfc2MtXHUwMDNlZW5jb2Rpbmdfc2EsIGVuY29kaW5nX3NhKTtcbiYjNDM7XHRcdHR4X3NhID0gcnRubF9kZXJlZmVyZW5jZSh0eF9zYy1cdTAwM2VzYVtlbmNvZGluZ19zYV0pO1xuIFxuIFx0XHRzZWN5LVx1MDAzZW9wZXJhdGlvbmFsID0gdHhfc2EgXHUwMDI2XHUwMDI2IHR4X3NhLVx1MDAzZWFjdGl2ZTtcbiBcdH1cbiBcbiBcdGlmIChkYXRhW0lGTEFfTUFDU0VDX0VOQ1JZUFRdKVxuLVx0XHR0eF9zYy1cdTAwM2VlbmNyeXB0ID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfRU5DUllQVF0pO1xuJiM0MztcdFx0V1JJVEVfT05DRSh0eF9zYy1cdTAwM2VlbmNyeXB0LCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FTkNSWVBUXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfUFJPVEVDVF0pXG4tXHRcdHNlY3ktXHUwMDNlcHJvdGVjdF9mcmFtZXMgPSAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSk7XG4mIzQzO1x0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNlcHJvdGVjdF9mcmFtZXMsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1BST1RFQ1RdKSk7XG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19JTkNfU0NJXSlcbi1cdFx0dHhfc2MtXHUwMDNlc2VuZF9zY2kgPSAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19JTkNfU0NJXSk7XG4mIzQzO1x0XHRXUklURV9PTkNFKHR4X3NjLVx1MDAzZXNlbmRfc2NpLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19JTkNfU0NJXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfRVNdKVxuLVx0XHR0eF9zYy1cdTAwM2VlbmRfc3RhdGlvbiA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VTXSk7XG4mIzQzO1x0XHRXUklURV9PTkNFKHR4X3NjLVx1MDAzZWVuZF9zdGF0aW9uLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FU10pKTtcbiBcbiBcdGlmIChkYXRhW0lGTEFfTUFDU0VDX1NDQl0pXG4tXHRcdHR4X3NjLVx1MDAzZXNjYiA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1NDQl0pO1xuJiM0MztcdFx0V1JJVEVfT05DRSh0eF9zYy1cdTAwM2VzY2IsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1NDQl0pKTtcbiBcbiBcdGlmIChkYXRhW0lGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNUXSlcbi1cdFx0c2VjeS1cdTAwM2VyZXBsYXlfcHJvdGVjdCA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNUXSk7XG4mIzQzO1x0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNlcmVwbGF5X3Byb3RlY3QsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNUXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfVkFMSURBVElPTl0pXG4tXHRcdHNlY3ktXHUwMDNldmFsaWRhdGVfZnJhbWVzID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1ZBTElEQVRJT05dKTtcbiYjNDM7XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2V2YWxpZGF0ZV9mcmFtZXMsIG5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19WQUxJREFUSU9OXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfQ0lQSEVSX1NVSVRFXSkge1xuIFx0XHRzd2l0Y2ggKG5sYV9nZXRfdTY0KGRhdGFbSUZMQV9NQUNTRUNfQ0lQSEVSX1NVSVRFXSkpIHtcbiBcdFx0Y2FzZSBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfMTI4OlxuIFx0XHRjYXNlIE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDpcbi1cdFx0XHRzZWN5LVx1MDAzZWtleV9sZW4gPSBNQUNTRUNfR0NNX0FFU18xMjhfU0FLX0xFTjtcbi1cdFx0XHRzZWN5LVx1MDAzZXhwbiA9IGZhbHNlO1xuJiM0MztcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNla2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMTI4X1NBS19MRU4pO1xuJiM0MztcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNleHBuLCBmYWxzZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTXzI1Njpcbi1cdFx0XHRzZWN5LVx1MDAzZWtleV9sZW4gPSBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTjtcbi1cdFx0XHRzZWN5LVx1MDAzZXhwbiA9IGZhbHNlO1xuJiM0MztcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNla2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMjU2X1NBS19MRU4pO1xuJiM0MztcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNleHBuLCBmYWxzZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTX1hQTl8xMjg6XG4tXHRcdFx0c2VjeS1cdTAwM2VrZXlfbGVuID0gTUFDU0VDX0dDTV9BRVNfMTI4X1NBS19MRU47XG4tXHRcdFx0c2VjeS1cdTAwM2V4cG4gPSB0cnVlO1xuJiM0MztcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNla2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMTI4X1NBS19MRU4pO1xuJiM0MztcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNleHBuLCB0cnVlKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzI1Njpcbi1cdFx0XHRzZWN5LVx1MDAzZWtleV9sZW4gPSBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTjtcbi1cdFx0XHRzZWN5LVx1MDAzZXhwbiA9IHRydWU7XG4mIzQzO1x0XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2VrZXlfbGVuLCBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTik7XG4mIzQzO1x0XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2V4cG4sIHRydWUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTM5MjgsMTMgJiM0MzszOTI5LDE0IEBAIHN0YXRpYyBpbnQgbWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHR9XG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19XSU5ET1ddKSB7XG4tXHRcdHNlY3ktXHUwMDNlcmVwbGF5X3dpbmRvdyA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNTRUNfV0lORE9XXSk7XG4mIzQzO1x0XHR1MzIgcmVwbGF5X3dpbmRvdyA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNTRUNfV0lORE9XXSk7XG4gXG4gXHRcdC8qIElFRUUgODAyLjFBRWJ3LTIwMTMgMTAuNy44IC0gbWF4aW11bSByZXBsYXkgd2luZG93XG4gXHRcdCAqIGZvciBYUE4gY2lwaGVyIHN1aXRlcyAqL1xuIFx0XHRpZiAoc2VjeS1cdTAwM2V4cG4gXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBzZWN5LVx1MDAzZXJlcGxheV93aW5kb3cgXHUwMDNlIE1BQ1NFQ19YUE5fTUFYX1JFUExBWV9XSU5ET1cpXG4mIzQzO1x0XHQgICAgcmVwbGF5X3dpbmRvdyBcdTAwM2UgTUFDU0VDX1hQTl9NQVhfUkVQTEFZX1dJTkRPVylcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2VyZXBsYXlfd2luZG93LCByZXBsYXlfd2luZG93KTtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuQEAgLTQzODIsMjEgJiM0Mzs0Mzg0LDIxIEBAIHN0YXRpYyBzaXplX3QgbWFjc2VjX2dldF9zaXplKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gc3RhdGljIGludCBtYWNzZWNfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuLVx0c3RydWN0IG1hY3NlY190eF9zYyAqdHhfc2M7XG4tXHRzdHJ1Y3QgbWFjc2VjX2RldiAqbWFjc2VjO1xuLVx0c3RydWN0IG1hY3NlY19zZWN5ICpzZWN5O1xuJiM0MztcdGNvbnN0IHN0cnVjdCBtYWNzZWNfdHhfc2MgKnR4X3NjO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBtYWNzZWNfZGV2ICptYWNzZWM7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IG1hY3NlY19zZWN5ICpzZWN5O1xuIFx0dTY0IGNzaWQ7XG4gXG4gXHRtYWNzZWMgPSBtYWNzZWNfcHJpdihkZXYpO1xuIFx0c2VjeSA9IFx1MDAyNm1hY3NlYy1cdTAwM2VzZWN5O1xuIFx0dHhfc2MgPSBcdTAwMjZzZWN5LVx1MDAzZXR4X3NjO1xuIFxuLVx0c3dpdGNoIChzZWN5LVx1MDAzZWtleV9sZW4pIHtcbiYjNDM7XHRzd2l0Y2ggKFJFQURfT05DRShzZWN5LVx1MDAzZWtleV9sZW4pKSB7XG4gXHRjYXNlIE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOOlxuLVx0XHRjc2lkID0gc2VjeS1cdTAwM2V4cG4gPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzEyOCA6IE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDtcbiYjNDM7XHRcdGNzaWQgPSBSRUFEX09OQ0Uoc2VjeS1cdTAwM2V4cG4pID8gTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTX1hQTl8xMjggOiBNQUNTRUNfREVGQVVMVF9DSVBIRVJfSUQ7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTjpcbi1cdFx0Y3NpZCA9IHNlY3ktXHUwMDNleHBuID8gTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTX1hQTl8yNTYgOiBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfMjU2O1xuJiM0MztcdFx0Y3NpZCA9IFJFQURfT05DRShzZWN5LVx1MDAzZXhwbikgPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzI1NiA6IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18yNTY7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG5AQCAtNDQwNywyMCAmIzQzOzQ0MDksMjAgQEAgc3RhdGljIGludCBtYWNzZWNfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0lDVl9MRU4sIHNlY3ktXHUwMDNlaWN2X2xlbikgfHxcbiBcdCAgICBubGFfcHV0X3U2NF82NGJpdChza2IsIElGTEFfTUFDU0VDX0NJUEhFUl9TVUlURSxcbiBcdFx0XHQgICAgICBjc2lkLCBJRkxBX01BQ1NFQ19QQUQpIHx8XG4tXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ09ESU5HX1NBLCB0eF9zYy1cdTAwM2VlbmNvZGluZ19zYSkgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRU5DUllQVCwgdHhfc2MtXHUwMDNlZW5jcnlwdCkgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfUFJPVEVDVCwgc2VjeS1cdTAwM2Vwcm90ZWN0X2ZyYW1lcykgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfSU5DX1NDSSwgdHhfc2MtXHUwMDNlc2VuZF9zY2kpIHx8XG4tXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VTLCB0eF9zYy1cdTAwM2VlbmRfc3RhdGlvbikgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfU0NCLCB0eF9zYy1cdTAwM2VzY2IpIHx8XG4tXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNULCBzZWN5LVx1MDAzZXJlcGxheV9wcm90ZWN0KSB8fFxuLVx0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19WQUxJREFUSU9OLCBzZWN5LVx1MDAzZXZhbGlkYXRlX2ZyYW1lcykgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfT0ZGTE9BRCwgbWFjc2VjLVx1MDAzZW9mZmxvYWQpIHx8XG4mIzQzO1x0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19FTkNPRElOR19TQSwgUkVBRF9PTkNFKHR4X3NjLVx1MDAzZWVuY29kaW5nX3NhKSkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ1JZUFQsIFJFQURfT05DRSh0eF9zYy1cdTAwM2VlbmNyeXB0KSkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1BST1RFQ1QsIFJFQURfT05DRShzZWN5LVx1MDAzZXByb3RlY3RfZnJhbWVzKSkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0lOQ19TQ0ksIFJFQURfT05DRSh0eF9zYy1cdTAwM2VzZW5kX3NjaSkpIHx8XG4mIzQzO1x0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19FUywgUkVBRF9PTkNFKHR4X3NjLVx1MDAzZWVuZF9zdGF0aW9uKSkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1NDQiwgUkVBRF9PTkNFKHR4X3NjLVx1MDAzZXNjYikpIHx8XG4mIzQzO1x0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19SRVBMQVlfUFJPVEVDVCwgUkVBRF9PTkNFKHNlY3ktXHUwMDNlcmVwbGF5X3Byb3RlY3QpKSB8fFxuJiM0MztcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfVkFMSURBVElPTiwgUkVBRF9PTkNFKHNlY3ktXHUwMDNldmFsaWRhdGVfZnJhbWVzKSkgfHxcbiYjNDM7XHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX09GRkxPQUQsIFJFQURfT05DRShtYWNzZWMtXHUwMDNlb2ZmbG9hZCkpIHx8XG4gXHQgICAgMClcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4tXHRpZiAoc2VjeS1cdTAwM2VyZXBsYXlfcHJvdGVjdCkge1xuLVx0XHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX01BQ1NFQ19XSU5ET1csIHNlY3ktXHUwMDNlcmVwbGF5X3dpbmRvdykpXG4mIzQzO1x0aWYgKFJFQURfT05DRShzZWN5LVx1MDAzZXJlcGxheV9wcm90ZWN0KSkge1xuJiM0MztcdFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9NQUNTRUNfV0lORE9XLCBSRUFEX09OQ0Uoc2VjeS1cdTAwM2VyZXBsYXlfd2luZG93KSkpXG4gXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6NTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDU0VDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjc2VjX3VwZGF0ZV9vZmZsb2FkJiMzNDssCiAgICAmIzM0O21hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbiYjMzQ7LAogICAgJiMzNDttYWNzZWNfZmlsbF9pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gTUFDc2VjIG5ldGxpbmsgY29uZmlndXJhdGlvbiBoYW5kbGVycyBieSBhZGRpbmcgUkVBRF9PTkNFL1dSSVRFX09OQ0UuIEZ1enppbmcgbmV0bGluayBtZXNzYWdlcyB0byBNQUNzZWMgaW50ZXJmYWNlcyBjYW4gdmVyaWZ5IHRoYXQgdGhlc2UgY2hhbmdlcyBwcmV2ZW50IHRoZSBkYXRhIHJhY2VzIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4OWI4YzdlZTE5M2YxM2MyZGJmY2RhNDNiOWUwN2NmZjIzNDhkZmEwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMSAxNTo1NDoxMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3NlYy5jIGIvZHJpdmVycy9uZXQvbWFjc2VjLmMKaW5kZXggZmIwMDkxMjBhOTI0MTUuLjFhOTY4NTk2Y2E0NWI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tYWNzZWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tYWNzZWMuYwpAQCAtMjYzNiw3ICYjNDM7MjYzNiw3IEBAIHN0YXRpYyBpbnQgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCXZsYW5fZHJvcF9yeF9jdGFnX2ZpbHRlcl9pbmZvKGRldik7CiAJCXZsYW5fZHJvcF9yeF9zdGFnX2ZpbHRlcl9pbmZvKGRldik7CiAJfQotCW1hY3NlYy0mZ3Q7b2ZmbG9hZCA9IG9mZmxvYWQ7CiYjNDM7CVdSSVRFX09OQ0UobWFjc2VjLSZndDtvZmZsb2FkLCBvZmZsb2FkKTsKIAkvKiBBZGQgVkxBTiBmaWx0ZXJzIHdoZW4gZW5hYmxpbmcgb2ZmbG9hZC4gKi8KIAlpZiAocHJldl9vZmZsb2FkID09IE1BQ1NFQ19PRkZMT0FEX09GRikgewogCQlyZXQgPSB2bGFuX2dldF9yeF9jdGFnX2ZpbHRlcl9pbmZvKGRldik7CkBAIC0yNjY2LDcgJiM0MzsyNjY2LDcgQEAgc3RhdGljIGludCBtYWNzZWNfdXBkYXRlX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlyZXR1cm4gMDsKIAogcm9sbGJhY2tfb2ZmbG9hZDoKLQltYWNzZWMtJmd0O29mZmxvYWQgPSBwcmV2X29mZmxvYWQ7CiYjNDM7CVdSSVRFX09OQ0UobWFjc2VjLSZndDtvZmZsb2FkLCBwcmV2X29mZmxvYWQpOwogCW1hY3NlY19vZmZsb2FkKG9wcy0mZ3Q7bWRvX2RlbF9zZWN5LCAmYW1wO2N0eCk7CiAKIAlyZXR1cm4gcmV0OwpAQCAtMzg3NSw1MiAmIzQzOzM4NzUsNTMgQEAgc3RhdGljIGludCBtYWNzZWNfY2hhbmdlbGlua19jb21tb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAogCWlmIChkYXRhW0lGTEFfTUFDU0VDX0VOQ09ESU5HX1NBXSkgewogCQlzdHJ1Y3QgbWFjc2VjX3R4X3NhICp0eF9zYTsKJiM0MzsJCXU4IGVuY29kaW5nX3NhID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ09ESU5HX1NBXSk7CiAKLQkJdHhfc2MtJmd0O2VuY29kaW5nX3NhID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ09ESU5HX1NBXSk7Ci0JCXR4X3NhID0gcnRubF9kZXJlZmVyZW5jZSh0eF9zYy0mZ3Q7c2FbdHhfc2MtJmd0O2VuY29kaW5nX3NhXSk7CiYjNDM7CQlXUklURV9PTkNFKHR4X3NjLSZndDtlbmNvZGluZ19zYSwgZW5jb2Rpbmdfc2EpOwomIzQzOwkJdHhfc2EgPSBydG5sX2RlcmVmZXJlbmNlKHR4X3NjLSZndDtzYVtlbmNvZGluZ19zYV0pOwogCiAJCXNlY3ktJmd0O29wZXJhdGlvbmFsID0gdHhfc2EgJmFtcDsmYW1wOyB0eF9zYS0mZ3Q7YWN0aXZlOwogCX0KIAogCWlmIChkYXRhW0lGTEFfTUFDU0VDX0VOQ1JZUFRdKQotCQl0eF9zYy0mZ3Q7ZW5jcnlwdCA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ1JZUFRdKTsKJiM0MzsJCVdSSVRFX09OQ0UodHhfc2MtJmd0O2VuY3J5cHQsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ1JZUFRdKSk7CiAKIAlpZiAoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSkKLQkJc2VjeS0mZ3Q7cHJvdGVjdF9mcmFtZXMgPSAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSk7CiYjNDM7CQlXUklURV9PTkNFKHNlY3ktJmd0O3Byb3RlY3RfZnJhbWVzLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSkpOwogCiAJaWYgKGRhdGFbSUZMQV9NQUNTRUNfSU5DX1NDSV0pCi0JCXR4X3NjLSZndDtzZW5kX3NjaSA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0lOQ19TQ0ldKTsKJiM0MzsJCVdSSVRFX09OQ0UodHhfc2MtJmd0O3NlbmRfc2NpLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19JTkNfU0NJXSkpOwogCiAJaWYgKGRhdGFbSUZMQV9NQUNTRUNfRVNdKQotCQl0eF9zYy0mZ3Q7ZW5kX3N0YXRpb24gPSAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FU10pOwomIzQzOwkJV1JJVEVfT05DRSh0eF9zYy0mZ3Q7ZW5kX3N0YXRpb24sICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VTXSkpOwogCiAJaWYgKGRhdGFbSUZMQV9NQUNTRUNfU0NCXSkKLQkJdHhfc2MtJmd0O3NjYiA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1NDQl0pOwomIzQzOwkJV1JJVEVfT05DRSh0eF9zYy0mZ3Q7c2NiLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19TQ0JdKSk7CiAKIAlpZiAoZGF0YVtJRkxBX01BQ1NFQ19SRVBMQVlfUFJPVEVDVF0pCi0JCXNlY3ktJmd0O3JlcGxheV9wcm90ZWN0ID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfUkVQTEFZX1BST1RFQ1RdKTsKJiM0MzsJCVdSSVRFX09OQ0Uoc2VjeS0mZ3Q7cmVwbGF5X3Byb3RlY3QsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNUXSkpOwogCiAJaWYgKGRhdGFbSUZMQV9NQUNTRUNfVkFMSURBVElPTl0pCi0JCXNlY3ktJmd0O3ZhbGlkYXRlX2ZyYW1lcyA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19WQUxJREFUSU9OXSk7CiYjNDM7CQlXUklURV9PTkNFKHNlY3ktJmd0O3ZhbGlkYXRlX2ZyYW1lcywgbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1ZBTElEQVRJT05dKSk7CiAKIAlpZiAoZGF0YVtJRkxBX01BQ1NFQ19DSVBIRVJfU1VJVEVdKSB7CiAJCXN3aXRjaCAobmxhX2dldF91NjQoZGF0YVtJRkxBX01BQ1NFQ19DSVBIRVJfU1VJVEVdKSkgewogCQljYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18xMjg6CiAJCWNhc2UgTUFDU0VDX0RFRkFVTFRfQ0lQSEVSX0lEOgotCQkJc2VjeS0mZ3Q7a2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOOwotCQkJc2VjeS0mZ3Q7eHBuID0gZmFsc2U7CiYjNDM7CQkJV1JJVEVfT05DRShzZWN5LSZndDtrZXlfbGVuLCBNQUNTRUNfR0NNX0FFU18xMjhfU0FLX0xFTik7CiYjNDM7CQkJV1JJVEVfT05DRShzZWN5LSZndDt4cG4sIGZhbHNlKTsKIAkJCWJyZWFrOwogCQljYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18yNTY6Ci0JCQlzZWN5LSZndDtrZXlfbGVuID0gTUFDU0VDX0dDTV9BRVNfMjU2X1NBS19MRU47Ci0JCQlzZWN5LSZndDt4cG4gPSBmYWxzZTsKJiM0MzsJCQlXUklURV9PTkNFKHNlY3ktJmd0O2tleV9sZW4sIE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOKTsKJiM0MzsJCQlXUklURV9PTkNFKHNlY3ktJmd0O3hwbiwgZmFsc2UpOwogCQkJYnJlYWs7CiAJCWNhc2UgTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTX1hQTl8xMjg6Ci0JCQlzZWN5LSZndDtrZXlfbGVuID0gTUFDU0VDX0dDTV9BRVNfMTI4X1NBS19MRU47Ci0JCQlzZWN5LSZndDt4cG4gPSB0cnVlOwomIzQzOwkJCVdSSVRFX09OQ0Uoc2VjeS0mZ3Q7a2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMTI4X1NBS19MRU4pOwomIzQzOwkJCVdSSVRFX09OQ0Uoc2VjeS0mZ3Q7eHBuLCB0cnVlKTsKIAkJCWJyZWFrOwogCQljYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMjU2OgotCQkJc2VjeS0mZ3Q7a2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOOwotCQkJc2VjeS0mZ3Q7eHBuID0gdHJ1ZTsKJiM0MzsJCQlXUklURV9PTkNFKHNlY3ktJmd0O2tleV9sZW4sIE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOKTsKJiM0MzsJCQlXUklURV9PTkNFKHNlY3ktJmd0O3hwbiwgdHJ1ZSk7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldHVybiAtRUlOVkFMOwpAQCAtMzkyOCwxMyAmIzQzOzM5MjksMTQgQEAgc3RhdGljIGludCBtYWNzZWNfY2hhbmdlbGlua19jb21tb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAl9CiAKIAlpZiAoZGF0YVtJRkxBX01BQ1NFQ19XSU5ET1ddKSB7Ci0JCXNlY3ktJmd0O3JlcGxheV93aW5kb3cgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDU0VDX1dJTkRPV10pOwomIzQzOwkJdTMyIHJlcGxheV93aW5kb3cgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDU0VDX1dJTkRPV10pOwogCiAJCS8qIElFRUUgODAyLjFBRWJ3LTIwMTMgMTAuNy44IC0gbWF4aW11bSByZXBsYXkgd2luZG93CiAJCSAqIGZvciBYUE4gY2lwaGVyIHN1aXRlcyAqLwogCQlpZiAoc2VjeS0mZ3Q7eHBuICZhbXA7JmFtcDsKLQkJICAgIHNlY3ktJmd0O3JlcGxheV93aW5kb3cgJmd0OyBNQUNTRUNfWFBOX01BWF9SRVBMQVlfV0lORE9XKQomIzQzOwkJICAgIHJlcGxheV93aW5kb3cgJmd0OyBNQUNTRUNfWFBOX01BWF9SRVBMQVlfV0lORE9XKQogCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQlXUklURV9PTkNFKHNlY3ktJmd0O3JlcGxheV93aW5kb3csIHJlcGxheV93aW5kb3cpOwogCX0KIAogCXJldHVybiAwOwpAQCAtNDM4MiwyMSAmIzQzOzQzODQsMjEgQEAgc3RhdGljIHNpemVfdCBtYWNzZWNfZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHN0YXRpYyBpbnQgbWFjc2VjX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7Ci0Jc3RydWN0IG1hY3NlY190eF9zYyAqdHhfc2M7Ci0Jc3RydWN0IG1hY3NlY19kZXYgKm1hY3NlYzsKLQlzdHJ1Y3QgbWFjc2VjX3NlY3kgKnNlY3k7CiYjNDM7CWNvbnN0IHN0cnVjdCBtYWNzZWNfdHhfc2MgKnR4X3NjOwomIzQzOwljb25zdCBzdHJ1Y3QgbWFjc2VjX2RldiAqbWFjc2VjOwomIzQzOwljb25zdCBzdHJ1Y3QgbWFjc2VjX3NlY3kgKnNlY3k7CiAJdTY0IGNzaWQ7CiAKIAltYWNzZWMgPSBtYWNzZWNfcHJpdihkZXYpOwogCXNlY3kgPSAmYW1wO21hY3NlYy0mZ3Q7c2VjeTsKIAl0eF9zYyA9ICZhbXA7c2VjeS0mZ3Q7dHhfc2M7CiAKLQlzd2l0Y2ggKHNlY3ktJmd0O2tleV9sZW4pIHsKJiM0MzsJc3dpdGNoIChSRUFEX09OQ0Uoc2VjeS0mZ3Q7a2V5X2xlbikpIHsKIAljYXNlIE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOOgotCQljc2lkID0gc2VjeS0mZ3Q7eHBuID8gTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTX1hQTl8xMjggOiBNQUNTRUNfREVGQVVMVF9DSVBIRVJfSUQ7CiYjNDM7CQljc2lkID0gUkVBRF9PTkNFKHNlY3ktJmd0O3hwbikgPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzEyOCA6IE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDsKIAkJYnJlYWs7CiAJY2FzZSBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTjoKLQkJY3NpZCA9IHNlY3ktJmd0O3hwbiA/IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMjU2IDogTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTXzI1NjsKJiM0MzsJCWNzaWQgPSBSRUFEX09OQ0Uoc2VjeS0mZ3Q7eHBuKSA/IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMjU2IDogTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTXzI1NjsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZ290byBubGFfcHV0X2ZhaWx1cmU7CkBAIC00NDA3LDIwICYjNDM7NDQwOSwyMCBAQCBzdGF0aWMgaW50IG1hY3NlY19maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0lDVl9MRU4sIHNlY3ktJmd0O2ljdl9sZW4pIHx8CiAJICAgIG5sYV9wdXRfdTY0XzY0Yml0KHNrYiwgSUZMQV9NQUNTRUNfQ0lQSEVSX1NVSVRFLAogCQkJICAgICAgY3NpZCwgSUZMQV9NQUNTRUNfUEFEKSB8fAotCSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRU5DT0RJTkdfU0EsIHR4X3NjLSZndDtlbmNvZGluZ19zYSkgfHwKLQkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ1JZUFQsIHR4X3NjLSZndDtlbmNyeXB0KSB8fAotCSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfUFJPVEVDVCwgc2VjeS0mZ3Q7cHJvdGVjdF9mcmFtZXMpIHx8Ci0JICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19JTkNfU0NJLCB0eF9zYy0mZ3Q7c2VuZF9zY2kpIHx8Ci0JICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19FUywgdHhfc2MtJmd0O2VuZF9zdGF0aW9uKSB8fAotCSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfU0NCLCB0eF9zYy0mZ3Q7c2NiKSB8fAotCSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfUkVQTEFZX1BST1RFQ1QsIHNlY3ktJmd0O3JlcGxheV9wcm90ZWN0KSB8fAotCSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfVkFMSURBVElPTiwgc2VjeS0mZ3Q7dmFsaWRhdGVfZnJhbWVzKSB8fAotCSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfT0ZGTE9BRCwgbWFjc2VjLSZndDtvZmZsb2FkKSB8fAomIzQzOwkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ09ESU5HX1NBLCBSRUFEX09OQ0UodHhfc2MtJmd0O2VuY29kaW5nX3NhKSkgfHwKJiM0MzsJICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19FTkNSWVBULCBSRUFEX09OQ0UodHhfc2MtJmd0O2VuY3J5cHQpKSB8fAomIzQzOwkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1BST1RFQ1QsIFJFQURfT05DRShzZWN5LSZndDtwcm90ZWN0X2ZyYW1lcykpIHx8CiYjNDM7CSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfSU5DX1NDSSwgUkVBRF9PTkNFKHR4X3NjLSZndDtzZW5kX3NjaSkpIHx8CiYjNDM7CSAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRVMsIFJFQURfT05DRSh0eF9zYy0mZ3Q7ZW5kX3N0YXRpb24pKSB8fAomIzQzOwkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1NDQiwgUkVBRF9PTkNFKHR4X3NjLSZndDtzY2IpKSB8fAomIzQzOwkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNULCBSRUFEX09OQ0Uoc2VjeS0mZ3Q7cmVwbGF5X3Byb3RlY3QpKSB8fAomIzQzOwkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1ZBTElEQVRJT04sIFJFQURfT05DRShzZWN5LSZndDt2YWxpZGF0ZV9mcmFtZXMpKSB8fAomIzQzOwkgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX09GRkxPQUQsIFJFQURfT05DRShtYWNzZWMtJmd0O29mZmxvYWQpKSB8fAogCSAgICAwKQogCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAotCWlmIChzZWN5LSZndDtyZXBsYXlfcHJvdGVjdCkgewotCQlpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX01BQ1NFQ19XSU5ET1csIHNlY3ktJmd0O3JlcGxheV93aW5kb3cpKQomIzQzOwlpZiAoUkVBRF9PTkNFKHNlY3ktJmd0O3JlcGxheV9wcm90ZWN0KSkgewomIzQzOwkJaWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9NQUNTRUNfV0lORE9XLCBSRUFEX09OQ0Uoc2VjeS0mZ3Q7cmVwbGF5X3dpbmRvdykpKQogCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiAJfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5OTUKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTUFDc2VjIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9tYWNzZWMuY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgcmVwbGFjaW5nIGRpcmVjdCBhc3NpZ25tZW50cyBhbmQgcmVhZHMgb2YgZmllbGRzIHdpdGhpbiBgbWFjc2VjX2RldmAsIGBtYWNzZWNfc2VjeWAsIGFuZCBgbWFjc2VjX3R4X3NjYCBzdHJ1Y3R1cmVzIHdpdGggYFdSSVRFX09OQ0VgIGFuZCBgUkVBRF9PTkNFYC4gSG1tLCBzb3VuZHMgbGlrZSBhIGRhdGEgcmFjZSBmaXgsIHdoaWNoIGlzIGRlZmluaXRlbHkgYSBnb29kIHRoaW5nLiBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gaW5kaWNhdGVzIHRoaXMgcHJldmVudHMgY29tcGlsZXIgb3B0aW1pemF0aW9ucyB0aGF0ICpjb3VsZCogbGVhZCB0byBkYXRhIHJhY2VzLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgbmVlZCB0byBiZSBwcmVjaXNlIGhlcmUuIERvZXMgdGhpcyBqdXN0IHByZXZlbnQgcmVvcmRlcmluZywgb3IgZG9lcyBpdCBhY3R1YWxseSBpbXBhY3QgaG93IHRoZSBjb2RlIGV4ZWN1dGVzPyBgV1JJVEVfT05DRWAgYW5kIGBSRUFEX09OQ0VgIHVzZSBjYXN0cyB0byB2b2xhdGlsZS4gVGhleSBjZXJ0YWlubHkgKmFsdGVyKiB0aGUgZXhlY3V0aW9uIGZsb3cgYnkgaW1wb3NpbmcgbWVtb3J5IGFjY2VzcyBvcmRlcmluZyAob3IgYXQgbGVhc3QsIHByZXZlbnRpbmcgY29tcGlsZXIgcmVvcmRlcmluZyBhbmQgZWxpc2lvbikuIFNvLCBpdOKAmXMgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGJlY2F1c2UgaXQgZml4ZXMgYSByZWFsIGJ1Zy4KClRoZSBwcm9tcHTigJlzIGFkdmljZSBhYm91dCAmIzM0O25vIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbiYjMzQ7IGZvciBmdXp6aW5nIGdvdCBtZSB0aGlua2luZy4gSXQmIzM5O3MgYSB0cmlja3kgZGlzdGluY3Rpb24uIFdoaWxlIHRlY2huaWNhbGx5IGl0JiMzOTtzIGEgZGF0YSByYWNlIGZpeCBhbmQgbm90IGEgbmV3IGZlYXR1cmUsIGl0IGNoYW5nZXMgaG93IHRoZSBtZW1vcnkgYWNjZXNzZXMgYXJlIGhhbmRsZWQsIG1ha2luZyBpdCBmdW5jdGlvbmFsbHkgcmVsZXZhbnQgZm9yIHRoZSBwdXJwb3NlIG9mIGZ1enppbmcuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIHRvdWNoZXMgdG8gbWFrZSBzdXJlIEkgYW0gY29ycmVjdDogYG1hY3NlY191cGRhdGVfb2ZmbG9hZGAsIGBtYWNzZWNfY2hhbmdlbGlua19jb21tb25gLCBhbmQgYG1hY3NlY19maWxsX2luZm9gIGFyZSBtb2RpZmllZC4gWXVwLCB0aGF0IG1ha2VzIHNlbnNlLgoKTm93LCBiZWNhdXNlIGl04oCZcyBhIGNvcmUgbmV0d29ya2luZyBkcml2ZXIgKE1BQ3NlYyksIGZ1enppbmcgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gY29uc2lkZXIuIFNpbmNlIEkgbmVlZCB0byBjb25zaWRlciBjb25maWd1cmF0aW9uIG9wdGlvbnMsIEkgc2hvdWxkIHNlYXJjaCBmb3IgYENPTkZJR19NQUNTRUNgIHVzaW5nIHRoZSBncmVwcGVyIHRvb2wgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDU0VDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTMwMj1jb25maWcgQU1UXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMTctXG5kcml2ZXJzL25ldC9LY29uZmlnOjMxODpjb25maWcgTUFDU0VDXG5kcml2ZXJzL25ldC9LY29uZmlnLTMxOS1cdHRyaXN0YXRlIFwmIzM0O0lFRUUgODAyLjFBRSBNQUMtbGV2ZWwgZW5jcnlwdGlvbiAoTUFDc2VjKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3ODIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKk1BQ3NlYyBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIGZvY3VzIGlzIGRlZmluaXRlbHkgb24gYE1BQ1NFQ2Ag4oCTIHRoYXQmIzM5O3MgdGhlIGNvbmZpZ3VyYXRpb24gcGllY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbm90IGdldCB0dW5uZWwtdmlzaW9uZWQsIHRob3VnaC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkLCBvciBwb3RlbnRpYWxseSBpbnRlcmZlcmluZywgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBhbHNvIGJlIGluIHBsYXkuIFdlIG5lZWQgYSBob2xpc3RpYyB2aWV3IGJlZm9yZSBtYWtpbmcgYW55IGFzc3VtcHRpb25zIG9yIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoZSBgTUFDU0VDYCBzcGVjaWZpYyBwYXJhbWV0ZXJzLiBHb3R0YSBydWxlIG91dCBhbnkgb3RoZXIgcmVsZXZhbnQgc2V0dGluZ3MgdGhhdCBtaWdodCBpbXBhY3Qgb3IgYmUgaW1wYWN0ZWQgYnkgaXQuIExldCYjMzk7cyBtYWtlIHN1cmUgbm90aGluZyBpcyBvdmVybG9va2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3NlYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19JRkIpICYjNDM7PSBpZmIub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX01BQ1NFQykgJiM0Mzs9IG1hY3NlYy5vXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfQU1UKSAmIzQzOz0gYW10Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDM4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1BQ3NlYyBOZXRsaW5rIE9wZXJhdGlvbnMgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gdGhlIGNvbmZpZyBpcyBgTUFDU0VDYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIEkmIzM5O3ZlIGdvdCB0aHJlZSBtb2RpZmllZCBmdW5jdGlvbnMgdG8gbG9vayBhdDogYG1hY3NlY191cGRhdGVfb2ZmbG9hZGAsIGBtYWNzZWNfY2hhbmdlbGlua19jb21tb25gLCBhbmQgYG1hY3NlY19maWxsX2luZm9gLiBMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgcmVhY2hhYmlsaXR5LCBiZWNhdXNlIHRoYXQmIzM5O3Mga2V5LiBgbWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uYCBpcyBoaXQgZnJvbSBgbWFjc2VjX2NoYW5nZWxpbmtgIGFuZCBgbWFjc2VjX25ld2xpbmtgLiAgYG1hY3NlY19maWxsX2luZm9gIGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG1hY3NlY19nZXRfc2l6ZWAgYW5kIGl0c2VsZiwgYW5kIGZpbmFsbHksIGBtYWNzZWNfdXBkYXRlX29mZmxvYWRgIGlzIGNhbGxlZCBmcm9tIGBtYWNzZWNfY2hhbmdlbGlua2AuICBQZXJmZWN0LCB0aGVzZSBhcmUgYWxsIG5ldGxpbmsgb3BlcmF0aW9ucyBmb3IgTUFDc2VjLCBzbyB0aGV5IGFyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCB2aWEgbmV0bGluay4KClRoZSBwYXRjaCBmaXhlcyBwb3RlbnRpYWwgZGF0YSByYWNlcyBvbiBzZXZlcmFsIGtleSBkYXRhIHN0cnVjdHVyZXMgd2l0aGluIE1BQ3NlYzogYG1hY3NlYy0mZ3Q7b2ZmbG9hZGAsIGB0eF9zYy0mZ3Q7ZW5jb2Rpbmdfc2FgLCBgdHhfc2MtJmd0O2VuY3J5cHRgLCBgc2VjeS0mZ3Q7cHJvdGVjdF9mcmFtZXNgLCBgdHhfc2MtJmd0O3NlbmRfc2NpYCwgYHR4X3NjLSZndDtlbmRfc3RhdGlvbmAsIGB0eF9zYy0mZ3Q7c2NiYCwgYHNlY3ktJmd0O3JlcGxheV9wcm90ZWN0YCwgYHNlY3ktJmd0O3ZhbGlkYXRlX2ZyYW1lc2AsIGBzZWN5LSZndDtrZXlfbGVuYCwgYHNlY3ktJmd0O3hwbmAsIGFuZCBgc2VjeS0mZ3Q7cmVwbGF5X3dpbmRvd2AuICBUaGlzIGlzIGdvb2QuCgpBbHJpZ2h0LCBkZWZpbml0ZWx5IHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIG1haW4gZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSBgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkYCwgYG1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbmAsIGFuZCBgbWFjc2VjX2ZpbGxfaW5mb2AuICBUaG9zZSBhcmUgZ29pbmcgdG8gYmUgbXkgYEZvY3VzU3ltYm9sc2AuIEFuZCBvZiBjb3Vyc2UsIGBFbmFibGVDb25maWdzOiBNQUNTRUNgLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgbGV0JiMzOTtzIGRvdWJsZSBjaGVjayBmb3Igb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3MuIE1BQ3NlYyByZWxpZXMgb24gQ1JZUFRPLCBDUllQVE9fR0NNLCBhbmQgdGhlIGxpa2UsIGJ1dCB0aG9zZSBhcmUgZ2VuZXJhbGx5IGVuYWJsZWQgb3Igc2VsZWN0ZWQgYXV0b21hdGljYWxseSBieSBgTUFDU0VDYC4gSSB3aWxsIGNoZWNrIEtjb25maWcgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBqdXN0IHRvIGNvdmVyIGFsbCBiYXNlcyBhbmQgZW5zdXJlIG1heGltdW0gY292ZXJhZ2UsIGJ1dCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUNTRUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MzAyPWNvbmZpZyBBTVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTMxNy1cbmRyaXZlcnMvbmV0L0tjb25maWc6MzE4OmNvbmZpZyBNQUNTRUNcbmRyaXZlcnMvbmV0L0tjb25maWctMzE5LVx0dHJpc3RhdGUgXCYjMzQ7SUVFRSA4MDIuMUFFIE1BQy1sZXZlbCBlbmNyeXB0aW9uIChNQUNzZWMpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTU6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk1OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIENvbmZpZ3VyYXRpb24gS2VybmVsIENvZGUqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBoZWFkIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBkcml2ZXJzL25ldC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBuZXR3b3JrIGRldmljZSBvcHRpb25zIGFyZSBsaWtlbHkgZGVmaW5lZCwgYW5kIEkgc3VzcGVjdCB0aGF0IGxpbmUgMzE4IHdpbGwgaGF2ZSB0aGUgcGFydGljdWxhciBlbnRyeSBJIG5lZWQgdG8gZXhhbWluZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZ2V0IG15c2VsZiBmYW1pbGlhcmlzZWQgd2l0aCB0aGUgb3B0aW9ucyBhcm91bmQgdGhhdCBsaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMxODpcdGNvbmZpZyBNQUNTRUNcbiAzMTk6XHRcdHRyaXN0YXRlIFwmIzM0O0lFRUUgODAyLjFBRSBNQUMtbGV2ZWwgZW5jcnlwdGlvbiAoTUFDc2VjKVwmIzM0O1xuIDMyMDpcdFx0c2VsZWN0IENSWVBUT1xuIDMyMTpcdFx0c2VsZWN0IENSWVBUT19BRVNcbiAzMjI6XHRcdHNlbGVjdCBDUllQVE9fR0NNXG4gMzIzOlx0XHRzZWxlY3QgR1JPX0NFTExTXG4gMzI0Olx0XHRoZWxwXG4gMzI1Olx0XHQgICBNQUNzZWMgaXMgYW4gZW5jcnlwdGlvbiBzdGFuZGFyZCBmb3IgRXRoZXJuZXQuXG4gMzI2Olx0XG4gMzI3Olx0Y29uZmlnIE5FVENPTlNPTEVcbiAzMjg6XHRcdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgY29uc29sZSBsb2dnaW5nIHN1cHBvcnRcJiMzNDtcbiAzMjk6XHRcdGRlcGVuZHMgb24gUFJJTlRLXG4gMzMwOlx0XHRoZWxwXG4gMzMxOlx0XHQgIElmIHlvdSB3YW50IHRvIGxvZyBrZXJuZWwgbWVzc2FnZXMgb3ZlciB0aGUgbmV0d29yaywgZW5hYmxlIHRoaXMuXG4gMzMyOlx0XHQgIFNlZSBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRjb25zb2xlLnJzdFx1MDAzZSBmb3IgZGV0YWlscy5cbiAzMzM6XHRcbiAzMzQ6XHRjb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXG4gMzM1Olx0XHRib29sIFwmIzM0O0R5bmFtaWMgcmVjb25maWd1cmF0aW9uIG9mIGxvZ2dpbmcgdGFyZ2V0c1wmIzM0O1xuIDMzNjpcdFx0ZGVwZW5kcyBvbiBORVRDT05TT0xFIFx1MDAyNlx1MDAyNiBTWVNGUyBcdTAwMjZcdTAwMjYgQ09ORklHRlNfRlMgXHUwMDI2XHUwMDI2IFxcXG4gMzM3Olx0XHRcdFx0IShORVRDT05TT0xFPXkgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTPW0pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE1OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MzMKCQkJCQkJCW91dHB1dDogMTEyCgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1BQ1NFQyBDb25maWd1cmF0aW9uIFRob3VnaHRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgYE1BQ1NFQ2AgY29uZmlndXJhdGlvbiBsb2dpYy4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBNQUNTRUNgIGl0c2VsZiBoYW5kbGVzIHRoZSBjcnlwdG9ncmFwaGljIHNlbGVjdGlvbjsgaXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIHNlY3VyaXR5IGltcGxlbWVudGF0aW9uLiBUaGF0IG1lYW5zLCBmb2N1c2luZyBvbiB0aGUgYE1BQ1NFQ2AgY29uZmlndXJhdGlvbiBpcyB0aGUgcHJpbWFyeSB0aGluZy4gV2Ugc2hvdWxkbiYjMzk7dCBuZWVkIHRvIGNvbmZpZ3VyZSBhbnkgb3RoZXIgY3J5cHRvIHNlcGFyYXRlbHkgYXMgYE1BQ1NFQ2AgZG9lcyB0aGlzLgoKSSYjMzk7bSBzZWVpbmcgYSBmZXcga2V5IGZ1bmN0aW9ucyBoaWdobGlnaHRlZDogYG1hY3NlY191cGRhdGVfb2ZmbG9hZGAsIGBtYWNzZWNfY2hhbmdlbGlua19jb21tb25gLCBhbmQgYG1hY3NlY19maWxsX2luZm9gLiBUaGVzZSBhcmUgbGlrZWx5IHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBjb25maWd1cmF0aW9uIGhhbmRsaW5nIGxpZXMuCgpUaGUgcGF0Y2ggaXRzZWxmIGFwcGVhcnMgdG8gYmUgYWRkcmVzc2luZyBkYXRhIHJhY2VzIHdpdGhpbiB0aGUgbmV0bGluayBjb25maWd1cmF0aW9uIGhhbmRsZXJzIGZvciBgTUFDU0VDYC4gVGhlIGFkZGl0aW9uIG9mIGBSRUFEX09OQ0VgIGFuZCBgV1JJVEVfT05DRWAgaW5kaWNhdGVzIHdlJiMzOTtyZSB0cnlpbmcgdG8gcmVzb2x2ZSBjb25jdXJyZW5jeSBpc3N1ZXMuIFRoZSBzdWdnZXN0ZWQgdGVzdCBpcyBzbWFydDogZnV6emluZyBuZXRsaW5rIG1lc3NhZ2VzIHRvIHRoZSBgTUFDU0VDYCBpbnRlcmZhY2VzIHNob3VsZCBlZmZlY3RpdmVseSB0ZXN0IHdoZXRoZXIgdGhlIGNoYW5nZXMgdHJ1bHkgZWxpbWluYXRlIHRoZSByYWNlcyBhbmQgZG9uJiMzOTt0IGNyZWF0ZSBuZXcgcHJvYmxlbXMuIFRoaXMgaXMgYSB2ZXJ5IHNvbGlkIHZlcmlmaWNhdGlvbiBhcHByb2FjaC4gSSYjMzk7bGwgbmVlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2Agbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxNTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDU0VDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjc2VjX3VwZGF0ZV9vZmZsb2FkJiMzNDssCiAgICAmIzM0O21hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbiYjMzQ7LAogICAgJiMzNDttYWNzZWNfZmlsbF9pbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gTUFDc2VjIG5ldGxpbmsgY29uZmlndXJhdGlvbiBoYW5kbGVycyBieSBhZGRpbmcgUkVBRF9PTkNFL1dSSVRFX09OQ0UuIEZ1enppbmcgbmV0bGluayBtZXNzYWdlcyB0byBNQUNzZWMgaW50ZXJmYWNlcyBjYW4gdmVyaWZ5IHRoYXQgdGhlc2UgY2hhbmdlcyBwcmV2ZW50IHRoZSBkYXRhIHJhY2VzIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUNTRUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWNzZWNfdXBkYXRlX29mZmxvYWQmIzM0OywKICAgICYjMzQ7bWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uJiMzNDssCiAgICAmIzM0O21hY3NlY19maWxsX2luZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgZGF0YSByYWNlcyBpbiBNQUNzZWMgbmV0bGluayBjb25maWd1cmF0aW9uIGhhbmRsZXJzIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRS4gRnV6emluZyBuZXRsaW5rIG1lc3NhZ2VzIHRvIE1BQ3NlYyBpbnRlcmZhY2VzIGNhbiB2ZXJpZnkgdGhhdCB0aGVzZSBjaGFuZ2VzIHByZXZlbnQgdGhlIGRhdGEgcmFjZXMgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNTo1NDoxMy4wNzU3MTc1NzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDIzMjUyNzA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUNTRUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWNzZWNfdXBkYXRlX29mZmxvYWRcIixcbiAgICBcIm1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vblwiLFxuICAgIFwibWFjc2VjX2ZpbGxfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gTUFDc2VjIG5ldGxpbmsgY29uZmlndXJhdGlvbiBoYW5kbGVycyBieSBhZGRpbmcgUkVBRF9PTkNFL1dSSVRFX09OQ0UuIEZ1enppbmcgbmV0bGluayBtZXNzYWdlcyB0byBNQUNzZWMgaW50ZXJmYWNlcyBjYW4gdmVyaWZ5IHRoYXQgdGhlc2UgY2hhbmdlcyBwcmV2ZW50IHRoZSBkYXRhIHJhY2VzIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNTo1NDoxMy4wNzU3MjU1OTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NDY1OTExNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg5YjhjN2VlMTkzZjEzYzJkYmZjZGE0M2I5ZTA3Y2ZmMjM0OGRmYTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAxNTo1NDoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tYWNzZWMuYyBiL2RyaXZlcnMvbmV0L21hY3NlYy5jXFxuaW5kZXggZmIwMDkxMjBhOTI0MTUuLjFhOTY4NTk2Y2E0NWI4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3NlYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvbWFjc2VjLmNcXG5AQCAtMjYzNiw3ICsyNjM2LDcgQEAgc3RhdGljIGludCBtYWNzZWNfdXBkYXRlX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0dmxhbl9kcm9wX3J4X2N0YWdfZmlsdGVyX2luZm8oZGV2KTtcXG4gXFx0XFx0dmxhbl9kcm9wX3J4X3N0YWdfZmlsdGVyX2luZm8oZGV2KTtcXG4gXFx0fVxcbi1cXHRtYWNzZWMtXFx1MDAzZW9mZmxvYWQgPSBvZmZsb2FkO1xcbitcXHRXUklURV9PTkNFKG1hY3NlYy1cXHUwMDNlb2ZmbG9hZCwgb2ZmbG9hZCk7XFxuIFxcdC8qIEFkZCBWTEFOIGZpbHRlcnMgd2hlbiBlbmFibGluZyBvZmZsb2FkLiAqL1xcbiBcXHRpZiAocHJldl9vZmZsb2FkID09IE1BQ1NFQ19PRkZMT0FEX09GRikge1xcbiBcXHRcXHRyZXQgPSB2bGFuX2dldF9yeF9jdGFnX2ZpbHRlcl9pbmZvKGRldik7XFxuQEAgLTI2NjYsNyArMjY2Niw3IEBAIHN0YXRpYyBpbnQgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gcm9sbGJhY2tfb2ZmbG9hZDpcXG4tXFx0bWFjc2VjLVxcdTAwM2VvZmZsb2FkID0gcHJldl9vZmZsb2FkO1xcbitcXHRXUklURV9PTkNFKG1hY3NlYy1cXHUwMDNlb2ZmbG9hZCwgcHJldl9vZmZsb2FkKTtcXG4gXFx0bWFjc2VjX29mZmxvYWQob3BzLVxcdTAwM2VtZG9fZGVsX3NlY3ksIFxcdTAwMjZjdHgpO1xcbiBcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtMzg3NSw1MiArMzg3NSw1MyBAQCBzdGF0aWMgaW50IG1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXG4gXFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfRU5DT0RJTkdfU0FdKSB7XFxuIFxcdFxcdHN0cnVjdCBtYWNzZWNfdHhfc2EgKnR4X3NhO1xcbitcXHRcXHR1OCBlbmNvZGluZ19zYSA9IG5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FTkNPRElOR19TQV0pO1xcbiBcXG4tXFx0XFx0dHhfc2MtXFx1MDAzZWVuY29kaW5nX3NhID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ09ESU5HX1NBXSk7XFxuLVxcdFxcdHR4X3NhID0gcnRubF9kZXJlZmVyZW5jZSh0eF9zYy1cXHUwMDNlc2FbdHhfc2MtXFx1MDAzZWVuY29kaW5nX3NhXSk7XFxuK1xcdFxcdFdSSVRFX09OQ0UodHhfc2MtXFx1MDAzZWVuY29kaW5nX3NhLCBlbmNvZGluZ19zYSk7XFxuK1xcdFxcdHR4X3NhID0gcnRubF9kZXJlZmVyZW5jZSh0eF9zYy1cXHUwMDNlc2FbZW5jb2Rpbmdfc2FdKTtcXG4gXFxuIFxcdFxcdHNlY3ktXFx1MDAzZW9wZXJhdGlvbmFsID0gdHhfc2EgXFx1MDAyNlxcdTAwMjYgdHhfc2EtXFx1MDAzZWFjdGl2ZTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfRU5DUllQVF0pXFxuLVxcdFxcdHR4X3NjLVxcdTAwM2VlbmNyeXB0ID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfRU5DUllQVF0pO1xcbitcXHRcXHRXUklURV9PTkNFKHR4X3NjLVxcdTAwM2VlbmNyeXB0LCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FTkNSWVBUXSkpO1xcbiBcXG4gXFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfUFJPVEVDVF0pXFxuLVxcdFxcdHNlY3ktXFx1MDAzZXByb3RlY3RfZnJhbWVzID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfUFJPVEVDVF0pO1xcbitcXHRcXHRXUklURV9PTkNFKHNlY3ktXFx1MDAzZXByb3RlY3RfZnJhbWVzLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSkpO1xcbiBcXG4gXFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfSU5DX1NDSV0pXFxuLVxcdFxcdHR4X3NjLVxcdTAwM2VzZW5kX3NjaSA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0lOQ19TQ0ldKTtcXG4rXFx0XFx0V1JJVEVfT05DRSh0eF9zYy1cXHUwMDNlc2VuZF9zY2ksICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0lOQ19TQ0ldKSk7XFxuIFxcbiBcXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19FU10pXFxuLVxcdFxcdHR4X3NjLVxcdTAwM2VlbmRfc3RhdGlvbiA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VTXSk7XFxuK1xcdFxcdFdSSVRFX09OQ0UodHhfc2MtXFx1MDAzZWVuZF9zdGF0aW9uLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19FU10pKTtcXG4gXFxuIFxcdGlmIChkYXRhW0lGTEFfTUFDU0VDX1NDQl0pXFxuLVxcdFxcdHR4X3NjLVxcdTAwM2VzY2IgPSAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19TQ0JdKTtcXG4rXFx0XFx0V1JJVEVfT05DRSh0eF9zYy1cXHUwMDNlc2NiLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19TQ0JdKSk7XFxuIFxcbiBcXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19SRVBMQVlfUFJPVEVDVF0pXFxuLVxcdFxcdHNlY3ktXFx1MDAzZXJlcGxheV9wcm90ZWN0ID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfUkVQTEFZX1BST1RFQ1RdKTtcXG4rXFx0XFx0V1JJVEVfT05DRShzZWN5LVxcdTAwM2VyZXBsYXlfcHJvdGVjdCwgISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfUkVQTEFZX1BST1RFQ1RdKSk7XFxuIFxcbiBcXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19WQUxJREFUSU9OXSlcXG4tXFx0XFx0c2VjeS1cXHUwMDNldmFsaWRhdGVfZnJhbWVzID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1ZBTElEQVRJT05dKTtcXG4rXFx0XFx0V1JJVEVfT05DRShzZWN5LVxcdTAwM2V2YWxpZGF0ZV9mcmFtZXMsIG5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19WQUxJREFUSU9OXSkpO1xcbiBcXG4gXFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfQ0lQSEVSX1NVSVRFXSkge1xcbiBcXHRcXHRzd2l0Y2ggKG5sYV9nZXRfdTY0KGRhdGFbSUZMQV9NQUNTRUNfQ0lQSEVSX1NVSVRFXSkpIHtcXG4gXFx0XFx0Y2FzZSBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfMTI4OlxcbiBcXHRcXHRjYXNlIE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDpcXG4tXFx0XFx0XFx0c2VjeS1cXHUwMDNla2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOO1xcbi1cXHRcXHRcXHRzZWN5LVxcdTAwM2V4cG4gPSBmYWxzZTtcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShzZWN5LVxcdTAwM2VrZXlfbGVuLCBNQUNTRUNfR0NNX0FFU18xMjhfU0FLX0xFTik7XFxuK1xcdFxcdFxcdFdSSVRFX09OQ0Uoc2VjeS1cXHUwMDNleHBuLCBmYWxzZSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18yNTY6XFxuLVxcdFxcdFxcdHNlY3ktXFx1MDAzZWtleV9sZW4gPSBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTjtcXG4tXFx0XFx0XFx0c2VjeS1cXHUwMDNleHBuID0gZmFsc2U7XFxuK1xcdFxcdFxcdFdSSVRFX09OQ0Uoc2VjeS1cXHUwMDNla2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMjU2X1NBS19MRU4pO1xcbitcXHRcXHRcXHRXUklURV9PTkNFKHNlY3ktXFx1MDAzZXhwbiwgZmFsc2UpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzEyODpcXG4tXFx0XFx0XFx0c2VjeS1cXHUwMDNla2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOO1xcbi1cXHRcXHRcXHRzZWN5LVxcdTAwM2V4cG4gPSB0cnVlO1xcbitcXHRcXHRcXHRXUklURV9PTkNFKHNlY3ktXFx1MDAzZWtleV9sZW4sIE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOKTtcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShzZWN5LVxcdTAwM2V4cG4sIHRydWUpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzI1NjpcXG4tXFx0XFx0XFx0c2VjeS1cXHUwMDNla2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOO1xcbi1cXHRcXHRcXHRzZWN5LVxcdTAwM2V4cG4gPSB0cnVlO1xcbitcXHRcXHRcXHRXUklURV9PTkNFKHNlY3ktXFx1MDAzZWtleV9sZW4sIE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOKTtcXG4rXFx0XFx0XFx0V1JJVEVfT05DRShzZWN5LVxcdTAwM2V4cG4sIHRydWUpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZGVmYXVsdDpcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuQEAgLTM5MjgsMTMgKzM5MjksMTQgQEAgc3RhdGljIGludCBtYWNzZWNfY2hhbmdlbGlua19jb21tb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfV0lORE9XXSkge1xcbi1cXHRcXHRzZWN5LVxcdTAwM2VyZXBsYXlfd2luZG93ID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1NFQ19XSU5ET1ddKTtcXG4rXFx0XFx0dTMyIHJlcGxheV93aW5kb3cgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDU0VDX1dJTkRPV10pO1xcbiBcXG4gXFx0XFx0LyogSUVFRSA4MDIuMUFFYnctMjAxMyAxMC43LjggLSBtYXhpbXVtIHJlcGxheSB3aW5kb3dcXG4gXFx0XFx0ICogZm9yIFhQTiBjaXBoZXIgc3VpdGVzICovXFxuIFxcdFxcdGlmIChzZWN5LVxcdTAwM2V4cG4gXFx1MDAyNlxcdTAwMjZcXG4tXFx0XFx0ICAgIHNlY3ktXFx1MDAzZXJlcGxheV93aW5kb3cgXFx1MDAzZSBNQUNTRUNfWFBOX01BWF9SRVBMQVlfV0lORE9XKVxcbitcXHRcXHQgICAgcmVwbGF5X3dpbmRvdyBcXHUwMDNlIE1BQ1NFQ19YUE5fTUFYX1JFUExBWV9XSU5ET1cpXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRXUklURV9PTkNFKHNlY3ktXFx1MDAzZXJlcGxheV93aW5kb3csIHJlcGxheV93aW5kb3cpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5AQCAtNDM4MiwyMSArNDM4NCwyMSBAQCBzdGF0aWMgc2l6ZV90IG1hY3NlY19nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBzdGF0aWMgaW50IG1hY3NlY19maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIHtcXG4tXFx0c3RydWN0IG1hY3NlY190eF9zYyAqdHhfc2M7XFxuLVxcdHN0cnVjdCBtYWNzZWNfZGV2ICptYWNzZWM7XFxuLVxcdHN0cnVjdCBtYWNzZWNfc2VjeSAqc2VjeTtcXG4rXFx0Y29uc3Qgc3RydWN0IG1hY3NlY190eF9zYyAqdHhfc2M7XFxuK1xcdGNvbnN0IHN0cnVjdCBtYWNzZWNfZGV2ICptYWNzZWM7XFxuK1xcdGNvbnN0IHN0cnVjdCBtYWNzZWNfc2VjeSAqc2VjeTtcXG4gXFx0dTY0IGNzaWQ7XFxuIFxcbiBcXHRtYWNzZWMgPSBtYWNzZWNfcHJpdihkZXYpO1xcbiBcXHRzZWN5ID0gXFx1MDAyNm1hY3NlYy1cXHUwMDNlc2VjeTtcXG4gXFx0dHhfc2MgPSBcXHUwMDI2c2VjeS1cXHUwMDNldHhfc2M7XFxuIFxcbi1cXHRzd2l0Y2ggKHNlY3ktXFx1MDAzZWtleV9sZW4pIHtcXG4rXFx0c3dpdGNoIChSRUFEX09OQ0Uoc2VjeS1cXHUwMDNla2V5X2xlbikpIHtcXG4gXFx0Y2FzZSBNQUNTRUNfR0NNX0FFU18xMjhfU0FLX0xFTjpcXG4tXFx0XFx0Y3NpZCA9IHNlY3ktXFx1MDAzZXhwbiA/IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMTI4IDogTUFDU0VDX0RFRkFVTFRfQ0lQSEVSX0lEO1xcbitcXHRcXHRjc2lkID0gUkVBRF9PTkNFKHNlY3ktXFx1MDAzZXhwbikgPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzEyOCA6IE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgTUFDU0VDX0dDTV9BRVNfMjU2X1NBS19MRU46XFxuLVxcdFxcdGNzaWQgPSBzZWN5LVxcdTAwM2V4cG4gPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzI1NiA6IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18yNTY7XFxuK1xcdFxcdGNzaWQgPSBSRUFEX09OQ0Uoc2VjeS1cXHUwMDNleHBuKSA/IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMjU2IDogTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTXzI1NjtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbkBAIC00NDA3LDIwICs0NDA5LDIwIEBAIHN0YXRpYyBpbnQgbWFjc2VjX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0lDVl9MRU4sIHNlY3ktXFx1MDAzZWljdl9sZW4pIHx8XFxuIFxcdCAgICBubGFfcHV0X3U2NF82NGJpdChza2IsIElGTEFfTUFDU0VDX0NJUEhFUl9TVUlURSxcXG4gXFx0XFx0XFx0ICAgICAgY3NpZCwgSUZMQV9NQUNTRUNfUEFEKSB8fFxcbi1cXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ09ESU5HX1NBLCB0eF9zYy1cXHUwMDNlZW5jb2Rpbmdfc2EpIHx8XFxuLVxcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRU5DUllQVCwgdHhfc2MtXFx1MDAzZWVuY3J5cHQpIHx8XFxuLVxcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfUFJPVEVDVCwgc2VjeS1cXHUwMDNlcHJvdGVjdF9mcmFtZXMpIHx8XFxuLVxcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfSU5DX1NDSSwgdHhfc2MtXFx1MDAzZXNlbmRfc2NpKSB8fFxcbi1cXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VTLCB0eF9zYy1cXHUwMDNlZW5kX3N0YXRpb24pIHx8XFxuLVxcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfU0NCLCB0eF9zYy1cXHUwMDNlc2NiKSB8fFxcbi1cXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNULCBzZWN5LVxcdTAwM2VyZXBsYXlfcHJvdGVjdCkgfHxcXG4tXFx0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19WQUxJREFUSU9OLCBzZWN5LVxcdTAwM2V2YWxpZGF0ZV9mcmFtZXMpIHx8XFxuLVxcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfT0ZGTE9BRCwgbWFjc2VjLVxcdTAwM2VvZmZsb2FkKSB8fFxcbitcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ09ESU5HX1NBLCBSRUFEX09OQ0UodHhfc2MtXFx1MDAzZWVuY29kaW5nX3NhKSkgfHxcXG4rXFx0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19FTkNSWVBULCBSRUFEX09OQ0UodHhfc2MtXFx1MDAzZWVuY3J5cHQpKSB8fFxcbitcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1BST1RFQ1QsIFJFQURfT05DRShzZWN5LVxcdTAwM2Vwcm90ZWN0X2ZyYW1lcykpIHx8XFxuK1xcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfSU5DX1NDSSwgUkVBRF9PTkNFKHR4X3NjLVxcdTAwM2VzZW5kX3NjaSkpIHx8XFxuK1xcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRVMsIFJFQURfT05DRSh0eF9zYy1cXHUwMDNlZW5kX3N0YXRpb24pKSB8fFxcbitcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1NDQiwgUkVBRF9PTkNFKHR4X3NjLVxcdTAwM2VzY2IpKSB8fFxcbitcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNULCBSRUFEX09OQ0Uoc2VjeS1cXHUwMDNlcmVwbGF5X3Byb3RlY3QpKSB8fFxcbitcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1ZBTElEQVRJT04sIFJFQURfT05DRShzZWN5LVxcdTAwM2V2YWxpZGF0ZV9mcmFtZXMpKSB8fFxcbitcXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX09GRkxPQUQsIFJFQURfT05DRShtYWNzZWMtXFx1MDAzZW9mZmxvYWQpKSB8fFxcbiBcXHQgICAgMClcXG4gXFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcbi1cXHRpZiAoc2VjeS1cXHUwMDNlcmVwbGF5X3Byb3RlY3QpIHtcXG4tXFx0XFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9NQUNTRUNfV0lORE9XLCBzZWN5LVxcdTAwM2VyZXBsYXlfd2luZG93KSlcXG4rXFx0aWYgKFJFQURfT05DRShzZWN5LVxcdTAwM2VyZXBsYXlfcHJvdGVjdCkpIHtcXG4rXFx0XFx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9NQUNTRUNfV0lORE9XLCBSRUFEX09OQ0Uoc2VjeS1cXHUwMDNlcmVwbGF5X3dpbmRvdykpKVxcbiBcXHRcXHRcXHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcXG4gXFx0fVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6NTQ6MTMuNDMxMjAzMTIyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMzg3NzAyOTU2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUNTRUNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWNzZWNfdXBkYXRlX29mZmxvYWRcIixcbiAgICBcIm1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vblwiLFxuICAgIFwibWFjc2VjX2ZpbGxfaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGRhdGEgcmFjZXMgaW4gTUFDc2VjIG5ldGxpbmsgY29uZmlndXJhdGlvbiBoYW5kbGVycyBieSBhZGRpbmcgUkVBRF9PTkNFL1dSSVRFX09OQ0UuIEZ1enppbmcgbmV0bGluayBtZXNzYWdlcyB0byBNQUNzZWMgaW50ZXJmYWNlcyBjYW4gdmVyaWZ5IHRoYXQgdGhlc2UgY2hhbmdlcyBwcmV2ZW50IHRoZSBkYXRhIHJhY2VzIGFuZCBkbyBub3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDg5YjhjN2VlMTkzZjEzYzJkYmZjZGE0M2I5ZTA3Y2ZmMjM0OGRmYTBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxIDE1OjU0OjExIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjc2VjLmMgYi9kcml2ZXJzL25ldC9tYWNzZWMuY1xuaW5kZXggZmIwMDkxMjBhOTI0MTUuLjFhOTY4NTk2Y2E0NWI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWFjc2VjLmNcbisrKyBiL2RyaXZlcnMvbmV0L21hY3NlYy5jXG5AQCAtMjYzNiw3ICsyNjM2LDcgQEAgc3RhdGljIGludCBtYWNzZWNfdXBkYXRlX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0dmxhbl9kcm9wX3J4X2N0YWdfZmlsdGVyX2luZm8oZGV2KTtcbiBcdFx0dmxhbl9kcm9wX3J4X3N0YWdfZmlsdGVyX2luZm8oZGV2KTtcbiBcdH1cbi1cdG1hY3NlYy1cdTAwM2VvZmZsb2FkID0gb2ZmbG9hZDtcbitcdFdSSVRFX09OQ0UobWFjc2VjLVx1MDAzZW9mZmxvYWQsIG9mZmxvYWQpO1xuIFx0LyogQWRkIFZMQU4gZmlsdGVycyB3aGVuIGVuYWJsaW5nIG9mZmxvYWQuICovXG4gXHRpZiAocHJldl9vZmZsb2FkID09IE1BQ1NFQ19PRkZMT0FEX09GRikge1xuIFx0XHRyZXQgPSB2bGFuX2dldF9yeF9jdGFnX2ZpbHRlcl9pbmZvKGRldik7XG5AQCAtMjY2Niw3ICsyNjY2LDcgQEAgc3RhdGljIGludCBtYWNzZWNfdXBkYXRlX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHJldHVybiAwO1xuIFxuIHJvbGxiYWNrX29mZmxvYWQ6XG4tXHRtYWNzZWMtXHUwMDNlb2ZmbG9hZCA9IHByZXZfb2ZmbG9hZDtcbitcdFdSSVRFX09OQ0UobWFjc2VjLVx1MDAzZW9mZmxvYWQsIHByZXZfb2ZmbG9hZCk7XG4gXHRtYWNzZWNfb2ZmbG9hZChvcHMtXHUwMDNlbWRvX2RlbF9zZWN5LCBcdTAwMjZjdHgpO1xuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC0zODc1LDUyICszODc1LDUzIEBAIHN0YXRpYyBpbnQgbWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19FTkNPRElOR19TQV0pIHtcbiBcdFx0c3RydWN0IG1hY3NlY190eF9zYSAqdHhfc2E7XG4rXHRcdHU4IGVuY29kaW5nX3NhID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ09ESU5HX1NBXSk7XG4gXG4tXHRcdHR4X3NjLVx1MDAzZWVuY29kaW5nX3NhID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ09ESU5HX1NBXSk7XG4tXHRcdHR4X3NhID0gcnRubF9kZXJlZmVyZW5jZSh0eF9zYy1cdTAwM2VzYVt0eF9zYy1cdTAwM2VlbmNvZGluZ19zYV0pO1xuK1x0XHRXUklURV9PTkNFKHR4X3NjLVx1MDAzZWVuY29kaW5nX3NhLCBlbmNvZGluZ19zYSk7XG4rXHRcdHR4X3NhID0gcnRubF9kZXJlZmVyZW5jZSh0eF9zYy1cdTAwM2VzYVtlbmNvZGluZ19zYV0pO1xuIFxuIFx0XHRzZWN5LVx1MDAzZW9wZXJhdGlvbmFsID0gdHhfc2EgXHUwMDI2XHUwMDI2IHR4X3NhLVx1MDAzZWFjdGl2ZTtcbiBcdH1cbiBcbiBcdGlmIChkYXRhW0lGTEFfTUFDU0VDX0VOQ1JZUFRdKVxuLVx0XHR0eF9zYy1cdTAwM2VlbmNyeXB0ID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfRU5DUllQVF0pO1xuK1x0XHRXUklURV9PTkNFKHR4X3NjLVx1MDAzZWVuY3J5cHQsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VOQ1JZUFRdKSk7XG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSlcbi1cdFx0c2VjeS1cdTAwM2Vwcm90ZWN0X2ZyYW1lcyA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1BST1RFQ1RdKTtcbitcdFx0V1JJVEVfT05DRShzZWN5LVx1MDAzZXByb3RlY3RfZnJhbWVzLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19QUk9URUNUXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfSU5DX1NDSV0pXG4tXHRcdHR4X3NjLVx1MDAzZXNlbmRfc2NpID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfSU5DX1NDSV0pO1xuK1x0XHRXUklURV9PTkNFKHR4X3NjLVx1MDAzZXNlbmRfc2NpLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19JTkNfU0NJXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfRVNdKVxuLVx0XHR0eF9zYy1cdTAwM2VlbmRfc3RhdGlvbiA9ICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VTXSk7XG4rXHRcdFdSSVRFX09OQ0UodHhfc2MtXHUwMDNlZW5kX3N0YXRpb24sICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX0VTXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfU0NCXSlcbi1cdFx0dHhfc2MtXHUwMDNlc2NiID0gISFubGFfZ2V0X3U4KGRhdGFbSUZMQV9NQUNTRUNfU0NCXSk7XG4rXHRcdFdSSVRFX09OQ0UodHhfc2MtXHUwMDNlc2NiLCAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19TQ0JdKSk7XG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19SRVBMQVlfUFJPVEVDVF0pXG4tXHRcdHNlY3ktXHUwMDNlcmVwbGF5X3Byb3RlY3QgPSAhIW5sYV9nZXRfdTgoZGF0YVtJRkxBX01BQ1NFQ19SRVBMQVlfUFJPVEVDVF0pO1xuK1x0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNlcmVwbGF5X3Byb3RlY3QsICEhbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNUXSkpO1xuIFxuIFx0aWYgKGRhdGFbSUZMQV9NQUNTRUNfVkFMSURBVElPTl0pXG4tXHRcdHNlY3ktXHUwMDNldmFsaWRhdGVfZnJhbWVzID0gbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1ZBTElEQVRJT05dKTtcbitcdFx0V1JJVEVfT05DRShzZWN5LVx1MDAzZXZhbGlkYXRlX2ZyYW1lcywgbmxhX2dldF91OChkYXRhW0lGTEFfTUFDU0VDX1ZBTElEQVRJT05dKSk7XG4gXG4gXHRpZiAoZGF0YVtJRkxBX01BQ1NFQ19DSVBIRVJfU1VJVEVdKSB7XG4gXHRcdHN3aXRjaCAobmxhX2dldF91NjQoZGF0YVtJRkxBX01BQ1NFQ19DSVBIRVJfU1VJVEVdKSkge1xuIFx0XHRjYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18xMjg6XG4gXHRcdGNhc2UgTUFDU0VDX0RFRkFVTFRfQ0lQSEVSX0lEOlxuLVx0XHRcdHNlY3ktXHUwMDNla2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOO1xuLVx0XHRcdHNlY3ktXHUwMDNleHBuID0gZmFsc2U7XG4rXHRcdFx0V1JJVEVfT05DRShzZWN5LVx1MDAzZWtleV9sZW4sIE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOKTtcbitcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNleHBuLCBmYWxzZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTXzI1Njpcbi1cdFx0XHRzZWN5LVx1MDAzZWtleV9sZW4gPSBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTjtcbi1cdFx0XHRzZWN5LVx1MDAzZXhwbiA9IGZhbHNlO1xuK1x0XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2VrZXlfbGVuLCBNQUNTRUNfR0NNX0FFU18yNTZfU0FLX0xFTik7XG4rXHRcdFx0V1JJVEVfT05DRShzZWN5LVx1MDAzZXhwbiwgZmFsc2UpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMTI4OlxuLVx0XHRcdHNlY3ktXHUwMDNla2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOO1xuLVx0XHRcdHNlY3ktXHUwMDNleHBuID0gdHJ1ZTtcbitcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNla2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMTI4X1NBS19MRU4pO1xuK1x0XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2V4cG4sIHRydWUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU19YUE5fMjU2OlxuLVx0XHRcdHNlY3ktXHUwMDNla2V5X2xlbiA9IE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOO1xuLVx0XHRcdHNlY3ktXHUwMDNleHBuID0gdHJ1ZTtcbitcdFx0XHRXUklURV9PTkNFKHNlY3ktXHUwMDNla2V5X2xlbiwgTUFDU0VDX0dDTV9BRVNfMjU2X1NBS19MRU4pO1xuK1x0XHRcdFdSSVRFX09OQ0Uoc2VjeS1cdTAwM2V4cG4sIHRydWUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTM5MjgsMTMgKzM5MjksMTQgQEAgc3RhdGljIGludCBtYWNzZWNfY2hhbmdlbGlua19jb21tb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdH1cbiBcbiBcdGlmIChkYXRhW0lGTEFfTUFDU0VDX1dJTkRPV10pIHtcbi1cdFx0c2VjeS1cdTAwM2VyZXBsYXlfd2luZG93ID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1NFQ19XSU5ET1ddKTtcbitcdFx0dTMyIHJlcGxheV93aW5kb3cgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDU0VDX1dJTkRPV10pO1xuIFxuIFx0XHQvKiBJRUVFIDgwMi4xQUVidy0yMDEzIDEwLjcuOCAtIG1heGltdW0gcmVwbGF5IHdpbmRvd1xuIFx0XHQgKiBmb3IgWFBOIGNpcGhlciBzdWl0ZXMgKi9cbiBcdFx0aWYgKHNlY3ktXHUwMDNleHBuIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgc2VjeS1cdTAwM2VyZXBsYXlfd2luZG93IFx1MDAzZSBNQUNTRUNfWFBOX01BWF9SRVBMQVlfV0lORE9XKVxuK1x0XHQgICAgcmVwbGF5X3dpbmRvdyBcdTAwM2UgTUFDU0VDX1hQTl9NQVhfUkVQTEFZX1dJTkRPVylcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0V1JJVEVfT05DRShzZWN5LVx1MDAzZXJlcGxheV93aW5kb3csIHJlcGxheV93aW5kb3cpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtNDM4MiwyMSArNDM4NCwyMSBAQCBzdGF0aWMgc2l6ZV90IG1hY3NlY19nZXRfc2l6ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHN0YXRpYyBpbnQgbWFjc2VjX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbi1cdHN0cnVjdCBtYWNzZWNfdHhfc2MgKnR4X3NjO1xuLVx0c3RydWN0IG1hY3NlY19kZXYgKm1hY3NlYztcbi1cdHN0cnVjdCBtYWNzZWNfc2VjeSAqc2VjeTtcbitcdGNvbnN0IHN0cnVjdCBtYWNzZWNfdHhfc2MgKnR4X3NjO1xuK1x0Y29uc3Qgc3RydWN0IG1hY3NlY19kZXYgKm1hY3NlYztcbitcdGNvbnN0IHN0cnVjdCBtYWNzZWNfc2VjeSAqc2VjeTtcbiBcdHU2NCBjc2lkO1xuIFxuIFx0bWFjc2VjID0gbWFjc2VjX3ByaXYoZGV2KTtcbiBcdHNlY3kgPSBcdTAwMjZtYWNzZWMtXHUwMDNlc2VjeTtcbiBcdHR4X3NjID0gXHUwMDI2c2VjeS1cdTAwM2V0eF9zYztcbiBcbi1cdHN3aXRjaCAoc2VjeS1cdTAwM2VrZXlfbGVuKSB7XG4rXHRzd2l0Y2ggKFJFQURfT05DRShzZWN5LVx1MDAzZWtleV9sZW4pKSB7XG4gXHRjYXNlIE1BQ1NFQ19HQ01fQUVTXzEyOF9TQUtfTEVOOlxuLVx0XHRjc2lkID0gc2VjeS1cdTAwM2V4cG4gPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzEyOCA6IE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDtcbitcdFx0Y3NpZCA9IFJFQURfT05DRShzZWN5LVx1MDAzZXhwbikgPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzEyOCA6IE1BQ1NFQ19ERUZBVUxUX0NJUEhFUl9JRDtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIE1BQ1NFQ19HQ01fQUVTXzI1Nl9TQUtfTEVOOlxuLVx0XHRjc2lkID0gc2VjeS1cdTAwM2V4cG4gPyBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfWFBOXzI1NiA6IE1BQ1NFQ19DSVBIRVJfSURfR0NNX0FFU18yNTY7XG4rXHRcdGNzaWQgPSBSRUFEX09OQ0Uoc2VjeS1cdTAwM2V4cG4pID8gTUFDU0VDX0NJUEhFUl9JRF9HQ01fQUVTX1hQTl8yNTYgOiBNQUNTRUNfQ0lQSEVSX0lEX0dDTV9BRVNfMjU2O1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuQEAgLTQ0MDcsMjAgKzQ0MDksMjAgQEAgc3RhdGljIGludCBtYWNzZWNfZmlsbF9pbmZvKHN0cnVjdCBza19idWZmICpza2IsXG4gXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0lDVl9MRU4sIHNlY3ktXHUwMDNlaWN2X2xlbikgfHxcbiBcdCAgICBubGFfcHV0X3U2NF82NGJpdChza2IsIElGTEFfTUFDU0VDX0NJUEhFUl9TVUlURSxcbiBcdFx0XHQgICAgICBjc2lkLCBJRkxBX01BQ1NFQ19QQUQpIHx8XG4tXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ09ESU5HX1NBLCB0eF9zYy1cdTAwM2VlbmNvZGluZ19zYSkgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRU5DUllQVCwgdHhfc2MtXHUwMDNlZW5jcnlwdCkgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfUFJPVEVDVCwgc2VjeS1cdTAwM2Vwcm90ZWN0X2ZyYW1lcykgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfSU5DX1NDSSwgdHhfc2MtXHUwMDNlc2VuZF9zY2kpIHx8XG4tXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VTLCB0eF9zYy1cdTAwM2VlbmRfc3RhdGlvbikgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfU0NCLCB0eF9zYy1cdTAwM2VzY2IpIHx8XG4tXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNULCBzZWN5LVx1MDAzZXJlcGxheV9wcm90ZWN0KSB8fFxuLVx0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19WQUxJREFUSU9OLCBzZWN5LVx1MDAzZXZhbGlkYXRlX2ZyYW1lcykgfHxcbi1cdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfT0ZGTE9BRCwgbWFjc2VjLVx1MDAzZW9mZmxvYWQpIHx8XG4rXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX0VOQ09ESU5HX1NBLCBSRUFEX09OQ0UodHhfc2MtXHUwMDNlZW5jb2Rpbmdfc2EpKSB8fFxuK1x0ICAgIG5sYV9wdXRfdTgoc2tiLCBJRkxBX01BQ1NFQ19FTkNSWVBULCBSRUFEX09OQ0UodHhfc2MtXHUwMDNlZW5jcnlwdCkpIHx8XG4rXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1BST1RFQ1QsIFJFQURfT05DRShzZWN5LVx1MDAzZXByb3RlY3RfZnJhbWVzKSkgfHxcbitcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfSU5DX1NDSSwgUkVBRF9PTkNFKHR4X3NjLVx1MDAzZXNlbmRfc2NpKSkgfHxcbitcdCAgICBubGFfcHV0X3U4KHNrYiwgSUZMQV9NQUNTRUNfRVMsIFJFQURfT05DRSh0eF9zYy1cdTAwM2VlbmRfc3RhdGlvbikpIHx8XG4rXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1NDQiwgUkVBRF9PTkNFKHR4X3NjLVx1MDAzZXNjYikpIHx8XG4rXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1JFUExBWV9QUk9URUNULCBSRUFEX09OQ0Uoc2VjeS1cdTAwM2VyZXBsYXlfcHJvdGVjdCkpIHx8XG4rXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX1ZBTElEQVRJT04sIFJFQURfT05DRShzZWN5LVx1MDAzZXZhbGlkYXRlX2ZyYW1lcykpIHx8XG4rXHQgICAgbmxhX3B1dF91OChza2IsIElGTEFfTUFDU0VDX09GRkxPQUQsIFJFQURfT05DRShtYWNzZWMtXHUwMDNlb2ZmbG9hZCkpIHx8XG4gXHQgICAgMClcbiBcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXG4tXHRpZiAoc2VjeS1cdTAwM2VyZXBsYXlfcHJvdGVjdCkge1xuLVx0XHRpZiAobmxhX3B1dF91MzIoc2tiLCBJRkxBX01BQ1NFQ19XSU5ET1csIHNlY3ktXHUwMDNlcmVwbGF5X3dpbmRvdykpXG4rXHRpZiAoUkVBRF9PTkNFKHNlY3ktXHUwMDNlcmVwbGF5X3Byb3RlY3QpKSB7XG4rXHRcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfTUFDU0VDX1dJTkRPVywgUkVBRF9PTkNFKHNlY3ktXHUwMDNlcmVwbGF5X3dpbmRvdykpKVxuIFx0XHRcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6NTQ6MTMuNDMxMjA1MzgyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM0NDQ1NDQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNQUNzZWMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvbWFjc2VjLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgcmVwbGFjaW5nIGRpcmVjdCBhc3NpZ25tZW50cyBhbmQgcmVhZHMgb2YgZmllbGRzIHdpdGhpbiBgbWFjc2VjX2RldmAsIGBtYWNzZWNfc2VjeWAsIGFuZCBgbWFjc2VjX3R4X3NjYCBzdHJ1Y3R1cmVzIHdpdGggYFdSSVRFX09OQ0VgIGFuZCBgUkVBRF9PTkNFYC4gSG1tLCBzb3VuZHMgbGlrZSBhIGRhdGEgcmFjZSBmaXgsIHdoaWNoIGlzIGRlZmluaXRlbHkgYSBnb29kIHRoaW5nLiBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gaW5kaWNhdGVzIHRoaXMgcHJldmVudHMgY29tcGlsZXIgb3B0aW1pemF0aW9ucyB0aGF0ICpjb3VsZCogbGVhZCB0byBkYXRhIHJhY2VzLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgSSBuZWVkIHRvIGJlIHByZWNpc2UgaGVyZS4gRG9lcyB0aGlzIGp1c3QgcHJldmVudCByZW9yZGVyaW5nLCBvciBkb2VzIGl0IGFjdHVhbGx5IGltcGFjdCBob3cgdGhlIGNvZGUgZXhlY3V0ZXM/IGBXUklURV9PTkNFYCBhbmQgYFJFQURfT05DRWAgdXNlIGNhc3RzIHRvIHZvbGF0aWxlLiBUaGV5IGNlcnRhaW5seSAqYWx0ZXIqIHRoZSBleGVjdXRpb24gZmxvdyBieSBpbXBvc2luZyBtZW1vcnkgYWNjZXNzIG9yZGVyaW5nIChvciBhdCBsZWFzdCwgcHJldmVudGluZyBjb21waWxlciByZW9yZGVyaW5nIGFuZCBlbGlzaW9uKS4gU28sIGl04oCZcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYmVjYXVzZSBpdCBmaXhlcyBhIHJlYWwgYnVnLlxuXG5UaGUgcHJvbXB04oCZcyBhZHZpY2UgYWJvdXQgXCJubyBmdW5jdGlvbmFsIGFsdGVyYXRpb25cIiBmb3IgZnV6emluZyBnb3QgbWUgdGhpbmtpbmcuIEl0J3MgYSB0cmlja3kgZGlzdGluY3Rpb24uIFdoaWxlIHRlY2huaWNhbGx5IGl0J3MgYSBkYXRhIHJhY2UgZml4IGFuZCBub3QgYSBuZXcgZmVhdHVyZSwgaXQgY2hhbmdlcyBob3cgdGhlIG1lbW9yeSBhY2Nlc3NlcyBhcmUgaGFuZGxlZCwgbWFraW5nIGl0IGZ1bmN0aW9uYWxseSByZWxldmFudCBmb3IgdGhlIHB1cnBvc2Ugb2YgZnV6emluZy4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZnVuY3Rpb25zIHRoaXMgcGF0Y2ggdG91Y2hlcyB0byBtYWtlIHN1cmUgSSBhbSBjb3JyZWN0OiBgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkYCwgYG1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbmAsIGFuZCBgbWFjc2VjX2ZpbGxfaW5mb2AgYXJlIG1vZGlmaWVkLiBZdXAsIHRoYXQgbWFrZXMgc2Vuc2UuXG5cbk5vdywgYmVjYXVzZSBpdOKAmXMgYSBjb3JlIG5ldHdvcmtpbmcgZHJpdmVyIChNQUNzZWMpLCBmdXp6aW5nIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRvIGNvbnNpZGVyLiBTaW5jZSBJIG5lZWQgdG8gY29uc2lkZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLCBJIHNob3VsZCBzZWFyY2ggZm9yIGBDT05GSUdfTUFDU0VDYCB1c2luZyB0aGUgZ3JlcHBlciB0b29sIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gaW1wbGljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTk1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6NTQ6MjAuNzc1NjYzNTc2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjgxODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1BQ1NFQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9MzAyPWNvbmZpZyBBTVRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzE3LVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzE4OmNvbmZpZyBNQUNTRUNcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMxOS1cXHR0cmlzdGF0ZSBcXFwiSUVFRSA4MDIuMUFFIE1BQy1sZXZlbCBlbmNyeXB0aW9uIChNQUNzZWMpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxNTo1NDoyMC44MzYzNTkxOTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc2MzczMjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKk1BQ3NlYyBDb25maWd1cmF0aW9uIENoZWNrKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgZm9jdXMgaXMgZGVmaW5pdGVseSBvbiBgTUFDU0VDYCDigJMgdGhhdCdzIHRoZSBjb25maWd1cmF0aW9uIHBpZWNlIHdlJ3JlIGRlYWxpbmcgd2l0aC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbm90IGdldCB0dW5uZWwtdmlzaW9uZWQsIHRob3VnaC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgYW55IHJlbGF0ZWQsIG9yIHBvdGVudGlhbGx5IGludGVyZmVyaW5nLCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGFsc28gYmUgaW4gcGxheS4gV2UgbmVlZCBhIGhvbGlzdGljIHZpZXcgYmVmb3JlIG1ha2luZyBhbnkgYXNzdW1wdGlvbnMgb3IgZGl2aW5nIHRvbyBkZWVwIGludG8gdGhlIGBNQUNTRUNgIHNwZWNpZmljIHBhcmFtZXRlcnMuIEdvdHRhIHJ1bGUgb3V0IGFueSBvdGhlciByZWxldmFudCBzZXR0aW5ncyB0aGF0IG1pZ2h0IGltcGFjdCBvciBiZSBpbXBhY3RlZCBieSBpdC4gTGV0J3MgbWFrZSBzdXJlIG5vdGhpbmcgaXMgb3Zlcmxvb2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc4MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjU0OjI0LjAxMjczODA0MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDgzMjEwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWNzZWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX0lGQikgKz0gaWZiLm9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfTUFDU0VDKSArPSBtYWNzZWMub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19BTVQpICs9IGFtdC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjU0OjI0LjA3MzU3ODI2NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNzM3NjQ1ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTUFDc2VjIE5ldGxpbmsgT3BlcmF0aW9ucyBhbmQgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIHRoZSBjb25maWcgaXMgYE1BQ1NFQ2AuIFRoYXQncyB0aGUgYmFzZWxpbmUuIEkndmUgZ290IHRocmVlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0byBsb29rIGF0OiBgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkYCwgYG1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbmAsIGFuZCBgbWFjc2VjX2ZpbGxfaW5mb2AuIExldCdzIHF1aWNrbHkgdmVyaWZ5IHJlYWNoYWJpbGl0eSwgYmVjYXVzZSB0aGF0J3Mga2V5LiBgbWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uYCBpcyBoaXQgZnJvbSBgbWFjc2VjX2NoYW5nZWxpbmtgIGFuZCBgbWFjc2VjX25ld2xpbmtgLiAgYG1hY3NlY19maWxsX2luZm9gIGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgZnJvbSBgbWFjc2VjX2dldF9zaXplYCBhbmQgaXRzZWxmLCBhbmQgZmluYWxseSwgYG1hY3NlY191cGRhdGVfb2ZmbG9hZGAgaXMgY2FsbGVkIGZyb20gYG1hY3NlY19jaGFuZ2VsaW5rYC4gIFBlcmZlY3QsIHRoZXNlIGFyZSBhbGwgbmV0bGluayBvcGVyYXRpb25zIGZvciBNQUNzZWMsIHNvIHRoZXkgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIHZpYSBuZXRsaW5rLlxuXG5UaGUgcGF0Y2ggZml4ZXMgcG90ZW50aWFsIGRhdGEgcmFjZXMgb24gc2V2ZXJhbCBrZXkgZGF0YSBzdHJ1Y3R1cmVzIHdpdGhpbiBNQUNzZWM6IGBtYWNzZWMtXHUwMDNlb2ZmbG9hZGAsIGB0eF9zYy1cdTAwM2VlbmNvZGluZ19zYWAsIGB0eF9zYy1cdTAwM2VlbmNyeXB0YCwgYHNlY3ktXHUwMDNlcHJvdGVjdF9mcmFtZXNgLCBgdHhfc2MtXHUwMDNlc2VuZF9zY2lgLCBgdHhfc2MtXHUwMDNlZW5kX3N0YXRpb25gLCBgdHhfc2MtXHUwMDNlc2NiYCwgYHNlY3ktXHUwMDNlcmVwbGF5X3Byb3RlY3RgLCBgc2VjeS1cdTAwM2V2YWxpZGF0ZV9mcmFtZXNgLCBgc2VjeS1cdTAwM2VrZXlfbGVuYCwgYHNlY3ktXHUwMDNleHBuYCwgYW5kIGBzZWN5LVx1MDAzZXJlcGxheV93aW5kb3dgLiAgVGhpcyBpcyBnb29kLlxuXG5BbHJpZ2h0LCBkZWZpbml0ZWx5IHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYC4gVGhlIG1haW4gZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZSBgbWFjc2VjX3VwZGF0ZV9vZmZsb2FkYCwgYG1hY3NlY19jaGFuZ2VsaW5rX2NvbW1vbmAsIGFuZCBgbWFjc2VjX2ZpbGxfaW5mb2AuICBUaG9zZSBhcmUgZ29pbmcgdG8gYmUgbXkgYEZvY3VzU3ltYm9sc2AuIEFuZCBvZiBjb3Vyc2UsIGBFbmFibGVDb25maWdzOiBNQUNTRUNgLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBsZXQncyBkb3VibGUgY2hlY2sgZm9yIG90aGVyIGRlcGVuZGVudCBjb25maWdzLiBNQUNzZWMgcmVsaWVzIG9uIENSWVBUTywgQ1JZUFRPX0dDTSwgYW5kIHRoZSBsaWtlLCBidXQgdGhvc2UgYXJlIGdlbmVyYWxseSBlbmFibGVkIG9yIHNlbGVjdGVkIGF1dG9tYXRpY2FsbHkgYnkgYE1BQ1NFQ2AuIEkgd2lsbCBjaGVjayBLY29uZmlnIHRvIGJlIGFic29sdXRlbHkgc3VyZSwganVzdCB0byBjb3ZlciBhbGwgYmFzZXMgYW5kIGVuc3VyZSBtYXhpbXVtIGNvdmVyYWdlLCBidXQgSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDM4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjU0OjMwLjI0NzM0NjU4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzQwMTA5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDU0VDXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMTctXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozMTg6Y29uZmlnIE1BQ1NFQ1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzE5LVxcdHRyaXN0YXRlIFxcXCJJRUVFIDgwMi4xQUUgTUFDLWxldmVsIGVuY3J5cHRpb24gKE1BQ3NlYylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjU0OjMwLjMxMDc1NDM0OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1Njk2MDM0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXR3b3JrIENvbmZpZ3VyYXRpb24gS2VybmVsIENvZGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgYWJvdXQgdGhlIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBgZHJpdmVycy9uZXQvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbmV0d29yayBkZXZpY2Ugb3B0aW9ucyBhcmUgbGlrZWx5IGRlZmluZWQsIGFuZCBJIHN1c3BlY3QgdGhhdCBsaW5lIDMxOCB3aWxsIGhhdmUgdGhlIHBhcnRpY3VsYXIgZW50cnkgSSBuZWVkIHRvIGV4YW1pbmUuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuIEknbSBnb2luZyB0byBxdWlja2x5IGdldCBteXNlbGYgZmFtaWxpYXJpc2VkIHdpdGggdGhlIG9wdGlvbnMgYXJvdW5kIHRoYXQgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk1OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjU0OjMyLjg4MDM2MDYzOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMTgsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMTg6XFx0Y29uZmlnIE1BQ1NFQ1xcbiAzMTk6XFx0XFx0dHJpc3RhdGUgXFxcIklFRUUgODAyLjFBRSBNQUMtbGV2ZWwgZW5jcnlwdGlvbiAoTUFDc2VjKVxcXCJcXG4gMzIwOlxcdFxcdHNlbGVjdCBDUllQVE9cXG4gMzIxOlxcdFxcdHNlbGVjdCBDUllQVE9fQUVTXFxuIDMyMjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0dDTVxcbiAzMjM6XFx0XFx0c2VsZWN0IEdST19DRUxMU1xcbiAzMjQ6XFx0XFx0aGVscFxcbiAzMjU6XFx0XFx0ICAgTUFDc2VjIGlzIGFuIGVuY3J5cHRpb24gc3RhbmRhcmQgZm9yIEV0aGVybmV0LlxcbiAzMjY6XFx0XFxuIDMyNzpcXHRjb25maWcgTkVUQ09OU09MRVxcbiAzMjg6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgY29uc29sZSBsb2dnaW5nIHN1cHBvcnRcXFwiXFxuIDMyOTpcXHRcXHRkZXBlbmRzIG9uIFBSSU5US1xcbiAzMzA6XFx0XFx0aGVscFxcbiAzMzE6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byBsb2cga2VybmVsIG1lc3NhZ2VzIG92ZXIgdGhlIG5ldHdvcmssIGVuYWJsZSB0aGlzLlxcbiAzMzI6XFx0XFx0ICBTZWUgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGNvbnNvbGUucnN0XFx1MDAzZSBmb3IgZGV0YWlscy5cXG4gMzMzOlxcdFxcbiAzMzQ6XFx0Y29uZmlnIE5FVENPTlNPTEVfRFlOQU1JQ1xcbiAzMzU6XFx0XFx0Ym9vbCBcXFwiRHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXFxcIlxcbiAzMzY6XFx0XFx0ZGVwZW5kcyBvbiBORVRDT05TT0xFIFxcdTAwMjZcXHUwMDI2IFNZU0ZTIFxcdTAwMjZcXHUwMDI2IENPTkZJR0ZTX0ZTIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gMzM3OlxcdFxcdFxcdFxcdCEoTkVUQ09OU09MRT15IFxcdTAwMjZcXHUwMDI2IENPTkZJR0ZTX0ZTPW0pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE1OjU0OjMyLjg4MDQ2ODAwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQwMTA2NDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk1BQ1NFQyBDb25maWd1cmF0aW9uIFRob3VnaHRzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIHJldmlld2luZyB0aGlzIGBNQUNTRUNgIGNvbmZpZ3VyYXRpb24gbG9naWMuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgTUFDU0VDYCBpdHNlbGYgaGFuZGxlcyB0aGUgY3J5cHRvZ3JhcGhpYyBzZWxlY3Rpb247IGl0J3MgdGhlIGNvcmUgb2YgdGhlIHNlY3VyaXR5IGltcGxlbWVudGF0aW9uLiBUaGF0IG1lYW5zLCBmb2N1c2luZyBvbiB0aGUgYE1BQ1NFQ2AgY29uZmlndXJhdGlvbiBpcyB0aGUgcHJpbWFyeSB0aGluZy4gV2Ugc2hvdWxkbid0IG5lZWQgdG8gY29uZmlndXJlIGFueSBvdGhlciBjcnlwdG8gc2VwYXJhdGVseSBhcyBgTUFDU0VDYCBkb2VzIHRoaXMuXG5cbkknbSBzZWVpbmcgYSBmZXcga2V5IGZ1bmN0aW9ucyBoaWdobGlnaHRlZDogYG1hY3NlY191cGRhdGVfb2ZmbG9hZGAsIGBtYWNzZWNfY2hhbmdlbGlua19jb21tb25gLCBhbmQgYG1hY3NlY19maWxsX2luZm9gLiBUaGVzZSBhcmUgbGlrZWx5IHdoZXJlIHRoZSBtZWF0IG9mIHRoZSBjb25maWd1cmF0aW9uIGhhbmRsaW5nIGxpZXMuXG5cblRoZSBwYXRjaCBpdHNlbGYgYXBwZWFycyB0byBiZSBhZGRyZXNzaW5nIGRhdGEgcmFjZXMgd2l0aGluIHRoZSBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gaGFuZGxlcnMgZm9yIGBNQUNTRUNgLiBUaGUgYWRkaXRpb24gb2YgYFJFQURfT05DRWAgYW5kIGBXUklURV9PTkNFYCBpbmRpY2F0ZXMgd2UncmUgdHJ5aW5nIHRvIHJlc29sdmUgY29uY3VycmVuY3kgaXNzdWVzLiBUaGUgc3VnZ2VzdGVkIHRlc3QgaXMgc21hcnQ6IGZ1enppbmcgbmV0bGluayBtZXNzYWdlcyB0byB0aGUgYE1BQ1NFQ2AgaW50ZXJmYWNlcyBzaG91bGQgZWZmZWN0aXZlbHkgdGVzdCB3aGV0aGVyIHRoZSBjaGFuZ2VzIHRydWx5IGVsaW1pbmF0ZSB0aGUgcmFjZXMgYW5kIGRvbid0IGNyZWF0ZSBuZXcgcHJvYmxlbXMuIFRoaXMgaXMgYSB2ZXJ5IHNvbGlkIHZlcmlmaWNhdGlvbiBhcHByb2FjaC4gSSdsbCBuZWVkIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0MzMsIk91dHB1dFRva2VucyI6MTEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTU6NTQ6MzcuMjIwNTc3NDc1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc2NDg3MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQ1NFQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3NlY191cGRhdGVfb2ZmbG9hZFwiLFxuICAgIFwibWFjc2VjX2NoYW5nZWxpbmtfY29tbW9uXCIsXG4gICAgXCJtYWNzZWNfZmlsbF9pbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgZGF0YSByYWNlcyBpbiBNQUNzZWMgbmV0bGluayBjb25maWd1cmF0aW9uIGhhbmRsZXJzIGJ5IGFkZGluZyBSRUFEX09OQ0UvV1JJVEVfT05DRS4gRnV6emluZyBuZXRsaW5rIG1lc3NhZ2VzIHRvIE1BQ3NlYyBpbnRlcmZhY2VzIGNhbiB2ZXJpZnkgdGhhdCB0aGVzZSBjaGFuZ2VzIHByZXZlbnQgdGhlIGRhdGEgcmFjZXMgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDU0VDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjc2VjX3VwZGF0ZV9vZmZsb2FkXCIsXG4gICAgXCJtYWNzZWNfY2hhbmdlbGlua19jb21tb25cIixcbiAgICBcIm1hY3NlY19maWxsX2luZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBkYXRhIHJhY2VzIGluIE1BQ3NlYyBuZXRsaW5rIGNvbmZpZ3VyYXRpb24gaGFuZGxlcnMgYnkgYWRkaW5nIFJFQURfT05DRS9XUklURV9PTkNFLiBGdXp6aW5nIG5ldGxpbmsgbWVzc2FnZXMgdG8gTUFDc2VjIGludGVyZmFjZXMgY2FuIHZlcmlmeSB0aGF0IHRoZXNlIGNoYW5nZXMgcHJldmVudCB0aGUgZGF0YSByYWNlcyBhbmQgZG8gbm90IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow58l6j[1] Phase: Succeeded StartedAt: 2026-07-01 15:54:48 +0000 UTC FinishedAt: 2026-07-01 15:54:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 15:54:48 +0000 UTC FinishedAt: 2026-07-01 15:54:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2] Phase: Succeeded StartedAt: 2026-07-01 15:54:48 +0000 UTC FinishedAt: 2026-07-01 20:11:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 15:54:48 +0000 UTC FinishedAt: 2026-07-01 20:11:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 15:54:48 +0000 UTC FinishedAt: 2026-07-01 15:54:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 15:54:48 +0000 UTC FinishedAt: 2026-07-01 15:54:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflow58l6j/series-workflow58l6j-convert-artifact-1436081334/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 15:54:58 +0000 UTC FinishedAt: 2026-07-01 16:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 15:54:58 +0000 UTC FinishedAt: 2026-07-01 16:22:22 +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:*aeed8a34-6135-4f9b-922c-9bc700f34d76,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-workflow58l6j/series-workflow58l6j-convert-artifact-1436081334/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": "8d7b952d-1255-49bf-b78f-62360524730f", "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-workflow58l6j/series-workflow58l6j-build-action-1357513676/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 15:54:58 +0000 UTC FinishedAt: 2026-07-01 16:22:12 +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:*aeed8a34-6135-4f9b-922c-9bc700f34d76,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-workflow58l6j/series-workflow58l6j-convert-artifact-1436081334/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": "8d7b952d-1255-49bf-b78f-62360524730f", "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-workflow58l6j/series-workflow58l6j-build-action-1357513676/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 16:22:22 +0000 UTC FinishedAt: 2026-07-01 16:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 16:22:22 +0000 UTC FinishedAt: 2026-07-01 16:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 16:22:22 +0000 UTC FinishedAt: 2026-07-01 16:22:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 16:22:22 +0000 UTC FinishedAt: 2026-07-01 16:22:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflow58l6j/series-workflow58l6j-convert-artifact-171588681/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 16:22:32 +0000 UTC FinishedAt: 2026-07-01 16:24:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 16:22:32 +0000 UTC FinishedAt: 2026-07-01 16:24:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8d7b952d-1255-49bf-b78f-62360524730f,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-workflow58l6j/series-workflow58l6j-build-action-1357513676/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-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 16:24:57 +0000 UTC FinishedAt: 2026-07-01 16:24:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 16:24:57 +0000 UTC FinishedAt: 2026-07-01 16:24:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 16:24:57 +0000 UTC FinishedAt: 2026-07-01 17:06:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 16:24:57 +0000 UTC FinishedAt: 2026-07-01 17:06:24 +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:*aeed8a34-6135-4f9b-922c-9bc700f34d76,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-workflow58l6j/series-workflow58l6j-convert-artifact-171588681/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": "6e14b709-831c-4288-b1f0-44514aa21b29", "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-workflow58l6j/series-workflow58l6j-build-action-2084555557/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 16:24:57 +0000 UTC FinishedAt: 2026-07-01 17:06:14 +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:*aeed8a34-6135-4f9b-922c-9bc700f34d76,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-workflow58l6j/series-workflow58l6j-convert-artifact-171588681/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": "6e14b709-831c-4288-b1f0-44514aa21b29", "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-workflow58l6j/series-workflow58l6j-build-action-2084555557/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 17:06:24 +0000 UTC FinishedAt: 2026-07-01 17:06:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 17:06:24 +0000 UTC FinishedAt: 2026-07-01 17:06:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 17:06:24 +0000 UTC FinishedAt: 2026-07-01 17:09:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 17:06:24 +0000 UTC FinishedAt: 2026-07-01 17:08:52 +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:*6e14b709-831c-4288-b1f0-44514aa21b29,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-workflow58l6j/series-workflow58l6j-build-action-2084555557/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-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 17:09:02 +0000 UTC FinishedAt: 2026-07-01 20:11:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 17:09:02 +0000 UTC FinishedAt: 2026-07-01 20:11:05 +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":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*8d7b952d-1255-49bf-b78f-62360524730f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6e14b709-831c-4288-b1f0-44514aa21b29,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-workflow58l6j/series-workflow58l6j-build-action-1357513676/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-workflow58l6j/series-workflow58l6j-build-action-2084555557/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 17:09:02 +0000 UTC FinishedAt: 2026-07-01 17:09:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 17:09:02 +0000 UTC FinishedAt: 2026-07-01 17:09:08 +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":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow58l6j/series-workflow58l6j-convert-artifact-926405534/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 17:09:02 +0000 UTC FinishedAt: 2026-07-01 17:09:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 17:09:02 +0000 UTC FinishedAt: 2026-07-01 17:09:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 17:09:02 +0000 UTC FinishedAt: 2026-07-01 17:09:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 17:09:12 +0000 UTC FinishedAt: 2026-07-01 20:11:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58l6j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macsec_update_offload","macsec_changelink_common","macsec_fill_info"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1c664ec4b9ea827b609d296921ed5bad8a40a158","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACSEC"],"series_id":"162a5013-75d4-4c59-b081-57eeec08bbd1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 17:09:12 +0000 UTC FinishedAt: 2026-07-01 20:10:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8d7b952d-1255-49bf-b78f-62360524730f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6e14b709-831c-4288-b1f0-44514aa21b29,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-workflow58l6j/series-workflow58l6j-build-action-1357513676/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-workflow58l6j/series-workflow58l6j-build-action-2084555557/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-workflow58l6j/series-workflow58l6j-convert-artifact-926405534/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,}