Name: series-workflow2fbrl Phase: Succeeded StartedAt: 2026-07-03 03:31:11 +0000 UTC FinishedAt: 2026-07-03 07:44:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[0] Phase: Succeeded StartedAt: 2026-07-03 03:31:11 +0000 UTC FinishedAt: 2026-07-03 03:42:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 03:31:11 +0000 UTC FinishedAt: 2026-07-03 03:42:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "334373c7-8ca9-43bf-af1e-920f6d8df4f8" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_convert_inline_data", "ext4_convert_inline_data_nolock", "ext4_convert_inline_data_to_extent", "ext4_da_convert_inline_data_to_extent" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGEmIzM0OywKICAgICYjMzQ7ZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayYjMzQ7LAogICAgJiMzNDtleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50JiMzNDssCiAgICAmIzM0O2V4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGlubGluZSBkYXRhIGNvbnZlcnNpb24gbG9naWMgaW4gZXh0NCBieSBpbnRyb2R1Y2luZyBhIG5ldyBpbm9kZSBzdGF0ZSBmbGFnIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRC4gVGhpcyBmbGFnIHByZXZlbnRzIHJlc3RvcmluZyBpbmxpbmUgZGF0YSBhZnRlciBpdCBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjb3BpZWQgb3V0LCBmaXhpbmcgcG90ZW50aWFsIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvbnNpc3RlbmNpZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTc4NDNlYmFlODc1OWY0MmNhMjMxOWFkODZjODYyZjMyMmQ3MzhlNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMDM6NDE6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaFxuaW5kZXggYjM3YzEzNmVhM2FiMzMuLjg2M2Y1MjQ3ZWIzNDEzIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9leHQ0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oXG5AQCAtMjAzOCw2ICYjNDM7MjAzOCw3IEBAIGVudW0ge1xuIFx0RVhUNF9TVEFURV9GQ19GTFVTSElOR19EQVRBLFx0LyogRmFzdCBjb21taXQgZmx1c2hpbmcgZGF0YSAqL1xuIFx0RVhUNF9TVEFURV9PUlBIQU5fRklMRSxcdFx0LyogSW5vZGUgb3JwaGFuZWQgaW4gb3JwaGFuIGZpbGUgKi9cbiBcdEVYVDRfU1RBVEVfRkNfUkVRVUVVRSxcdFx0LyogSW5vZGUgbW9kaWZpZWQgZHVyaW5nIGZhc3QgY29tbWl0ICovXG4mIzQzO1x0RVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVELFx0LyogaW5saW5lIGRhdGEgY29waWVkIG91dCwgZG8gbm90IHJlc3RvcmUgKi9cbiB9O1xuIFxuICNkZWZpbmUgRVhUNF9JTk9ERV9CSVRfRk5TKG5hbWUsIGZpZWxkLCBvZmZzZXQpXHRcdFx0XHRcXFxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5saW5lLmMgYi9mcy9leHQ0L2lubGluZS5jXG5pbmRleCA4MDQ1ZTRmZjI3MGM3Zi4uMWI2YWJhY2YxMmU2ZTggMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2lubGluZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2lubGluZS5jXG5AQCAtNjcxLDYgJiM0Mzs2NzEsOCBAQCBzdGF0aWMgaW50IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4gXG4gXHRpZiAoZm9saW8pXG4gXHRcdGJsb2NrX2NvbW1pdF93cml0ZShmb2xpbywgZnJvbSwgdG8pO1xuJiM0MztcdGlmIChmb2xpbyBcdTAwMjZcdTAwMjYgIXJldClcbiYjNDM7XHRcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xuIG91dDpcbiBcdGlmIChmb2xpbykge1xuIFx0XHRmb2xpb191bmxvY2soZm9saW8pO1xuQEAgLTkyMSw2ICYjNDM7OTIzLDcgQEAgc3RhdGljIGludCBleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuIFx0Y2xlYXJfYnVmZmVyX25ldyhmb2xpb19idWZmZXJzKGZvbGlvKSk7XG4gXHRmb2xpb19tYXJrX2RpcnR5KGZvbGlvKTtcbiBcdGZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pO1xuJiM0MztcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xuIFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xuIFx0KmZzZGF0YSA9ICh2b2lkICopQ09OVkVSVF9JTkxJTkVfREFUQTtcbiBcbkBAIC0xMTcyLDggJiM0MzsxMTc1LDE0IEBAIHN0YXRpYyBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGVfdCAqaGFuZGxlLFxuIFx0fVxuIFxuIG91dF9yZXN0b3JlOlxuLVx0aWYgKGVycm9yKVxuLVx0XHRleHQ0X3Jlc3RvcmVfaW5saW5lX2RhdGEoaGFuZGxlLCBpbm9kZSwgaWxvYywgYnVmLCBpbmxpbmVfc2l6ZSk7XG4mIzQzO1x0aWYgKGVycm9yKSB7XG4mIzQzO1x0XHRXQVJOX09OX09OQ0UoZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLFxuJiM0MztcdFx0XHRcdFx0RVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVEKSk7XG4mIzQzO1x0XHRleHQ0X3Jlc3RvcmVfaW5saW5lX2RhdGEoaGFuZGxlLCBpbm9kZSwgaWxvYywgYnVmLFxuJiM0MztcdFx0XHRcdFx0IGlubGluZV9zaXplKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0ZXh0NF9zZXRfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRCk7XG4mIzQzO1x0fVxuIFxuIG91dDpcbiBcdGJyZWxzZShkYXRhX2JoKTtcbkBAIC0xOTU5LDIyICYjNDM7MTk2OCwxNiBAQCBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gXHRoYW5kbGVfdCAqaGFuZGxlO1xuIFx0c3RydWN0IGV4dDRfaWxvYyBpbG9jO1xuIFxuLVx0aWYgKCFleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpIHtcbi1cdFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xuJiM0MztcdGlmICghZXh0NF9oYXNfZmVhdHVyZV9pbmxpbmVfZGF0YShpbm9kZS1cdTAwM2VpX3NiKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE9uY2UgaW5saW5lIGRhdGEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvcGllZCBvdXQgKHRvIHBhZ2VcbiYjNDM7XHQgKiBjYWNoZSBvciBhIGRhdGEgYmxvY2spLCB0aGlzIGJpdCBpcyBzZXQgYW5kIG5ldmVyIGNsZWFyZWQuXG4mIzQzO1x0ICogSXQgaXMgc2FmZSB0byBjaGVjayB3aXRob3V0IGxvY2tzIC0tIHRoZSBiaXQgaXMgbW9ub3RvbmljLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRCkpXG4gXHRcdHJldHVybiAwO1xuLVx0fSBlbHNlIGlmICghZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSkpIHtcbi1cdFx0Lypcbi1cdFx0ICogSW5vZGUgaGFzIGlubGluZSBkYXRhIGJ1dCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSBpc1xuLVx0XHQgKiBjbGVhcmVkLiBUaGlzIG1lYW5zIHdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIG1vdmluZyBvZlxuLVx0XHQgKiBpbmxpbmUgZGF0YSB0byBkZWxheSBhbGxvY2F0ZWQgYmxvY2suIEp1c3QgZm9yY2Ugd3JpdGVvdXRcbi1cdFx0ICogaGVyZSB0byBmaW5pc2ggY29udmVyc2lvbi5cbi1cdFx0ICovXG4tXHRcdGVycm9yID0gZmlsZW1hcF9mbHVzaChpbm9kZS1cdTAwM2VpX21hcHBpbmcpO1xuLVx0XHRpZiAoZXJyb3IpXG4tXHRcdFx0cmV0dXJuIGVycm9yO1xuLVx0XHRpZiAoIWV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSlcbi1cdFx0XHRyZXR1cm4gMDtcbi1cdH1cbiBcbiBcdG5lZWRlZF9ibG9ja3MgPSBleHQ0X2NodW5rX3RyYW5zX2V4dGVudChpbm9kZSwgMSk7XG4gXG5AQCAtMTk5MCw4ICYjNDM7MTk5MywxMyBAQCBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gXHR9XG4gXG4gXHRleHQ0X3dyaXRlX2xvY2tfeGF0dHIoaW5vZGUsIFx1MDAyNm5vX2V4cGFuZCk7XG4tXHRpZiAoZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKVxuJiM0MztcdGlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGV4dDRfdGVzdF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpKVxuIFx0XHRlcnJvciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2soaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG4mIzQzO1x0aWYgKCFleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpIHtcbiYjNDM7XHRcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xuJiM0MztcdFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xuJiM0MztcdH1cbiBcdGV4dDRfd3JpdGVfdW5sb2NrX3hhdHRyKGlub2RlLCBcdTAwMjZub19leHBhbmQpO1xuIFx0ZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTtcbiBvdXRfZnJlZTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMzo0MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhJiMzNDssCiAgICAmIzM0O2V4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2smIzM0OywKICAgICYjMzQ7ZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudCYjMzQ7LAogICAgJiMzNDtleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIGxvZ2ljIGluIGV4dDQgYnkgaW50cm9kdWNpbmcgYSBuZXcgaW5vZGUgc3RhdGUgZmxhZyBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQuIFRoaXMgZmxhZyBwcmV2ZW50cyByZXN0b3JpbmcgaW5saW5lIGRhdGEgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY29waWVkIG91dCwgZml4aW5nIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gb3IgaW5jb25zaXN0ZW5jaWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTc4NDNlYmFlODc1OWY0MmNhMjMxOWFkODZjODYyZjMyMmQ3MzhlNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMgMDM6NDE6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oCmluZGV4IGIzN2MxMzZlYTNhYjMzLi44NjNmNTI0N2ViMzQxMyAxMDA2NDQKLS0tIGEvZnMvZXh0NC9leHQ0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9leHQ0LmgKQEAgLTIwMzgsNiAmIzQzOzIwMzgsNyBAQCBlbnVtIHsKIAlFWFQ0X1NUQVRFX0ZDX0ZMVVNISU5HX0RBVEEsCS8qIEZhc3QgY29tbWl0IGZsdXNoaW5nIGRhdGEgKi8KIAlFWFQ0X1NUQVRFX09SUEhBTl9GSUxFLAkJLyogSW5vZGUgb3JwaGFuZWQgaW4gb3JwaGFuIGZpbGUgKi8KIAlFWFQ0X1NUQVRFX0ZDX1JFUVVFVUUsCQkvKiBJbm9kZSBtb2RpZmllZCBkdXJpbmcgZmFzdCBjb21taXQgKi8KJiM0MzsJRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVELAkvKiBpbmxpbmUgZGF0YSBjb3BpZWQgb3V0LCBkbyBub3QgcmVzdG9yZSAqLwogfTsKIAogI2RlZmluZSBFWFQ0X0lOT0RFX0JJVF9GTlMobmFtZSwgZmllbGQsIG9mZnNldCkJCQkJXApkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbmxpbmUuYyBiL2ZzL2V4dDQvaW5saW5lLmMKaW5kZXggODA0NWU0ZmYyNzBjN2YuLjFiNmFiYWNmMTJlNmU4IDEwMDY0NAotLS0gYS9mcy9leHQ0L2lubGluZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvaW5saW5lLmMKQEAgLTY3MSw2ICYjNDM7NjcxLDggQEAgc3RhdGljIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCiAJaWYgKGZvbGlvKQogCQlibG9ja19jb21taXRfd3JpdGUoZm9saW8sIGZyb20sIHRvKTsKJiM0MzsJaWYgKGZvbGlvICZhbXA7JmFtcDsgIXJldCkKJiM0MzsJCWV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpOwogb3V0OgogCWlmIChmb2xpbykgewogCQlmb2xpb191bmxvY2soZm9saW8pOwpAQCAtOTIxLDYgJiM0Mzs5MjMsNyBAQCBzdGF0aWMgaW50IGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJY2xlYXJfYnVmZmVyX25ldyhmb2xpb19idWZmZXJzKGZvbGlvKSk7CiAJZm9saW9fbWFya19kaXJ0eShmb2xpbyk7CiAJZm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7CiYjNDM7CWV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpOwogCWV4dDRfY2xlYXJfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBKTsKIAkqZnNkYXRhID0gKHZvaWQgKilDT05WRVJUX0lOTElORV9EQVRBOwogCkBAIC0xMTcyLDggJiM0MzsxMTc1LDE0IEBAIHN0YXRpYyBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGVfdCAqaGFuZGxlLAogCX0KIAogb3V0X3Jlc3RvcmU6Ci0JaWYgKGVycm9yKQotCQlleHQ0X3Jlc3RvcmVfaW5saW5lX2RhdGEoaGFuZGxlLCBpbm9kZSwgaWxvYywgYnVmLCBpbmxpbmVfc2l6ZSk7CiYjNDM7CWlmIChlcnJvcikgewomIzQzOwkJV0FSTl9PTl9PTkNFKGV4dDRfdGVzdF9pbm9kZV9zdGF0ZShpbm9kZSwKJiM0MzsJCQkJCUVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRCkpOwomIzQzOwkJZXh0NF9yZXN0b3JlX2lubGluZV9kYXRhKGhhbmRsZSwgaW5vZGUsIGlsb2MsIGJ1ZiwKJiM0MzsJCQkJCSBpbmxpbmVfc2l6ZSk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlleHQ0X3NldF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVEKTsKJiM0MzsJfQogCiBvdXQ6CiAJYnJlbHNlKGRhdGFfYmgpOwpAQCAtMTk1OSwyMiAmIzQzOzE5NjgsMTYgQEAgaW50IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlKQogCWhhbmRsZV90ICpoYW5kbGU7CiAJc3RydWN0IGV4dDRfaWxvYyBpbG9jOwogCi0JaWYgKCFleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpIHsKLQkJZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpOwomIzQzOwlpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfaW5saW5lX2RhdGEoaW5vZGUtJmd0O2lfc2IpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIE9uY2UgaW5saW5lIGRhdGEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvcGllZCBvdXQgKHRvIHBhZ2UKJiM0MzsJICogY2FjaGUgb3IgYSBkYXRhIGJsb2NrKSwgdGhpcyBiaXQgaXMgc2V0IGFuZCBuZXZlciBjbGVhcmVkLgomIzQzOwkgKiBJdCBpcyBzYWZlIHRvIGNoZWNrIHdpdGhvdXQgbG9ja3MgLS0gdGhlIGJpdCBpcyBtb25vdG9uaWMuCiYjNDM7CSAqLwomIzQzOwlpZiAoZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpKQogCQlyZXR1cm4gMDsKLQl9IGVsc2UgaWYgKCFleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBKSkgewotCQkvKgotCQkgKiBJbm9kZSBoYXMgaW5saW5lIGRhdGEgYnV0IEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBIGlzCi0JCSAqIGNsZWFyZWQuIFRoaXMgbWVhbnMgd2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgbW92aW5nIG9mCi0JCSAqIGlubGluZSBkYXRhIHRvIGRlbGF5IGFsbG9jYXRlZCBibG9jay4gSnVzdCBmb3JjZSB3cml0ZW91dAotCQkgKiBoZXJlIHRvIGZpbmlzaCBjb252ZXJzaW9uLgotCQkgKi8KLQkJZXJyb3IgPSBmaWxlbWFwX2ZsdXNoKGlub2RlLSZndDtpX21hcHBpbmcpOwotCQlpZiAoZXJyb3IpCi0JCQlyZXR1cm4gZXJyb3I7Ci0JCWlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKQotCQkJcmV0dXJuIDA7Ci0JfQogCiAJbmVlZGVkX2Jsb2NrcyA9IGV4dDRfY2h1bmtfdHJhbnNfZXh0ZW50KGlub2RlLCAxKTsKIApAQCAtMTk5MCw4ICYjNDM7MTk5MywxMyBAQCBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiAJfQogCiAJZXh0NF93cml0ZV9sb2NrX3hhdHRyKGlub2RlLCAmYW1wO25vX2V4cGFuZCk7Ci0JaWYgKGV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSkKJiM0MzsJaWYgKGV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSAmYW1wOyZhbXA7CiYjNDM7CSAgICBleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBKSkKIAkJZXJyb3IgPSBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrKGhhbmRsZSwgaW5vZGUsICZhbXA7aWxvYyk7CiYjNDM7CWlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKSB7CiYjNDM7CQlleHQ0X3NldF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVEKTsKJiM0MzsJCWV4dDRfY2xlYXJfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBKTsKJiM0MzsJfQogCWV4dDRfd3JpdGVfdW5sb2NrX3hhdHRyKGlub2RlLCAmYW1wO25vX2V4cGFuZCk7CiAJZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTsKIG91dF9mcmVlOgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDYyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklubGluZSBEYXRhIENvbnZlcnNpb24gaW4gZXh0NDogQSBGdXp6aW5nIFRhcmdldCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHBsYXlpbmcgd2l0aCBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIHdpdGhpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLiBUaGUgZmlsZXMgdG91Y2hlZCBhcmUgYGZzL2V4dDQvaW5saW5lLmNgIGFuZCBgZnMvZXh0NC9leHQ0LmhgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIHNvbWV0aGluZyB0aGF0IGNvdWxkIGhhdmUgaW50ZXJlc3RpbmcgaW1wbGljYXRpb25zLiBTcGVjaWZpY2FsbHksIGl0IGludHJvZHVjZXMgYSBuZXcgaW5vZGUgc3RhdGUgZmxhZywgYEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRGAsIGFuZCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2Ygc2V2ZXJhbCBrZXkgZnVuY3Rpb25zOiBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2tgLCBgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAsIGFuZCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBidWcgZml4LCBhbmQgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGEgY29yZSBhc3BlY3Qgb2YgaG93IGV4dDQgbWFuYWdlcyBkYXRhLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nLCB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBUaGUgcG90ZW50aWFsIGZvciBlZGdlIGNhc2VzIGFuZCB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIGlzIGhpZ2guCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhvc2UgbW9kaWZpZWQgZnVuY3Rpb25zIGluIGRldGFpbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG5ldyBsb2dpYyBhbmQgaG93IHRoaXMgZmxhZyBpbmZsdWVuY2VzIHRoZWlyIGJlaGF2aW9yLiBJIGFsc28gbmVlZCB0byBlbnN1cmUgSSBjaGVjayBhbGwgdGhlIGNvbnRyb2wgcG9pbnRzIGFuZCBib3VuZGFyeSBjb25kaXRpb25zLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gYEVYVDRfRlNgIGlzIHRoZSBtYWluIG9uZSwgb2J2aW91c2x5LCBidXQgYXJlIHRoZXJlIGFueSAqc3BlY2lmaWMqIGNvbmZpZ3MgcmVsYXRlZCB0byBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIHRoYXQgY291bGQgaW5mbHVlbmNlIHRoaXM/IExldCBtZSBxdWlja2x5IGdyZXAgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZvciBgRVhUNF9GU2AgYW5kIGFueXRoaW5nIHJlbGF0ZWQgdG8gJiMzNDtpbmxpbmUgZGF0YSYjMzQ7IHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgcmVsZXZhbnQgYnVpbGQgb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRVhUNF9GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvZXh0NC9LY29uZmlnOjI6Y29uZmlnIEVYVDRfRlNcbmZzL2V4dDQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cJiMzNDtcbi0tXG5mcy9leHQ0L0tjb25maWc9MzU9Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXG4tLVxuZnMvZXh0NC9LY29uZmlnLTQ1LVxuZnMvZXh0NC9LY29uZmlnOjQ2OmNvbmZpZyBFWFQ0X0ZTX1BPU0lYX0FDTFxuZnMvZXh0NC9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnLTU1LVxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXG5mcy9leHQ0L0tjb25maWctNTctXHRib29sIFwmIzM0O0V4dDQgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg4OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgZXh0NCBJbmxpbmUgRGF0YSBDb252ZXJzaW9uKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIG5vIGRlZGljYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbiBzcGVjaWZpY2FsbHkgZm9yIGlubGluZSBkYXRhIHdpdGhpbiBleHQ0OyBpdCYjMzk7cyBiYWtlZCBpbiBhcyBhIGZpbGVzeXN0ZW0gZmVhdHVyZSBlbmFibGVkIGJ5IHRoZSBgRVhUNF9GU2AgY29uZmlndXJhdGlvbi4gR29vZCB0byBrbm93LiBUaGF0JiMzOTtzIHRoZSBrZXkgZW5hYmxpbmcgZmFjdG9yLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gdGhlIGJyYXNzIHRhY2tzOiB3aGF0IGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoaXMgY29udmVyc2lvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNyaXRpY2FsIGNvZGUgcGF0aHMgaGVyZS4gVGhlIG9uZXMgSSYjMzk7bSBmb2N1c2luZyBvbiBhcmU6IGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFgLCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9ja2AsIGBleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50YCwgYW5kIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50YC4KCkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpZiB0aGVzZSBhcmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgJiMzNDtob3QtcGF0aCYjMzQ7IGZ1bmN0aW9ucy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YWAgaXRzZWxmLCB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIGlzICpub3QqIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiBpbiB0aGUgc2FtZSBzZW5zZSBhcyBzb21ldGhpbmcgbGlrZSBgZXh0NF9yZWFkX2ZvbGlvYCBvciBgZXh0NF93cml0ZV9iZWdpbmAsIGFsdGhvdWdoIHRoZXNlIGNvdWxkIGNhbGwgdGhhdC4gSXQmIzM5O3MgY2FsbGVkIHdoZW4gY29udmVydGluZyBpbmxpbmUgZGF0YSB0byBleHRlbnRzLCB3aGljaCBpcyBsaWtlbHkgYSByYXJlciBvcGVyYXRpb24sIGJ1dCBJIG11c3QgY29uZmlybS4KClRoZXJlZm9yZSwgSSYjMzk7bGwgbmVlZCB0byBkbyBhIHRob3JvdWdoIGdyZXAgdG8gZGV0ZXJtaW5lIGl0cyBhY3R1YWwgdXNhZ2UgcGF0dGVybnMgd2l0aGluIHRoZSBjb2RlYmFzZSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjb2RlLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4dDRfY29udmVydF9pbmxpbmVfZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvY3J5cHRvLmM9MTMyPXN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXG4tLVxuZnMvZXh0NC9jcnlwdG8uYy0xNTItXG5mcy9leHQ0L2NyeXB0by5jOjE1MzpcdHJlcyA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShpbm9kZSk7XG5mcy9leHQ0L2NyeXB0by5jLTE1NC1cdGlmIChyZXMpXG4tLVxuZnMvZXh0NC9leHQ0Lmg9Mzc4NT1leHRlcm4gaW50IGV4dDRfaW5saW5lX2RhdGFfdHJ1bmNhdGUoc3RydWN0IGlub2RlICppbm9kZSwgaW50ICpoYXNfaW5saW5lKTtcbmZzL2V4dDQvZXh0NC5oLTM3ODYtXG5mcy9leHQ0L2V4dDQuaDozNzg3OmV4dGVybiBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xuZnMvZXh0NC9leHQ0LmgtMzc4OC1cbi0tXG5mcy9leHQ0L2V4dGVudHMuYz00ODU0PWxvbmcgZXh0NF9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuLS1cbmZzL2V4dDQvZXh0ZW50cy5jLTQ4ODMtXHRpbm9kZV9sb2NrKGlub2RlKTtcbmZzL2V4dDQvZXh0ZW50cy5jOjQ4ODQ6XHRyZXQgPSBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGEoaW5vZGUpO1xuZnMvZXh0NC9leHRlbnRzLmMtNDg4NS1cdGlmIChyZXQpXG4tLVxuZnMvZXh0NC9pbmxpbmUuYz01NDU9aW50IGV4dDRfcmVhZHBhZ2VfaW5saW5lKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuZnMvZXh0NC9pbmxpbmUuYy01NzEtXG5mcy9leHQ0L2lubGluZS5jOjU3MjpzdGF0aWMgaW50IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG5mcy9leHQ0L2lubGluZS5jLTU3My1cdFx0XHRcdFx0ICAgICAgc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9leHQ0L2lubGluZS5jPTY5OD1pbnQgZXh0NF9nZW5lcmljX3dyaXRlX2lubGluZV9kYXRhKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuLS1cbmZzL2V4dDQvaW5saW5lLmMtNzI5LVx0XHRcdC8qIFJldHJ5IGluc2lkZSAqL1xuZnMvZXh0NC9pbmxpbmUuYzo3MzA6XHRcdFx0cmV0dXJuIGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQobWFwcGluZywgaW5vZGUpO1xuZnMvZXh0NC9pbmxpbmUuYy03MzEtXHRcdH1cbi0tXG5mcy9leHQ0L2lubGluZS5jPTc4NT1pbnQgZXh0NF90cnlfdG9fd3JpdGVfaW5saW5lX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvZXh0NC9pbmxpbmUuYy03OTAtXHRpZiAocG9zICYjNDM7IGxlbiBcdTAwM2UgZXh0NF9nZXRfbWF4X2lubGluZV9zaXplKGlub2RlKSlcbmZzL2V4dDQvaW5saW5lLmM6NzkxOlx0XHRyZXR1cm4gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudChtYXBwaW5nLCBpbm9kZSk7XG5mcy9leHQ0L2lubGluZS5jLTc5Mi1cdHJldHVybiBleHQ0X2dlbmVyaWNfd3JpdGVfaW5saW5lX2RhdGEobWFwcGluZywgaW5vZGUsIHBvcywgbGVuLFxuLS1cbmZzL2V4dDQvaW5saW5lLmM9MTA3Nj1zdGF0aWMgdm9pZCBleHQ0X3Jlc3RvcmVfaW5saW5lX2RhdGEoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L2lubGluZS5jLTEwOTItXG5mcy9leHQ0L2lubGluZS5jOjEwOTM6c3RhdGljIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrKGhhbmRsZV90ICpoYW5kbGUsXG5mcy9leHQ0L2lubGluZS5jLTEwOTQtXHRcdFx0XHRcdCAgIHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9pbmxpbmUuYz0xMTk4PWludCBleHQ0X3RyeV9hZGRfaW5saW5lX2VudHJ5KGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBleHQ0X2ZpbGVuYW1lICpmbmFtZSxcbi0tXG5mcy9leHQ0L2lubGluZS5jLTEyNTAtXHQgKi9cbmZzL2V4dDQvaW5saW5lLmM6MTI1MTpcdHJldCA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2soaGFuZGxlLCBkaXIsIFx1MDAyNmlsb2MpO1xuZnMvZXh0NC9pbmxpbmUuYy0xMjUyLVxuLS1cbmZzL2V4dDQvaW5saW5lLmM9MTg1Mz1pbnQgZXh0NF9pbmxpbmVfZGF0YV90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgKmhhc19pbmxpbmUpXG4tLVxuZnMvZXh0NC9pbmxpbmUuYy0xOTY0LVxuZnMvZXh0NC9pbmxpbmUuYzoxOTY1OmludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGEoc3RydWN0IGlub2RlICppbm9kZSlcbmZzL2V4dDQvaW5saW5lLmMtMTk2Ni17XG4tLVxuZnMvZXh0NC9pbmxpbmUuYy0xOTk3LVx0ICAgIGV4dDRfdGVzdF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpKVxuZnMvZXh0NC9pbmxpbmUuYzoxOTk4Olx0XHRlcnJvciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2soaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG5mcy9leHQ0L2lubGluZS5jLTE5OTktXHRpZiAoIWV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSkge1xuLS1cbmZzL2V4dDQvaW5vZGUuYz01OTM0PWludCBleHQ0X3NldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9leHQ0L2lub2RlLmMtNjAzMS1cdFx0ICAgIGF0dHItXHUwMDNlaWFfc2l6ZSBcdTAwM2UgRVhUNF9JKGlub2RlKS1cdTAwM2VpX2lubGluZV9zaXplKSB7XG5mcy9leHQ0L2lub2RlLmM6NjAzMjpcdFx0XHRlcnJvciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShpbm9kZSk7XG5mcy9leHQ0L2lub2RlLmMtNjAzMy1cdFx0XHRpZiAoZXJyb3IpXG4tLVxuZnMvZXh0NC9pbm9kZS5jPTY3ODc9dm1fZmF1bHRfdCBleHQ0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5mcy9leHQ0L2lub2RlLmMtNjgwOC1cbmZzL2V4dDQvaW5vZGUuYzo2ODA5Olx0ZXJyID0gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKGlub2RlKTtcbmZzL2V4dDQvaW5vZGUuYy02ODEwLVx0aWYgKGVycilcbi0tXG5mcy9leHQ0L3Zlcml0eS5jPTEwMj1zdGF0aWMgaW50IGV4dDRfYmVnaW5fZW5hYmxlX3Zlcml0eShzdHJ1Y3QgZmlsZSAqZmlscClcbi0tXG5mcy9leHQ0L3Zlcml0eS5jLTEyOC1cbmZzL2V4dDQvdmVyaXR5LmM6MTI5Olx0ZXJyID0gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKGlub2RlKTtcbmZzL2V4dDQvdmVyaXR5LmMtMTMwLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODg3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklubGluZSBEYXRhIENvbnZlcnNpb24gRml4IC0gQSBTb2xpZCBDYW5kaWRhdGUgZm9yIFRlc3RpbmcqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMgLSBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2tgLCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAsIGFuZCBgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAg4oCTIHRoZXkgaW1tZWRpYXRlbHkganVtcCBvdXQgYXMgcGVyZmVjdCBjYW5kaWRhdGVzIGZvciBgRm9jdXNTeW1ib2xzYC4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBrbm93biBpc3N1ZSBjb25jZXJuaW5nIGlubGluZSBkYXRhIGNvbnZlcnNpb24sIHNwZWNpZmljYWxseSB0aGUgcG90ZW50aWFsIGZvciByZS1jb252ZXJzaW9uIGFmdGVyIHRoZSBpbml0aWFsIG9wZXJhdGlvbi4gVGhlIHJpc2s/IERhdGEgY29ycnVwdGlvbiBhbmQgZmlsZSBzeXN0ZW0gaW5jb25zaXN0ZW5jaWVzLgoKRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIHRoaXMgaXMgYSBjbGVhbiBmaXguIEl0IGFkZHJlc3NlcyBhIHJlYWwgdnVsbmVyYWJpbGl0eSwgd2hpY2ggbWFrZXMgaXQgcGFydGljdWxhcmx5IGludGVyZXN0aW5nIGZvciBmdXp6aW5nLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgdXNhZ2Ugb2YgYGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgb2J2aW91cyBzaWRlLWVmZmVjdHMgb3IgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L2lubGluZS5jLTIzLVxuZnMvZXh0NC9pbmxpbmUuYzoyNDpzdGF0aWMgaW50IGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG5mcy9leHQ0L2lubGluZS5jLTI1LVx0XHRcdFx0XHRcdCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2V4dDQvaW5saW5lLmM9Njk4PWludCBleHQ0X2dlbmVyaWNfd3JpdGVfaW5saW5lX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvZXh0NC9pbmxpbmUuYy03MzItXG5mcy9leHQ0L2lubGluZS5jOjczMzpcdFx0cmV0ID0gZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudChtYXBwaW5nLCBpbm9kZSwgZnNkYXRhKTtcbmZzL2V4dDQvaW5saW5lLmMtNzM0LVx0XHRpZiAocmV0ID09IC1FTk9TUEMgXHUwMDI2XHUwMDI2XG4tLVxuZnMvZXh0NC9pbmxpbmUuYz03OTY9aW50IGV4dDRfd3JpdGVfaW5saW5lX2RhdGFfZW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBwb3MsIHVuc2lnbmVkIGxlbixcbi0tXG5mcy9leHQ0L2lubGluZS5jLTg4Ni0gKi9cbmZzL2V4dDQvaW5saW5lLmM6ODg3OnN0YXRpYyBpbnQgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbmZzL2V4dDQvaW5saW5lLmMtODg4LVx0XHRcdFx0XHRcdCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NjcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGV4dDQgSW5saW5lIERhdGEgQ29udmVyc2lvbiBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBob21pbmcgaW4gb24gdGhlIGNvcmUgb2YgdGhpcyBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIGxvZ2ljIHdpdGhpbiBleHQ0LiBUaGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gZGlzc2VjdCBhcmU6IGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFgLCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9ja2AsIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50YCwgYW5kIGBleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50YC4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGZsb3cgYW5kIGJlaGF2aW9yIG9mIGVhY2gsIGVzcGVjaWFsbHkgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCBlYWNoIG90aGVyIGFuZCBoYW5kbGUgZXJyb3IgY29uZGl0aW9ucy4KCk5vdywgYmVmb3JlIEkgZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgbGV0JiMzOTtzIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZSByZWdhcmRpbmcgY29uZmlndXJhdGlvbnMuIE9idmlvdXNseSwgYEVYVDRfRlNgIGlzIGZ1bmRhbWVudGFsLCBidXQgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgaW1wYWN0IGlubGluZSBkYXRhIHNwZWNpZmljYWxseS4gSSYjMzk7bGwgbmVlZCB0byBnbyBiYWNrIGFuZCBkb3VibGUtY2hlY2sgYGZzL2V4dDQvS2NvbmZpZ2AgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwuIEkgd2FudCB0byBiZSBjZXJ0YWluIEkgaGF2ZSBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgYWxsIHRoZSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyBhbmQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lubGluZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NTcKCQkJCQkJCW91dHB1dDogMTYyCgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEVYVDQgSW5saW5lIERhdGEgQ29udmVyc2lvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXRzIGZ1enppbmcgaW1wbGljYXRpb25zLiBObyBzcGVjaWFsaXplZCBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgaW50cm9kdWNlZCB3aXRoaW4gYGZzL2V4dDQvS2NvbmZpZ2AgdG8gdGFyZ2V0IHRoaXMgc3BlY2lmaWMgY2hhbmdlLCBtZWFuaW5nIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gdGhhdCBlbmFibGVzIGV4dDQsIG5hbWVseSBgRVhUNF9GU2AsIGlzIHRoZSByZWxldmFudCBvbmUgdG8gZm9jdXMgb24gaGVyZS4KCkxldCYjMzk7cyBicmVhayBkb3duIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGlzIHRoZSBhZGRpdGlvbiBvZiB0aGUgYEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRGAgaW5vZGUgc3RhdGUgZmxhZy4gVGhpcyBzZWVtcyBjcnVjaWFsIGJlY2F1c2UgaXQgZGVhbHMgd2l0aCBwcmV2ZW50aW5nIHRoZSBzeXN0ZW0gZnJvbSByZXN0b3JpbmcgaW5saW5lIGRhdGEgb25jZSBpdCYjMzk7cyBiZWVuIHNhZmVseSBjb3BpZWQuIFRoaXMgaXMgYWJzb2x1dGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdl4oCUaXQmIzM5O3MgcmlnaHQgaW4gdGhlIGNyaXRpY2FsIHBhdGggb2YgdGhlIGZpbGVzeXN0ZW0uIFRoZXJlZm9yZSwgZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZCBhbmQgd2lsbCBiZSBiZW5lZmljaWFsLgoKVGhlIHRlYW0gaGFzIGlkZW50aWZpZWQgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YWAsIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgLCBhbmQgYGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgIGFzIGtleSBzeW1ib2xzIHRvIHRhcmdldC4gQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyByZWxhdGUgZGlyZWN0bHkgdG8gdGhlIGlubGluZSBkYXRhIGNvbnZlcnNpb24gcHJvY2Vzcy4gSSBjb25jdXIgd2l0aCB0aGlzIGFzc2Vzc21lbnQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgd2hlcmUgdGhlIG5ldyBmbGFnIHdpbGwgYmUgdXNlZCwgYW5kIGFyZSB0aGVyZWZvcmUgdGhlIGJlc3QgdGFyZ2V0cyBmb3IgZGV0ZWN0aW5nIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlLiBVc2luZyB0aGVzZSBmdW5jdGlvbnMgZm9yIGZ1enppbmcgd2lsbCBiZSBlZmZlY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhJiMzNDssCiAgICAmIzM0O2V4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2smIzM0OywKICAgICYjMzQ7ZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudCYjMzQ7LAogICAgJiMzNDtleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIGxvZ2ljIGluIGV4dDQgYnkgaW50cm9kdWNpbmcgYSBuZXcgaW5vZGUgc3RhdGUgZmxhZyBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQuIFRoaXMgZmxhZyBwcmV2ZW50cyByZXN0b3JpbmcgaW5saW5lIGRhdGEgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY29waWVkIG91dCwgZml4aW5nIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gb3IgaW5jb25zaXN0ZW5jaWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfY29udmVydF9pbmxpbmVfZGF0YSYjMzQ7LAogICAgJiMzNDtleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrJiMzNDssCiAgICAmIzM0O2V4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQmIzM0OywKICAgICYjMzQ7ZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5saW5lIGRhdGEgY29udmVyc2lvbiBsb2dpYyBpbiBleHQ0IGJ5IGludHJvZHVjaW5nIGEgbmV3IGlub2RlIHN0YXRlIGZsYWcgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVELiBUaGlzIGZsYWcgcHJldmVudHMgcmVzdG9yaW5nIGlubGluZSBkYXRhIGFmdGVyIGl0IGhhcyBhbHJlYWR5IGJlZW4gc3VjY2Vzc2Z1bGx5IGNvcGllZCBvdXQsIGZpeGluZyBwb3RlbnRpYWwgZGF0YSBjb3JydXB0aW9uIG9yIGluY29uc2lzdGVuY2llcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MTo1MS4zMDgxNDg2MzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjExMzkwOTY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhXCIsXG4gICAgXCJleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrXCIsXG4gICAgXCJleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50XCIsXG4gICAgXCJleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGlubGluZSBkYXRhIGNvbnZlcnNpb24gbG9naWMgaW4gZXh0NCBieSBpbnRyb2R1Y2luZyBhIG5ldyBpbm9kZSBzdGF0ZSBmbGFnIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRC4gVGhpcyBmbGFnIHByZXZlbnRzIHJlc3RvcmluZyBpbmxpbmUgZGF0YSBhZnRlciBpdCBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjb3BpZWQgb3V0LCBmaXhpbmcgcG90ZW50aWFsIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvbnNpc3RlbmNpZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MTo1MS4zMDgxNTI3MTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTUwMDg2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU3ODQzZWJhZTg3NTlmNDJjYTIzMTlhZDg2Yzg2MmYzMjJkNzM4ZTRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMyAwMzo0MTo1MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXFxuaW5kZXggYjM3YzEzNmVhM2FiMzMuLjg2M2Y1MjQ3ZWIzNDEzIDEwMDY0NFxcbi0tLSBhL2ZzL2V4dDQvZXh0NC5oXFxuKysrIGIvZnMvZXh0NC9leHQ0LmhcXG5AQCAtMjAzOCw2ICsyMDM4LDcgQEAgZW51bSB7XFxuIFxcdEVYVDRfU1RBVEVfRkNfRkxVU0hJTkdfREFUQSxcXHQvKiBGYXN0IGNvbW1pdCBmbHVzaGluZyBkYXRhICovXFxuIFxcdEVYVDRfU1RBVEVfT1JQSEFOX0ZJTEUsXFx0XFx0LyogSW5vZGUgb3JwaGFuZWQgaW4gb3JwaGFuIGZpbGUgKi9cXG4gXFx0RVhUNF9TVEFURV9GQ19SRVFVRVVFLFxcdFxcdC8qIElub2RlIG1vZGlmaWVkIGR1cmluZyBmYXN0IGNvbW1pdCAqL1xcbitcXHRFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQsXFx0LyogaW5saW5lIGRhdGEgY29waWVkIG91dCwgZG8gbm90IHJlc3RvcmUgKi9cXG4gfTtcXG4gXFxuICNkZWZpbmUgRVhUNF9JTk9ERV9CSVRfRk5TKG5hbWUsIGZpZWxkLCBvZmZzZXQpXFx0XFx0XFx0XFx0XFxcXFxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lubGluZS5jIGIvZnMvZXh0NC9pbmxpbmUuY1xcbmluZGV4IDgwNDVlNGZmMjcwYzdmLi4xYjZhYmFjZjEyZTZlOCAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L2lubGluZS5jXFxuKysrIGIvZnMvZXh0NC9pbmxpbmUuY1xcbkBAIC02NzEsNiArNjcxLDggQEAgc3RhdGljIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbiBcXG4gXFx0aWYgKGZvbGlvKVxcbiBcXHRcXHRibG9ja19jb21taXRfd3JpdGUoZm9saW8sIGZyb20sIHRvKTtcXG4rXFx0aWYgKGZvbGlvIFxcdTAwMjZcXHUwMDI2ICFyZXQpXFxuK1xcdFxcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xcbiBvdXQ6XFxuIFxcdGlmIChmb2xpbykge1xcbiBcXHRcXHRmb2xpb191bmxvY2soZm9saW8pO1xcbkBAIC05MjEsNiArOTIzLDcgQEAgc3RhdGljIGludCBleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbiBcXHRjbGVhcl9idWZmZXJfbmV3KGZvbGlvX2J1ZmZlcnMoZm9saW8pKTtcXG4gXFx0Zm9saW9fbWFya19kaXJ0eShmb2xpbyk7XFxuIFxcdGZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pO1xcbitcXHRleHQ0X3NldF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVEKTtcXG4gXFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xcbiBcXHQqZnNkYXRhID0gKHZvaWQgKilDT05WRVJUX0lOTElORV9EQVRBO1xcbiBcXG5AQCAtMTE3Miw4ICsxMTc1LDE0IEBAIHN0YXRpYyBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGVfdCAqaGFuZGxlLFxcbiBcXHR9XFxuIFxcbiBvdXRfcmVzdG9yZTpcXG4tXFx0aWYgKGVycm9yKVxcbi1cXHRcXHRleHQ0X3Jlc3RvcmVfaW5saW5lX2RhdGEoaGFuZGxlLCBpbm9kZSwgaWxvYywgYnVmLCBpbmxpbmVfc2l6ZSk7XFxuK1xcdGlmIChlcnJvcikge1xcbitcXHRcXHRXQVJOX09OX09OQ0UoZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLFxcbitcXHRcXHRcXHRcXHRcXHRFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpKTtcXG4rXFx0XFx0ZXh0NF9yZXN0b3JlX2lubGluZV9kYXRhKGhhbmRsZSwgaW5vZGUsIGlsb2MsIGJ1ZixcXG4rXFx0XFx0XFx0XFx0XFx0IGlubGluZV9zaXplKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0ZXh0NF9zZXRfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRCk7XFxuK1xcdH1cXG4gXFxuIG91dDpcXG4gXFx0YnJlbHNlKGRhdGFfYmgpO1xcbkBAIC0xOTU5LDIyICsxOTY4LDE2IEBAIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGEoc3RydWN0IGlub2RlICppbm9kZSlcXG4gXFx0aGFuZGxlX3QgKmhhbmRsZTtcXG4gXFx0c3RydWN0IGV4dDRfaWxvYyBpbG9jO1xcbiBcXG4tXFx0aWYgKCFleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpIHtcXG4tXFx0XFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xcbitcXHRpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfaW5saW5lX2RhdGEoaW5vZGUtXFx1MDAzZWlfc2IpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIE9uY2UgaW5saW5lIGRhdGEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvcGllZCBvdXQgKHRvIHBhZ2VcXG4rXFx0ICogY2FjaGUgb3IgYSBkYXRhIGJsb2NrKSwgdGhpcyBiaXQgaXMgc2V0IGFuZCBuZXZlciBjbGVhcmVkLlxcbitcXHQgKiBJdCBpcyBzYWZlIHRvIGNoZWNrIHdpdGhvdXQgbG9ja3MgLS0gdGhlIGJpdCBpcyBtb25vdG9uaWMuXFxuK1xcdCAqL1xcbitcXHRpZiAoZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4tXFx0fSBlbHNlIGlmICghZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSkpIHtcXG4tXFx0XFx0LypcXG4tXFx0XFx0ICogSW5vZGUgaGFzIGlubGluZSBkYXRhIGJ1dCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSBpc1xcbi1cXHRcXHQgKiBjbGVhcmVkLiBUaGlzIG1lYW5zIHdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIG1vdmluZyBvZlxcbi1cXHRcXHQgKiBpbmxpbmUgZGF0YSB0byBkZWxheSBhbGxvY2F0ZWQgYmxvY2suIEp1c3QgZm9yY2Ugd3JpdGVvdXRcXG4tXFx0XFx0ICogaGVyZSB0byBmaW5pc2ggY29udmVyc2lvbi5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdGVycm9yID0gZmlsZW1hcF9mbHVzaChpbm9kZS1cXHUwMDNlaV9tYXBwaW5nKTtcXG4tXFx0XFx0aWYgKGVycm9yKVxcbi1cXHRcXHRcXHRyZXR1cm4gZXJyb3I7XFxuLVxcdFxcdGlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKVxcbi1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tXFx0fVxcbiBcXG4gXFx0bmVlZGVkX2Jsb2NrcyA9IGV4dDRfY2h1bmtfdHJhbnNfZXh0ZW50KGlub2RlLCAxKTtcXG4gXFxuQEAgLTE5OTAsOCArMTk5MywxMyBAQCBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuIFxcdH1cXG4gXFxuIFxcdGV4dDRfd3JpdGVfbG9ja194YXR0cihpbm9kZSwgXFx1MDAyNm5vX2V4cGFuZCk7XFxuLVxcdGlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpXFxuK1xcdGlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGV4dDRfdGVzdF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpKVxcbiBcXHRcXHRlcnJvciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2soaGFuZGxlLCBpbm9kZSwgXFx1MDAyNmlsb2MpO1xcbitcXHRpZiAoIWV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSkge1xcbitcXHRcXHRleHQ0X3NldF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVEKTtcXG4rXFx0XFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xcbitcXHR9XFxuIFxcdGV4dDRfd3JpdGVfdW5sb2NrX3hhdHRyKGlub2RlLCBcXHUwMDI2bm9fZXhwYW5kKTtcXG4gXFx0ZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTtcXG4gb3V0X2ZyZWU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAzOjQxOjUxLjc4MDQ4MDU3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU2NDE1NjU0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfY29udmVydF9pbmxpbmVfZGF0YVwiLFxuICAgIFwiZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9ja1wiLFxuICAgIFwiZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudFwiLFxuICAgIFwiZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIGxvZ2ljIGluIGV4dDQgYnkgaW50cm9kdWNpbmcgYSBuZXcgaW5vZGUgc3RhdGUgZmxhZyBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQuIFRoaXMgZmxhZyBwcmV2ZW50cyByZXN0b3JpbmcgaW5saW5lIGRhdGEgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY29waWVkIG91dCwgZml4aW5nIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gb3IgaW5jb25zaXN0ZW5jaWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1Nzg0M2ViYWU4NzU5ZjQyY2EyMzE5YWQ4NmM4NjJmMzIyZDczOGU0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAwMzo0MTo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0NC5oIGIvZnMvZXh0NC9leHQ0LmhcbmluZGV4IGIzN2MxMzZlYTNhYjMzLi44NjNmNTI0N2ViMzQxMyAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvZXh0NC5oXG4rKysgYi9mcy9leHQ0L2V4dDQuaFxuQEAgLTIwMzgsNiArMjAzOCw3IEBAIGVudW0ge1xuIFx0RVhUNF9TVEFURV9GQ19GTFVTSElOR19EQVRBLFx0LyogRmFzdCBjb21taXQgZmx1c2hpbmcgZGF0YSAqL1xuIFx0RVhUNF9TVEFURV9PUlBIQU5fRklMRSxcdFx0LyogSW5vZGUgb3JwaGFuZWQgaW4gb3JwaGFuIGZpbGUgKi9cbiBcdEVYVDRfU1RBVEVfRkNfUkVRVUVVRSxcdFx0LyogSW5vZGUgbW9kaWZpZWQgZHVyaW5nIGZhc3QgY29tbWl0ICovXG4rXHRFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQsXHQvKiBpbmxpbmUgZGF0YSBjb3BpZWQgb3V0LCBkbyBub3QgcmVzdG9yZSAqL1xuIH07XG4gXG4gI2RlZmluZSBFWFQ0X0lOT0RFX0JJVF9GTlMobmFtZSwgZmllbGQsIG9mZnNldClcdFx0XHRcdFxcXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbmxpbmUuYyBiL2ZzL2V4dDQvaW5saW5lLmNcbmluZGV4IDgwNDVlNGZmMjcwYzdmLi4xYjZhYmFjZjEyZTZlOCAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5saW5lLmNcbisrKyBiL2ZzL2V4dDQvaW5saW5lLmNcbkBAIC02NzEsNiArNjcxLDggQEAgc3RhdGljIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuIFxuIFx0aWYgKGZvbGlvKVxuIFx0XHRibG9ja19jb21taXRfd3JpdGUoZm9saW8sIGZyb20sIHRvKTtcbitcdGlmIChmb2xpbyBcdTAwMjZcdTAwMjYgIXJldClcbitcdFx0ZXh0NF9zZXRfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRCk7XG4gb3V0OlxuIFx0aWYgKGZvbGlvKSB7XG4gXHRcdGZvbGlvX3VubG9jayhmb2xpbyk7XG5AQCAtOTIxLDYgKzkyMyw3IEBAIHN0YXRpYyBpbnQgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbiBcdGNsZWFyX2J1ZmZlcl9uZXcoZm9saW9fYnVmZmVycyhmb2xpbykpO1xuIFx0Zm9saW9fbWFya19kaXJ0eShmb2xpbyk7XG4gXHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbitcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xuIFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xuIFx0KmZzZGF0YSA9ICh2b2lkICopQ09OVkVSVF9JTkxJTkVfREFUQTtcbiBcbkBAIC0xMTcyLDggKzExNzUsMTQgQEAgc3RhdGljIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrKGhhbmRsZV90ICpoYW5kbGUsXG4gXHR9XG4gXG4gb3V0X3Jlc3RvcmU6XG4tXHRpZiAoZXJyb3IpXG4tXHRcdGV4dDRfcmVzdG9yZV9pbmxpbmVfZGF0YShoYW5kbGUsIGlub2RlLCBpbG9jLCBidWYsIGlubGluZV9zaXplKTtcbitcdGlmIChlcnJvcikge1xuK1x0XHRXQVJOX09OX09OQ0UoZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLFxuK1x0XHRcdFx0XHRFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpKTtcbitcdFx0ZXh0NF9yZXN0b3JlX2lubGluZV9kYXRhKGhhbmRsZSwgaW5vZGUsIGlsb2MsIGJ1ZixcbitcdFx0XHRcdFx0IGlubGluZV9zaXplKTtcbitcdH0gZWxzZSB7XG4rXHRcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xuK1x0fVxuIFxuIG91dDpcbiBcdGJyZWxzZShkYXRhX2JoKTtcbkBAIC0xOTU5LDIyICsxOTY4LDE2IEBAIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGEoc3RydWN0IGlub2RlICppbm9kZSlcbiBcdGhhbmRsZV90ICpoYW5kbGU7XG4gXHRzdHJ1Y3QgZXh0NF9pbG9jIGlsb2M7XG4gXG4tXHRpZiAoIWV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSkge1xuLVx0XHRleHQ0X2NsZWFyX2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSk7XG4rXHRpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfaW5saW5lX2RhdGEoaW5vZGUtXHUwMDNlaV9zYikpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0LypcbitcdCAqIE9uY2UgaW5saW5lIGRhdGEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvcGllZCBvdXQgKHRvIHBhZ2VcbitcdCAqIGNhY2hlIG9yIGEgZGF0YSBibG9jayksIHRoaXMgYml0IGlzIHNldCBhbmQgbmV2ZXIgY2xlYXJlZC5cbitcdCAqIEl0IGlzIHNhZmUgdG8gY2hlY2sgd2l0aG91dCBsb2NrcyAtLSB0aGUgYml0IGlzIG1vbm90b25pYy5cbitcdCAqL1xuK1x0aWYgKGV4dDRfdGVzdF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVEKSlcbiBcdFx0cmV0dXJuIDA7XG4tXHR9IGVsc2UgaWYgKCFleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBKSkge1xuLVx0XHQvKlxuLVx0XHQgKiBJbm9kZSBoYXMgaW5saW5lIGRhdGEgYnV0IEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBIGlzXG4tXHRcdCAqIGNsZWFyZWQuIFRoaXMgbWVhbnMgd2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgbW92aW5nIG9mXG4tXHRcdCAqIGlubGluZSBkYXRhIHRvIGRlbGF5IGFsbG9jYXRlZCBibG9jay4gSnVzdCBmb3JjZSB3cml0ZW91dFxuLVx0XHQgKiBoZXJlIHRvIGZpbmlzaCBjb252ZXJzaW9uLlxuLVx0XHQgKi9cbi1cdFx0ZXJyb3IgPSBmaWxlbWFwX2ZsdXNoKGlub2RlLVx1MDAzZWlfbWFwcGluZyk7XG4tXHRcdGlmIChlcnJvcilcbi1cdFx0XHRyZXR1cm4gZXJyb3I7XG4tXHRcdGlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKVxuLVx0XHRcdHJldHVybiAwO1xuLVx0fVxuIFxuIFx0bmVlZGVkX2Jsb2NrcyA9IGV4dDRfY2h1bmtfdHJhbnNfZXh0ZW50KGlub2RlLCAxKTtcbiBcbkBAIC0xOTkwLDggKzE5OTMsMTMgQEAgaW50IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuIFx0fVxuIFxuIFx0ZXh0NF93cml0ZV9sb2NrX3hhdHRyKGlub2RlLCBcdTAwMjZub19leHBhbmQpO1xuLVx0aWYgKGV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSlcbitcdGlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkgXHUwMDI2XHUwMDI2XG4rXHQgICAgZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSkpXG4gXHRcdGVycm9yID0gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGUsIGlub2RlLCBcdTAwMjZpbG9jKTtcbitcdGlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKSB7XG4rXHRcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xuK1x0XHRleHQ0X2NsZWFyX2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSk7XG4rXHR9XG4gXHRleHQ0X3dyaXRlX3VubG9ja194YXR0cihpbm9kZSwgXHUwMDI2bm9fZXhwYW5kKTtcbiBcdGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7XG4gb3V0X2ZyZWU6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MTo1MS43ODA0ODI1MjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4Mzk5MjMzMDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklubGluZSBEYXRhIENvbnZlcnNpb24gaW4gZXh0NDogQSBGdXp6aW5nIFRhcmdldCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIHBsYXlpbmcgd2l0aCBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIHdpdGhpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLiBUaGUgZmlsZXMgdG91Y2hlZCBhcmUgYGZzL2V4dDQvaW5saW5lLmNgIGFuZCBgZnMvZXh0NC9leHQ0LmhgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIHNvbWV0aGluZyB0aGF0IGNvdWxkIGhhdmUgaW50ZXJlc3RpbmcgaW1wbGljYXRpb25zLiBTcGVjaWZpY2FsbHksIGl0IGludHJvZHVjZXMgYSBuZXcgaW5vZGUgc3RhdGUgZmxhZywgYEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRGAsIGFuZCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2Ygc2V2ZXJhbCBrZXkgZnVuY3Rpb25zOiBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2tgLCBgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAsIGFuZCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBidWcgZml4LCBhbmQgaXQncyBkZWFsaW5nIHdpdGggYSBjb3JlIGFzcGVjdCBvZiBob3cgZXh0NCBtYW5hZ2VzIGRhdGEuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIFRoZSBwb3RlbnRpYWwgZm9yIGVkZ2UgY2FzZXMgYW5kIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIGlubGluZSBkYXRhIGNvbnZlcnNpb24gaXMgaGlnaC5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRob3NlIG1vZGlmaWVkIGZ1bmN0aW9ucyBpbiBkZXRhaWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBuZXcgbG9naWMgYW5kIGhvdyB0aGlzIGZsYWcgaW5mbHVlbmNlcyB0aGVpciBiZWhhdmlvci4gSSBhbHNvIG5lZWQgdG8gZW5zdXJlIEkgY2hlY2sgYWxsIHRoZSBjb250cm9sIHBvaW50cyBhbmQgYm91bmRhcnkgY29uZGl0aW9ucy5cblxuTm93LCBsZXQncyBjb25zaWRlciB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgRVhUNF9GU2AgaXMgdGhlIG1haW4gb25lLCBvYnZpb3VzbHksIGJ1dCBhcmUgdGhlcmUgYW55ICpzcGVjaWZpYyogY29uZmlncyByZWxhdGVkIHRvIGlubGluZSBkYXRhIGNvbnZlcnNpb24gdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhpcz8gTGV0IG1lIHF1aWNrbHkgZ3JlcCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIGBFWFQ0X0ZTYCBhbmQgYW55dGhpbmcgcmVsYXRlZCB0byBcImlubGluZSBkYXRhXCIgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSByZWxldmFudCBidWlsZCBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDYyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDM6NDI6MDAuMTc5NzE4MzgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODU5ODY3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVhUNF9GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9leHQ0L0tjb25maWc6Mjpjb25maWcgRVhUNF9GU1xcbmZzL2V4dDQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVxcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZz0zNT1jb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy00NS1cXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXFxuZnMvZXh0NC9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIkV4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuLS1cXG5mcy9leHQ0L0tjb25maWctNTUtXFxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXFxuZnMvZXh0NC9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIkV4dDQgU2VjdXJpdHkgTGFiZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MjowMC40MDgzMjUyODRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njg4MDgwNDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBleHQ0IElubGluZSBEYXRhIENvbnZlcnNpb24qKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIG5vIGRlZGljYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbiBzcGVjaWZpY2FsbHkgZm9yIGlubGluZSBkYXRhIHdpdGhpbiBleHQ0OyBpdCdzIGJha2VkIGluIGFzIGEgZmlsZXN5c3RlbSBmZWF0dXJlIGVuYWJsZWQgYnkgdGhlIGBFWFQ0X0ZTYCBjb25maWd1cmF0aW9uLiBHb29kIHRvIGtub3cuIFRoYXQncyB0aGUga2V5IGVuYWJsaW5nIGZhY3Rvci5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byB0aGUgYnJhc3MgdGFja3M6IHdoYXQgZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhpcyBjb252ZXJzaW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY3JpdGljYWwgY29kZSBwYXRocyBoZXJlLiBUaGUgb25lcyBJJ20gZm9jdXNpbmcgb24gYXJlOiBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2tgLCBgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAsIGFuZCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAuXG5cbkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpZiB0aGVzZSBhcmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgXCJob3QtcGF0aFwiIGZ1bmN0aW9ucy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YWAgaXRzZWxmLCB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIGlzICpub3QqIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiBpbiB0aGUgc2FtZSBzZW5zZSBhcyBzb21ldGhpbmcgbGlrZSBgZXh0NF9yZWFkX2ZvbGlvYCBvciBgZXh0NF93cml0ZV9iZWdpbmAsIGFsdGhvdWdoIHRoZXNlIGNvdWxkIGNhbGwgdGhhdC4gSXQncyBjYWxsZWQgd2hlbiBjb252ZXJ0aW5nIGlubGluZSBkYXRhIHRvIGV4dGVudHMsIHdoaWNoIGlzIGxpa2VseSBhIHJhcmVyIG9wZXJhdGlvbiwgYnV0IEkgbXVzdCBjb25maXJtLlxuXG5UaGVyZWZvcmUsIEknbGwgbmVlZCB0byBkbyBhIHRob3JvdWdoIGdyZXAgdG8gZGV0ZXJtaW5lIGl0cyBhY3R1YWwgdXNhZ2UgcGF0dGVybnMgd2l0aGluIHRoZSBjb2RlYmFzZSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjb2RlLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODg5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAzOjQyOjA1LjA5NjQwNzU5M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzM1MjY1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9jcnlwdG8uYz0xMzI9c3RhdGljIGludCBleHQ0X3NldF9jb250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKmN0eCwgc2l6ZV90IGxlbixcXG4tLVxcbmZzL2V4dDQvY3J5cHRvLmMtMTUyLVxcbmZzL2V4dDQvY3J5cHRvLmM6MTUzOlxcdHJlcyA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShpbm9kZSk7XFxuZnMvZXh0NC9jcnlwdG8uYy0xNTQtXFx0aWYgKHJlcylcXG4tLVxcbmZzL2V4dDQvZXh0NC5oPTM3ODU9ZXh0ZXJuIGludCBleHQ0X2lubGluZV9kYXRhX3RydW5jYXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCAqaGFzX2lubGluZSk7XFxuZnMvZXh0NC9leHQ0LmgtMzc4Ni1cXG5mcy9leHQ0L2V4dDQuaDozNzg3OmV4dGVybiBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xcbmZzL2V4dDQvZXh0NC5oLTM3ODgtXFxuLS1cXG5mcy9leHQ0L2V4dGVudHMuYz00ODU0PWxvbmcgZXh0NF9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxcbi0tXFxuZnMvZXh0NC9leHRlbnRzLmMtNDg4My1cXHRpbm9kZV9sb2NrKGlub2RlKTtcXG5mcy9leHQ0L2V4dGVudHMuYzo0ODg0OlxcdHJldCA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShpbm9kZSk7XFxuZnMvZXh0NC9leHRlbnRzLmMtNDg4NS1cXHRpZiAocmV0KVxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYz01NDU9aW50IGV4dDRfcmVhZHBhZ2VfaW5saW5lKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5mcy9leHQ0L2lubGluZS5jLTU3MS1cXG5mcy9leHQ0L2lubGluZS5jOjU3MjpzdGF0aWMgaW50IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuZnMvZXh0NC9pbmxpbmUuYy01NzMtXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmM9Njk4PWludCBleHQ0X2dlbmVyaWNfd3JpdGVfaW5saW5lX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5mcy9leHQ0L2lubGluZS5jLTcyOS1cXHRcXHRcXHQvKiBSZXRyeSBpbnNpZGUgKi9cXG5mcy9leHQ0L2lubGluZS5jOjczMDpcXHRcXHRcXHRyZXR1cm4gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudChtYXBwaW5nLCBpbm9kZSk7XFxuZnMvZXh0NC9pbmxpbmUuYy03MzEtXFx0XFx0fVxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYz03ODU9aW50IGV4dDRfdHJ5X3RvX3dyaXRlX2lubGluZV9kYXRhKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYy03OTAtXFx0aWYgKHBvcyArIGxlbiBcXHUwMDNlIGV4dDRfZ2V0X21heF9pbmxpbmVfc2l6ZShpbm9kZSkpXFxuZnMvZXh0NC9pbmxpbmUuYzo3OTE6XFx0XFx0cmV0dXJuIGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQobWFwcGluZywgaW5vZGUpO1xcbmZzL2V4dDQvaW5saW5lLmMtNzkyLVxcdHJldHVybiBleHQ0X2dlbmVyaWNfd3JpdGVfaW5saW5lX2RhdGEobWFwcGluZywgaW5vZGUsIHBvcywgbGVuLFxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYz0xMDc2PXN0YXRpYyB2b2lkIGV4dDRfcmVzdG9yZV9pbmxpbmVfZGF0YShoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYy0xMDkyLVxcbmZzL2V4dDQvaW5saW5lLmM6MTA5MzpzdGF0aWMgaW50IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2soaGFuZGxlX3QgKmhhbmRsZSxcXG5mcy9leHQ0L2lubGluZS5jLTEwOTQtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmM9MTE5OD1pbnQgZXh0NF90cnlfYWRkX2lubGluZV9lbnRyeShoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgZXh0NF9maWxlbmFtZSAqZm5hbWUsXFxuLS1cXG5mcy9leHQ0L2lubGluZS5jLTEyNTAtXFx0ICovXFxuZnMvZXh0NC9pbmxpbmUuYzoxMjUxOlxcdHJldCA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2soaGFuZGxlLCBkaXIsIFxcdTAwMjZpbG9jKTtcXG5mcy9leHQ0L2lubGluZS5jLTEyNTItXFxuLS1cXG5mcy9leHQ0L2lubGluZS5jPTE4NTM9aW50IGV4dDRfaW5saW5lX2RhdGFfdHJ1bmNhdGUoc3RydWN0IGlub2RlICppbm9kZSwgaW50ICpoYXNfaW5saW5lKVxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYy0xOTY0LVxcbmZzL2V4dDQvaW5saW5lLmM6MTk2NTppbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuZnMvZXh0NC9pbmxpbmUuYy0xOTY2LXtcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmMtMTk5Ny1cXHQgICAgZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSkpXFxuZnMvZXh0NC9pbmxpbmUuYzoxOTk4OlxcdFxcdGVycm9yID0gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGUsIGlub2RlLCBcXHUwMDI2aWxvYyk7XFxuZnMvZXh0NC9pbmxpbmUuYy0xOTk5LVxcdGlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKSB7XFxuLS1cXG5mcy9leHQ0L2lub2RlLmM9NTkzND1pbnQgZXh0NF9zZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9leHQ0L2lub2RlLmMtNjAzMS1cXHRcXHQgICAgYXR0ci1cXHUwMDNlaWFfc2l6ZSBcXHUwMDNlIEVYVDRfSShpbm9kZSktXFx1MDAzZWlfaW5saW5lX3NpemUpIHtcXG5mcy9leHQ0L2lub2RlLmM6NjAzMjpcXHRcXHRcXHRlcnJvciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShpbm9kZSk7XFxuZnMvZXh0NC9pbm9kZS5jLTYwMzMtXFx0XFx0XFx0aWYgKGVycm9yKVxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTY3ODc9dm1fZmF1bHRfdCBleHQ0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy02ODA4LVxcbmZzL2V4dDQvaW5vZGUuYzo2ODA5OlxcdGVyciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShpbm9kZSk7XFxuZnMvZXh0NC9pbm9kZS5jLTY4MTAtXFx0aWYgKGVycilcXG4tLVxcbmZzL2V4dDQvdmVyaXR5LmM9MTAyPXN0YXRpYyBpbnQgZXh0NF9iZWdpbl9lbmFibGVfdmVyaXR5KHN0cnVjdCBmaWxlICpmaWxwKVxcbi0tXFxuZnMvZXh0NC92ZXJpdHkuYy0xMjgtXFxuZnMvZXh0NC92ZXJpdHkuYzoxMjk6XFx0ZXJyID0gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKGlub2RlKTtcXG5mcy9leHQ0L3Zlcml0eS5jLTEzMC1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MjowNS4xNTM3NjUxMDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAxMjE0Mjk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklubGluZSBEYXRhIENvbnZlcnNpb24gRml4IC0gQSBTb2xpZCBDYW5kaWRhdGUgZm9yIFRlc3RpbmcqKlxuXG5BbHJpZ2h0LCBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucyAtIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFgLCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9ja2AsIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50YCwgYW5kIGBleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50YCDigJMgdGhleSBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyBwZXJmZWN0IGNhbmRpZGF0ZXMgZm9yIGBGb2N1c1N5bWJvbHNgLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIGtub3duIGlzc3VlIGNvbmNlcm5pbmcgaW5saW5lIGRhdGEgY29udmVyc2lvbiwgc3BlY2lmaWNhbGx5IHRoZSBwb3RlbnRpYWwgZm9yIHJlLWNvbnZlcnNpb24gYWZ0ZXIgdGhlIGluaXRpYWwgb3BlcmF0aW9uLiBUaGUgcmlzaz8gRGF0YSBjb3JydXB0aW9uIGFuZCBmaWxlIHN5c3RlbSBpbmNvbnNpc3RlbmNpZXMuXG5cbkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCB0aGlzIGlzIGEgY2xlYW4gZml4LiBJdCBhZGRyZXNzZXMgYSByZWFsIHZ1bG5lcmFiaWxpdHksIHdoaWNoIG1ha2VzIGl0IHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBmb3IgZnV6emluZy4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgdXNhZ2Ugb2YgYGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgb2J2aW91cyBzaWRlLWVmZmVjdHMgb3IgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODg3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAzOjQyOjA4LjU1NDk4MTYwNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjY1Mzg0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvaW5saW5lLmMtMjMtXFxuZnMvZXh0NC9pbmxpbmUuYzoyNDpzdGF0aWMgaW50IGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuZnMvZXh0NC9pbmxpbmUuYy0yNS1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmM9Njk4PWludCBleHQ0X2dlbmVyaWNfd3JpdGVfaW5saW5lX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5mcy9leHQ0L2lubGluZS5jLTczMi1cXG5mcy9leHQ0L2lubGluZS5jOjczMzpcXHRcXHRyZXQgPSBleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50KG1hcHBpbmcsIGlub2RlLCBmc2RhdGEpO1xcbmZzL2V4dDQvaW5saW5lLmMtNzM0LVxcdFxcdGlmIChyZXQgPT0gLUVOT1NQQyBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYz03OTY9aW50IGV4dDRfd3JpdGVfaW5saW5lX2RhdGFfZW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBwb3MsIHVuc2lnbmVkIGxlbixcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmMtODg2LSAqL1xcbmZzL2V4dDQvaW5saW5lLmM6ODg3OnN0YXRpYyBpbnQgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG5mcy9leHQ0L2lubGluZS5jLTg4OC1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGlub2RlICppbm9kZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDM6NDI6MDguNjExNjQwMzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDU3OTA3ODMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBleHQ0IElubGluZSBEYXRhIENvbnZlcnNpb24gRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGhvbWluZyBpbiBvbiB0aGUgY29yZSBvZiB0aGlzIGlubGluZSBkYXRhIGNvbnZlcnNpb24gbG9naWMgd2l0aGluIGV4dDQuIFRoZSBrZXkgZnVuY3Rpb25zIEkgbmVlZCB0byBkaXNzZWN0IGFyZTogYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YWAsIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgLCBhbmQgYGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZmxvdyBhbmQgYmVoYXZpb3Igb2YgZWFjaCwgZXNwZWNpYWxseSBob3cgdGhleSBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIgYW5kIGhhbmRsZSBlcnJvciBjb25kaXRpb25zLlxuXG5Ob3csIGJlZm9yZSBJIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBpdHNlbGYsIGxldCdzIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZSByZWdhcmRpbmcgY29uZmlndXJhdGlvbnMuIE9idmlvdXNseSwgYEVYVDRfRlNgIGlzIGZ1bmRhbWVudGFsLCBidXQgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgaW1wYWN0IGlubGluZSBkYXRhIHNwZWNpZmljYWxseS4gSSdsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGRvdWJsZS1jaGVjayBgZnMvZXh0NC9LY29uZmlnYCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBJIGhhdmUgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIGFsbCB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU2NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MjoxMi4wNjk1NTA0OTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3ODIxMDQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbmxpbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MjoxMi4xMjczODIwMThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwNTYyNDM4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBFWFQ0IElubGluZSBEYXRhIENvbnZlcnNpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdHMgZnV6emluZyBpbXBsaWNhdGlvbnMuIE5vIHNwZWNpYWxpemVkIGNvbmZpZ3VyYXRpb25zIGFyZSBiZWluZyBpbnRyb2R1Y2VkIHdpdGhpbiBgZnMvZXh0NC9LY29uZmlnYCB0byB0YXJnZXQgdGhpcyBzcGVjaWZpYyBjaGFuZ2UsIG1lYW5pbmcgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiB0aGF0IGVuYWJsZXMgZXh0NCwgbmFtZWx5IGBFWFQ0X0ZTYCwgaXMgdGhlIHJlbGV2YW50IG9uZSB0byBmb2N1cyBvbiBoZXJlLlxuXG5MZXQncyBicmVhayBkb3duIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGlzIHRoZSBhZGRpdGlvbiBvZiB0aGUgYEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRGAgaW5vZGUgc3RhdGUgZmxhZy4gVGhpcyBzZWVtcyBjcnVjaWFsIGJlY2F1c2UgaXQgZGVhbHMgd2l0aCBwcmV2ZW50aW5nIHRoZSBzeXN0ZW0gZnJvbSByZXN0b3JpbmcgaW5saW5lIGRhdGEgb25jZSBpdCdzIGJlZW4gc2FmZWx5IGNvcGllZC4gVGhpcyBpcyBhYnNvbHV0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2XigJRpdCdzIHJpZ2h0IGluIHRoZSBjcml0aWNhbCBwYXRoIG9mIHRoZSBmaWxlc3lzdGVtLiBUaGVyZWZvcmUsIGZ1enppbmcgaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQgYW5kIHdpbGwgYmUgYmVuZWZpY2lhbC5cblxuVGhlIHRlYW0gaGFzIGlkZW50aWZpZWQgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YWAsIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgLCBhbmQgYGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgIGFzIGtleSBzeW1ib2xzIHRvIHRhcmdldC4gQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyByZWxhdGUgZGlyZWN0bHkgdG8gdGhlIGlubGluZSBkYXRhIGNvbnZlcnNpb24gcHJvY2Vzcy4gSSBjb25jdXIgd2l0aCB0aGlzIGFzc2Vzc21lbnQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgd2hlcmUgdGhlIG5ldyBmbGFnIHdpbGwgYmUgdXNlZCwgYW5kIGFyZSB0aGVyZWZvcmUgdGhlIGJlc3QgdGFyZ2V0cyBmb3IgZGV0ZWN0aW5nIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlLiBVc2luZyB0aGVzZSBmdW5jdGlvbnMgZm9yIGZ1enppbmcgd2lsbCBiZSBlZmZlY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5NTcsIk91dHB1dFRva2VucyI6MTYyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAzOjQyOjE3LjMzMzAwODkxOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MDI5NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhXCIsXG4gICAgXCJleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrXCIsXG4gICAgXCJleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50XCIsXG4gICAgXCJleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGlubGluZSBkYXRhIGNvbnZlcnNpb24gbG9naWMgaW4gZXh0NCBieSBpbnRyb2R1Y2luZyBhIG5ldyBpbm9kZSBzdGF0ZSBmbGFnIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRC4gVGhpcyBmbGFnIHByZXZlbnRzIHJlc3RvcmluZyBpbmxpbmUgZGF0YSBhZnRlciBpdCBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjb3BpZWQgb3V0LCBmaXhpbmcgcG90ZW50aWFsIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvbnNpc3RlbmNpZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFcIixcbiAgICBcImV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2tcIixcbiAgICBcImV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRcIixcbiAgICBcImV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5saW5lIGRhdGEgY29udmVyc2lvbiBsb2dpYyBpbiBleHQ0IGJ5IGludHJvZHVjaW5nIGEgbmV3IGlub2RlIHN0YXRlIGZsYWcgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVELiBUaGlzIGZsYWcgcHJldmVudHMgcmVzdG9yaW5nIGlubGluZSBkYXRhIGFmdGVyIGl0IGhhcyBhbHJlYWR5IGJlZW4gc3VjY2Vzc2Z1bGx5IGNvcGllZCBvdXQsIGZpeGluZyBwb3RlbnRpYWwgZGF0YSBjb3JydXB0aW9uIG9yIGluY29uc2lzdGVuY2llcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2fbrl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 03:31:11 +0000 UTC FinishedAt: 2026-07-03 03:42:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4a50a141f05a8d1737661b19ee22ff8455b94409", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "334373c7-8ca9-43bf-af1e-920f6d8df4f8" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_convert_inline_data", "ext4_convert_inline_data_nolock", "ext4_convert_inline_data_to_extent", "ext4_da_convert_inline_data_to_extent" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGEmIzM0OywKICAgICYjMzQ7ZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayYjMzQ7LAogICAgJiMzNDtleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50JiMzNDssCiAgICAmIzM0O2V4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGlubGluZSBkYXRhIGNvbnZlcnNpb24gbG9naWMgaW4gZXh0NCBieSBpbnRyb2R1Y2luZyBhIG5ldyBpbm9kZSBzdGF0ZSBmbGFnIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRC4gVGhpcyBmbGFnIHByZXZlbnRzIHJlc3RvcmluZyBpbmxpbmUgZGF0YSBhZnRlciBpdCBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjb3BpZWQgb3V0LCBmaXhpbmcgcG90ZW50aWFsIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvbnNpc3RlbmNpZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTc4NDNlYmFlODc1OWY0MmNhMjMxOWFkODZjODYyZjMyMmQ3MzhlNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMDM6NDE6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0LmggYi9mcy9leHQ0L2V4dDQuaFxuaW5kZXggYjM3YzEzNmVhM2FiMzMuLjg2M2Y1MjQ3ZWIzNDEzIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9leHQ0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvZXh0NC5oXG5AQCAtMjAzOCw2ICYjNDM7MjAzOCw3IEBAIGVudW0ge1xuIFx0RVhUNF9TVEFURV9GQ19GTFVTSElOR19EQVRBLFx0LyogRmFzdCBjb21taXQgZmx1c2hpbmcgZGF0YSAqL1xuIFx0RVhUNF9TVEFURV9PUlBIQU5fRklMRSxcdFx0LyogSW5vZGUgb3JwaGFuZWQgaW4gb3JwaGFuIGZpbGUgKi9cbiBcdEVYVDRfU1RBVEVfRkNfUkVRVUVVRSxcdFx0LyogSW5vZGUgbW9kaWZpZWQgZHVyaW5nIGZhc3QgY29tbWl0ICovXG4mIzQzO1x0RVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVELFx0LyogaW5saW5lIGRhdGEgY29waWVkIG91dCwgZG8gbm90IHJlc3RvcmUgKi9cbiB9O1xuIFxuICNkZWZpbmUgRVhUNF9JTk9ERV9CSVRfRk5TKG5hbWUsIGZpZWxkLCBvZmZzZXQpXHRcdFx0XHRcXFxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5saW5lLmMgYi9mcy9leHQ0L2lubGluZS5jXG5pbmRleCA4MDQ1ZTRmZjI3MGM3Zi4uMWI2YWJhY2YxMmU2ZTggMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L2lubGluZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L2lubGluZS5jXG5AQCAtNjcxLDYgJiM0Mzs2NzEsOCBAQCBzdGF0aWMgaW50IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4gXG4gXHRpZiAoZm9saW8pXG4gXHRcdGJsb2NrX2NvbW1pdF93cml0ZShmb2xpbywgZnJvbSwgdG8pO1xuJiM0MztcdGlmIChmb2xpbyBcdTAwMjZcdTAwMjYgIXJldClcbiYjNDM7XHRcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xuIG91dDpcbiBcdGlmIChmb2xpbykge1xuIFx0XHRmb2xpb191bmxvY2soZm9saW8pO1xuQEAgLTkyMSw2ICYjNDM7OTIzLDcgQEAgc3RhdGljIGludCBleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuIFx0Y2xlYXJfYnVmZmVyX25ldyhmb2xpb19idWZmZXJzKGZvbGlvKSk7XG4gXHRmb2xpb19tYXJrX2RpcnR5KGZvbGlvKTtcbiBcdGZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pO1xuJiM0MztcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xuIFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xuIFx0KmZzZGF0YSA9ICh2b2lkICopQ09OVkVSVF9JTkxJTkVfREFUQTtcbiBcbkBAIC0xMTcyLDggJiM0MzsxMTc1LDE0IEBAIHN0YXRpYyBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGVfdCAqaGFuZGxlLFxuIFx0fVxuIFxuIG91dF9yZXN0b3JlOlxuLVx0aWYgKGVycm9yKVxuLVx0XHRleHQ0X3Jlc3RvcmVfaW5saW5lX2RhdGEoaGFuZGxlLCBpbm9kZSwgaWxvYywgYnVmLCBpbmxpbmVfc2l6ZSk7XG4mIzQzO1x0aWYgKGVycm9yKSB7XG4mIzQzO1x0XHRXQVJOX09OX09OQ0UoZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLFxuJiM0MztcdFx0XHRcdFx0RVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVEKSk7XG4mIzQzO1x0XHRleHQ0X3Jlc3RvcmVfaW5saW5lX2RhdGEoaGFuZGxlLCBpbm9kZSwgaWxvYywgYnVmLFxuJiM0MztcdFx0XHRcdFx0IGlubGluZV9zaXplKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0ZXh0NF9zZXRfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRCk7XG4mIzQzO1x0fVxuIFxuIG91dDpcbiBcdGJyZWxzZShkYXRhX2JoKTtcbkBAIC0xOTU5LDIyICYjNDM7MTk2OCwxNiBAQCBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gXHRoYW5kbGVfdCAqaGFuZGxlO1xuIFx0c3RydWN0IGV4dDRfaWxvYyBpbG9jO1xuIFxuLVx0aWYgKCFleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpIHtcbi1cdFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xuJiM0MztcdGlmICghZXh0NF9oYXNfZmVhdHVyZV9pbmxpbmVfZGF0YShpbm9kZS1cdTAwM2VpX3NiKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE9uY2UgaW5saW5lIGRhdGEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvcGllZCBvdXQgKHRvIHBhZ2VcbiYjNDM7XHQgKiBjYWNoZSBvciBhIGRhdGEgYmxvY2spLCB0aGlzIGJpdCBpcyBzZXQgYW5kIG5ldmVyIGNsZWFyZWQuXG4mIzQzO1x0ICogSXQgaXMgc2FmZSB0byBjaGVjayB3aXRob3V0IGxvY2tzIC0tIHRoZSBiaXQgaXMgbW9ub3RvbmljLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRCkpXG4gXHRcdHJldHVybiAwO1xuLVx0fSBlbHNlIGlmICghZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSkpIHtcbi1cdFx0Lypcbi1cdFx0ICogSW5vZGUgaGFzIGlubGluZSBkYXRhIGJ1dCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSBpc1xuLVx0XHQgKiBjbGVhcmVkLiBUaGlzIG1lYW5zIHdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIG1vdmluZyBvZlxuLVx0XHQgKiBpbmxpbmUgZGF0YSB0byBkZWxheSBhbGxvY2F0ZWQgYmxvY2suIEp1c3QgZm9yY2Ugd3JpdGVvdXRcbi1cdFx0ICogaGVyZSB0byBmaW5pc2ggY29udmVyc2lvbi5cbi1cdFx0ICovXG4tXHRcdGVycm9yID0gZmlsZW1hcF9mbHVzaChpbm9kZS1cdTAwM2VpX21hcHBpbmcpO1xuLVx0XHRpZiAoZXJyb3IpXG4tXHRcdFx0cmV0dXJuIGVycm9yO1xuLVx0XHRpZiAoIWV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSlcbi1cdFx0XHRyZXR1cm4gMDtcbi1cdH1cbiBcbiBcdG5lZWRlZF9ibG9ja3MgPSBleHQ0X2NodW5rX3RyYW5zX2V4dGVudChpbm9kZSwgMSk7XG4gXG5AQCAtMTk5MCw4ICYjNDM7MTk5MywxMyBAQCBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpXG4gXHR9XG4gXG4gXHRleHQ0X3dyaXRlX2xvY2tfeGF0dHIoaW5vZGUsIFx1MDAyNm5vX2V4cGFuZCk7XG4tXHRpZiAoZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKVxuJiM0MztcdGlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGV4dDRfdGVzdF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpKVxuIFx0XHRlcnJvciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2soaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG4mIzQzO1x0aWYgKCFleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpIHtcbiYjNDM7XHRcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xuJiM0MztcdFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xuJiM0MztcdH1cbiBcdGV4dDRfd3JpdGVfdW5sb2NrX3hhdHRyKGlub2RlLCBcdTAwMjZub19leHBhbmQpO1xuIFx0ZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTtcbiBvdXRfZnJlZTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMzo0MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhJiMzNDssCiAgICAmIzM0O2V4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2smIzM0OywKICAgICYjMzQ7ZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudCYjMzQ7LAogICAgJiMzNDtleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIGxvZ2ljIGluIGV4dDQgYnkgaW50cm9kdWNpbmcgYSBuZXcgaW5vZGUgc3RhdGUgZmxhZyBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQuIFRoaXMgZmxhZyBwcmV2ZW50cyByZXN0b3JpbmcgaW5saW5lIGRhdGEgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY29waWVkIG91dCwgZml4aW5nIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gb3IgaW5jb25zaXN0ZW5jaWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTc4NDNlYmFlODc1OWY0MmNhMjMxOWFkODZjODYyZjMyMmQ3MzhlNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMgMDM6NDE6NTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oCmluZGV4IGIzN2MxMzZlYTNhYjMzLi44NjNmNTI0N2ViMzQxMyAxMDA2NDQKLS0tIGEvZnMvZXh0NC9leHQ0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC9leHQ0LmgKQEAgLTIwMzgsNiAmIzQzOzIwMzgsNyBAQCBlbnVtIHsKIAlFWFQ0X1NUQVRFX0ZDX0ZMVVNISU5HX0RBVEEsCS8qIEZhc3QgY29tbWl0IGZsdXNoaW5nIGRhdGEgKi8KIAlFWFQ0X1NUQVRFX09SUEhBTl9GSUxFLAkJLyogSW5vZGUgb3JwaGFuZWQgaW4gb3JwaGFuIGZpbGUgKi8KIAlFWFQ0X1NUQVRFX0ZDX1JFUVVFVUUsCQkvKiBJbm9kZSBtb2RpZmllZCBkdXJpbmcgZmFzdCBjb21taXQgKi8KJiM0MzsJRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVELAkvKiBpbmxpbmUgZGF0YSBjb3BpZWQgb3V0LCBkbyBub3QgcmVzdG9yZSAqLwogfTsKIAogI2RlZmluZSBFWFQ0X0lOT0RFX0JJVF9GTlMobmFtZSwgZmllbGQsIG9mZnNldCkJCQkJXApkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbmxpbmUuYyBiL2ZzL2V4dDQvaW5saW5lLmMKaW5kZXggODA0NWU0ZmYyNzBjN2YuLjFiNmFiYWNmMTJlNmU4IDEwMDY0NAotLS0gYS9mcy9leHQ0L2lubGluZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvaW5saW5lLmMKQEAgLTY3MSw2ICYjNDM7NjcxLDggQEAgc3RhdGljIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogCiAJaWYgKGZvbGlvKQogCQlibG9ja19jb21taXRfd3JpdGUoZm9saW8sIGZyb20sIHRvKTsKJiM0MzsJaWYgKGZvbGlvICZhbXA7JmFtcDsgIXJldCkKJiM0MzsJCWV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpOwogb3V0OgogCWlmIChmb2xpbykgewogCQlmb2xpb191bmxvY2soZm9saW8pOwpAQCAtOTIxLDYgJiM0Mzs5MjMsNyBAQCBzdGF0aWMgaW50IGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAJY2xlYXJfYnVmZmVyX25ldyhmb2xpb19idWZmZXJzKGZvbGlvKSk7CiAJZm9saW9fbWFya19kaXJ0eShmb2xpbyk7CiAJZm9saW9fbWFya191cHRvZGF0ZShmb2xpbyk7CiYjNDM7CWV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpOwogCWV4dDRfY2xlYXJfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBKTsKIAkqZnNkYXRhID0gKHZvaWQgKilDT05WRVJUX0lOTElORV9EQVRBOwogCkBAIC0xMTcyLDggJiM0MzsxMTc1LDE0IEBAIHN0YXRpYyBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGVfdCAqaGFuZGxlLAogCX0KIAogb3V0X3Jlc3RvcmU6Ci0JaWYgKGVycm9yKQotCQlleHQ0X3Jlc3RvcmVfaW5saW5lX2RhdGEoaGFuZGxlLCBpbm9kZSwgaWxvYywgYnVmLCBpbmxpbmVfc2l6ZSk7CiYjNDM7CWlmIChlcnJvcikgewomIzQzOwkJV0FSTl9PTl9PTkNFKGV4dDRfdGVzdF9pbm9kZV9zdGF0ZShpbm9kZSwKJiM0MzsJCQkJCUVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRCkpOwomIzQzOwkJZXh0NF9yZXN0b3JlX2lubGluZV9kYXRhKGhhbmRsZSwgaW5vZGUsIGlsb2MsIGJ1ZiwKJiM0MzsJCQkJCSBpbmxpbmVfc2l6ZSk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlleHQ0X3NldF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVEKTsKJiM0MzsJfQogCiBvdXQ6CiAJYnJlbHNlKGRhdGFfYmgpOwpAQCAtMTk1OSwyMiAmIzQzOzE5NjgsMTYgQEAgaW50IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlKQogCWhhbmRsZV90ICpoYW5kbGU7CiAJc3RydWN0IGV4dDRfaWxvYyBpbG9jOwogCi0JaWYgKCFleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpIHsKLQkJZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpOwomIzQzOwlpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfaW5saW5lX2RhdGEoaW5vZGUtJmd0O2lfc2IpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIE9uY2UgaW5saW5lIGRhdGEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvcGllZCBvdXQgKHRvIHBhZ2UKJiM0MzsJICogY2FjaGUgb3IgYSBkYXRhIGJsb2NrKSwgdGhpcyBiaXQgaXMgc2V0IGFuZCBuZXZlciBjbGVhcmVkLgomIzQzOwkgKiBJdCBpcyBzYWZlIHRvIGNoZWNrIHdpdGhvdXQgbG9ja3MgLS0gdGhlIGJpdCBpcyBtb25vdG9uaWMuCiYjNDM7CSAqLwomIzQzOwlpZiAoZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpKQogCQlyZXR1cm4gMDsKLQl9IGVsc2UgaWYgKCFleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBKSkgewotCQkvKgotCQkgKiBJbm9kZSBoYXMgaW5saW5lIGRhdGEgYnV0IEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBIGlzCi0JCSAqIGNsZWFyZWQuIFRoaXMgbWVhbnMgd2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgbW92aW5nIG9mCi0JCSAqIGlubGluZSBkYXRhIHRvIGRlbGF5IGFsbG9jYXRlZCBibG9jay4gSnVzdCBmb3JjZSB3cml0ZW91dAotCQkgKiBoZXJlIHRvIGZpbmlzaCBjb252ZXJzaW9uLgotCQkgKi8KLQkJZXJyb3IgPSBmaWxlbWFwX2ZsdXNoKGlub2RlLSZndDtpX21hcHBpbmcpOwotCQlpZiAoZXJyb3IpCi0JCQlyZXR1cm4gZXJyb3I7Ci0JCWlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKQotCQkJcmV0dXJuIDA7Ci0JfQogCiAJbmVlZGVkX2Jsb2NrcyA9IGV4dDRfY2h1bmtfdHJhbnNfZXh0ZW50KGlub2RlLCAxKTsKIApAQCAtMTk5MCw4ICYjNDM7MTk5MywxMyBAQCBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiAJfQogCiAJZXh0NF93cml0ZV9sb2NrX3hhdHRyKGlub2RlLCAmYW1wO25vX2V4cGFuZCk7Ci0JaWYgKGV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSkKJiM0MzsJaWYgKGV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSAmYW1wOyZhbXA7CiYjNDM7CSAgICBleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBKSkKIAkJZXJyb3IgPSBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrKGhhbmRsZSwgaW5vZGUsICZhbXA7aWxvYyk7CiYjNDM7CWlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKSB7CiYjNDM7CQlleHQ0X3NldF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVEKTsKJiM0MzsJCWV4dDRfY2xlYXJfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBKTsKJiM0MzsJfQogCWV4dDRfd3JpdGVfdW5sb2NrX3hhdHRyKGlub2RlLCAmYW1wO25vX2V4cGFuZCk7CiAJZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTsKIG91dF9mcmVlOgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDYyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklubGluZSBEYXRhIENvbnZlcnNpb24gaW4gZXh0NDogQSBGdXp6aW5nIFRhcmdldCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHBsYXlpbmcgd2l0aCBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIHdpdGhpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLiBUaGUgZmlsZXMgdG91Y2hlZCBhcmUgYGZzL2V4dDQvaW5saW5lLmNgIGFuZCBgZnMvZXh0NC9leHQ0LmhgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIHNvbWV0aGluZyB0aGF0IGNvdWxkIGhhdmUgaW50ZXJlc3RpbmcgaW1wbGljYXRpb25zLiBTcGVjaWZpY2FsbHksIGl0IGludHJvZHVjZXMgYSBuZXcgaW5vZGUgc3RhdGUgZmxhZywgYEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRGAsIGFuZCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2Ygc2V2ZXJhbCBrZXkgZnVuY3Rpb25zOiBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2tgLCBgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAsIGFuZCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBidWcgZml4LCBhbmQgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGEgY29yZSBhc3BlY3Qgb2YgaG93IGV4dDQgbWFuYWdlcyBkYXRhLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nLCB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBUaGUgcG90ZW50aWFsIGZvciBlZGdlIGNhc2VzIGFuZCB1bmV4cGVjdGVkIGJlaGF2aW9yIGR1cmluZyBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIGlzIGhpZ2guCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhvc2UgbW9kaWZpZWQgZnVuY3Rpb25zIGluIGRldGFpbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG5ldyBsb2dpYyBhbmQgaG93IHRoaXMgZmxhZyBpbmZsdWVuY2VzIHRoZWlyIGJlaGF2aW9yLiBJIGFsc28gbmVlZCB0byBlbnN1cmUgSSBjaGVjayBhbGwgdGhlIGNvbnRyb2wgcG9pbnRzIGFuZCBib3VuZGFyeSBjb25kaXRpb25zLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gYEVYVDRfRlNgIGlzIHRoZSBtYWluIG9uZSwgb2J2aW91c2x5LCBidXQgYXJlIHRoZXJlIGFueSAqc3BlY2lmaWMqIGNvbmZpZ3MgcmVsYXRlZCB0byBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIHRoYXQgY291bGQgaW5mbHVlbmNlIHRoaXM/IExldCBtZSBxdWlja2x5IGdyZXAgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZvciBgRVhUNF9GU2AgYW5kIGFueXRoaW5nIHJlbGF0ZWQgdG8gJiMzNDtpbmxpbmUgZGF0YSYjMzQ7IHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgcmVsZXZhbnQgYnVpbGQgb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRVhUNF9GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvZXh0NC9LY29uZmlnOjI6Y29uZmlnIEVYVDRfRlNcbmZzL2V4dDQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cJiMzNDtcbi0tXG5mcy9leHQ0L0tjb25maWc9MzU9Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXG4tLVxuZnMvZXh0NC9LY29uZmlnLTQ1LVxuZnMvZXh0NC9LY29uZmlnOjQ2OmNvbmZpZyBFWFQ0X0ZTX1BPU0lYX0FDTFxuZnMvZXh0NC9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnLTU1LVxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXG5mcy9leHQ0L0tjb25maWctNTctXHRib29sIFwmIzM0O0V4dDQgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDM6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg4OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgZXh0NCBJbmxpbmUgRGF0YSBDb252ZXJzaW9uKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIG5vIGRlZGljYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbiBzcGVjaWZpY2FsbHkgZm9yIGlubGluZSBkYXRhIHdpdGhpbiBleHQ0OyBpdCYjMzk7cyBiYWtlZCBpbiBhcyBhIGZpbGVzeXN0ZW0gZmVhdHVyZSBlbmFibGVkIGJ5IHRoZSBgRVhUNF9GU2AgY29uZmlndXJhdGlvbi4gR29vZCB0byBrbm93LiBUaGF0JiMzOTtzIHRoZSBrZXkgZW5hYmxpbmcgZmFjdG9yLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gdGhlIGJyYXNzIHRhY2tzOiB3aGF0IGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoaXMgY29udmVyc2lvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNyaXRpY2FsIGNvZGUgcGF0aHMgaGVyZS4gVGhlIG9uZXMgSSYjMzk7bSBmb2N1c2luZyBvbiBhcmU6IGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFgLCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9ja2AsIGBleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50YCwgYW5kIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50YC4KCkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpZiB0aGVzZSBhcmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgJiMzNDtob3QtcGF0aCYjMzQ7IGZ1bmN0aW9ucy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YWAgaXRzZWxmLCB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIGlzICpub3QqIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiBpbiB0aGUgc2FtZSBzZW5zZSBhcyBzb21ldGhpbmcgbGlrZSBgZXh0NF9yZWFkX2ZvbGlvYCBvciBgZXh0NF93cml0ZV9iZWdpbmAsIGFsdGhvdWdoIHRoZXNlIGNvdWxkIGNhbGwgdGhhdC4gSXQmIzM5O3MgY2FsbGVkIHdoZW4gY29udmVydGluZyBpbmxpbmUgZGF0YSB0byBleHRlbnRzLCB3aGljaCBpcyBsaWtlbHkgYSByYXJlciBvcGVyYXRpb24sIGJ1dCBJIG11c3QgY29uZmlybS4KClRoZXJlZm9yZSwgSSYjMzk7bGwgbmVlZCB0byBkbyBhIHRob3JvdWdoIGdyZXAgdG8gZGV0ZXJtaW5lIGl0cyBhY3R1YWwgdXNhZ2UgcGF0dGVybnMgd2l0aGluIHRoZSBjb2RlYmFzZSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjb2RlLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4dDRfY29udmVydF9pbmxpbmVfZGF0YSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvY3J5cHRvLmM9MTMyPXN0YXRpYyBpbnQgZXh0NF9zZXRfY29udGV4dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICpjdHgsIHNpemVfdCBsZW4sXG4tLVxuZnMvZXh0NC9jcnlwdG8uYy0xNTItXG5mcy9leHQ0L2NyeXB0by5jOjE1MzpcdHJlcyA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShpbm9kZSk7XG5mcy9leHQ0L2NyeXB0by5jLTE1NC1cdGlmIChyZXMpXG4tLVxuZnMvZXh0NC9leHQ0Lmg9Mzc4NT1leHRlcm4gaW50IGV4dDRfaW5saW5lX2RhdGFfdHJ1bmNhdGUoc3RydWN0IGlub2RlICppbm9kZSwgaW50ICpoYXNfaW5saW5lKTtcbmZzL2V4dDQvZXh0NC5oLTM3ODYtXG5mcy9leHQ0L2V4dDQuaDozNzg3OmV4dGVybiBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xuZnMvZXh0NC9leHQ0LmgtMzc4OC1cbi0tXG5mcy9leHQ0L2V4dGVudHMuYz00ODU0PWxvbmcgZXh0NF9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxuLS1cbmZzL2V4dDQvZXh0ZW50cy5jLTQ4ODMtXHRpbm9kZV9sb2NrKGlub2RlKTtcbmZzL2V4dDQvZXh0ZW50cy5jOjQ4ODQ6XHRyZXQgPSBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGEoaW5vZGUpO1xuZnMvZXh0NC9leHRlbnRzLmMtNDg4NS1cdGlmIChyZXQpXG4tLVxuZnMvZXh0NC9pbmxpbmUuYz01NDU9aW50IGV4dDRfcmVhZHBhZ2VfaW5saW5lKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuZnMvZXh0NC9pbmxpbmUuYy01NzEtXG5mcy9leHQ0L2lubGluZS5jOjU3MjpzdGF0aWMgaW50IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG5mcy9leHQ0L2lubGluZS5jLTU3My1cdFx0XHRcdFx0ICAgICAgc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9leHQ0L2lubGluZS5jPTY5OD1pbnQgZXh0NF9nZW5lcmljX3dyaXRlX2lubGluZV9kYXRhKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuLS1cbmZzL2V4dDQvaW5saW5lLmMtNzI5LVx0XHRcdC8qIFJldHJ5IGluc2lkZSAqL1xuZnMvZXh0NC9pbmxpbmUuYzo3MzA6XHRcdFx0cmV0dXJuIGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQobWFwcGluZywgaW5vZGUpO1xuZnMvZXh0NC9pbmxpbmUuYy03MzEtXHRcdH1cbi0tXG5mcy9leHQ0L2lubGluZS5jPTc4NT1pbnQgZXh0NF90cnlfdG9fd3JpdGVfaW5saW5lX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvZXh0NC9pbmxpbmUuYy03OTAtXHRpZiAocG9zICYjNDM7IGxlbiBcdTAwM2UgZXh0NF9nZXRfbWF4X2lubGluZV9zaXplKGlub2RlKSlcbmZzL2V4dDQvaW5saW5lLmM6NzkxOlx0XHRyZXR1cm4gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudChtYXBwaW5nLCBpbm9kZSk7XG5mcy9leHQ0L2lubGluZS5jLTc5Mi1cdHJldHVybiBleHQ0X2dlbmVyaWNfd3JpdGVfaW5saW5lX2RhdGEobWFwcGluZywgaW5vZGUsIHBvcywgbGVuLFxuLS1cbmZzL2V4dDQvaW5saW5lLmM9MTA3Nj1zdGF0aWMgdm9pZCBleHQ0X3Jlc3RvcmVfaW5saW5lX2RhdGEoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L2lubGluZS5jLTEwOTItXG5mcy9leHQ0L2lubGluZS5jOjEwOTM6c3RhdGljIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrKGhhbmRsZV90ICpoYW5kbGUsXG5mcy9leHQ0L2lubGluZS5jLTEwOTQtXHRcdFx0XHRcdCAgIHN0cnVjdCBpbm9kZSAqaW5vZGUsXG4tLVxuZnMvZXh0NC9pbmxpbmUuYz0xMTk4PWludCBleHQ0X3RyeV9hZGRfaW5saW5lX2VudHJ5KGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBleHQ0X2ZpbGVuYW1lICpmbmFtZSxcbi0tXG5mcy9leHQ0L2lubGluZS5jLTEyNTAtXHQgKi9cbmZzL2V4dDQvaW5saW5lLmM6MTI1MTpcdHJldCA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2soaGFuZGxlLCBkaXIsIFx1MDAyNmlsb2MpO1xuZnMvZXh0NC9pbmxpbmUuYy0xMjUyLVxuLS1cbmZzL2V4dDQvaW5saW5lLmM9MTg1Mz1pbnQgZXh0NF9pbmxpbmVfZGF0YV90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgKmhhc19pbmxpbmUpXG4tLVxuZnMvZXh0NC9pbmxpbmUuYy0xOTY0LVxuZnMvZXh0NC9pbmxpbmUuYzoxOTY1OmludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGEoc3RydWN0IGlub2RlICppbm9kZSlcbmZzL2V4dDQvaW5saW5lLmMtMTk2Ni17XG4tLVxuZnMvZXh0NC9pbmxpbmUuYy0xOTk3LVx0ICAgIGV4dDRfdGVzdF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpKVxuZnMvZXh0NC9pbmxpbmUuYzoxOTk4Olx0XHRlcnJvciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2soaGFuZGxlLCBpbm9kZSwgXHUwMDI2aWxvYyk7XG5mcy9leHQ0L2lubGluZS5jLTE5OTktXHRpZiAoIWV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSkge1xuLS1cbmZzL2V4dDQvaW5vZGUuYz01OTM0PWludCBleHQ0X3NldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5mcy9leHQ0L2lub2RlLmMtNjAzMS1cdFx0ICAgIGF0dHItXHUwMDNlaWFfc2l6ZSBcdTAwM2UgRVhUNF9JKGlub2RlKS1cdTAwM2VpX2lubGluZV9zaXplKSB7XG5mcy9leHQ0L2lub2RlLmM6NjAzMjpcdFx0XHRlcnJvciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShpbm9kZSk7XG5mcy9leHQ0L2lub2RlLmMtNjAzMy1cdFx0XHRpZiAoZXJyb3IpXG4tLVxuZnMvZXh0NC9pbm9kZS5jPTY3ODc9dm1fZmF1bHRfdCBleHQ0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5mcy9leHQ0L2lub2RlLmMtNjgwOC1cbmZzL2V4dDQvaW5vZGUuYzo2ODA5Olx0ZXJyID0gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKGlub2RlKTtcbmZzL2V4dDQvaW5vZGUuYy02ODEwLVx0aWYgKGVycilcbi0tXG5mcy9leHQ0L3Zlcml0eS5jPTEwMj1zdGF0aWMgaW50IGV4dDRfYmVnaW5fZW5hYmxlX3Zlcml0eShzdHJ1Y3QgZmlsZSAqZmlscClcbi0tXG5mcy9leHQ0L3Zlcml0eS5jLTEyOC1cbmZzL2V4dDQvdmVyaXR5LmM6MTI5Olx0ZXJyID0gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKGlub2RlKTtcbmZzL2V4dDQvdmVyaXR5LmMtMTMwLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMzo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODg3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKklubGluZSBEYXRhIENvbnZlcnNpb24gRml4IC0gQSBTb2xpZCBDYW5kaWRhdGUgZm9yIFRlc3RpbmcqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMgLSBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2tgLCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAsIGFuZCBgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAg4oCTIHRoZXkgaW1tZWRpYXRlbHkganVtcCBvdXQgYXMgcGVyZmVjdCBjYW5kaWRhdGVzIGZvciBgRm9jdXNTeW1ib2xzYC4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBrbm93biBpc3N1ZSBjb25jZXJuaW5nIGlubGluZSBkYXRhIGNvbnZlcnNpb24sIHNwZWNpZmljYWxseSB0aGUgcG90ZW50aWFsIGZvciByZS1jb252ZXJzaW9uIGFmdGVyIHRoZSBpbml0aWFsIG9wZXJhdGlvbi4gVGhlIHJpc2s/IERhdGEgY29ycnVwdGlvbiBhbmQgZmlsZSBzeXN0ZW0gaW5jb25zaXN0ZW5jaWVzLgoKRnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUsIHRoaXMgaXMgYSBjbGVhbiBmaXguIEl0IGFkZHJlc3NlcyBhIHJlYWwgdnVsbmVyYWJpbGl0eSwgd2hpY2ggbWFrZXMgaXQgcGFydGljdWxhcmx5IGludGVyZXN0aW5nIGZvciBmdXp6aW5nLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgdXNhZ2Ugb2YgYGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgb2J2aW91cyBzaWRlLWVmZmVjdHMgb3IgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L2lubGluZS5jLTIzLVxuZnMvZXh0NC9pbmxpbmUuYzoyNDpzdGF0aWMgaW50IGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG5mcy9leHQ0L2lubGluZS5jLTI1LVx0XHRcdFx0XHRcdCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2V4dDQvaW5saW5lLmM9Njk4PWludCBleHQ0X2dlbmVyaWNfd3JpdGVfaW5saW5lX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXG4tLVxuZnMvZXh0NC9pbmxpbmUuYy03MzItXG5mcy9leHQ0L2lubGluZS5jOjczMzpcdFx0cmV0ID0gZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudChtYXBwaW5nLCBpbm9kZSwgZnNkYXRhKTtcbmZzL2V4dDQvaW5saW5lLmMtNzM0LVx0XHRpZiAocmV0ID09IC1FTk9TUEMgXHUwMDI2XHUwMDI2XG4tLVxuZnMvZXh0NC9pbmxpbmUuYz03OTY9aW50IGV4dDRfd3JpdGVfaW5saW5lX2RhdGFfZW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBwb3MsIHVuc2lnbmVkIGxlbixcbi0tXG5mcy9leHQ0L2lubGluZS5jLTg4Ni0gKi9cbmZzL2V4dDQvaW5saW5lLmM6ODg3OnN0YXRpYyBpbnQgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbmZzL2V4dDQvaW5saW5lLmMtODg4LVx0XHRcdFx0XHRcdCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NjcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGV4dDQgSW5saW5lIERhdGEgQ29udmVyc2lvbiBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBob21pbmcgaW4gb24gdGhlIGNvcmUgb2YgdGhpcyBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIGxvZ2ljIHdpdGhpbiBleHQ0LiBUaGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gZGlzc2VjdCBhcmU6IGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFgLCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9ja2AsIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50YCwgYW5kIGBleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50YC4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGZsb3cgYW5kIGJlaGF2aW9yIG9mIGVhY2gsIGVzcGVjaWFsbHkgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCBlYWNoIG90aGVyIGFuZCBoYW5kbGUgZXJyb3IgY29uZGl0aW9ucy4KCk5vdywgYmVmb3JlIEkgZGlnIGRlZXBlciBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgbGV0JiMzOTtzIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZSByZWdhcmRpbmcgY29uZmlndXJhdGlvbnMuIE9idmlvdXNseSwgYEVYVDRfRlNgIGlzIGZ1bmRhbWVudGFsLCBidXQgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgaW1wYWN0IGlubGluZSBkYXRhIHNwZWNpZmljYWxseS4gSSYjMzk7bGwgbmVlZCB0byBnbyBiYWNrIGFuZCBkb3VibGUtY2hlY2sgYGZzL2V4dDQvS2NvbmZpZ2AgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwuIEkgd2FudCB0byBiZSBjZXJ0YWluIEkgaGF2ZSBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgYWxsIHRoZSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyBhbmQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwMzo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lubGluZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NTcKCQkJCQkJCW91dHB1dDogMTYyCgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEVYVDQgSW5saW5lIERhdGEgQ29udmVyc2lvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXRzIGZ1enppbmcgaW1wbGljYXRpb25zLiBObyBzcGVjaWFsaXplZCBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgaW50cm9kdWNlZCB3aXRoaW4gYGZzL2V4dDQvS2NvbmZpZ2AgdG8gdGFyZ2V0IHRoaXMgc3BlY2lmaWMgY2hhbmdlLCBtZWFuaW5nIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gdGhhdCBlbmFibGVzIGV4dDQsIG5hbWVseSBgRVhUNF9GU2AsIGlzIHRoZSByZWxldmFudCBvbmUgdG8gZm9jdXMgb24gaGVyZS4KCkxldCYjMzk7cyBicmVhayBkb3duIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGlzIHRoZSBhZGRpdGlvbiBvZiB0aGUgYEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRGAgaW5vZGUgc3RhdGUgZmxhZy4gVGhpcyBzZWVtcyBjcnVjaWFsIGJlY2F1c2UgaXQgZGVhbHMgd2l0aCBwcmV2ZW50aW5nIHRoZSBzeXN0ZW0gZnJvbSByZXN0b3JpbmcgaW5saW5lIGRhdGEgb25jZSBpdCYjMzk7cyBiZWVuIHNhZmVseSBjb3BpZWQuIFRoaXMgaXMgYWJzb2x1dGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdl4oCUaXQmIzM5O3MgcmlnaHQgaW4gdGhlIGNyaXRpY2FsIHBhdGggb2YgdGhlIGZpbGVzeXN0ZW0uIFRoZXJlZm9yZSwgZnV6emluZyBpcyBkZWZpbml0ZWx5IHdhcnJhbnRlZCBhbmQgd2lsbCBiZSBiZW5lZmljaWFsLgoKVGhlIHRlYW0gaGFzIGlkZW50aWZpZWQgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YWAsIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgLCBhbmQgYGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgIGFzIGtleSBzeW1ib2xzIHRvIHRhcmdldC4gQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyByZWxhdGUgZGlyZWN0bHkgdG8gdGhlIGlubGluZSBkYXRhIGNvbnZlcnNpb24gcHJvY2Vzcy4gSSBjb25jdXIgd2l0aCB0aGlzIGFzc2Vzc21lbnQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgd2hlcmUgdGhlIG5ldyBmbGFnIHdpbGwgYmUgdXNlZCwgYW5kIGFyZSB0aGVyZWZvcmUgdGhlIGJlc3QgdGFyZ2V0cyBmb3IgZGV0ZWN0aW5nIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlLiBVc2luZyB0aGVzZSBmdW5jdGlvbnMgZm9yIGZ1enppbmcgd2lsbCBiZSBlZmZlY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDAzOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhJiMzNDssCiAgICAmIzM0O2V4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2smIzM0OywKICAgICYjMzQ7ZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudCYjMzQ7LAogICAgJiMzNDtleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIGxvZ2ljIGluIGV4dDQgYnkgaW50cm9kdWNpbmcgYSBuZXcgaW5vZGUgc3RhdGUgZmxhZyBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQuIFRoaXMgZmxhZyBwcmV2ZW50cyByZXN0b3JpbmcgaW5saW5lIGRhdGEgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY29waWVkIG91dCwgZml4aW5nIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gb3IgaW5jb25zaXN0ZW5jaWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfY29udmVydF9pbmxpbmVfZGF0YSYjMzQ7LAogICAgJiMzNDtleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrJiMzNDssCiAgICAmIzM0O2V4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQmIzM0OywKICAgICYjMzQ7ZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5saW5lIGRhdGEgY29udmVyc2lvbiBsb2dpYyBpbiBleHQ0IGJ5IGludHJvZHVjaW5nIGEgbmV3IGlub2RlIHN0YXRlIGZsYWcgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVELiBUaGlzIGZsYWcgcHJldmVudHMgcmVzdG9yaW5nIGlubGluZSBkYXRhIGFmdGVyIGl0IGhhcyBhbHJlYWR5IGJlZW4gc3VjY2Vzc2Z1bGx5IGNvcGllZCBvdXQsIGZpeGluZyBwb3RlbnRpYWwgZGF0YSBjb3JydXB0aW9uIG9yIGluY29uc2lzdGVuY2llcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MTo1MS4zMDgxNDg2MzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjExMzkwOTY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhXCIsXG4gICAgXCJleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrXCIsXG4gICAgXCJleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50XCIsXG4gICAgXCJleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGlubGluZSBkYXRhIGNvbnZlcnNpb24gbG9naWMgaW4gZXh0NCBieSBpbnRyb2R1Y2luZyBhIG5ldyBpbm9kZSBzdGF0ZSBmbGFnIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRC4gVGhpcyBmbGFnIHByZXZlbnRzIHJlc3RvcmluZyBpbmxpbmUgZGF0YSBhZnRlciBpdCBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjb3BpZWQgb3V0LCBmaXhpbmcgcG90ZW50aWFsIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvbnNpc3RlbmNpZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MTo1MS4zMDgxNTI3MTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTUwMDg2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU3ODQzZWJhZTg3NTlmNDJjYTIzMTlhZDg2Yzg2MmYzMjJkNzM4ZTRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMyAwMzo0MTo1MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oXFxuaW5kZXggYjM3YzEzNmVhM2FiMzMuLjg2M2Y1MjQ3ZWIzNDEzIDEwMDY0NFxcbi0tLSBhL2ZzL2V4dDQvZXh0NC5oXFxuKysrIGIvZnMvZXh0NC9leHQ0LmhcXG5AQCAtMjAzOCw2ICsyMDM4LDcgQEAgZW51bSB7XFxuIFxcdEVYVDRfU1RBVEVfRkNfRkxVU0hJTkdfREFUQSxcXHQvKiBGYXN0IGNvbW1pdCBmbHVzaGluZyBkYXRhICovXFxuIFxcdEVYVDRfU1RBVEVfT1JQSEFOX0ZJTEUsXFx0XFx0LyogSW5vZGUgb3JwaGFuZWQgaW4gb3JwaGFuIGZpbGUgKi9cXG4gXFx0RVhUNF9TVEFURV9GQ19SRVFVRVVFLFxcdFxcdC8qIElub2RlIG1vZGlmaWVkIGR1cmluZyBmYXN0IGNvbW1pdCAqL1xcbitcXHRFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQsXFx0LyogaW5saW5lIGRhdGEgY29waWVkIG91dCwgZG8gbm90IHJlc3RvcmUgKi9cXG4gfTtcXG4gXFxuICNkZWZpbmUgRVhUNF9JTk9ERV9CSVRfRk5TKG5hbWUsIGZpZWxkLCBvZmZzZXQpXFx0XFx0XFx0XFx0XFxcXFxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L2lubGluZS5jIGIvZnMvZXh0NC9pbmxpbmUuY1xcbmluZGV4IDgwNDVlNGZmMjcwYzdmLi4xYjZhYmFjZjEyZTZlOCAxMDA2NDRcXG4tLS0gYS9mcy9leHQ0L2lubGluZS5jXFxuKysrIGIvZnMvZXh0NC9pbmxpbmUuY1xcbkBAIC02NzEsNiArNjcxLDggQEAgc3RhdGljIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbiBcXG4gXFx0aWYgKGZvbGlvKVxcbiBcXHRcXHRibG9ja19jb21taXRfd3JpdGUoZm9saW8sIGZyb20sIHRvKTtcXG4rXFx0aWYgKGZvbGlvIFxcdTAwMjZcXHUwMDI2ICFyZXQpXFxuK1xcdFxcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xcbiBvdXQ6XFxuIFxcdGlmIChmb2xpbykge1xcbiBcXHRcXHRmb2xpb191bmxvY2soZm9saW8pO1xcbkBAIC05MjEsNiArOTIzLDcgQEAgc3RhdGljIGludCBleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbiBcXHRjbGVhcl9idWZmZXJfbmV3KGZvbGlvX2J1ZmZlcnMoZm9saW8pKTtcXG4gXFx0Zm9saW9fbWFya19kaXJ0eShmb2xpbyk7XFxuIFxcdGZvbGlvX21hcmtfdXB0b2RhdGUoZm9saW8pO1xcbitcXHRleHQ0X3NldF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVEKTtcXG4gXFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xcbiBcXHQqZnNkYXRhID0gKHZvaWQgKilDT05WRVJUX0lOTElORV9EQVRBO1xcbiBcXG5AQCAtMTE3Miw4ICsxMTc1LDE0IEBAIHN0YXRpYyBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGVfdCAqaGFuZGxlLFxcbiBcXHR9XFxuIFxcbiBvdXRfcmVzdG9yZTpcXG4tXFx0aWYgKGVycm9yKVxcbi1cXHRcXHRleHQ0X3Jlc3RvcmVfaW5saW5lX2RhdGEoaGFuZGxlLCBpbm9kZSwgaWxvYywgYnVmLCBpbmxpbmVfc2l6ZSk7XFxuK1xcdGlmIChlcnJvcikge1xcbitcXHRcXHRXQVJOX09OX09OQ0UoZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLFxcbitcXHRcXHRcXHRcXHRcXHRFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpKTtcXG4rXFx0XFx0ZXh0NF9yZXN0b3JlX2lubGluZV9kYXRhKGhhbmRsZSwgaW5vZGUsIGlsb2MsIGJ1ZixcXG4rXFx0XFx0XFx0XFx0XFx0IGlubGluZV9zaXplKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0ZXh0NF9zZXRfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRCk7XFxuK1xcdH1cXG4gXFxuIG91dDpcXG4gXFx0YnJlbHNlKGRhdGFfYmgpO1xcbkBAIC0xOTU5LDIyICsxOTY4LDE2IEBAIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGEoc3RydWN0IGlub2RlICppbm9kZSlcXG4gXFx0aGFuZGxlX3QgKmhhbmRsZTtcXG4gXFx0c3RydWN0IGV4dDRfaWxvYyBpbG9jO1xcbiBcXG4tXFx0aWYgKCFleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpIHtcXG4tXFx0XFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xcbitcXHRpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfaW5saW5lX2RhdGEoaW5vZGUtXFx1MDAzZWlfc2IpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIE9uY2UgaW5saW5lIGRhdGEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvcGllZCBvdXQgKHRvIHBhZ2VcXG4rXFx0ICogY2FjaGUgb3IgYSBkYXRhIGJsb2NrKSwgdGhpcyBiaXQgaXMgc2V0IGFuZCBuZXZlciBjbGVhcmVkLlxcbitcXHQgKiBJdCBpcyBzYWZlIHRvIGNoZWNrIHdpdGhvdXQgbG9ja3MgLS0gdGhlIGJpdCBpcyBtb25vdG9uaWMuXFxuK1xcdCAqL1xcbitcXHRpZiAoZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4tXFx0fSBlbHNlIGlmICghZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSkpIHtcXG4tXFx0XFx0LypcXG4tXFx0XFx0ICogSW5vZGUgaGFzIGlubGluZSBkYXRhIGJ1dCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSBpc1xcbi1cXHRcXHQgKiBjbGVhcmVkLiBUaGlzIG1lYW5zIHdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIG1vdmluZyBvZlxcbi1cXHRcXHQgKiBpbmxpbmUgZGF0YSB0byBkZWxheSBhbGxvY2F0ZWQgYmxvY2suIEp1c3QgZm9yY2Ugd3JpdGVvdXRcXG4tXFx0XFx0ICogaGVyZSB0byBmaW5pc2ggY29udmVyc2lvbi5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdGVycm9yID0gZmlsZW1hcF9mbHVzaChpbm9kZS1cXHUwMDNlaV9tYXBwaW5nKTtcXG4tXFx0XFx0aWYgKGVycm9yKVxcbi1cXHRcXHRcXHRyZXR1cm4gZXJyb3I7XFxuLVxcdFxcdGlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKVxcbi1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tXFx0fVxcbiBcXG4gXFx0bmVlZGVkX2Jsb2NrcyA9IGV4dDRfY2h1bmtfdHJhbnNfZXh0ZW50KGlub2RlLCAxKTtcXG4gXFxuQEAgLTE5OTAsOCArMTk5MywxMyBAQCBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuIFxcdH1cXG4gXFxuIFxcdGV4dDRfd3JpdGVfbG9ja194YXR0cihpbm9kZSwgXFx1MDAyNm5vX2V4cGFuZCk7XFxuLVxcdGlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkpXFxuK1xcdGlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGV4dDRfdGVzdF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpKVxcbiBcXHRcXHRlcnJvciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2soaGFuZGxlLCBpbm9kZSwgXFx1MDAyNmlsb2MpO1xcbitcXHRpZiAoIWV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSkge1xcbitcXHRcXHRleHQ0X3NldF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVEKTtcXG4rXFx0XFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xcbitcXHR9XFxuIFxcdGV4dDRfd3JpdGVfdW5sb2NrX3hhdHRyKGlub2RlLCBcXHUwMDI2bm9fZXhwYW5kKTtcXG4gXFx0ZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTtcXG4gb3V0X2ZyZWU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAzOjQxOjUxLjc4MDQ4MDU3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU2NDE1NjU0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfY29udmVydF9pbmxpbmVfZGF0YVwiLFxuICAgIFwiZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9ja1wiLFxuICAgIFwiZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudFwiLFxuICAgIFwiZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIGxvZ2ljIGluIGV4dDQgYnkgaW50cm9kdWNpbmcgYSBuZXcgaW5vZGUgc3RhdGUgZmxhZyBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQuIFRoaXMgZmxhZyBwcmV2ZW50cyByZXN0b3JpbmcgaW5saW5lIGRhdGEgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY29waWVkIG91dCwgZml4aW5nIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gb3IgaW5jb25zaXN0ZW5jaWVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1Nzg0M2ViYWU4NzU5ZjQyY2EyMzE5YWQ4NmM4NjJmMzIyZDczOGU0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAwMzo0MTo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZXh0NC5oIGIvZnMvZXh0NC9leHQ0LmhcbmluZGV4IGIzN2MxMzZlYTNhYjMzLi44NjNmNTI0N2ViMzQxMyAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvZXh0NC5oXG4rKysgYi9mcy9leHQ0L2V4dDQuaFxuQEAgLTIwMzgsNiArMjAzOCw3IEBAIGVudW0ge1xuIFx0RVhUNF9TVEFURV9GQ19GTFVTSElOR19EQVRBLFx0LyogRmFzdCBjb21taXQgZmx1c2hpbmcgZGF0YSAqL1xuIFx0RVhUNF9TVEFURV9PUlBIQU5fRklMRSxcdFx0LyogSW5vZGUgb3JwaGFuZWQgaW4gb3JwaGFuIGZpbGUgKi9cbiBcdEVYVDRfU1RBVEVfRkNfUkVRVUVVRSxcdFx0LyogSW5vZGUgbW9kaWZpZWQgZHVyaW5nIGZhc3QgY29tbWl0ICovXG4rXHRFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQsXHQvKiBpbmxpbmUgZGF0YSBjb3BpZWQgb3V0LCBkbyBub3QgcmVzdG9yZSAqL1xuIH07XG4gXG4gI2RlZmluZSBFWFQ0X0lOT0RFX0JJVF9GTlMobmFtZSwgZmllbGQsIG9mZnNldClcdFx0XHRcdFxcXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbmxpbmUuYyBiL2ZzL2V4dDQvaW5saW5lLmNcbmluZGV4IDgwNDVlNGZmMjcwYzdmLi4xYjZhYmFjZjEyZTZlOCAxMDA2NDRcbi0tLSBhL2ZzL2V4dDQvaW5saW5lLmNcbisrKyBiL2ZzL2V4dDQvaW5saW5lLmNcbkBAIC02NzEsNiArNjcxLDggQEAgc3RhdGljIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxuIFxuIFx0aWYgKGZvbGlvKVxuIFx0XHRibG9ja19jb21taXRfd3JpdGUoZm9saW8sIGZyb20sIHRvKTtcbitcdGlmIChmb2xpbyBcdTAwMjZcdTAwMjYgIXJldClcbitcdFx0ZXh0NF9zZXRfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRCk7XG4gb3V0OlxuIFx0aWYgKGZvbGlvKSB7XG4gXHRcdGZvbGlvX3VubG9jayhmb2xpbyk7XG5AQCAtOTIxLDYgKzkyMyw3IEBAIHN0YXRpYyBpbnQgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcbiBcdGNsZWFyX2J1ZmZlcl9uZXcoZm9saW9fYnVmZmVycyhmb2xpbykpO1xuIFx0Zm9saW9fbWFya19kaXJ0eShmb2xpbyk7XG4gXHRmb2xpb19tYXJrX3VwdG9kYXRlKGZvbGlvKTtcbitcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xuIFx0ZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9NQVlfSU5MSU5FX0RBVEEpO1xuIFx0KmZzZGF0YSA9ICh2b2lkICopQ09OVkVSVF9JTkxJTkVfREFUQTtcbiBcbkBAIC0xMTcyLDggKzExNzUsMTQgQEAgc3RhdGljIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrKGhhbmRsZV90ICpoYW5kbGUsXG4gXHR9XG4gXG4gb3V0X3Jlc3RvcmU6XG4tXHRpZiAoZXJyb3IpXG4tXHRcdGV4dDRfcmVzdG9yZV9pbmxpbmVfZGF0YShoYW5kbGUsIGlub2RlLCBpbG9jLCBidWYsIGlubGluZV9zaXplKTtcbitcdGlmIChlcnJvcikge1xuK1x0XHRXQVJOX09OX09OQ0UoZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLFxuK1x0XHRcdFx0XHRFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpKTtcbitcdFx0ZXh0NF9yZXN0b3JlX2lubGluZV9kYXRhKGhhbmRsZSwgaW5vZGUsIGlsb2MsIGJ1ZixcbitcdFx0XHRcdFx0IGlubGluZV9zaXplKTtcbitcdH0gZWxzZSB7XG4rXHRcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xuK1x0fVxuIFxuIG91dDpcbiBcdGJyZWxzZShkYXRhX2JoKTtcbkBAIC0xOTU5LDIyICsxOTY4LDE2IEBAIGludCBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGEoc3RydWN0IGlub2RlICppbm9kZSlcbiBcdGhhbmRsZV90ICpoYW5kbGU7XG4gXHRzdHJ1Y3QgZXh0NF9pbG9jIGlsb2M7XG4gXG4tXHRpZiAoIWV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSkge1xuLVx0XHRleHQ0X2NsZWFyX2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSk7XG4rXHRpZiAoIWV4dDRfaGFzX2ZlYXR1cmVfaW5saW5lX2RhdGEoaW5vZGUtXHUwMDNlaV9zYikpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0LypcbitcdCAqIE9uY2UgaW5saW5lIGRhdGEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvcGllZCBvdXQgKHRvIHBhZ2VcbitcdCAqIGNhY2hlIG9yIGEgZGF0YSBibG9jayksIHRoaXMgYml0IGlzIHNldCBhbmQgbmV2ZXIgY2xlYXJlZC5cbitcdCAqIEl0IGlzIHNhZmUgdG8gY2hlY2sgd2l0aG91dCBsb2NrcyAtLSB0aGUgYml0IGlzIG1vbm90b25pYy5cbitcdCAqL1xuK1x0aWYgKGV4dDRfdGVzdF9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVEKSlcbiBcdFx0cmV0dXJuIDA7XG4tXHR9IGVsc2UgaWYgKCFleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoaW5vZGUsIEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBKSkge1xuLVx0XHQvKlxuLVx0XHQgKiBJbm9kZSBoYXMgaW5saW5lIGRhdGEgYnV0IEVYVDRfU1RBVEVfTUFZX0lOTElORV9EQVRBIGlzXG4tXHRcdCAqIGNsZWFyZWQuIFRoaXMgbWVhbnMgd2UgYXJlIGluIHRoZSBtaWRkbGUgb2YgbW92aW5nIG9mXG4tXHRcdCAqIGlubGluZSBkYXRhIHRvIGRlbGF5IGFsbG9jYXRlZCBibG9jay4gSnVzdCBmb3JjZSB3cml0ZW91dFxuLVx0XHQgKiBoZXJlIHRvIGZpbmlzaCBjb252ZXJzaW9uLlxuLVx0XHQgKi9cbi1cdFx0ZXJyb3IgPSBmaWxlbWFwX2ZsdXNoKGlub2RlLVx1MDAzZWlfbWFwcGluZyk7XG4tXHRcdGlmIChlcnJvcilcbi1cdFx0XHRyZXR1cm4gZXJyb3I7XG4tXHRcdGlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKVxuLVx0XHRcdHJldHVybiAwO1xuLVx0fVxuIFxuIFx0bmVlZGVkX2Jsb2NrcyA9IGV4dDRfY2h1bmtfdHJhbnNfZXh0ZW50KGlub2RlLCAxKTtcbiBcbkBAIC0xOTkwLDggKzE5OTMsMTMgQEAgaW50IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuIFx0fVxuIFxuIFx0ZXh0NF93cml0ZV9sb2NrX3hhdHRyKGlub2RlLCBcdTAwMjZub19leHBhbmQpO1xuLVx0aWYgKGV4dDRfaGFzX2lubGluZV9kYXRhKGlub2RlKSlcbitcdGlmIChleHQ0X2hhc19pbmxpbmVfZGF0YShpbm9kZSkgXHUwMDI2XHUwMDI2XG4rXHQgICAgZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSkpXG4gXHRcdGVycm9yID0gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGUsIGlub2RlLCBcdTAwMjZpbG9jKTtcbitcdGlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKSB7XG4rXHRcdGV4dDRfc2V0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX0lOTElORV9DT05WRVJURUQpO1xuK1x0XHRleHQ0X2NsZWFyX2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSk7XG4rXHR9XG4gXHRleHQ0X3dyaXRlX3VubG9ja194YXR0cihpbm9kZSwgXHUwMDI2bm9fZXhwYW5kKTtcbiBcdGV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7XG4gb3V0X2ZyZWU6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MTo1MS43ODA0ODI1MjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4Mzk5MjMzMDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklubGluZSBEYXRhIENvbnZlcnNpb24gaW4gZXh0NDogQSBGdXp6aW5nIFRhcmdldCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIHBsYXlpbmcgd2l0aCBpbmxpbmUgZGF0YSBjb252ZXJzaW9uIHdpdGhpbiB0aGUgZXh0NCBmaWxlc3lzdGVtLiBUaGUgZmlsZXMgdG91Y2hlZCBhcmUgYGZzL2V4dDQvaW5saW5lLmNgIGFuZCBgZnMvZXh0NC9leHQ0LmhgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIHNvbWV0aGluZyB0aGF0IGNvdWxkIGhhdmUgaW50ZXJlc3RpbmcgaW1wbGljYXRpb25zLiBTcGVjaWZpY2FsbHksIGl0IGludHJvZHVjZXMgYSBuZXcgaW5vZGUgc3RhdGUgZmxhZywgYEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRGAsIGFuZCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2Ygc2V2ZXJhbCBrZXkgZnVuY3Rpb25zOiBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2tgLCBgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAsIGFuZCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBidWcgZml4LCBhbmQgaXQncyBkZWFsaW5nIHdpdGggYSBjb3JlIGFzcGVjdCBvZiBob3cgZXh0NCBtYW5hZ2VzIGRhdGEuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIFRoZSBwb3RlbnRpYWwgZm9yIGVkZ2UgY2FzZXMgYW5kIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIGlubGluZSBkYXRhIGNvbnZlcnNpb24gaXMgaGlnaC5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRob3NlIG1vZGlmaWVkIGZ1bmN0aW9ucyBpbiBkZXRhaWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBuZXcgbG9naWMgYW5kIGhvdyB0aGlzIGZsYWcgaW5mbHVlbmNlcyB0aGVpciBiZWhhdmlvci4gSSBhbHNvIG5lZWQgdG8gZW5zdXJlIEkgY2hlY2sgYWxsIHRoZSBjb250cm9sIHBvaW50cyBhbmQgYm91bmRhcnkgY29uZGl0aW9ucy5cblxuTm93LCBsZXQncyBjb25zaWRlciB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgRVhUNF9GU2AgaXMgdGhlIG1haW4gb25lLCBvYnZpb3VzbHksIGJ1dCBhcmUgdGhlcmUgYW55ICpzcGVjaWZpYyogY29uZmlncyByZWxhdGVkIHRvIGlubGluZSBkYXRhIGNvbnZlcnNpb24gdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhpcz8gTGV0IG1lIHF1aWNrbHkgZ3JlcCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZm9yIGBFWFQ0X0ZTYCBhbmQgYW55dGhpbmcgcmVsYXRlZCB0byBcImlubGluZSBkYXRhXCIgdG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSByZWxldmFudCBidWlsZCBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDYyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDM6NDI6MDAuMTc5NzE4MzgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODU5ODY3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRVhUNF9GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9leHQ0L0tjb25maWc6Mjpjb25maWcgRVhUNF9GU1xcbmZzL2V4dDQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJUaGUgRXh0ZW5kZWQgNCAoZXh0NCkgZmlsZXN5c3RlbVxcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZz0zNT1jb25maWcgRVhUNF9VU0VfRk9SX0VYVDJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy00NS1cXG5mcy9leHQ0L0tjb25maWc6NDY6Y29uZmlnIEVYVDRfRlNfUE9TSVhfQUNMXFxuZnMvZXh0NC9LY29uZmlnLTQ3LVxcdGJvb2wgXFxcIkV4dDQgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuLS1cXG5mcy9leHQ0L0tjb25maWctNTUtXFxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXFxuZnMvZXh0NC9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIkV4dDQgU2VjdXJpdHkgTGFiZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MjowMC40MDgzMjUyODRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njg4MDgwNDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBleHQ0IElubGluZSBEYXRhIENvbnZlcnNpb24qKlxuXG5Pa2F5LCBzbyB0aGVyZSdzIG5vIGRlZGljYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbiBzcGVjaWZpY2FsbHkgZm9yIGlubGluZSBkYXRhIHdpdGhpbiBleHQ0OyBpdCdzIGJha2VkIGluIGFzIGEgZmlsZXN5c3RlbSBmZWF0dXJlIGVuYWJsZWQgYnkgdGhlIGBFWFQ0X0ZTYCBjb25maWd1cmF0aW9uLiBHb29kIHRvIGtub3cuIFRoYXQncyB0aGUga2V5IGVuYWJsaW5nIGZhY3Rvci5cblxuTm93LCBsZXQncyBnZXQgZG93biB0byB0aGUgYnJhc3MgdGFja3M6IHdoYXQgZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhpcyBjb252ZXJzaW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY3JpdGljYWwgY29kZSBwYXRocyBoZXJlLiBUaGUgb25lcyBJJ20gZm9jdXNpbmcgb24gYXJlOiBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2tgLCBgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAsIGFuZCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudGAuXG5cbkkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyBpZiB0aGVzZSBhcmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgXCJob3QtcGF0aFwiIGZ1bmN0aW9ucy4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YWAgaXRzZWxmLCB0aGUga2V5IGZ1bmN0aW9uIGhlcmUsIGlzICpub3QqIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiBpbiB0aGUgc2FtZSBzZW5zZSBhcyBzb21ldGhpbmcgbGlrZSBgZXh0NF9yZWFkX2ZvbGlvYCBvciBgZXh0NF93cml0ZV9iZWdpbmAsIGFsdGhvdWdoIHRoZXNlIGNvdWxkIGNhbGwgdGhhdC4gSXQncyBjYWxsZWQgd2hlbiBjb252ZXJ0aW5nIGlubGluZSBkYXRhIHRvIGV4dGVudHMsIHdoaWNoIGlzIGxpa2VseSBhIHJhcmVyIG9wZXJhdGlvbiwgYnV0IEkgbXVzdCBjb25maXJtLlxuXG5UaGVyZWZvcmUsIEknbGwgbmVlZCB0byBkbyBhIHRob3JvdWdoIGdyZXAgdG8gZGV0ZXJtaW5lIGl0cyBhY3R1YWwgdXNhZ2UgcGF0dGVybnMgd2l0aGluIHRoZSBjb2RlYmFzZSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjb2RlLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODg5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAzOjQyOjA1LjA5NjQwNzU5M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzM1MjY1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9jcnlwdG8uYz0xMzI9c3RhdGljIGludCBleHQ0X3NldF9jb250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKmN0eCwgc2l6ZV90IGxlbixcXG4tLVxcbmZzL2V4dDQvY3J5cHRvLmMtMTUyLVxcbmZzL2V4dDQvY3J5cHRvLmM6MTUzOlxcdHJlcyA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShpbm9kZSk7XFxuZnMvZXh0NC9jcnlwdG8uYy0xNTQtXFx0aWYgKHJlcylcXG4tLVxcbmZzL2V4dDQvZXh0NC5oPTM3ODU9ZXh0ZXJuIGludCBleHQ0X2lubGluZV9kYXRhX3RydW5jYXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCAqaGFzX2lubGluZSk7XFxuZnMvZXh0NC9leHQ0LmgtMzc4Ni1cXG5mcy9leHQ0L2V4dDQuaDozNzg3OmV4dGVybiBpbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpO1xcbmZzL2V4dDQvZXh0NC5oLTM3ODgtXFxuLS1cXG5mcy9leHQ0L2V4dGVudHMuYz00ODU0PWxvbmcgZXh0NF9mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKVxcbi0tXFxuZnMvZXh0NC9leHRlbnRzLmMtNDg4My1cXHRpbm9kZV9sb2NrKGlub2RlKTtcXG5mcy9leHQ0L2V4dGVudHMuYzo0ODg0OlxcdHJldCA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShpbm9kZSk7XFxuZnMvZXh0NC9leHRlbnRzLmMtNDg4NS1cXHRpZiAocmV0KVxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYz01NDU9aW50IGV4dDRfcmVhZHBhZ2VfaW5saW5lKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5mcy9leHQ0L2lubGluZS5jLTU3MS1cXG5mcy9leHQ0L2lubGluZS5jOjU3MjpzdGF0aWMgaW50IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuZnMvZXh0NC9pbmxpbmUuYy01NzMtXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmM9Njk4PWludCBleHQ0X2dlbmVyaWNfd3JpdGVfaW5saW5lX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5mcy9leHQ0L2lubGluZS5jLTcyOS1cXHRcXHRcXHQvKiBSZXRyeSBpbnNpZGUgKi9cXG5mcy9leHQ0L2lubGluZS5jOjczMDpcXHRcXHRcXHRyZXR1cm4gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudChtYXBwaW5nLCBpbm9kZSk7XFxuZnMvZXh0NC9pbmxpbmUuYy03MzEtXFx0XFx0fVxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYz03ODU9aW50IGV4dDRfdHJ5X3RvX3dyaXRlX2lubGluZV9kYXRhKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLFxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYy03OTAtXFx0aWYgKHBvcyArIGxlbiBcXHUwMDNlIGV4dDRfZ2V0X21heF9pbmxpbmVfc2l6ZShpbm9kZSkpXFxuZnMvZXh0NC9pbmxpbmUuYzo3OTE6XFx0XFx0cmV0dXJuIGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQobWFwcGluZywgaW5vZGUpO1xcbmZzL2V4dDQvaW5saW5lLmMtNzkyLVxcdHJldHVybiBleHQ0X2dlbmVyaWNfd3JpdGVfaW5saW5lX2RhdGEobWFwcGluZywgaW5vZGUsIHBvcywgbGVuLFxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYz0xMDc2PXN0YXRpYyB2b2lkIGV4dDRfcmVzdG9yZV9pbmxpbmVfZGF0YShoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYy0xMDkyLVxcbmZzL2V4dDQvaW5saW5lLmM6MTA5MzpzdGF0aWMgaW50IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2soaGFuZGxlX3QgKmhhbmRsZSxcXG5mcy9leHQ0L2lubGluZS5jLTEwOTQtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmM9MTE5OD1pbnQgZXh0NF90cnlfYWRkX2lubGluZV9lbnRyeShoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgZXh0NF9maWxlbmFtZSAqZm5hbWUsXFxuLS1cXG5mcy9leHQ0L2lubGluZS5jLTEyNTAtXFx0ICovXFxuZnMvZXh0NC9pbmxpbmUuYzoxMjUxOlxcdHJldCA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2soaGFuZGxlLCBkaXIsIFxcdTAwMjZpbG9jKTtcXG5mcy9leHQ0L2lubGluZS5jLTEyNTItXFxuLS1cXG5mcy9leHQ0L2lubGluZS5jPTE4NTM9aW50IGV4dDRfaW5saW5lX2RhdGFfdHJ1bmNhdGUoc3RydWN0IGlub2RlICppbm9kZSwgaW50ICpoYXNfaW5saW5lKVxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYy0xOTY0LVxcbmZzL2V4dDQvaW5saW5lLmM6MTk2NTppbnQgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKHN0cnVjdCBpbm9kZSAqaW5vZGUpXFxuZnMvZXh0NC9pbmxpbmUuYy0xOTY2LXtcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmMtMTk5Ny1cXHQgICAgZXh0NF90ZXN0X2lub2RlX3N0YXRlKGlub2RlLCBFWFQ0X1NUQVRFX01BWV9JTkxJTkVfREFUQSkpXFxuZnMvZXh0NC9pbmxpbmUuYzoxOTk4OlxcdFxcdGVycm9yID0gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9jayhoYW5kbGUsIGlub2RlLCBcXHUwMDI2aWxvYyk7XFxuZnMvZXh0NC9pbmxpbmUuYy0xOTk5LVxcdGlmICghZXh0NF9oYXNfaW5saW5lX2RhdGEoaW5vZGUpKSB7XFxuLS1cXG5mcy9leHQ0L2lub2RlLmM9NTkzND1pbnQgZXh0NF9zZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9leHQ0L2lub2RlLmMtNjAzMS1cXHRcXHQgICAgYXR0ci1cXHUwMDNlaWFfc2l6ZSBcXHUwMDNlIEVYVDRfSShpbm9kZSktXFx1MDAzZWlfaW5saW5lX3NpemUpIHtcXG5mcy9leHQ0L2lub2RlLmM6NjAzMjpcXHRcXHRcXHRlcnJvciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShpbm9kZSk7XFxuZnMvZXh0NC9pbm9kZS5jLTYwMzMtXFx0XFx0XFx0aWYgKGVycm9yKVxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jPTY3ODc9dm1fZmF1bHRfdCBleHQ0X3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYy02ODA4LVxcbmZzL2V4dDQvaW5vZGUuYzo2ODA5OlxcdGVyciA9IGV4dDRfY29udmVydF9pbmxpbmVfZGF0YShpbm9kZSk7XFxuZnMvZXh0NC9pbm9kZS5jLTY4MTAtXFx0aWYgKGVycilcXG4tLVxcbmZzL2V4dDQvdmVyaXR5LmM9MTAyPXN0YXRpYyBpbnQgZXh0NF9iZWdpbl9lbmFibGVfdmVyaXR5KHN0cnVjdCBmaWxlICpmaWxwKVxcbi0tXFxuZnMvZXh0NC92ZXJpdHkuYy0xMjgtXFxuZnMvZXh0NC92ZXJpdHkuYzoxMjk6XFx0ZXJyID0gZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhKGlub2RlKTtcXG5mcy9leHQ0L3Zlcml0eS5jLTEzMC1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MjowNS4xNTM3NjUxMDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAxMjE0Mjk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKklubGluZSBEYXRhIENvbnZlcnNpb24gRml4IC0gQSBTb2xpZCBDYW5kaWRhdGUgZm9yIFRlc3RpbmcqKlxuXG5BbHJpZ2h0LCBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucyAtIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFgLCBgZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhX25vbG9ja2AsIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50YCwgYW5kIGBleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50YCDigJMgdGhleSBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyBwZXJmZWN0IGNhbmRpZGF0ZXMgZm9yIGBGb2N1c1N5bWJvbHNgLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIGtub3duIGlzc3VlIGNvbmNlcm5pbmcgaW5saW5lIGRhdGEgY29udmVyc2lvbiwgc3BlY2lmaWNhbGx5IHRoZSBwb3RlbnRpYWwgZm9yIHJlLWNvbnZlcnNpb24gYWZ0ZXIgdGhlIGluaXRpYWwgb3BlcmF0aW9uLiBUaGUgcmlzaz8gRGF0YSBjb3JydXB0aW9uIGFuZCBmaWxlIHN5c3RlbSBpbmNvbnNpc3RlbmNpZXMuXG5cbkZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCB0aGlzIGlzIGEgY2xlYW4gZml4LiBJdCBhZGRyZXNzZXMgYSByZWFsIHZ1bG5lcmFiaWxpdHksIHdoaWNoIG1ha2VzIGl0IHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBmb3IgZnV6emluZy4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgdXNhZ2Ugb2YgYGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgb2J2aW91cyBzaWRlLWVmZmVjdHMgb3IgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODg3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAzOjQyOjA4LjU1NDk4MTYwNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjY1Mzg0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvaW5saW5lLmMtMjMtXFxuZnMvZXh0NC9pbmxpbmUuYzoyNDpzdGF0aWMgaW50IGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuZnMvZXh0NC9pbmxpbmUuYy0yNS1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmM9Njk4PWludCBleHQ0X2dlbmVyaWNfd3JpdGVfaW5saW5lX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsXFxuLS1cXG5mcy9leHQ0L2lubGluZS5jLTczMi1cXG5mcy9leHQ0L2lubGluZS5jOjczMzpcXHRcXHRyZXQgPSBleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50KG1hcHBpbmcsIGlub2RlLCBmc2RhdGEpO1xcbmZzL2V4dDQvaW5saW5lLmMtNzM0LVxcdFxcdGlmIChyZXQgPT0gLUVOT1NQQyBcXHUwMDI2XFx1MDAyNlxcbi0tXFxuZnMvZXh0NC9pbmxpbmUuYz03OTY9aW50IGV4dDRfd3JpdGVfaW5saW5lX2RhdGFfZW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBwb3MsIHVuc2lnbmVkIGxlbixcXG4tLVxcbmZzL2V4dDQvaW5saW5lLmMtODg2LSAqL1xcbmZzL2V4dDQvaW5saW5lLmM6ODg3OnN0YXRpYyBpbnQgZXh0NF9kYV9jb252ZXJ0X2lubGluZV9kYXRhX3RvX2V4dGVudChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyxcXG5mcy9leHQ0L2lubGluZS5jLTg4OC1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGlub2RlICppbm9kZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDM6NDI6MDguNjExNjQwMzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDU3OTA3ODMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBleHQ0IElubGluZSBEYXRhIENvbnZlcnNpb24gRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGhvbWluZyBpbiBvbiB0aGUgY29yZSBvZiB0aGlzIGlubGluZSBkYXRhIGNvbnZlcnNpb24gbG9naWMgd2l0aGluIGV4dDQuIFRoZSBrZXkgZnVuY3Rpb25zIEkgbmVlZCB0byBkaXNzZWN0IGFyZTogYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YWAsIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgLCBhbmQgYGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZmxvdyBhbmQgYmVoYXZpb3Igb2YgZWFjaCwgZXNwZWNpYWxseSBob3cgdGhleSBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIgYW5kIGhhbmRsZSBlcnJvciBjb25kaXRpb25zLlxuXG5Ob3csIGJlZm9yZSBJIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBpdHNlbGYsIGxldCdzIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZSByZWdhcmRpbmcgY29uZmlndXJhdGlvbnMuIE9idmlvdXNseSwgYEVYVDRfRlNgIGlzIGZ1bmRhbWVudGFsLCBidXQgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgaW1wYWN0IGlubGluZSBkYXRhIHNwZWNpZmljYWxseS4gSSdsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGRvdWJsZS1jaGVjayBgZnMvZXh0NC9LY29uZmlnYCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBJIGhhdmUgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIGFsbCB0aGUgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgYW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHBvaW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU2NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MjoxMi4wNjk1NTA0OTJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3ODIxMDQ2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbmxpbmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwMzo0MjoxMi4xMjczODIwMThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwNTYyNDM4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBFWFQ0IElubGluZSBEYXRhIENvbnZlcnNpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdHMgZnV6emluZyBpbXBsaWNhdGlvbnMuIE5vIHNwZWNpYWxpemVkIGNvbmZpZ3VyYXRpb25zIGFyZSBiZWluZyBpbnRyb2R1Y2VkIHdpdGhpbiBgZnMvZXh0NC9LY29uZmlnYCB0byB0YXJnZXQgdGhpcyBzcGVjaWZpYyBjaGFuZ2UsIG1lYW5pbmcgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiB0aGF0IGVuYWJsZXMgZXh0NCwgbmFtZWx5IGBFWFQ0X0ZTYCwgaXMgdGhlIHJlbGV2YW50IG9uZSB0byBmb2N1cyBvbiBoZXJlLlxuXG5MZXQncyBicmVhayBkb3duIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGlzIHRoZSBhZGRpdGlvbiBvZiB0aGUgYEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRGAgaW5vZGUgc3RhdGUgZmxhZy4gVGhpcyBzZWVtcyBjcnVjaWFsIGJlY2F1c2UgaXQgZGVhbHMgd2l0aCBwcmV2ZW50aW5nIHRoZSBzeXN0ZW0gZnJvbSByZXN0b3JpbmcgaW5saW5lIGRhdGEgb25jZSBpdCdzIGJlZW4gc2FmZWx5IGNvcGllZC4gVGhpcyBpcyBhYnNvbHV0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2XigJRpdCdzIHJpZ2h0IGluIHRoZSBjcml0aWNhbCBwYXRoIG9mIHRoZSBmaWxlc3lzdGVtLiBUaGVyZWZvcmUsIGZ1enppbmcgaXMgZGVmaW5pdGVseSB3YXJyYW50ZWQgYW5kIHdpbGwgYmUgYmVuZWZpY2lhbC5cblxuVGhlIHRlYW0gaGFzIGlkZW50aWZpZWQgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YWAsIGBleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrYCwgYGV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgLCBhbmQgYGV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRgIGFzIGtleSBzeW1ib2xzIHRvIHRhcmdldC4gQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyByZWxhdGUgZGlyZWN0bHkgdG8gdGhlIGlubGluZSBkYXRhIGNvbnZlcnNpb24gcHJvY2Vzcy4gSSBjb25jdXIgd2l0aCB0aGlzIGFzc2Vzc21lbnQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgd2hlcmUgdGhlIG5ldyBmbGFnIHdpbGwgYmUgdXNlZCwgYW5kIGFyZSB0aGVyZWZvcmUgdGhlIGJlc3QgdGFyZ2V0cyBmb3IgZGV0ZWN0aW5nIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlLiBVc2luZyB0aGVzZSBmdW5jdGlvbnMgZm9yIGZ1enppbmcgd2lsbCBiZSBlZmZlY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5NTcsIk91dHB1dFRva2VucyI6MTYyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDAzOjQyOjE3LjMzMzAwODkxOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5MDI5NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF9jb252ZXJ0X2lubGluZV9kYXRhXCIsXG4gICAgXCJleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfbm9sb2NrXCIsXG4gICAgXCJleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50XCIsXG4gICAgXCJleHQ0X2RhX2NvbnZlcnRfaW5saW5lX2RhdGFfdG9fZXh0ZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGlubGluZSBkYXRhIGNvbnZlcnNpb24gbG9naWMgaW4gZXh0NCBieSBpbnRyb2R1Y2luZyBhIG5ldyBpbm9kZSBzdGF0ZSBmbGFnIEVYVDRfU1RBVEVfSU5MSU5FX0NPTlZFUlRFRC4gVGhpcyBmbGFnIHByZXZlbnRzIHJlc3RvcmluZyBpbmxpbmUgZGF0YSBhZnRlciBpdCBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjb3BpZWQgb3V0LCBmaXhpbmcgcG90ZW50aWFsIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvbnNpc3RlbmNpZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X2NvbnZlcnRfaW5saW5lX2RhdGFcIixcbiAgICBcImV4dDRfY29udmVydF9pbmxpbmVfZGF0YV9ub2xvY2tcIixcbiAgICBcImV4dDRfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRcIixcbiAgICBcImV4dDRfZGFfY29udmVydF9pbmxpbmVfZGF0YV90b19leHRlbnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5saW5lIGRhdGEgY29udmVyc2lvbiBsb2dpYyBpbiBleHQ0IGJ5IGludHJvZHVjaW5nIGEgbmV3IGlub2RlIHN0YXRlIGZsYWcgRVhUNF9TVEFURV9JTkxJTkVfQ09OVkVSVEVELiBUaGlzIGZsYWcgcHJldmVudHMgcmVzdG9yaW5nIGlubGluZSBkYXRhIGFmdGVyIGl0IGhhcyBhbHJlYWR5IGJlZW4gc3VjY2Vzc2Z1bGx5IGNvcGllZCBvdXQsIGZpeGluZyBwb3RlbnRpYWwgZGF0YSBjb3JydXB0aW9uIG9yIGluY29uc2lzdGVuY2llcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2fbrl[1] Phase: Succeeded StartedAt: 2026-07-03 03:42:29 +0000 UTC FinishedAt: 2026-07-03 03:42:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-03 03:42:29 +0000 UTC FinishedAt: 2026-07-03 03:42:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2] Phase: Succeeded StartedAt: 2026-07-03 03:42:29 +0000 UTC FinishedAt: 2026-07-03 07:44:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-03 03:42:29 +0000 UTC FinishedAt: 2026-07-03 07:44:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-03 03:42:29 +0000 UTC FinishedAt: 2026-07-03 03:42:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-03 03:42:29 +0000 UTC FinishedAt: 2026-07-03 03:42:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow2fbrl/series-workflow2fbrl-convert-artifact-3597845996/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-03 03:42:39 +0000 UTC FinishedAt: 2026-07-03 04:08:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-03 03:42:39 +0000 UTC FinishedAt: 2026-07-03 04:08:06 +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:*e53b1bee-0b4b-41f4-810b-da9e29e5d289,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-workflow2fbrl/series-workflow2fbrl-convert-artifact-3597845996/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": "67fd4374-555c-4811-982e-b208ff8ff2f2", "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-workflow2fbrl/series-workflow2fbrl-build-action-2794467354/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-03 03:42:39 +0000 UTC FinishedAt: 2026-07-03 04:07:44 +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:*e53b1bee-0b4b-41f4-810b-da9e29e5d289,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-workflow2fbrl/series-workflow2fbrl-convert-artifact-3597845996/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": "67fd4374-555c-4811-982e-b208ff8ff2f2", "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-workflow2fbrl/series-workflow2fbrl-build-action-2794467354/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-03 04:08:06 +0000 UTC FinishedAt: 2026-07-03 04:08:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-03 04:08:06 +0000 UTC FinishedAt: 2026-07-03 04:08:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-03 04:08:06 +0000 UTC FinishedAt: 2026-07-03 04:08:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-03 04:08:06 +0000 UTC FinishedAt: 2026-07-03 04:08:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow2fbrl/series-workflow2fbrl-convert-artifact-3409734571/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-03 04:08:16 +0000 UTC FinishedAt: 2026-07-03 04:10:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-03 04:08:16 +0000 UTC FinishedAt: 2026-07-03 04:10:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*67fd4374-555c-4811-982e-b208ff8ff2f2,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-workflow2fbrl/series-workflow2fbrl-build-action-2794467354/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-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-03 04:10:19 +0000 UTC FinishedAt: 2026-07-03 04:10:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-03 04:10:19 +0000 UTC FinishedAt: 2026-07-03 04:10:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-03 04:10:19 +0000 UTC FinishedAt: 2026-07-03 04:37:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-03 04:10:19 +0000 UTC FinishedAt: 2026-07-03 04:37:59 +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:*e53b1bee-0b4b-41f4-810b-da9e29e5d289,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-workflow2fbrl/series-workflow2fbrl-convert-artifact-3409734571/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": "456b03a4-80f8-4433-a36c-8359f7a589ef", "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-workflow2fbrl/series-workflow2fbrl-build-action-3961920463/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-03 04:10:19 +0000 UTC FinishedAt: 2026-07-03 04:37:49 +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:*e53b1bee-0b4b-41f4-810b-da9e29e5d289,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-workflow2fbrl/series-workflow2fbrl-convert-artifact-3409734571/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": "456b03a4-80f8-4433-a36c-8359f7a589ef", "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-workflow2fbrl/series-workflow2fbrl-build-action-3961920463/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-03 04:37:59 +0000 UTC FinishedAt: 2026-07-03 04:37:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-03 04:37:59 +0000 UTC FinishedAt: 2026-07-03 04:37:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-03 04:37:59 +0000 UTC FinishedAt: 2026-07-03 04:40:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-03 04:37:59 +0000 UTC FinishedAt: 2026-07-03 04:40:06 +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:*456b03a4-80f8-4433-a36c-8359f7a589ef,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-workflow2fbrl/series-workflow2fbrl-build-action-3961920463/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-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-03 04:40:16 +0000 UTC FinishedAt: 2026-07-03 07:44:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-03 04:40:16 +0000 UTC FinishedAt: 2026-07-03 07:44:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"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:*67fd4374-555c-4811-982e-b208ff8ff2f2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*456b03a4-80f8-4433-a36c-8359f7a589ef,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-workflow2fbrl/series-workflow2fbrl-build-action-2794467354/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-workflow2fbrl/series-workflow2fbrl-build-action-3961920463/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-03 04:40:16 +0000 UTC FinishedAt: 2026-07-03 04:40:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-03 04:40:16 +0000 UTC FinishedAt: 2026-07-03 04:40:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"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-workflow2fbrl/series-workflow2fbrl-convert-artifact-3518055108/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-03 04:40:16 +0000 UTC FinishedAt: 2026-07-03 04:40:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-03 04:40:16 +0000 UTC FinishedAt: 2026-07-03 04:40:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-03 04:40:16 +0000 UTC FinishedAt: 2026-07-03 04:40:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-03 04:40:43 +0000 UTC FinishedAt: 2026-07-03 07:44:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2fbrl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_convert_inline_data","ext4_convert_inline_data_nolock","ext4_convert_inline_data_to_extent","ext4_da_convert_inline_data_to_extent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a50a141f05a8d1737661b19ee22ff8455b94409","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"334373c7-8ca9-43bf-af1e-920f6d8df4f8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-03 04:40:43 +0000 UTC FinishedAt: 2026-07-03 07:43:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*67fd4374-555c-4811-982e-b208ff8ff2f2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*456b03a4-80f8-4433-a36c-8359f7a589ef,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-workflow2fbrl/series-workflow2fbrl-build-action-2794467354/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-workflow2fbrl/series-workflow2fbrl-build-action-3961920463/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-workflow2fbrl/series-workflow2fbrl-convert-artifact-3518055108/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,}