Name: series-workflow7wt2l Phase: Succeeded StartedAt: 2026-07-29 04:42:26 +0000 UTC FinishedAt: 2026-07-29 09:14:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[0] Phase: Succeeded StartedAt: 2026-07-29 04:42:26 +0000 UTC FinishedAt: 2026-07-29 05:09:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 04:42:26 +0000 UTC FinishedAt: 2026-07-29 05:09:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "05c09c9c8a79d5539fef30d42e732eba90a15dcf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ISO9660_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "05c09c9c8a79d5539fef30d42e732eba90a15dcf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ISO9660_FS" ], "series_id": "bead9d99-6f45-4cb4-955f-8c0b871e6b56" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "isofs_lookup", "isofs_dir_record_valid", "isofs_readdir", "isofs_export_get_parent" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lTTzk2NjBfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpc29mc19sb29rdXAmIzM0OywKICAgICYjMzQ7aXNvZnNfZGlyX3JlY29yZF92YWxpZCYjMzQ7LAogICAgJiMzNDtpc29mc19yZWFkZGlyJiMzNDssCiAgICAmIzM0O2lzb2ZzX2V4cG9ydF9nZXRfcGFyZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgIHRvIHZhbGlkYXRlIElTTyA5NjYwIGRpcmVjdG9yeSByZWNvcmRzIGFuZCByZXBsYWNlcyBpbmxpbmUgc2FuaXR5IGNoZWNrcyB3aXRoIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gaW4gYGRvX2lzb2ZzX3JlYWRkaXJgLCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgLCBhbmQgYGlzb2ZzX2ZpbmRfZW50cnlgLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBmb3IgSVNPIDk2NjAsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCBieSBtb3VudGluZyBjcmFmdGVkIGRpc2sgaW1hZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjZmM2Y1NzYxMmI5MGNiZjc2MWRhOTdhNmQwMTk1ZTJlNTdjOTZkMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDA1OjA4OjQ3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2lzb2ZzL2Rpci5jIGIvZnMvaXNvZnMvZGlyLmNcbmluZGV4IGNjNTg3Y2QyNTE2MjMuLmE5NjI2OGM5Y2E0MTMgMTAwNjQ0XG4tLS0gYS9mcy9pc29mcy9kaXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaXNvZnMvZGlyLmNcbkBAIC0xNDksMTAgJiM0MzsxNDksOCBAQCBzdGF0aWMgaW50IGRvX2lzb2ZzX3JlYWRkaXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdFx0fVxuIFx0XHRcdGRlID0gdG1wZGU7XG4gXHRcdH1cbi1cdFx0LyogQmFzaWMgc2FuaXR5IGNoZWNrLCB3aGV0aGVyIG5hbWUgZG9lc24mIzM5O3QgZXhjZWVkIGRpciBlbnRyeSAqL1xuLVx0XHRpZiAoZGVfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKSB8fFxuLVx0XHQgICAgZGVfbGVuIFx1MDAzYyBkZS1cdTAwM2VuYW1lX2xlblswXSAmIzQzO1xuLVx0XHRcdFx0XHRzaXplb2Yoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKSkge1xuJiM0MztcdFx0aWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCBkZSA9PSB0bXBkZSA/IDAgOiBvZmZzZXRfc2F2ZWQsXG4mIzQzO1x0XHRcdFx0XHQgICAgZGUgPT0gdG1wZGUgPyBkZV9sZW4gOiBidWZzaXplKSkge1xuIFx0XHRcdHByaW50ayhLRVJOX05PVElDRSBcJiMzNDtpc285NjYwOiBDb3JydXB0ZWQgZGlyZWN0b3J5IGVudHJ5XCYjMzQ7XG4gXHRcdFx0ICAgICAgIFwmIzM0OyBpbiBibG9jayAlbHUgb2YgaW5vZGUgJWxsdVxcblwmIzM0OywgYmxvY2ssXG4gXHRcdFx0ICAgICAgIGlub2RlLVx1MDAzZWlfaW5vKTtcbkBAIC0zMDAsNCAmIzQzOzI5OCwzIEBAIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGlzb2ZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zID1cbiBcdC5maWxlYXR0cl9nZXQgPSBpc29mc19maWxlYXR0cl9nZXQsXG4gfTtcbiBcbi1cbmRpZmYgLS1naXQgYS9mcy9pc29mcy9leHBvcnQuYyBiL2ZzL2lzb2ZzL2V4cG9ydC5jXG5pbmRleCA3OGY4MGMxYTVjNTRhLi40ZjdmYTFkNTA4YTEzIDEwMDY0NFxuLS0tIGEvZnMvaXNvZnMvZXhwb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2lzb2ZzL2V4cG9ydC5jXG5AQCAtODMsMTMgJiM0Mzs4MywyMSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQoc3RydWN0IGRlbnRyeSAqY2hpbGQpXG4gXG4gXHQvKiBUaGlzIGlzIHRoZSBcJiMzNDsuXCYjMzQ7IGVudHJ5LiAqL1xuIFx0ZGUgPSAoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKiliaC1cdTAwM2ViX2RhdGE7XG4mIzQzO1x0aWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCAwLCBjaGlsZF9pbm9kZS1cdTAwM2VpX3NiLVx1MDAzZXNfYmxvY2tzaXplKSB8fFxuJiM0MztcdCAgICBpc29udW1fNzExKGRlLVx1MDAzZW5hbWVfbGVuKSAhPSAxIHx8IGRlLVx1MDAzZW5hbWVbMF0gIT0gMCkge1xuJiM0MztcdFx0cHJpbnRrKEtFUk5fRVJSIFwmIzM0O2lzb2ZzOiBVbmFibGUgdG8gZmluZCB0aGUgXFxcJiMzNDsuXFxcJiMzNDsgZGlyZWN0b3J5IGZvciBORlMuXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJ2ID0gRVJSX1BUUigtRUFDQ0VTKTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiBcbiBcdC8qIFRoZSBcJiMzNDsuLlwmIzM0OyBlbnRyeSBpcyBhbHdheXMgdGhlIHNlY29uZCBlbnRyeS4gKi9cbiBcdHBhcmVudF9vZmZzZXQgPSAodW5zaWduZWQgbG9uZylpc29udW1fNzExKGRlLVx1MDAzZWxlbmd0aCk7XG4gXHRkZSA9IChzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQqKShiaC1cdTAwM2ViX2RhdGEgJiM0MzsgcGFyZW50X29mZnNldCk7XG4gXG4gXHQvKiBWZXJpZnkgaXQgaXMgaW4gZmFjdCB0aGUgXCYjMzQ7Li5cJiMzNDsgZW50cnkuICovXG4tXHRpZiAoKGlzb251bV83MTEoZGUtXHUwMDNlbmFtZV9sZW4pICE9IDEpIHx8IChkZS1cdTAwM2VuYW1lWzBdICE9IDEpKSB7XG4mIzQzO1x0aWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCBwYXJlbnRfb2Zmc2V0LFxuJiM0MztcdFx0XHRcdCAgICBjaGlsZF9pbm9kZS1cdTAwM2VpX3NiLVx1MDAzZXNfYmxvY2tzaXplKSB8fFxuJiM0MztcdCAgICBpc29udW1fNzExKGRlLVx1MDAzZW5hbWVfbGVuKSAhPSAxIHx8IGRlLVx1MDAzZW5hbWVbMF0gIT0gMSkge1xuIFx0XHRwcmludGsoS0VSTl9FUlIgXCYjMzQ7aXNvZnM6IFVuYWJsZSB0byBmaW5kIHRoZSBcXFwmIzM0Oy4uXFxcJiMzNDsgXCYjMzQ7XG4gXHRcdCAgICAgICBcJiMzNDtkaXJlY3RvcnkgZm9yIE5GUy5cXG5cJiMzNDspO1xuIFx0XHRydiA9IEVSUl9QVFIoLUVBQ0NFUyk7XG5kaWZmIC0tZ2l0IGEvZnMvaXNvZnMvaXNvZnMuaCBiL2ZzL2lzb2ZzL2lzb2ZzLmhcbmluZGV4IDBlYzhiMjRhNDJlZGMuLmRhY2I5Y2RhZTRmZDEgMTAwNjQ0XG4tLS0gYS9mcy9pc29mcy9pc29mcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9pc29mcy9pc29mcy5oXG5AQCAtMTE1LDYgJiM0MzsxMTUsOSBAQCBzdHJ1Y3QgaW5vZGU7XHRcdC8qIFRvIG1ha2UgZ2NjIGhhcHB5ICovXG4gZXh0ZXJuIGludCBwYXJzZV9yb2NrX3JpZGdlX2lub2RlKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBzdHJ1Y3QgaW5vZGUgKiwgaW50IHJlbG9jYXRlZCk7XG4gZXh0ZXJuIGludCBnZXRfcm9ja19yaWRnZV9maWxlbmFtZShzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKiwgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKik7XG4gZXh0ZXJuIGludCBpc29mc19uYW1lX3RyYW5zbGF0ZShzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKiwgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKik7XG4mIzQzO2Jvb2wgaXNvZnNfZGlyX3JlY29yZF92YWxpZChzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKmRlLFxuJiM0MztcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsXG4mIzQzO1x0XHRcdCAgICB1bnNpZ25lZCBsb25nIGJ1ZnNpemUpO1xuIFxuIGludCBnZXRfam9saWV0X2ZpbGVuYW1lKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCB1bnNpZ25lZCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTtcbiBpbnQgZ2V0X2Fjb3JuX2ZpbGVuYW1lKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTtcbmRpZmYgLS1naXQgYS9mcy9pc29mcy9uYW1laS5jIGIvZnMvaXNvZnMvbmFtZWkuY1xuaW5kZXggM2FjZTNkNmE1NWU3OS4uYTE2MWIyODg5M2Q2MyAxMDA2NDRcbi0tLSBhL2ZzL2lzb2ZzL25hbWVpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2lzb2ZzL25hbWVpLmNcbkBAIC0xMCw2ICYjNDM7MTAsMjYgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9nZnAuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O2lzb2ZzLmhcJiMzNDtcbiBcbiYjNDM7Ym9vbCBpc29mc19kaXJfcmVjb3JkX3ZhbGlkKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqZGUsXG4mIzQzO1x0XHRcdCAgICB1bnNpZ25lZCBsb25nIG9mZnNldCxcbiYjNDM7XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgYnVmc2l6ZSlcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGludCBsZW47XG4mIzQzO1x0dW5zaWduZWQgaW50IG5hbWVfbGVuO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgbWluX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCwgbmFtZSk7XG4mIzQzO1xuJiM0MztcdGlmIChvZmZzZXQgXHUwMDNlIGJ1ZnNpemUgfHwgYnVmc2l6ZSAtIG9mZnNldCBcdTAwM2MgbWluX2xlbilcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0bGVuID0gaXNvbnVtXzcxMShkZS1cdTAwM2VsZW5ndGgpO1xuJiM0MztcdG5hbWVfbGVuID0gaXNvbnVtXzcxMShkZS1cdTAwM2VuYW1lX2xlbik7XG4mIzQzO1x0aWYgKGxlbiBcdTAwM2MgbWluX2xlbiB8fCBuYW1lX2xlbiBcdTAwM2UgbGVuIC0gbWluX2xlbilcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRpZiAobGVuIFx1MDAzZSBidWZzaXplIC0gb2Zmc2V0KVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnRcbiBpc29mc19jbXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpjb21wYXJlLCBpbnQgZGxlbilcbiB7XG5AQCAtODgsMTYgJiM0MzsxMDgsMTYgQEAgaXNvZnNfZmluZF9lbnRyeShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuIFx0XHRcdGRlID0gdG1wZGU7XG4gXHRcdH1cbiBcbi1cdFx0ZGxlbiA9IGRlLVx1MDAzZW5hbWVfbGVuWzBdO1xuLVx0XHRkcG50ID0gZGUtXHUwMDNlbmFtZTtcbi1cdFx0LyogQmFzaWMgc2FuaXR5IGNoZWNrLCB3aGV0aGVyIG5hbWUgZG9lc24mIzM5O3QgZXhjZWVkIGRpciBlbnRyeSAqL1xuLVx0XHRpZiAoZGVfbGVuIFx1MDAzYyBkbGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQpKSB7XG4mIzQzO1x0XHRpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIGRlID09IHRtcGRlID8gMCA6IG9mZnNldF9zYXZlZCxcbiYjNDM7XHRcdFx0XHRcdCAgICBkZSA9PSB0bXBkZSA/IGRlX2xlbiA6IGJ1ZnNpemUpKSB7XG4gXHRcdFx0cHJpbnRrKEtFUk5fTk9USUNFIFwmIzM0O2lzbzk2NjA6IENvcnJ1cHRlZCBkaXJlY3RvcnkgZW50cnlcJiMzNDtcbiBcdFx0XHQgICAgICAgXCYjMzQ7IGluIGJsb2NrICVsdSBvZiBpbm9kZSAlbGx1XFxuXCYjMzQ7LCBibG9jayxcbiBcdFx0XHQgICAgICAgZGlyLVx1MDAzZWlfaW5vKTtcbiBcdFx0XHRicmVsc2UoYmgpO1xuIFx0XHRcdHJldHVybiAwO1xuIFx0XHR9XG4mIzQzO1x0XHRkbGVuID0gZGUtXHUwMDNlbmFtZV9sZW5bMF07XG4mIzQzO1x0XHRkcG50ID0gZGUtXHUwMDNlbmFtZTtcbiBcbiBcdFx0aWYgKHNiaS1cdTAwM2VzX3JvY2sgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAoKGkgPSBnZXRfcm9ja19yaWRnZV9maWxlbmFtZShkZSwgdG1wbmFtZSwgZGlyKSkpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lTTzk2NjBfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpc29mc19sb29rdXAmIzM0OywKICAgICYjMzQ7aXNvZnNfZGlyX3JlY29yZF92YWxpZCYjMzQ7LAogICAgJiMzNDtpc29mc19yZWFkZGlyJiMzNDssCiAgICAmIzM0O2lzb2ZzX2V4cG9ydF9nZXRfcGFyZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgIHRvIHZhbGlkYXRlIElTTyA5NjYwIGRpcmVjdG9yeSByZWNvcmRzIGFuZCByZXBsYWNlcyBpbmxpbmUgc2FuaXR5IGNoZWNrcyB3aXRoIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gaW4gYGRvX2lzb2ZzX3JlYWRkaXJgLCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgLCBhbmQgYGlzb2ZzX2ZpbmRfZW50cnlgLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBmb3IgSVNPIDk2NjAsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCBieSBtb3VudGluZyBjcmFmdGVkIGRpc2sgaW1hZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjZmM2Y1NzYxMmI5MGNiZjc2MWRhOTdhNmQwMTk1ZTJlNTdjOTZkMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDI5IDA1OjA4OjQ3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvaXNvZnMvZGlyLmMgYi9mcy9pc29mcy9kaXIuYwppbmRleCBjYzU4N2NkMjUxNjIzLi5hOTYyNjhjOWNhNDEzIDEwMDY0NAotLS0gYS9mcy9pc29mcy9kaXIuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9pc29mcy9kaXIuYwpAQCAtMTQ5LDEwICYjNDM7MTQ5LDggQEAgc3RhdGljIGludCBkb19pc29mc19yZWFkZGlyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLAogCQkJfQogCQkJZGUgPSB0bXBkZTsKIAkJfQotCQkvKiBCYXNpYyBzYW5pdHkgY2hlY2ssIHdoZXRoZXIgbmFtZSBkb2VzbiYjMzk7dCBleGNlZWQgZGlyIGVudHJ5ICovCi0JCWlmIChkZV9sZW4gJmx0OyBzaXplb2Yoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKSB8fAotCQkgICAgZGVfbGVuICZsdDsgZGUtJmd0O25hbWVfbGVuWzBdICYjNDM7Ci0JCQkJCXNpemVvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQpKSB7CiYjNDM7CQlpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIGRlID09IHRtcGRlID8gMCA6IG9mZnNldF9zYXZlZCwKJiM0MzsJCQkJCSAgICBkZSA9PSB0bXBkZSA/IGRlX2xlbiA6IGJ1ZnNpemUpKSB7CiAJCQlwcmludGsoS0VSTl9OT1RJQ0UgJiMzNDtpc285NjYwOiBDb3JydXB0ZWQgZGlyZWN0b3J5IGVudHJ5JiMzNDsKIAkJCSAgICAgICAmIzM0OyBpbiBibG9jayAlbHUgb2YgaW5vZGUgJWxsdVxuJiMzNDssIGJsb2NrLAogCQkJICAgICAgIGlub2RlLSZndDtpX2lubyk7CkBAIC0zMDAsNCAmIzQzOzI5OCwzIEBAIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGlzb2ZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zID0KIAkuZmlsZWF0dHJfZ2V0ID0gaXNvZnNfZmlsZWF0dHJfZ2V0LAogfTsKIAotCmRpZmYgLS1naXQgYS9mcy9pc29mcy9leHBvcnQuYyBiL2ZzL2lzb2ZzL2V4cG9ydC5jCmluZGV4IDc4ZjgwYzFhNWM1NGEuLjRmN2ZhMWQ1MDhhMTMgMTAwNjQ0Ci0tLSBhL2ZzL2lzb2ZzL2V4cG9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2lzb2ZzL2V4cG9ydC5jCkBAIC04MywxMyAmIzQzOzgzLDIxIEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICppc29mc19leHBvcnRfZ2V0X3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpjaGlsZCkKIAogCS8qIFRoaXMgaXMgdGhlICYjMzQ7LiYjMzQ7IGVudHJ5LiAqLwogCWRlID0gKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCopYmgtJmd0O2JfZGF0YTsKJiM0MzsJaWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCAwLCBjaGlsZF9pbm9kZS0mZ3Q7aV9zYi0mZ3Q7c19ibG9ja3NpemUpIHx8CiYjNDM7CSAgICBpc29udW1fNzExKGRlLSZndDtuYW1lX2xlbikgIT0gMSB8fCBkZS0mZ3Q7bmFtZVswXSAhPSAwKSB7CiYjNDM7CQlwcmludGsoS0VSTl9FUlIgJiMzNDtpc29mczogVW5hYmxlIHRvIGZpbmQgdGhlIFwmIzM0Oy5cJiMzNDsgZGlyZWN0b3J5IGZvciBORlMuXG4mIzM0Oyk7CiYjNDM7CQlydiA9IEVSUl9QVFIoLUVBQ0NFUyk7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQogCiAJLyogVGhlICYjMzQ7Li4mIzM0OyBlbnRyeSBpcyBhbHdheXMgdGhlIHNlY29uZCBlbnRyeS4gKi8KIAlwYXJlbnRfb2Zmc2V0ID0gKHVuc2lnbmVkIGxvbmcpaXNvbnVtXzcxMShkZS0mZ3Q7bGVuZ3RoKTsKIAlkZSA9IChzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQqKShiaC0mZ3Q7Yl9kYXRhICYjNDM7IHBhcmVudF9vZmZzZXQpOwogCiAJLyogVmVyaWZ5IGl0IGlzIGluIGZhY3QgdGhlICYjMzQ7Li4mIzM0OyBlbnRyeS4gKi8KLQlpZiAoKGlzb251bV83MTEoZGUtJmd0O25hbWVfbGVuKSAhPSAxKSB8fCAoZGUtJmd0O25hbWVbMF0gIT0gMSkpIHsKJiM0MzsJaWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCBwYXJlbnRfb2Zmc2V0LAomIzQzOwkJCQkgICAgY2hpbGRfaW5vZGUtJmd0O2lfc2ItJmd0O3NfYmxvY2tzaXplKSB8fAomIzQzOwkgICAgaXNvbnVtXzcxMShkZS0mZ3Q7bmFtZV9sZW4pICE9IDEgfHwgZGUtJmd0O25hbWVbMF0gIT0gMSkgewogCQlwcmludGsoS0VSTl9FUlIgJiMzNDtpc29mczogVW5hYmxlIHRvIGZpbmQgdGhlIFwmIzM0Oy4uXCYjMzQ7ICYjMzQ7CiAJCSAgICAgICAmIzM0O2RpcmVjdG9yeSBmb3IgTkZTLlxuJiMzNDspOwogCQlydiA9IEVSUl9QVFIoLUVBQ0NFUyk7CmRpZmYgLS1naXQgYS9mcy9pc29mcy9pc29mcy5oIGIvZnMvaXNvZnMvaXNvZnMuaAppbmRleCAwZWM4YjI0YTQyZWRjLi5kYWNiOWNkYWU0ZmQxIDEwMDY0NAotLS0gYS9mcy9pc29mcy9pc29mcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2lzb2ZzL2lzb2ZzLmgKQEAgLTExNSw2ICYjNDM7MTE1LDkgQEAgc3RydWN0IGlub2RlOwkJLyogVG8gbWFrZSBnY2MgaGFwcHkgKi8KIGV4dGVybiBpbnQgcGFyc2Vfcm9ja19yaWRnZV9pbm9kZShzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKiwgc3RydWN0IGlub2RlICosIGludCByZWxvY2F0ZWQpOwogZXh0ZXJuIGludCBnZXRfcm9ja19yaWRnZV9maWxlbmFtZShzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKiwgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKik7CiBleHRlcm4gaW50IGlzb2ZzX25hbWVfdHJhbnNsYXRlKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTsKJiM0Mztib29sIGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSwKJiM0MzsJCQkgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsCiYjNDM7CQkJICAgIHVuc2lnbmVkIGxvbmcgYnVmc2l6ZSk7CiAKIGludCBnZXRfam9saWV0X2ZpbGVuYW1lKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCB1bnNpZ25lZCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTsKIGludCBnZXRfYWNvcm5fZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICosIGNoYXIgKiwgc3RydWN0IGlub2RlICopOwpkaWZmIC0tZ2l0IGEvZnMvaXNvZnMvbmFtZWkuYyBiL2ZzL2lzb2ZzL25hbWVpLmMKaW5kZXggM2FjZTNkNmE1NWU3OS4uYTE2MWIyODg5M2Q2MyAxMDA2NDQKLS0tIGEvZnMvaXNvZnMvbmFtZWkuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9pc29mcy9uYW1laS5jCkBAIC0xMCw2ICYjNDM7MTAsMjYgQEAKICNpbmNsdWRlICZsdDtsaW51eC9nZnAuaCZndDsKICNpbmNsdWRlICYjMzQ7aXNvZnMuaCYjMzQ7CiAKJiM0Mztib29sIGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSwKJiM0MzsJCQkgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsCiYjNDM7CQkJICAgIHVuc2lnbmVkIGxvbmcgYnVmc2l6ZSkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBsZW47CiYjNDM7CXVuc2lnbmVkIGludCBuYW1lX2xlbjsKJiM0MzsJdW5zaWduZWQgbG9uZyBtaW5fbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkLCBuYW1lKTsKJiM0MzsKJiM0MzsJaWYgKG9mZnNldCAmZ3Q7IGJ1ZnNpemUgfHwgYnVmc2l6ZSAtIG9mZnNldCAmbHQ7IG1pbl9sZW4pCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWxlbiA9IGlzb251bV83MTEoZGUtJmd0O2xlbmd0aCk7CiYjNDM7CW5hbWVfbGVuID0gaXNvbnVtXzcxMShkZS0mZ3Q7bmFtZV9sZW4pOwomIzQzOwlpZiAobGVuICZsdDsgbWluX2xlbiB8fCBuYW1lX2xlbiAmZ3Q7IGxlbiAtIG1pbl9sZW4pCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CWlmIChsZW4gJmd0OyBidWZzaXplIC0gb2Zmc2V0KQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50CiBpc29mc19jbXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpjb21wYXJlLCBpbnQgZGxlbikKIHsKQEAgLTg4LDE2ICYjNDM7MTA4LDE2IEBAIGlzb2ZzX2ZpbmRfZW50cnkoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKIAkJCWRlID0gdG1wZGU7CiAJCX0KIAotCQlkbGVuID0gZGUtJmd0O25hbWVfbGVuWzBdOwotCQlkcG50ID0gZGUtJmd0O25hbWU7Ci0JCS8qIEJhc2ljIHNhbml0eSBjaGVjaywgd2hldGhlciBuYW1lIGRvZXNuJiMzOTt0IGV4Y2VlZCBkaXIgZW50cnkgKi8KLQkJaWYgKGRlX2xlbiAmbHQ7IGRsZW4gJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCkpIHsKJiM0MzsJCWlmICghaXNvZnNfZGlyX3JlY29yZF92YWxpZChkZSwgZGUgPT0gdG1wZGUgPyAwIDogb2Zmc2V0X3NhdmVkLAomIzQzOwkJCQkJICAgIGRlID09IHRtcGRlID8gZGVfbGVuIDogYnVmc2l6ZSkpIHsKIAkJCXByaW50ayhLRVJOX05PVElDRSAmIzM0O2lzbzk2NjA6IENvcnJ1cHRlZCBkaXJlY3RvcnkgZW50cnkmIzM0OwogCQkJICAgICAgICYjMzQ7IGluIGJsb2NrICVsdSBvZiBpbm9kZSAlbGx1XG4mIzM0OywgYmxvY2ssCiAJCQkgICAgICAgZGlyLSZndDtpX2lubyk7CiAJCQlicmVsc2UoYmgpOwogCQkJcmV0dXJuIDA7CiAJCX0KJiM0MzsJCWRsZW4gPSBkZS0mZ3Q7bmFtZV9sZW5bMF07CiYjNDM7CQlkcG50ID0gZGUtJmd0O25hbWU7CiAKIAkJaWYgKHNiaS0mZ3Q7c19yb2NrICZhbXA7JmFtcDsKIAkJICAgICgoaSA9IGdldF9yb2NrX3JpZGdlX2ZpbGVuYW1lKGRlLCB0bXBuYW1lLCBkaXIpKSkpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU3NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgSVNPIDk2NjAgRmlsZXN5c3RlbSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgc29tZSBwcmV0dHkgY3J1Y2lhbCBwYXJ0cyBvZiB0aGUgSVNPIDk2NjAgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbi4gSXQmIzM5O3MgbW9kaWZ5aW5nIGBmcy9pc29mcy9kaXIuY2AsIGBmcy9pc29mcy9leHBvcnQuY2AsIGBmcy9pc29mcy9pc29mcy5oYCwgYW5kIGBmcy9pc29mcy9uYW1laS5jYC4gIExvb2tzIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgbmV3IGZ1bmN0aW9uLCBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAsIHdoaWNoIGlzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLiBUaGlzIHN1Z2dlc3RzIHRoZXkmIzM5O3JlIHN0cmVuZ3RoZW5pbmcgdGhlIHZhbGlkYXRpb24gb2YgZGlyZWN0b3J5IHJlY29yZHMgd2l0aGluIHRoZSBmaWxlc3lzdGVtLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gc2VlIGluIHRoaXMga2luZCBvZiBjb2RlLiBUaGV5JiMzOTtyZSByZXBsYWNpbmcgc29tZSBpbi1saW5lIHNhbml0eSBjaGVja3Mgd2l0aCBjYWxscyB0byB0aGlzIG5ldyBmdW5jdGlvbiwgd2hpY2ggc2hvdWxkIG1ha2UgdGhlIGNvZGUgY2xlYW5lciBhbmQgZWFzaWVyIHRvIG1haW50YWluLgoKTm93LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgc2NvcGUuIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9ucyBhZmZlY3RlZCBhcmU6IGBkb19pc29mc19yZWFkZGlyYCBmcm9tIGBkaXIuY2AgKHRoYXQmIzM5O3MgYSBjb3JlIGRpcmVjdG9yeSByZWFkaW5nIG9wZXJhdGlvbiEpLCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgIGZyb20gYGV4cG9ydC5jYCAocmVsYXRlZCB0byBleHBvcnRpbmcgZmlsZXN5c3RlbSBpbmZvcm1hdGlvbiksIGBpc29mc19maW5kX2VudHJ5YCBmcm9tIGBuYW1laS5jYCAodGhlIGVudHJ5IHBvaW50IGZvciBzZWFyY2hpbmcgZm9yIGZpbGVzKSwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBuZXcgYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgIGZyb20gYG5hbWVpLmNgLiBBbGwgcmVhY2hhYmxlIGtlcm5lbCBsb2dpYy4KClRoZSBmYWN0IHRoYXQgdGhpcyBwYXRjaCBpcyB0YXJnZXRpbmcgdGhlIElTTyA5NjYwIGZpbGVzeXN0ZW0gaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBmaWxlc3lzdGVtIHN0aWxsIGNvbW1vbmx5IHVzZWQgZm9yIENELVJPTXMsIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgY2FuIGJlIG1vdW50ZWQgdGhyb3VnaCBsb29wYmFjayBkZXZpY2VzLiBUaGF0IG1lYW5zIHVudHJ1c3RlZCBkYXRhIGNhbiByZWFjaCB0aGUga2VybmVsIGNvZGUsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBXZSBtaWdodCBiZSBhYmxlIHRvIGNyYWZ0IG1hbGljaW91cyBJU08gaW1hZ2VzIGFuZCBmZWVkIHRoZW0gdG8gdGhlIGtlcm5lbCB0aHJvdWdoIGEgbG9vcGJhY2sgbW91bnQuCgpTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBjb250cm9sIHRoZSBJU08gOTY2MCBmaWxlc3lzdGVtLiBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIHNlYXJjaCB0aGUgYGZzL2lzb2ZzL0tjb25maWdgIGZpbGUgYW5kIGlkZW50aWZ5IGFueSByZWxldmFudCBmbGFncywgbGlrZSBgSVNPOTY2MF9GU2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRvIHNlZSBob3cgdG8gZW5hYmxlIGFuZCB0ZXN0IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElTTzk2NjBfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9pc29mcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2lzb2ZzL0tjb25maWc6Mjpjb25maWcgSVNPOTY2MF9GU1xuZnMvaXNvZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SVNPIDk2NjAgQ0RST00gZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NTQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyB0aGUgSVNPOTY2MCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBJU085NjYwX0ZTYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgdGhhdCYjMzk7cyB0aGUgYmFzZS4gQnV0IHdoYXQgZWxzZSBpcyByZXF1aXJlZCB0byBtYWtlIHRoaXMgd29yayBjb3JyZWN0bHk/JiMzNDsgSXQmIzM5O3MgcmFyZWx5IGEgc3RhbmRhbG9uZSBvcHRpb24uCgpJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBhbG1vc3QgY2VydGFpbiB0aGVyZSYjMzk7cyBhIHByZXJlcXVpc2l0ZSDigJMgc29tZXRoaW5nIGZvdW5kYXRpb25hbCDigJMgcHJvYmFibHkgc29tZXRoaW5nIGFsb25nIHRoZSBsaW5lcyBvZiBgZGVwZW5kcyBvbiBCTE9DS2AuIFRoaXMgaXMgdGhlIHN0YW5kYXJkLCBhZnRlciBhbGwsIGFuZCBJJiMzOTtkIGJlIHZlcnkgc3VycHJpc2VkIGlmIGl0IHdhc24mIzM5O3QgdGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoYXQmIzM5O3MgdGhlIGNhc2UuIEl0JiMzOTtzIGEgc3RhbmRhcmQgZGVwZW5kZW5jeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaXNvZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pc29mcy9LY29uZmlnPTE5PWNvbmZpZyBKT0xJRVRcbmZzL2lzb2ZzL0tjb25maWctMjAtXHRib29sIFwmIzM0O01pY3Jvc29mdCBKb2xpZXQgQ0RST00gZXh0ZW5zaW9uc1wmIzM0O1xuZnMvaXNvZnMvS2NvbmZpZzoyMTpcdGRlcGVuZHMgb24gSVNPOTY2MF9GU1xuZnMvaXNvZnMvS2NvbmZpZy0yMi1cdHNlbGVjdCBOTFNcbi0tXG5mcy9pc29mcy9LY29uZmlnPTMxPWNvbmZpZyBaSVNPRlNcbmZzL2lzb2ZzL0tjb25maWctMzItXHRib29sIFwmIzM0O1RyYW5zcGFyZW50IGRlY29tcHJlc3Npb24gZXh0ZW5zaW9uXCYjMzQ7XG5mcy9pc29mcy9LY29uZmlnOjMzOlx0ZGVwZW5kcyBvbiBJU085NjYwX0ZTXG5mcy9pc29mcy9LY29uZmlnLTM0LVx0c2VsZWN0IFpMSUJfSU5GTEFURVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NDYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBJU085NjYwIEZpbGVzeXN0ZW0gRGVwZW5kZW5jaWVzKioKCkhtbSwgaG9sZCBvbiBhIG1pbnV0ZS4gSSB3YXMganVzdCByZXZpZXdpbmcgdGhlIGZpbGVzeXN0ZW0gZGVwZW5kZW5jaWVzLCBhbmQgaXQgc2VlbXMgKmRpcmVjdGx5KiBsb29raW5nIGF0IGBJU085NjYwX0ZTYCwgdGhlIElTTzk2NjAgZmlsZXN5c3RlbSBpdHNlbGYsIGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IHJldmVhbCBhbnkgJiMzNDtkZXBlbmRzIG9uJiMzNDsgcmVsYXRpb25zaGlwcy4gVGhhdCYjMzk7cyBhIGJpdCBvZGQsIGlzbiYjMzk7dCBpdD8gR2VuZXJhbGx5LCBmaWxlc3lzdGVtcyBoYXZlIGRlcGVuZGVuY2llcywgZXZlbiBpZiB0aGV5JiMzOTtyZSBtaW5pbWFsLgoKUmlnaHQsIHNvIHdoZXJlJiMzOTtzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBpdHMgcmVxdWlyZW1lbnRzLCBhbnkgZmxhZ3MgaXQgbmVlZHM/IFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgYGZzL2lzb2ZzL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBmaWxlc3lzdGVtIHNob3VsZCBsaWUuIFRoYXQgc2hvdWxkIGxheSBpdCBhbGwgb3V0IGZvciBtZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvaXNvZnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBJU085NjYwX0ZTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJU08gOTY2MCBDRFJPTSBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRzZWxlY3QgQlVGRkVSX0hFQURcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBpcyB0aGUgc3RhbmRhcmQgZmlsZSBzeXN0ZW0gdXNlZCBvbiBDRC1ST01zLiAgSXQgd2FzIHByZXZpb3VzbHlcbiAgIDc6XHRcdCAga25vd24gYXMgXCYjMzQ7SGlnaCBTaWVycmEgRmlsZSBTeXN0ZW1cJiMzNDsgYW5kIGlzIGNhbGxlZCBcJiMzNDtoc2ZzXCYjMzQ7IG9uIG90aGVyXG4gICA4Olx0XHQgIFVuaXggc3lzdGVtcy4gIFRoZSBzby1jYWxsZWQgUm9jay1SaWRnZSBleHRlbnNpb25zIHdoaWNoIGFsbG93IGZvclxuICAgOTpcdFx0ICBsb25nIFVuaXggZmlsZW5hbWVzIGFuZCBzeW1ib2xpYyBsaW5rcyBhcmUgYWxzbyBzdXBwb3J0ZWQgYnkgdGhpc1xuICAxMDpcdFx0ICBkcml2ZXIuICBJZiB5b3UgaGF2ZSBhIENELVJPTSBkcml2ZSBhbmQgd2FudCB0byBkbyBtb3JlIHdpdGggaXQgdGhhblxuICAxMTpcdFx0ICBqdXN0IGxpc3RlbiB0byBhdWRpbyBDRHMgYW5kIHdhdGNoIGl0cyBMRURzLCBzYXkgWSAoYW5kIHJlYWRcbiAgMTI6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lzb2ZzLnJzdFx1MDAzZSBhbmQgdGhlIENELVJPTS1IT1dUTyxcbiAgMTM6XHRcdCAgYXZhaWxhYmxlIGZyb20gXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG9cdTAwM2UpLCB0aGVyZWJ5XG4gIDE0Olx0XHQgIGVubGFyZ2luZyB5b3VyIGtlcm5lbCBieSBhYm91dCAyNyBLQjsgb3RoZXJ3aXNlIHNheSBOLlxuICAxNTpcdFxuICAxNjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZmlsZSBzeXN0ZW0gc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDE3Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpc29mcy5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgSk9MSUVUXG4gIDIwOlx0XHRib29sIFwmIzM0O01pY3Jvc29mdCBKb2xpZXQgQ0RST00gZXh0ZW5zaW9uc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NzEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJU085NjYwIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGUgSVNPOTY2MCBmaWxlc3lzdGVtLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gaW5jbHVkZSBgSVNPOTY2MF9GU2AgYXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBlbGVtZW50LiBUaG91Z2gsIEkgd2FzIGFib3V0IHRvIGFsc28gaW5jbHVkZSBgQkxPQ0tgLCBidXQgc2luY2UgYEJMT0NLYCBpcyB1c3VhbGx5IGVuYWJsZWQgYWxvbmdzaWRlIGBJU085NjYwX0ZTYCwgdGhlIG1vcmUgc3BlY2lmaWMgYElTTzk2NjBfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50LgoKTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBpbnZvbHZlZC4gTXkgZm9jdXMgaXMgb246CgoqICAgYGRvX2lzb2ZzX3JlYWRkaXJgIC0gSXQgYXBwZWFycyB0byBiZSBzdGF0aWM7IEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IHRvIGJlIGNlcnRhaW4uCiogICBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgIC0gQW5vdGhlciBwb3RlbnRpYWwgc3RhdGljIGZ1bmN0aW9uOyBJJiMzOTtsbCBmbGFnIGl0IGZvciB2ZXJpZmljYXRpb24uCiogICBgaXNvZnNfZmluZF9lbnRyeWAgLSBTYW1lIGFzIGFib3ZlLCBJIHNob3VsZCB2ZXJpZnkgaWYgaXQmIzM5O3Mgc3RhdGljLgoqICAgYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgIC0gVGhpcyBvbmUgaXMgKm5vdCogc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGtub3cgaW1tZWRpYXRlbHkuCgpUbyBiZWdpbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTtsbCBzdGFydCB3aXRoIGBmcy9pc29mcy9kaXIuY2AgYW5kIHNwZWNpZmljYWxseSBleGFtaW5lIGBkb19pc29mc19yZWFkZGlyYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9faXNvZnNfcmVhZGRpciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL2Rpci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL2Rpci5jPTUzPWludCBnZXRfYWNvcm5fZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSxcbi0tXG5mcy9pc29mcy9kaXIuYy04NC0gKi9cbmZzL2lzb2ZzL2Rpci5jOjg1OnN0YXRpYyBpbnQgZG9faXNvZnNfcmVhZGRpcihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbmZzL2lzb2ZzL2Rpci5jLTg2LVx0XHRzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCxcbi0tXG5mcy9pc29mcy9kaXIuYy0yNDgtICogaGFuZGxpbmcgc3BsaXQgZGlyZWN0b3J5IGVudHJpZXMuLiBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnlcbmZzL2lzb2ZzL2Rpci5jOjI0OTogKiBcJiMzNDtkb19pc29mc19yZWFkZGlyKClcJiMzNDsuXG5mcy9pc29mcy9kaXIuYy0yNTAtICovXG5mcy9pc29mcy9kaXIuYz0yNTE9c3RhdGljIGludCBpc29mc19yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eClcbi0tXG5mcy9pc29mcy9kaXIuYy0yNjMtXG5mcy9pc29mcy9kaXIuYzoyNjQ6XHRyZXN1bHQgPSBkb19pc29mc19yZWFkZGlyKGlub2RlLCBmaWxlLCBjdHgsIHRtcG5hbWUsIHRtcGRlKTtcbmZzL2lzb2ZzL2Rpci5jLTI2NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIyNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIElTT0ZTIEZpbGUgU3lzdGVtKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYGRvX2lzb2ZzX3JlYWRkaXJgIGZ1bmN0aW9uLiBJdCYjMzk7cyBtYXJrZWQgYXMgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZzsgSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBUaGUgZXh0ZXJuYWwgZW50cnkgcG9pbnQgZm9yIHJlYWRpbmcgYSBkaXJlY3RvcnkgaW4gSVNPRlMgc2VlbXMgdG8gYmUgYGlzb2ZzX3JlYWRkaXJgLCBhbmQgdGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBwb2ludCBJJiMzOTttIGludGVyZXN0ZWQgaW4gaGVyZS4KCk5vdywgd2hlcmUmIzM5O3MgdGhlIHBhcmVudCBpbmZvcm1hdGlvbiBoYW5kbGVkPyBJJiMzOTtsbCBiZXQgaXQmIzM5O3MgaW4gdGhlIGV4cG9ydCBjb2RlIHNpbmNlIHRoYXQgcmVsYXRlcyB0byB0aGUgbW91bnQgcG9pbnQgYW5kIGhvdyB0aGluZ3MgYXJlIG1hZGUgYWNjZXNzaWJsZSB0byB0aGUgd2lkZXIgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIGNoZWNrIGluIGBmcy9pc29mcy9leHBvcnQuY2AgdG8gbG9vayBmb3IgdGhlIGZ1bmN0aW9uIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAuIFRoYXQgZnVuY3Rpb24gcHJvYmFibHkgaG9sZHMgdGhlIGtleSB0byBob3cgZGlyZWN0b3J5IGVudHJpZXMgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIGZpbGUgc3lzdGVtIHN0cnVjdHVyZSBhdCB0aGUgbW91bnQgcG9pbnQuIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHRoZSBleHBvcnQgY29kZSBhbmQgc2VlIHdoYXQgSSBjYW4gdHVybiB1cCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNvZnNfZXhwb3J0X2dldF9wYXJlbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9pc29mcy9leHBvcnQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pc29mcy9leHBvcnQuYz0yMD1pc29mc19leHBvcnRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2lzb2ZzL2V4cG9ydC5jLTQzLSAqIGlzb2ZzX25vcm1hbGl6ZV9ibG9ja19hbmRfb2Zmc2V0KCkuICovXG5mcy9pc29mcy9leHBvcnQuYzo0NDpzdGF0aWMgc3RydWN0IGRlbnRyeSAqaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQoc3RydWN0IGRlbnRyeSAqY2hpbGQpXG5mcy9pc29mcy9leHBvcnQuYy00NS17XG4tLVxuZnMvaXNvZnMvZXhwb3J0LmMtNTUtXHRpZiAoIVNfSVNESVIoY2hpbGRfaW5vZGUtXHUwMDNlaV9tb2RlKSkge1xuZnMvaXNvZnMvZXhwb3J0LmM6NTY6XHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtpc29mczogaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQoKTogXCYjMzQ7XG5mcy9pc29mcy9leHBvcnQuYy01Ny1cdFx0ICAgICAgIFwmIzM0O2NoaWxkIGlzIG5vdCBhIGRpcmVjdG9yeSFcXG5cJiMzNDspO1xuLS1cbmZzL2lzb2ZzL2V4cG9ydC5jLTY1LVx0aWYgKGVfY2hpbGRfaW5vZGUtXHUwMDNlaV9pZ2V0NV9vZmZzZXQgIT0gMCkge1xuZnMvaXNvZnMvZXhwb3J0LmM6NjY6XHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtpc29mczogaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQoKTogXCYjMzQ7XG5mcy9pc29mcy9leHBvcnQuYy02Ny1cdFx0ICAgICAgIFwmIzM0O2NoaWxkIGRpcmVjdG9yeSBub3Qgbm9ybWFsaXplZCFcXG5cJiMzNDspO1xuLS1cbmZzL2lzb2ZzL2V4cG9ydC5jPTE5Nj1jb25zdCBzdHJ1Y3QgZXhwb3J0X29wZXJhdGlvbnMgaXNvZnNfZXhwb3J0X29wcyA9IHtcbi0tXG5mcy9pc29mcy9leHBvcnQuYy0xOTktXHQuZmhfdG9fcGFyZW50XHQ9IGlzb2ZzX2ZoX3RvX3BhcmVudCxcbmZzL2lzb2ZzL2V4cG9ydC5jOjIwMDpcdC5nZXRfcGFyZW50ICAgICA9IGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50LFxuZnMvaXNvZnMvZXhwb3J0LmMtMjAxLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIElTT0ZTIEV4cG9ydCBhbmQgU3l6a2FsbGVyIENvbXBhdGliaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCBmdW5jdGlvbi4gSXQmIzM5O3MgbWFya2VkIGFzIGBzdGF0aWNgLCBidXQgdGhlbiBpdCYjMzk7cyBleHBvc2VkIHRocm91Z2ggYGlzb2ZzX2V4cG9ydF9vcHMuZ2V0X3BhcmVudGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYHN0YXRpY2AgaW5pdGlhbGx5IG1hZGUgbWUgdGhpbmsgaXQgbWlnaHQgYmUgaW5saW5lZCwgYW5kIHRoZXJlZm9yZSBub3QgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBmb3IgdG9vbHMgbGlrZSBzeXprYWxsZXIgdG8gZmluZC4gQnV0LCBpdCYjMzk7cyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHdoaWNoIGdlbmVyYWxseSBwcmV2ZW50cyBpbmxpbmluZy4gU28sIEkgZG9uJiMzOTt0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNvbXBpbGVyIG9wdGltaXppbmcgaXQgYXdheS4KCkhtbSwgYnV0IG1heWJlIHRoZXJlJiMzOTtzIGEgYmV0dGVyIGFwcHJvYWNoIGFueXdheT8gU2hvdWxkIEkgYmUgdGhpbmtpbmcgYWJvdXQgdXNpbmcgYGlzb2ZzX2ZoX3RvX3BhcmVudGAgb3IgbWF5YmUgZXZlbiBsb29raW5nIGF0IGBpc29mc19leHBvcnRfb3BzYCBkaXJlY3RseT8gT24gc2Vjb25kIHRob3VnaHQsIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAgKmlzKiBwZXJmZWN0bHkgYWNjZXB0YWJsZSwgYXMgbG9uZyBhcyB0aGUgY29tcGlsZXIgaXNuJiMzOTt0IGlubGluaW5nIGl0LiBBbmQgc2luY2UgaXQmIzM5O3MgYSBmdW5jdGlvbiBwb2ludGVyLCBJIHRoaW5rIHdlJiMzOTtyZSBnb29kIHRoZXJlLgoKSG93ZXZlciwgdGhlIHJlYWwgZ29hbCBpcyBjb21wYXRpYmlsaXR5IHdpdGggc3l6a2FsbGVyLCB3aGljaCBpcyBtYWlubHkgZm9jdXNlZCBvbiBub24tc3RhdGljIGZ1bmN0aW9ucy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpub24tc3RhdGljKiBmdW5jdGlvbnMgdGhhdCBjb3VsZCBiZSBtb3JlIHVzZWZ1bC4gVGltZSB0byBjaGVjayBgZnMvaXNvZnMvbmFtZWkuY2AgYW5kIHN0YXJ0IHdpdGggdGhlIGBpc29mc19maW5kX2VudHJ5YCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIGEgbG9naWNhbCBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciBwb3RlbnRpYWwgY2FuZGlkYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNvZnNfZmluZF9lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL25hbWVpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaXNvZnMvbmFtZWkuYz0zND1pc29mc19jbXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpjb21wYXJlLCBpbnQgZGxlbilcbi0tXG5mcy9pc29mcy9uYW1laS5jLTQyLS8qXG5mcy9pc29mcy9uYW1laS5jOjQzOiAqXHRpc29mc19maW5kX2VudHJ5KClcbmZzL2lzb2ZzL25hbWVpLmMtNDQtICpcbi0tXG5mcy9pc29mcy9uYW1laS5jPTQ4PXN0YXRpYyB1bnNpZ25lZCBsb25nXG5mcy9pc29mcy9uYW1laS5jOjQ5Omlzb2ZzX2ZpbmRfZW50cnkoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbmZzL2lzb2ZzL25hbWVpLmMtNTAtXHR1bnNpZ25lZCBsb25nICpibG9ja19ydiwgdW5zaWduZWQgbG9uZyAqb2Zmc2V0X3J2LFxuLS1cbmZzL2lzb2ZzL25hbWVpLmM9MTY2PXN0cnVjdCBkZW50cnkgKmlzb2ZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4tLVxuZnMvaXNvZnMvbmFtZWkuYy0xNzctXG5mcy9pc29mcy9uYW1laS5jOjE3ODpcdGZvdW5kID0gaXNvZnNfZmluZF9lbnRyeShkaXIsIGRlbnRyeSxcbmZzL2lzb2ZzL25hbWVpLmMtMTc5LVx0XHRcdFx0XHUwMDI2YmxvY2ssIFx1MDAyNm9mZnNldCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzczMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBJU09GUyBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBJU09GUyBmaWxlIHN5c3RlbSBjb2RlIGFuZCB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgZnVuY3Rpb25zLiAgYGlzb2ZzX2ZpbmRfZW50cnlgIGlzIGNsZWFybHkgYSBoZWxwZXIgZnVuY3Rpb24g4oCTIGEgc3RhdGljIG9uZSBhdCB0aGF0LiBUaGF0IG1lYW5zIGl0JiMzOTtzIGludGVybmFsIHRvIHRoZSBtb2R1bGUgYW5kIG5vdCBkaXJlY3RseSBleHBvc2VkIGFzIGFuIGVudHJ5IHBvaW50LiBUaGUgbWFpbiBwb2ludCBvZiBlbnRyeSBmb3IgbG9va3VwIG9wZXJhdGlvbnMgc2VlbXMgdG8gYmUgYGlzb2ZzX2xvb2t1cGAuCgpUaGVyZWZvcmUsIHRoZSBjcml0aWNhbCBzeW1ib2xzIHRvIGZvY3VzIG9uIGhlcmUgYXJlLCBpbiBmYWN0OiBgaXNvZnNfcmVhZGRpcmAsIHRoZSBmdW5jdGlvbiB0byByZWFkIGRpcmVjdG9yeSBlbnRyaWVzOyB0aGVuIGBpc29mc19sb29rdXBgIGZvciwgd2VsbCwgbG9va3VwczsgYW5kIGZpbmFsbHkgYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgLiAgVGhhdCBsYXN0IG9uZSBzZWVtcyBpbXBvcnRhbnQgZm9yIHZlcmlmeWluZyBkaXJlY3RvcnkgcmVjb3Jkcy4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAgaXNuJiMzOTt0IGFsc28gc3RhdGljLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgaXQgaXMgaW5kZWVkIGV4dGVybmFsbHkgdmlzaWJsZSwgc28gSSYjMzk7bGwgY2hlY2sgb24gdGhhdCBuZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpc29mc19kaXJfcmVjb3JkX3ZhbGlkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaXNvZnMvbmFtZWkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pc29mcy9uYW1laS5jLTEyLVxuZnMvaXNvZnMvbmFtZWkuYzoxMzpib29sIGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSxcbmZzL2lzb2ZzL25hbWVpLmMtMTQtXHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LFxuLS1cbmZzL2lzb2ZzL25hbWVpLmM9NDk9aXNvZnNfZmluZF9lbnRyeShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuLS1cbmZzL2lzb2ZzL25hbWVpLmMtMTEwLVxuZnMvaXNvZnMvbmFtZWkuYzoxMTE6XHRcdGlmICghaXNvZnNfZGlyX3JlY29yZF92YWxpZChkZSwgZGUgPT0gdG1wZGUgPyAwIDogb2Zmc2V0X3NhdmVkLFxuZnMvaXNvZnMvbmFtZWkuYy0xMTItXHRcdFx0XHRcdCAgICBkZSA9PSB0bXBkZSA/IGRlX2xlbiA6IGJ1ZnNpemUpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNTgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBJU09GUyBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCBpcyAqbm90KiBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBoZWxwcyBuYXJyb3cgbXkgZm9jdXMuIEkmIzM5O20gcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gdGhlIGZvbGxvd2luZyBzeW1ib2xzOiBgaXNvZnNfcmVhZGRpcmAsIGBpc29mc19sb29rdXBgLCBhbmQgb2YgY291cnNlIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgSSB3YW50IHRvIGV4YW1pbmUuCgpXYWl0IGEgc2Vjb25kLCB3aGF0IGFib3V0IGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGA/IEkgcmVtZW1iZXIgaXQgYmVpbmcgc3RhdGljLi4uYW5kIHllcywgaXQgaXMuIFRoZSBlbnRyeXBvaW50IGlzIGBpc29mc19leHBvcnRfb3BzLmdldF9wYXJlbnRgLiBUaGlzIGlzIGludm9rZWQgYnkgdGhlIE5GUyBzZXJ2ZXIgKG9yIGBvcGVuX2J5X2hhbmRsZV9hdGApLiBTaW5jZSB0aGUgZnVuY3Rpb24gYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGl0IHdvbiYjMzk7dCBiZSBpbmxpbmVkLiBXaGlsZSBJIGNvdWxkIGluY2x1ZGUgaXQsIEkgc3VzcGVjdCBgaXNvZnNfbG9va3VwYCBhbmQgYGlzb2ZzX3JlYWRkaXJgIGFyZSB0aGUgbW9yZSBjb21tb24gZW50cnkgcG9pbnRzLgoKSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCBpbiBgZnMvaXNvZnMvZXhwb3J0LmNgIGp1c3QgdG8gYmUgY2VydGFpbi4gSSYjMzk7bGwgaW5jbHVkZSBpdCBmb3IgdGhlIHNha2Ugb2YgdGhvcm91Z2huZXNzLCBidXQgdWx0aW1hdGVseSwgSSB0aGluayBJJiMzOTttIGJlc3Qgc2VydmVkIHN0aWNraW5nIHdpdGggbXkgb3JpZ2luYWwgdGhyZWUgb2YgYGlzb2ZzX3JlYWRkaXJgLCBgaXNvZnNfbG9va3VwYCwgYW5kIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYC4gVGhlc2UgYXBwZWFyIHRvIGJlIHRoZSBtb3N0IGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBnZW5lcmFsIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzb2ZzX2V4cG9ydF9nZXRfcGFyZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaXNvZnMvZXhwb3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaXNvZnMvZXhwb3J0LmM9MjA9aXNvZnNfZXhwb3J0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9pc29mcy9leHBvcnQuYy00My0gKiBpc29mc19ub3JtYWxpemVfYmxvY2tfYW5kX29mZnNldCgpLiAqL1xuZnMvaXNvZnMvZXhwb3J0LmM6NDQ6c3RhdGljIHN0cnVjdCBkZW50cnkgKmlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50KHN0cnVjdCBkZW50cnkgKmNoaWxkKVxuZnMvaXNvZnMvZXhwb3J0LmMtNDUte1xuLS1cbmZzL2lzb2ZzL2V4cG9ydC5jLTU1LVx0aWYgKCFTX0lTRElSKGNoaWxkX2lub2RlLVx1MDAzZWlfbW9kZSkpIHtcbmZzL2lzb2ZzL2V4cG9ydC5jOjU2Olx0XHRwcmludGsoS0VSTl9FUlIgXCYjMzQ7aXNvZnM6IGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50KCk6IFwmIzM0O1xuZnMvaXNvZnMvZXhwb3J0LmMtNTctXHRcdCAgICAgICBcJiMzNDtjaGlsZCBpcyBub3QgYSBkaXJlY3RvcnkhXFxuXCYjMzQ7KTtcbi0tXG5mcy9pc29mcy9leHBvcnQuYy02NS1cdGlmIChlX2NoaWxkX2lub2RlLVx1MDAzZWlfaWdldDVfb2Zmc2V0ICE9IDApIHtcbmZzL2lzb2ZzL2V4cG9ydC5jOjY2Olx0XHRwcmludGsoS0VSTl9FUlIgXCYjMzQ7aXNvZnM6IGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50KCk6IFwmIzM0O1xuZnMvaXNvZnMvZXhwb3J0LmMtNjctXHRcdCAgICAgICBcJiMzNDtjaGlsZCBkaXJlY3Rvcnkgbm90IG5vcm1hbGl6ZWQhXFxuXCYjMzQ7KTtcbi0tXG5mcy9pc29mcy9leHBvcnQuYz0xOTY9Y29uc3Qgc3RydWN0IGV4cG9ydF9vcGVyYXRpb25zIGlzb2ZzX2V4cG9ydF9vcHMgPSB7XG4tLVxuZnMvaXNvZnMvZXhwb3J0LmMtMTk5LVx0LmZoX3RvX3BhcmVudFx0PSBpc29mc19maF90b19wYXJlbnQsXG5mcy9pc29mcy9leHBvcnQuYzoyMDA6XHQuZ2V0X3BhcmVudCAgICAgPSBpc29mc19leHBvcnRfZ2V0X3BhcmVudCxcbmZzL2lzb2ZzL2V4cG9ydC5jLTIwMS19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjU5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKklTTzk2NjAgRGlyZWN0b3J5IFRyYXZlcnNhbCBPcHRpbWl6YXRpb24qKgoKQWxyaWdodCwgZ2l2ZW4gdGhhdCB0aGlzIGFzcGVjdCBvZiB0aGUgZmlsZSBzeXN0ZW0gaXMgc3RhdGljLCBJJiMzOTttIGdvaW5nIHRvIHNpZGVzdGVwIGFueXRoaW5nIHRoYXQgaXNuJiMzOTt0IGNydWNpYWwgdG8gdGhlIGltcGxlbWVudGF0aW9uIGFuZCBsZWFuIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucy4gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgLCBgaXNvZnNfcmVhZGRpcmAsIGFuZCBgaXNvZnNfbG9va3VwYCBzaG91bGQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGJ1aWxkaW5nIGJsb2Nrcy4KCk5vdywgYSBxdWljayBjaGVja+KApiBpcyBgaXNvZnNfcmVhZGRpcmAgc3RhdGljPyBZZXMsIEkgc2VlbSB0byByZWNhbGwgdGhhdCBpdCBpcy4gQWgsIGNvbmZpcm1lZC4gSXQmIzM5O3MgaW5kZWVkIGRlZmluZWQgYXMgc3RhdGljIHdpdGhpbiBgZnMvaXNvZnMvZGlyLmNgLiBHb29kLCB0aGF0IHJlaW5mb3JjZXMgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBhbmQgZ3VpZGVzIHRoZSBhcmNoaXRlY3R1cmFsIGNob2ljZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzb2ZzX3JlYWRkaXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9pc29mcy9kaXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pc29mcy9kaXIuYz01Mz1pbnQgZ2V0X2Fjb3JuX2ZpbGVuYW1lKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqZGUsXG4tLVxuZnMvaXNvZnMvZGlyLmMtODQtICovXG5mcy9pc29mcy9kaXIuYzo4NTpzdGF0aWMgaW50IGRvX2lzb2ZzX3JlYWRkaXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsXG5mcy9pc29mcy9kaXIuYy04Ni1cdFx0c3RydWN0IGRpcl9jb250ZXh0ICpjdHgsXG4tLVxuZnMvaXNvZnMvZGlyLmMtMjQ4LSAqIGhhbmRsaW5nIHNwbGl0IGRpcmVjdG9yeSBlbnRyaWVzLi4gVGhlIHJlYWwgd29yayBpcyBkb25lIGJ5XG5mcy9pc29mcy9kaXIuYzoyNDk6ICogXCYjMzQ7ZG9faXNvZnNfcmVhZGRpcigpXCYjMzQ7LlxuZnMvaXNvZnMvZGlyLmMtMjUwLSAqL1xuZnMvaXNvZnMvZGlyLmM6MjUxOnN0YXRpYyBpbnQgaXNvZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpXG5mcy9pc29mcy9kaXIuYy0yNTIte1xuLS1cbmZzL2lzb2ZzL2Rpci5jLTI2My1cbmZzL2lzb2ZzL2Rpci5jOjI2NDpcdHJlc3VsdCA9IGRvX2lzb2ZzX3JlYWRkaXIoaW5vZGUsIGZpbGUsIGN0eCwgdG1wbmFtZSwgdG1wZGUpO1xuZnMvaXNvZnMvZGlyLmMtMjY1LVxuLS1cbmZzL2lzb2ZzL2Rpci5jPTI4ND1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGlzb2ZzX2Rpcl9vcGVyYXRpb25zID1cbi0tXG5mcy9pc29mcy9kaXIuYy0yODctXHQucmVhZCA9IGdlbmVyaWNfcmVhZF9kaXIsXG5mcy9pc29mcy9kaXIuYzoyODg6XHQuaXRlcmF0ZV9zaGFyZWQgPSBpc29mc19yZWFkZGlyLFxuZnMvaXNvZnMvZGlyLmMtMjg5LVx0LnNldGxlYXNlID0gZ2VuZXJpY19zZXRsZWFzZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTkxMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkNvbnNpZGVyaW5nIGBpc29mc2AgRGlyZWN0b3J5IE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBub3RpY2luZyB0aGF0IHRoZSBgaXNvZnNfcmVhZGRpcmAgZnVuY3Rpb24gaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIG1ha2VzIHNlbnNlIGZyb20gYW4gaW1wbGVtZW50YXRpb24gc3RhbmRwb2ludCB3aXRoaW4gdGhlIGBpc29mc2AgZmlsZSBzeXN0ZW0gbW9kdWxlLCBidXQgaXQmIzM5O3MgbWFraW5nIG1lIHRoaW5rIG1vcmUgYnJvYWRseS4gSWYgd2UmIzM5O3JlIGxvb2tpbmcgYXQgaXNvbGF0aW5nIGFuZCBldmFsdWF0aW5nIHNwZWNpZmljIGNvbXBvbmVudHMsIHRoZSBzY29wZSBvZiB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLiBJIG5lZWQgdG8gdHJhY2sgd2hpY2ggZnVuY3Rpb25zIGFyZSBzdGF0aWMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZWlyIGludGVuZGVkIHZpc2liaWxpdHkuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGlzLCB3aGF0IGFib3V0IGBpc29mc19sb29rdXBgPyBUaGF0JiMzOTtzIGEga2V5IG9wZXJhdGlvbiBmb3IgcGF0aCByZXNvbHV0aW9uIGFuZCBmaWxlIGFjY2Vzcy4gSSBuZWVkIHRvIHZlcmlmeSBpdHMgZGVjbGFyYXRpb24gYW5kIHZpc2liaWxpdHksIGVzcGVjaWFsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgZmlsZSBzeXN0ZW0gYXJjaGl0ZWN0dXJlIGFuZCBwb3RlbnRpYWwgZm9yIGV4dGVuc2lvbi4gSXMgaXQgc3RhdGljIGFzIHdlbGw/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBvdGhlciBjb21wb25lbnRzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGBpc29mc19yZWFkZGlyYCwgYW5kIGZpZ3VyZSBvdXQgYW55IHNoYXJlZCBkYXRhIG9yIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGRvZXMgdG8gb3VyIGFiaWxpdHkgdG8gcmVmYWN0b3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzb2ZzX2xvb2t1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL25hbWVpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaXNvZnMvbmFtZWkuYz00OT1pc29mc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4tLVxuZnMvaXNvZnMvbmFtZWkuYy0xNjUtXG5mcy9pc29mcy9uYW1laS5jOjE2NjpzdHJ1Y3QgZGVudHJ5ICppc29mc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxuZnMvaXNvZnMvbmFtZWkuYy0xNjcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMwNgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBJU085NjYwIFN5bWJvbCBFeHBvc3VyZSoqCgpPa2F5LCBzbyBgaXNvZnNfbG9va3VwYCBpcyAqbm90KiBzdGF0aWMsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhpcyBtZWFucyBpdCBoYXMgYSBkaXN0aW5jdCBzeW1ib2wgdGhhdCBJIGNhbiByZWFkaWx5IGV4cGxvaXQuIE15IHByaW1hcnkgZm9jdXMgc3ltYm9scywgdGhlcmVmb3JlLCBhcmUgYGlzb2ZzX2xvb2t1cGAgYW5kIGFsc28gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgLiBJJiMzOTtsbCB3YW50IHRvIHRhcmdldCB0aGVzZS4KCkhvd2V2ZXIsIGdpdmVuIHRoYXQgc3l6a2FsbGVyIGhhbmRsZXMgc3RhdGljIGZ1bmN0aW9ucyAqaWYqIHRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkLCBJJiMzOTtsbCBhbHNvIGFkZCBgaXNvZnNfcmVhZGRpcmAgYW5kIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAgdG8gdGhlIGxpc3QuIEkgcmVjYWxsIHRob3NlIGFyZSB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzLCBtZWFuaW5nIHRoZXkgYXJlIGxpa2VseSBub3QgaW5saW5lZCBhbmQgdGh1cyBoYXZlIHRoZWlyIG93biBzZXBhcmF0ZSwgYWNjZXNzaWJsZSBzeW1ib2xzLiBXaGlsZSBzeXprYWxsZXIgKmNvdWxkKiBoYW5kbGUgc3RhdGljIG9uZXMgaWYgbmVjZXNzYXJ5LCBwcm92aWRpbmcgbm9uLXN0YXRpYyBvbmVzIGdpdmVzIG1lIGJldHRlciBjb250cm9sLiBUaGlzIHNob3VsZCBhbGxvdyBhIHdpZGVyIHRlc3Qgc3VyZmFjZS4gU28sIGZvciB0aGUgdG9vbCwgSSYjMzk7bGwgcHJvdmlkZSBgaXNvZnNfbG9va3VwYCwgYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgLCBgaXNvZnNfcmVhZGRpcmAsIGFuZCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgLgoKTm93LCBsZXQgbWUgcmV2aWV3IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhpcy4gSSBrbm93IHRoYXQgYElTTzk2NjBfRlNgIGlzIHRoZSBmdW5kYW1lbnRhbCBvbmUsIGJ1dCBhcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWd1cmF0aW9ucz8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjaGFuZ2VzIGluIGBmcy9pc29mcy9leHBvcnQuY2AgYXJlIGd1YXJkZWQgYnkgKmFueSogY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIElmIGBleHBvcnQuY2AgaXMgY29tcGlsZWQgY29uZGl0aW9uYWxseSwgbXkgZWZmb3J0cyB0byBleHBsb2l0IHRob3NlIGZ1bmN0aW9ucyBiZWNvbWUgY29uZGl0aW9uYWwgYXMgd2VsbC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBhbnkgcmVsYXRlZCBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHBvcnQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX0lTTzk2NjBfRlMpICYjNDM7PSBpc29mcy5vXG5mcy9pc29mcy9NYWtlZmlsZS03LVxuZnMvaXNvZnMvTWFrZWZpbGU6ODppc29mcy15IFx0XHQ6PSBuYW1laS5vIGlub2RlLm8gZGlyLm8gdXRpbC5vIHJvY2subyBleHBvcnQub1xuZnMvaXNvZnMvTWFrZWZpbGUtOS1pc29mcy0kKENPTkZJR19KT0xJRVQpXHQmIzQzOz0gam9saWV0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5NzYKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogMjA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUG90ZW50aWFsOiBJU085NjYwIEZpbGVzeXN0ZW0qKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBzaXR1YXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkLiBJZiBgSVNPOTY2MF9GU2AgaXMgZW5hYmxlZCwgdGhlbiBgZXhwb3J0Lm9gIGlzICphbHdheXMqIGNvbXBpbGVkLiBUaGVyZWZvcmUsIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uIGlzIHNpbXBseSBgSVNPOTY2MF9GU2AuIE5vIG5lZWQgdG8gb3ZlcnRoaW5rIHRoYXQuCgpMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgZnV6emluZyBwb3RlbnRpYWwgaGVyZS4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24sIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCwgd2hpY2ggdmFsaWRhdGVzIElTTyA5NjYwIGRpcmVjdG9yeSByZWNvcmRzLiBUaGlzIGlzIGNyaXRpY2FsIGJlY2F1c2UgaXQmIzM5O3MgcmVwbGFjaW5nIHNvbWUgaW5saW5lIHNhbml0eSBjaGVja3Mgd2l0aCBjYWxscyB0byB0aGlzIG5ldyBmdW5jdGlvbiB3aXRoaW4ga2V5IGFyZWFzIG9mIHRoZSBmaWxlc3lzdGVtOiBgZG9faXNvZnNfcmVhZGRpcmAsIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAsIGFuZCBgaXNvZnNfZmluZF9lbnRyeWAuCgpUaGlzIGZ1bmRhbWVudGFsbHkgbW9kaWZpZXMgdGhlIGNvcmUgSVNPIDk2NjAgZmlsZXN5c3RlbSBsb2dpYy4gVGhhdCYjMzk7cyBnb29kIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlIGJlY2F1c2UgaXQmIzM5O3MgKnJlYWNoYWJsZSogYW5kLCBpbXBvcnRhbnRseSwgY2FuIGJlIGF0dGFja2VkIGJ5IG1vdW50aW5nIGNyYWZ0ZWQgZGlzayBpbWFnZXMuCgpUaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcgYXJlIGBpc29mc19sb29rdXBgLCBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAsIGBpc29mc19yZWFkZGlyYCwgYW5kIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIGRpcmVjdGx5IGFmZmVjdGVkLgoKQWxsIHRoaW5ncyBjb25zaWRlcmVkLCB0aGlzIHBhdGNoIGlzICp3b3J0aCogZnV6emluZy4gV2UgY2FuIG1hcmsgYFdvcnRoRnV6emluZ2AgYXMgYHRydWVgLiBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVNPOTY2MF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lzb2ZzX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtpc29mc19kaXJfcmVjb3JkX3ZhbGlkJiMzNDssCiAgICAmIzM0O2lzb2ZzX3JlYWRkaXImIzM0OywKICAgICYjMzQ7aXNvZnNfZXhwb3J0X2dldF9wYXJlbnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAgdG8gdmFsaWRhdGUgSVNPIDk2NjAgZGlyZWN0b3J5IHJlY29yZHMgYW5kIHJlcGxhY2VzIGlubGluZSBzYW5pdHkgY2hlY2tzIHdpdGggY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBpbiBgZG9faXNvZnNfcmVhZGRpcmAsIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAsIGFuZCBgaXNvZnNfZmluZF9lbnRyeWAuIFRoaXMgbW9kaWZpZXMgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIGZvciBJU08gOTY2MCwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIGJ5IG1vdW50aW5nIGNyYWZ0ZWQgZGlzayBpbWFnZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lTTzk2NjBfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpc29mc19sb29rdXAmIzM0OywKICAgICYjMzQ7aXNvZnNfZGlyX3JlY29yZF92YWxpZCYjMzQ7LAogICAgJiMzNDtpc29mc19yZWFkZGlyJiMzNDssCiAgICAmIzM0O2lzb2ZzX2V4cG9ydF9nZXRfcGFyZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgIHRvIHZhbGlkYXRlIElTTyA5NjYwIGRpcmVjdG9yeSByZWNvcmRzIGFuZCByZXBsYWNlcyBpbmxpbmUgc2FuaXR5IGNoZWNrcyB3aXRoIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gaW4gYGRvX2lzb2ZzX3JlYWRkaXJgLCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgLCBhbmQgYGlzb2ZzX2ZpbmRfZW50cnlgLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBmb3IgSVNPIDk2NjAsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCBieSBtb3VudGluZyBjcmFmdGVkIGRpc2sgaW1hZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDg6NDguODcyNjI2Njk2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4NDU2ODcxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVNPOTY2MF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlzb2ZzX2xvb2t1cFwiLFxuICAgIFwiaXNvZnNfZGlyX3JlY29yZF92YWxpZFwiLFxuICAgIFwiaXNvZnNfcmVhZGRpclwiLFxuICAgIFwiaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCB0byB2YWxpZGF0ZSBJU08gOTY2MCBkaXJlY3RvcnkgcmVjb3JkcyBhbmQgcmVwbGFjZXMgaW5saW5lIHNhbml0eSBjaGVja3Mgd2l0aCBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIGluIGBkb19pc29mc19yZWFkZGlyYCwgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCwgYW5kIGBpc29mc19maW5kX2VudHJ5YC4gVGhpcyBtb2RpZmllcyBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgZm9yIElTTyA5NjYwLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgYnkgbW91bnRpbmcgY3JhZnRlZCBkaXNrIGltYWdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDg6NDguODcyNjMzOTY2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODU4MzkyMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyNmYzZjU3NjEyYjkwY2JmNzYxZGE5N2E2ZDAxOTVlMmU1N2M5NmQyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDA1OjA4OjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2lzb2ZzL2Rpci5jIGIvZnMvaXNvZnMvZGlyLmNcXG5pbmRleCBjYzU4N2NkMjUxNjIzLi5hOTYyNjhjOWNhNDEzIDEwMDY0NFxcbi0tLSBhL2ZzL2lzb2ZzL2Rpci5jXFxuKysrIGIvZnMvaXNvZnMvZGlyLmNcXG5AQCAtMTQ5LDEwICsxNDksOCBAQCBzdGF0aWMgaW50IGRvX2lzb2ZzX3JlYWRkaXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0ZGUgPSB0bXBkZTtcXG4gXFx0XFx0fVxcbi1cXHRcXHQvKiBCYXNpYyBzYW5pdHkgY2hlY2ssIHdoZXRoZXIgbmFtZSBkb2Vzbid0IGV4Y2VlZCBkaXIgZW50cnkgKi9cXG4tXFx0XFx0aWYgKGRlX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQpIHx8XFxuLVxcdFxcdCAgICBkZV9sZW4gXFx1MDAzYyBkZS1cXHUwMDNlbmFtZV9sZW5bMF0gK1xcbi1cXHRcXHRcXHRcXHRcXHRzaXplb2Yoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKSkge1xcbitcXHRcXHRpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIGRlID09IHRtcGRlID8gMCA6IG9mZnNldF9zYXZlZCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIGRlID09IHRtcGRlID8gZGVfbGVuIDogYnVmc2l6ZSkpIHtcXG4gXFx0XFx0XFx0cHJpbnRrKEtFUk5fTk9USUNFIFxcXCJpc285NjYwOiBDb3JydXB0ZWQgZGlyZWN0b3J5IGVudHJ5XFxcIlxcbiBcXHRcXHRcXHQgICAgICAgXFxcIiBpbiBibG9jayAlbHUgb2YgaW5vZGUgJWxsdVxcXFxuXFxcIiwgYmxvY2ssXFxuIFxcdFxcdFxcdCAgICAgICBpbm9kZS1cXHUwMDNlaV9pbm8pO1xcbkBAIC0zMDAsNCArMjk4LDMgQEAgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgaXNvZnNfZGlyX2lub2RlX29wZXJhdGlvbnMgPVxcbiBcXHQuZmlsZWF0dHJfZ2V0ID0gaXNvZnNfZmlsZWF0dHJfZ2V0LFxcbiB9O1xcbiBcXG4tXFxuZGlmZiAtLWdpdCBhL2ZzL2lzb2ZzL2V4cG9ydC5jIGIvZnMvaXNvZnMvZXhwb3J0LmNcXG5pbmRleCA3OGY4MGMxYTVjNTRhLi40ZjdmYTFkNTA4YTEzIDEwMDY0NFxcbi0tLSBhL2ZzL2lzb2ZzL2V4cG9ydC5jXFxuKysrIGIvZnMvaXNvZnMvZXhwb3J0LmNcXG5AQCAtODMsMTMgKzgzLDIxIEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICppc29mc19leHBvcnRfZ2V0X3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpjaGlsZClcXG4gXFxuIFxcdC8qIFRoaXMgaXMgdGhlIFxcXCIuXFxcIiBlbnRyeS4gKi9cXG4gXFx0ZGUgPSAoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKiliaC1cXHUwMDNlYl9kYXRhO1xcbitcXHRpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIDAsIGNoaWxkX2lub2RlLVxcdTAwM2VpX3NiLVxcdTAwM2VzX2Jsb2Nrc2l6ZSkgfHxcXG4rXFx0ICAgIGlzb251bV83MTEoZGUtXFx1MDAzZW5hbWVfbGVuKSAhPSAxIHx8IGRlLVxcdTAwM2VuYW1lWzBdICE9IDApIHtcXG4rXFx0XFx0cHJpbnRrKEtFUk5fRVJSIFxcXCJpc29mczogVW5hYmxlIHRvIGZpbmQgdGhlIFxcXFxcXFwiLlxcXFxcXFwiIGRpcmVjdG9yeSBmb3IgTkZTLlxcXFxuXFxcIik7XFxuK1xcdFxcdHJ2ID0gRVJSX1BUUigtRUFDQ0VTKTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIFRoZSBcXFwiLi5cXFwiIGVudHJ5IGlzIGFsd2F5cyB0aGUgc2Vjb25kIGVudHJ5LiAqL1xcbiBcXHRwYXJlbnRfb2Zmc2V0ID0gKHVuc2lnbmVkIGxvbmcpaXNvbnVtXzcxMShkZS1cXHUwMDNlbGVuZ3RoKTtcXG4gXFx0ZGUgPSAoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKikoYmgtXFx1MDAzZWJfZGF0YSArIHBhcmVudF9vZmZzZXQpO1xcbiBcXG4gXFx0LyogVmVyaWZ5IGl0IGlzIGluIGZhY3QgdGhlIFxcXCIuLlxcXCIgZW50cnkuICovXFxuLVxcdGlmICgoaXNvbnVtXzcxMShkZS1cXHUwMDNlbmFtZV9sZW4pICE9IDEpIHx8IChkZS1cXHUwMDNlbmFtZVswXSAhPSAxKSkge1xcbitcXHRpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIHBhcmVudF9vZmZzZXQsXFxuK1xcdFxcdFxcdFxcdCAgICBjaGlsZF9pbm9kZS1cXHUwMDNlaV9zYi1cXHUwMDNlc19ibG9ja3NpemUpIHx8XFxuK1xcdCAgICBpc29udW1fNzExKGRlLVxcdTAwM2VuYW1lX2xlbikgIT0gMSB8fCBkZS1cXHUwMDNlbmFtZVswXSAhPSAxKSB7XFxuIFxcdFxcdHByaW50ayhLRVJOX0VSUiBcXFwiaXNvZnM6IFVuYWJsZSB0byBmaW5kIHRoZSBcXFxcXFxcIi4uXFxcXFxcXCIgXFxcIlxcbiBcXHRcXHQgICAgICAgXFxcImRpcmVjdG9yeSBmb3IgTkZTLlxcXFxuXFxcIik7XFxuIFxcdFxcdHJ2ID0gRVJSX1BUUigtRUFDQ0VTKTtcXG5kaWZmIC0tZ2l0IGEvZnMvaXNvZnMvaXNvZnMuaCBiL2ZzL2lzb2ZzL2lzb2ZzLmhcXG5pbmRleCAwZWM4YjI0YTQyZWRjLi5kYWNiOWNkYWU0ZmQxIDEwMDY0NFxcbi0tLSBhL2ZzL2lzb2ZzL2lzb2ZzLmhcXG4rKysgYi9mcy9pc29mcy9pc29mcy5oXFxuQEAgLTExNSw2ICsxMTUsOSBAQCBzdHJ1Y3QgaW5vZGU7XFx0XFx0LyogVG8gbWFrZSBnY2MgaGFwcHkgKi9cXG4gZXh0ZXJuIGludCBwYXJzZV9yb2NrX3JpZGdlX2lub2RlKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBzdHJ1Y3QgaW5vZGUgKiwgaW50IHJlbG9jYXRlZCk7XFxuIGV4dGVybiBpbnQgZ2V0X3JvY2tfcmlkZ2VfZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICosIGNoYXIgKiwgc3RydWN0IGlub2RlICopO1xcbiBleHRlcm4gaW50IGlzb2ZzX25hbWVfdHJhbnNsYXRlKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTtcXG4rYm9vbCBpc29mc19kaXJfcmVjb3JkX3ZhbGlkKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqZGUsXFxuK1xcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG9mZnNldCxcXG4rXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgYnVmc2l6ZSk7XFxuIFxcbiBpbnQgZ2V0X2pvbGlldF9maWxlbmFtZShzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKiwgdW5zaWduZWQgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKik7XFxuIGludCBnZXRfYWNvcm5fZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICosIGNoYXIgKiwgc3RydWN0IGlub2RlICopO1xcbmRpZmYgLS1naXQgYS9mcy9pc29mcy9uYW1laS5jIGIvZnMvaXNvZnMvbmFtZWkuY1xcbmluZGV4IDNhY2UzZDZhNTVlNzkuLmExNjFiMjg4OTNkNjMgMTAwNjQ0XFxuLS0tIGEvZnMvaXNvZnMvbmFtZWkuY1xcbisrKyBiL2ZzL2lzb2ZzL25hbWVpLmNcXG5AQCAtMTAsNiArMTAsMjYgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dmcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiaXNvZnMuaFxcXCJcXG4gXFxuK2Jvb2wgaXNvZnNfZGlyX3JlY29yZF92YWxpZChzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKmRlLFxcbitcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsXFxuK1xcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIGJ1ZnNpemUpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IGxlbjtcXG4rXFx0dW5zaWduZWQgaW50IG5hbWVfbGVuO1xcbitcXHR1bnNpZ25lZCBsb25nIG1pbl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQsIG5hbWUpO1xcbitcXG4rXFx0aWYgKG9mZnNldCBcXHUwMDNlIGJ1ZnNpemUgfHwgYnVmc2l6ZSAtIG9mZnNldCBcXHUwMDNjIG1pbl9sZW4pXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGxlbiA9IGlzb251bV83MTEoZGUtXFx1MDAzZWxlbmd0aCk7XFxuK1xcdG5hbWVfbGVuID0gaXNvbnVtXzcxMShkZS1cXHUwMDNlbmFtZV9sZW4pO1xcbitcXHRpZiAobGVuIFxcdTAwM2MgbWluX2xlbiB8fCBuYW1lX2xlbiBcXHUwMDNlIGxlbiAtIG1pbl9sZW4pXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0aWYgKGxlbiBcXHUwMDNlIGJ1ZnNpemUgLSBvZmZzZXQpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnRcXG4gaXNvZnNfY21wKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3QgY2hhciAqY29tcGFyZSwgaW50IGRsZW4pXFxuIHtcXG5AQCAtODgsMTYgKzEwOCwxNiBAQCBpc29mc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuIFxcdFxcdFxcdGRlID0gdG1wZGU7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdGRsZW4gPSBkZS1cXHUwMDNlbmFtZV9sZW5bMF07XFxuLVxcdFxcdGRwbnQgPSBkZS1cXHUwMDNlbmFtZTtcXG4tXFx0XFx0LyogQmFzaWMgc2FuaXR5IGNoZWNrLCB3aGV0aGVyIG5hbWUgZG9lc24ndCBleGNlZWQgZGlyIGVudHJ5ICovXFxuLVxcdFxcdGlmIChkZV9sZW4gXFx1MDAzYyBkbGVuICsgc2l6ZW9mKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCkpIHtcXG4rXFx0XFx0aWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCBkZSA9PSB0bXBkZSA/IDAgOiBvZmZzZXRfc2F2ZWQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBkZSA9PSB0bXBkZSA/IGRlX2xlbiA6IGJ1ZnNpemUpKSB7XFxuIFxcdFxcdFxcdHByaW50ayhLRVJOX05PVElDRSBcXFwiaXNvOTY2MDogQ29ycnVwdGVkIGRpcmVjdG9yeSBlbnRyeVxcXCJcXG4gXFx0XFx0XFx0ICAgICAgIFxcXCIgaW4gYmxvY2sgJWx1IG9mIGlub2RlICVsbHVcXFxcblxcXCIsIGJsb2NrLFxcbiBcXHRcXHRcXHQgICAgICAgZGlyLVxcdTAwM2VpX2lubyk7XFxuIFxcdFxcdFxcdGJyZWxzZShiaCk7XFxuIFxcdFxcdFxcdHJldHVybiAwO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGRsZW4gPSBkZS1cXHUwMDNlbmFtZV9sZW5bMF07XFxuK1xcdFxcdGRwbnQgPSBkZS1cXHUwMDNlbmFtZTtcXG4gXFxuIFxcdFxcdGlmIChzYmktXFx1MDAzZXNfcm9jayBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgKChpID0gZ2V0X3JvY2tfcmlkZ2VfZmlsZW5hbWUoZGUsIHRtcG5hbWUsIGRpcikpKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTowODo0OS40NTk3MzA5MTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NDI1ODU3NDA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJU085NjYwX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXNvZnNfbG9va3VwXCIsXG4gICAgXCJpc29mc19kaXJfcmVjb3JkX3ZhbGlkXCIsXG4gICAgXCJpc29mc19yZWFkZGlyXCIsXG4gICAgXCJpc29mc19leHBvcnRfZ2V0X3BhcmVudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgIHRvIHZhbGlkYXRlIElTTyA5NjYwIGRpcmVjdG9yeSByZWNvcmRzIGFuZCByZXBsYWNlcyBpbmxpbmUgc2FuaXR5IGNoZWNrcyB3aXRoIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gaW4gYGRvX2lzb2ZzX3JlYWRkaXJgLCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgLCBhbmQgYGlzb2ZzX2ZpbmRfZW50cnlgLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBmb3IgSVNPIDk2NjAsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCBieSBtb3VudGluZyBjcmFmdGVkIGRpc2sgaW1hZ2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyNmYzZjU3NjEyYjkwY2JmNzYxZGE5N2E2ZDAxOTVlMmU1N2M5NmQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDU6MDg6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9pc29mcy9kaXIuYyBiL2ZzL2lzb2ZzL2Rpci5jXG5pbmRleCBjYzU4N2NkMjUxNjIzLi5hOTYyNjhjOWNhNDEzIDEwMDY0NFxuLS0tIGEvZnMvaXNvZnMvZGlyLmNcbisrKyBiL2ZzL2lzb2ZzL2Rpci5jXG5AQCAtMTQ5LDEwICsxNDksOCBAQCBzdGF0aWMgaW50IGRvX2lzb2ZzX3JlYWRkaXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdFx0fVxuIFx0XHRcdGRlID0gdG1wZGU7XG4gXHRcdH1cbi1cdFx0LyogQmFzaWMgc2FuaXR5IGNoZWNrLCB3aGV0aGVyIG5hbWUgZG9lc24ndCBleGNlZWQgZGlyIGVudHJ5ICovXG4tXHRcdGlmIChkZV9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQpIHx8XG4tXHRcdCAgICBkZV9sZW4gXHUwMDNjIGRlLVx1MDAzZW5hbWVfbGVuWzBdICtcbi1cdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCkpIHtcbitcdFx0aWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCBkZSA9PSB0bXBkZSA/IDAgOiBvZmZzZXRfc2F2ZWQsXG4rXHRcdFx0XHRcdCAgICBkZSA9PSB0bXBkZSA/IGRlX2xlbiA6IGJ1ZnNpemUpKSB7XG4gXHRcdFx0cHJpbnRrKEtFUk5fTk9USUNFIFwiaXNvOTY2MDogQ29ycnVwdGVkIGRpcmVjdG9yeSBlbnRyeVwiXG4gXHRcdFx0ICAgICAgIFwiIGluIGJsb2NrICVsdSBvZiBpbm9kZSAlbGx1XFxuXCIsIGJsb2NrLFxuIFx0XHRcdCAgICAgICBpbm9kZS1cdTAwM2VpX2lubyk7XG5AQCAtMzAwLDQgKzI5OCwzIEBAIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGlzb2ZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zID1cbiBcdC5maWxlYXR0cl9nZXQgPSBpc29mc19maWxlYXR0cl9nZXQsXG4gfTtcbiBcbi1cbmRpZmYgLS1naXQgYS9mcy9pc29mcy9leHBvcnQuYyBiL2ZzL2lzb2ZzL2V4cG9ydC5jXG5pbmRleCA3OGY4MGMxYTVjNTRhLi40ZjdmYTFkNTA4YTEzIDEwMDY0NFxuLS0tIGEvZnMvaXNvZnMvZXhwb3J0LmNcbisrKyBiL2ZzL2lzb2ZzL2V4cG9ydC5jXG5AQCAtODMsMTMgKzgzLDIxIEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICppc29mc19leHBvcnRfZ2V0X3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpjaGlsZClcbiBcbiBcdC8qIFRoaXMgaXMgdGhlIFwiLlwiIGVudHJ5LiAqL1xuIFx0ZGUgPSAoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKiliaC1cdTAwM2ViX2RhdGE7XG4rXHRpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIDAsIGNoaWxkX2lub2RlLVx1MDAzZWlfc2ItXHUwMDNlc19ibG9ja3NpemUpIHx8XG4rXHQgICAgaXNvbnVtXzcxMShkZS1cdTAwM2VuYW1lX2xlbikgIT0gMSB8fCBkZS1cdTAwM2VuYW1lWzBdICE9IDApIHtcbitcdFx0cHJpbnRrKEtFUk5fRVJSIFwiaXNvZnM6IFVuYWJsZSB0byBmaW5kIHRoZSBcXFwiLlxcXCIgZGlyZWN0b3J5IGZvciBORlMuXFxuXCIpO1xuK1x0XHRydiA9IEVSUl9QVFIoLUVBQ0NFUyk7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuIFxuIFx0LyogVGhlIFwiLi5cIiBlbnRyeSBpcyBhbHdheXMgdGhlIHNlY29uZCBlbnRyeS4gKi9cbiBcdHBhcmVudF9vZmZzZXQgPSAodW5zaWduZWQgbG9uZylpc29udW1fNzExKGRlLVx1MDAzZWxlbmd0aCk7XG4gXHRkZSA9IChzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQqKShiaC1cdTAwM2ViX2RhdGEgKyBwYXJlbnRfb2Zmc2V0KTtcbiBcbiBcdC8qIFZlcmlmeSBpdCBpcyBpbiBmYWN0IHRoZSBcIi4uXCIgZW50cnkuICovXG4tXHRpZiAoKGlzb251bV83MTEoZGUtXHUwMDNlbmFtZV9sZW4pICE9IDEpIHx8IChkZS1cdTAwM2VuYW1lWzBdICE9IDEpKSB7XG4rXHRpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIHBhcmVudF9vZmZzZXQsXG4rXHRcdFx0XHQgICAgY2hpbGRfaW5vZGUtXHUwMDNlaV9zYi1cdTAwM2VzX2Jsb2Nrc2l6ZSkgfHxcbitcdCAgICBpc29udW1fNzExKGRlLVx1MDAzZW5hbWVfbGVuKSAhPSAxIHx8IGRlLVx1MDAzZW5hbWVbMF0gIT0gMSkge1xuIFx0XHRwcmludGsoS0VSTl9FUlIgXCJpc29mczogVW5hYmxlIHRvIGZpbmQgdGhlIFxcXCIuLlxcXCIgXCJcbiBcdFx0ICAgICAgIFwiZGlyZWN0b3J5IGZvciBORlMuXFxuXCIpO1xuIFx0XHRydiA9IEVSUl9QVFIoLUVBQ0NFUyk7XG5kaWZmIC0tZ2l0IGEvZnMvaXNvZnMvaXNvZnMuaCBiL2ZzL2lzb2ZzL2lzb2ZzLmhcbmluZGV4IDBlYzhiMjRhNDJlZGMuLmRhY2I5Y2RhZTRmZDEgMTAwNjQ0XG4tLS0gYS9mcy9pc29mcy9pc29mcy5oXG4rKysgYi9mcy9pc29mcy9pc29mcy5oXG5AQCAtMTE1LDYgKzExNSw5IEBAIHN0cnVjdCBpbm9kZTtcdFx0LyogVG8gbWFrZSBnY2MgaGFwcHkgKi9cbiBleHRlcm4gaW50IHBhcnNlX3JvY2tfcmlkZ2VfaW5vZGUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICosIHN0cnVjdCBpbm9kZSAqLCBpbnQgcmVsb2NhdGVkKTtcbiBleHRlcm4gaW50IGdldF9yb2NrX3JpZGdlX2ZpbGVuYW1lKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTtcbiBleHRlcm4gaW50IGlzb2ZzX25hbWVfdHJhbnNsYXRlKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTtcbitib29sIGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSxcbitcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsXG4rXHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgYnVmc2l6ZSk7XG4gXG4gaW50IGdldF9qb2xpZXRfZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICosIHVuc2lnbmVkIGNoYXIgKiwgc3RydWN0IGlub2RlICopO1xuIGludCBnZXRfYWNvcm5fZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICosIGNoYXIgKiwgc3RydWN0IGlub2RlICopO1xuZGlmZiAtLWdpdCBhL2ZzL2lzb2ZzL25hbWVpLmMgYi9mcy9pc29mcy9uYW1laS5jXG5pbmRleCAzYWNlM2Q2YTU1ZTc5Li5hMTYxYjI4ODkzZDYzIDEwMDY0NFxuLS0tIGEvZnMvaXNvZnMvbmFtZWkuY1xuKysrIGIvZnMvaXNvZnMvbmFtZWkuY1xuQEAgLTEwLDYgKzEwLDI2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ2ZwLmhcdTAwM2VcbiAjaW5jbHVkZSBcImlzb2ZzLmhcIlxuIFxuK2Jvb2wgaXNvZnNfZGlyX3JlY29yZF92YWxpZChzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKmRlLFxuK1x0XHRcdCAgICB1bnNpZ25lZCBsb25nIG9mZnNldCxcbitcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBidWZzaXplKVxuK3tcbitcdHVuc2lnbmVkIGludCBsZW47XG4rXHR1bnNpZ25lZCBpbnQgbmFtZV9sZW47XG4rXHR1bnNpZ25lZCBsb25nIG1pbl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQsIG5hbWUpO1xuK1xuK1x0aWYgKG9mZnNldCBcdTAwM2UgYnVmc2l6ZSB8fCBidWZzaXplIC0gb2Zmc2V0IFx1MDAzYyBtaW5fbGVuKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRsZW4gPSBpc29udW1fNzExKGRlLVx1MDAzZWxlbmd0aCk7XG4rXHRuYW1lX2xlbiA9IGlzb251bV83MTEoZGUtXHUwMDNlbmFtZV9sZW4pO1xuK1x0aWYgKGxlbiBcdTAwM2MgbWluX2xlbiB8fCBuYW1lX2xlbiBcdTAwM2UgbGVuIC0gbWluX2xlbilcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0aWYgKGxlbiBcdTAwM2UgYnVmc2l6ZSAtIG9mZnNldClcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuK1xuIHN0YXRpYyBpbnRcbiBpc29mc19jbXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpjb21wYXJlLCBpbnQgZGxlbilcbiB7XG5AQCAtODgsMTYgKzEwOCwxNiBAQCBpc29mc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4gXHRcdFx0ZGUgPSB0bXBkZTtcbiBcdFx0fVxuIFxuLVx0XHRkbGVuID0gZGUtXHUwMDNlbmFtZV9sZW5bMF07XG4tXHRcdGRwbnQgPSBkZS1cdTAwM2VuYW1lO1xuLVx0XHQvKiBCYXNpYyBzYW5pdHkgY2hlY2ssIHdoZXRoZXIgbmFtZSBkb2Vzbid0IGV4Y2VlZCBkaXIgZW50cnkgKi9cbi1cdFx0aWYgKGRlX2xlbiBcdTAwM2MgZGxlbiArIHNpemVvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQpKSB7XG4rXHRcdGlmICghaXNvZnNfZGlyX3JlY29yZF92YWxpZChkZSwgZGUgPT0gdG1wZGUgPyAwIDogb2Zmc2V0X3NhdmVkLFxuK1x0XHRcdFx0XHQgICAgZGUgPT0gdG1wZGUgPyBkZV9sZW4gOiBidWZzaXplKSkge1xuIFx0XHRcdHByaW50ayhLRVJOX05PVElDRSBcImlzbzk2NjA6IENvcnJ1cHRlZCBkaXJlY3RvcnkgZW50cnlcIlxuIFx0XHRcdCAgICAgICBcIiBpbiBibG9jayAlbHUgb2YgaW5vZGUgJWxsdVxcblwiLCBibG9jayxcbiBcdFx0XHQgICAgICAgZGlyLVx1MDAzZWlfaW5vKTtcbiBcdFx0XHRicmVsc2UoYmgpO1xuIFx0XHRcdHJldHVybiAwO1xuIFx0XHR9XG4rXHRcdGRsZW4gPSBkZS1cdTAwM2VuYW1lX2xlblswXTtcbitcdFx0ZHBudCA9IGRlLVx1MDAzZW5hbWU7XG4gXG4gXHRcdGlmIChzYmktXHUwMDNlc19yb2NrIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgKChpID0gZ2V0X3JvY2tfcmlkZ2VfZmlsZW5hbWUoZGUsIHRtcG5hbWUsIGRpcikpKSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDg6NDkuNDU5NzMyNjg0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM2NDk1MzY2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgSVNPIDk2NjAgRmlsZXN5c3RlbSoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgc29tZSBwcmV0dHkgY3J1Y2lhbCBwYXJ0cyBvZiB0aGUgSVNPIDk2NjAgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbi4gSXQncyBtb2RpZnlpbmcgYGZzL2lzb2ZzL2Rpci5jYCwgYGZzL2lzb2ZzL2V4cG9ydC5jYCwgYGZzL2lzb2ZzL2lzb2ZzLmhgLCBhbmQgYGZzL2lzb2ZzL25hbWVpLmNgLiAgTG9va3MgbGlrZSB0aGV5J3JlIGFkZGluZyBhIG5ldyBmdW5jdGlvbiwgYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgLCB3aGljaCBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4gVGhpcyBzdWdnZXN0cyB0aGV5J3JlIHN0cmVuZ3RoZW5pbmcgdGhlIHZhbGlkYXRpb24gb2YgZGlyZWN0b3J5IHJlY29yZHMgd2l0aGluIHRoZSBmaWxlc3lzdGVtLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gc2VlIGluIHRoaXMga2luZCBvZiBjb2RlLiBUaGV5J3JlIHJlcGxhY2luZyBzb21lIGluLWxpbmUgc2FuaXR5IGNoZWNrcyB3aXRoIGNhbGxzIHRvIHRoaXMgbmV3IGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgbWFrZSB0aGUgY29kZSBjbGVhbmVyIGFuZCBlYXNpZXIgdG8gbWFpbnRhaW4uXG5cbk5vdywgbGV0J3MgYnJlYWsgZG93biB0aGUgc2NvcGUuIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9ucyBhZmZlY3RlZCBhcmU6IGBkb19pc29mc19yZWFkZGlyYCBmcm9tIGBkaXIuY2AgKHRoYXQncyBhIGNvcmUgZGlyZWN0b3J5IHJlYWRpbmcgb3BlcmF0aW9uISksIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAgZnJvbSBgZXhwb3J0LmNgIChyZWxhdGVkIHRvIGV4cG9ydGluZyBmaWxlc3lzdGVtIGluZm9ybWF0aW9uKSwgYGlzb2ZzX2ZpbmRfZW50cnlgIGZyb20gYG5hbWVpLmNgICh0aGUgZW50cnkgcG9pbnQgZm9yIHNlYXJjaGluZyBmb3IgZmlsZXMpLCBhbmQsIG9mIGNvdXJzZSwgdGhlIG5ldyBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAgZnJvbSBgbmFtZWkuY2AuIEFsbCByZWFjaGFibGUga2VybmVsIGxvZ2ljLlxuXG5UaGUgZmFjdCB0aGF0IHRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIHRoZSBJU08gOTY2MCBmaWxlc3lzdGVtIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBmaWxlc3lzdGVtIHN0aWxsIGNvbW1vbmx5IHVzZWQgZm9yIENELVJPTXMsIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgY2FuIGJlIG1vdW50ZWQgdGhyb3VnaCBsb29wYmFjayBkZXZpY2VzLiBUaGF0IG1lYW5zIHVudHJ1c3RlZCBkYXRhIGNhbiByZWFjaCB0aGUga2VybmVsIGNvZGUsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBXZSBtaWdodCBiZSBhYmxlIHRvIGNyYWZ0IG1hbGljaW91cyBJU08gaW1hZ2VzIGFuZCBmZWVkIHRoZW0gdG8gdGhlIGtlcm5lbCB0aHJvdWdoIGEgbG9vcGJhY2sgbW91bnQuXG5cblNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGNvbnRyb2wgdGhlIElTTyA5NjYwIGZpbGVzeXN0ZW0uIEknbGwgdXNlIGBncmVwcGVyYCB0byBzZWFyY2ggdGhlIGBmcy9pc29mcy9LY29uZmlnYCBmaWxlIGFuZCBpZGVudGlmeSBhbnkgcmVsZXZhbnQgZmxhZ3MsIGxpa2UgYElTTzk2NjBfRlNgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB0byBzZWUgaG93IHRvIGVuYWJsZSBhbmQgdGVzdCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTc0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDg6NTQuODI0NjkxMjU2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDUyOTg5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVNPOTY2MF9GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9pc29mcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2lzb2ZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9pc29mcy9LY29uZmlnOjI6Y29uZmlnIElTTzk2NjBfRlNcXG5mcy9pc29mcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklTTyA5NjYwIENEUk9NIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA4OjU0Ljk4OTIyNjQ2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNzI0NDgyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBJU085NjYwIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgSVNPOTY2MF9GU2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHRoYXQncyB0aGUgYmFzZS4gQnV0IHdoYXQgZWxzZSBpcyByZXF1aXJlZCB0byBtYWtlIHRoaXMgd29yayBjb3JyZWN0bHk/XCIgSXQncyByYXJlbHkgYSBzdGFuZGFsb25lIG9wdGlvbi5cblxuSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBkZXBlbmRlbmNpZXMuIEknbSBhbG1vc3QgY2VydGFpbiB0aGVyZSdzIGEgcHJlcmVxdWlzaXRlIOKAkyBzb21ldGhpbmcgZm91bmRhdGlvbmFsIOKAkyBwcm9iYWJseSBzb21ldGhpbmcgYWxvbmcgdGhlIGxpbmVzIG9mIGBkZXBlbmRzIG9uIEJMT0NLYC4gVGhpcyBpcyB0aGUgc3RhbmRhcmQsIGFmdGVyIGFsbCwgYW5kIEknZCBiZSB2ZXJ5IHN1cnByaXNlZCBpZiBpdCB3YXNuJ3QgdGhlcmUuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhhdCdzIHRoZSBjYXNlLiBJdCdzIGEgc3RhbmRhcmQgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ1NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA4OjU4LjM2MTY3OTAzNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTc3NzE3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2lzb2ZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaXNvZnMvS2NvbmZpZz0xOT1jb25maWcgSk9MSUVUXFxuZnMvaXNvZnMvS2NvbmZpZy0yMC1cXHRib29sIFxcXCJNaWNyb3NvZnQgSm9saWV0IENEUk9NIGV4dGVuc2lvbnNcXFwiXFxuZnMvaXNvZnMvS2NvbmZpZzoyMTpcXHRkZXBlbmRzIG9uIElTTzk2NjBfRlNcXG5mcy9pc29mcy9LY29uZmlnLTIyLVxcdHNlbGVjdCBOTFNcXG4tLVxcbmZzL2lzb2ZzL0tjb25maWc9MzE9Y29uZmlnIFpJU09GU1xcbmZzL2lzb2ZzL0tjb25maWctMzItXFx0Ym9vbCBcXFwiVHJhbnNwYXJlbnQgZGVjb21wcmVzc2lvbiBleHRlbnNpb25cXFwiXFxuZnMvaXNvZnMvS2NvbmZpZzozMzpcXHRkZXBlbmRzIG9uIElTTzk2NjBfRlNcXG5mcy9pc29mcy9LY29uZmlnLTM0LVxcdHNlbGVjdCBaTElCX0lORkxBVEVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDg6NTguNDUxNDYxOTYyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyODA2OTgxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgSVNPOTY2MCBGaWxlc3lzdGVtIERlcGVuZGVuY2llcyoqXG5cbkhtbSwgaG9sZCBvbiBhIG1pbnV0ZS4gSSB3YXMganVzdCByZXZpZXdpbmcgdGhlIGZpbGVzeXN0ZW0gZGVwZW5kZW5jaWVzLCBhbmQgaXQgc2VlbXMgKmRpcmVjdGx5KiBsb29raW5nIGF0IGBJU085NjYwX0ZTYCwgdGhlIElTTzk2NjAgZmlsZXN5c3RlbSBpdHNlbGYsIGRvZXNuJ3QgaW1tZWRpYXRlbHkgcmV2ZWFsIGFueSBcImRlcGVuZHMgb25cIiByZWxhdGlvbnNoaXBzLiBUaGF0J3MgYSBiaXQgb2RkLCBpc24ndCBpdD8gR2VuZXJhbGx5LCBmaWxlc3lzdGVtcyBoYXZlIGRlcGVuZGVuY2llcywgZXZlbiBpZiB0aGV5J3JlIG1pbmltYWwuXG5cblJpZ2h0LCBzbyB3aGVyZSdzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBpdHMgcmVxdWlyZW1lbnRzLCBhbnkgZmxhZ3MgaXQgbmVlZHM/IFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgYGZzL2lzb2ZzL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGZpbGVzeXN0ZW0gc2hvdWxkIGxpZS4gVGhhdCBzaG91bGQgbGF5IGl0IGFsbCBvdXQgZm9yIG1lLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODQ2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MDEuNjc5NTM1NzA3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvaXNvZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIElTTzk2NjBfRlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJJU08gOTY2MCBDRFJPTSBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgaXMgdGhlIHN0YW5kYXJkIGZpbGUgc3lzdGVtIHVzZWQgb24gQ0QtUk9Ncy4gIEl0IHdhcyBwcmV2aW91c2x5XFxuICAgNzpcXHRcXHQgIGtub3duIGFzIFxcXCJIaWdoIFNpZXJyYSBGaWxlIFN5c3RlbVxcXCIgYW5kIGlzIGNhbGxlZCBcXFwiaHNmc1xcXCIgb24gb3RoZXJcXG4gICA4OlxcdFxcdCAgVW5peCBzeXN0ZW1zLiAgVGhlIHNvLWNhbGxlZCBSb2NrLVJpZGdlIGV4dGVuc2lvbnMgd2hpY2ggYWxsb3cgZm9yXFxuICAgOTpcXHRcXHQgIGxvbmcgVW5peCBmaWxlbmFtZXMgYW5kIHN5bWJvbGljIGxpbmtzIGFyZSBhbHNvIHN1cHBvcnRlZCBieSB0aGlzXFxuICAxMDpcXHRcXHQgIGRyaXZlci4gIElmIHlvdSBoYXZlIGEgQ0QtUk9NIGRyaXZlIGFuZCB3YW50IHRvIGRvIG1vcmUgd2l0aCBpdCB0aGFuXFxuICAxMTpcXHRcXHQgIGp1c3QgbGlzdGVuIHRvIGF1ZGlvIENEcyBhbmQgd2F0Y2ggaXRzIExFRHMsIHNheSBZIChhbmQgcmVhZFxcbiAgMTI6XFx0XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lzb2ZzLnJzdFxcdTAwM2UgYW5kIHRoZSBDRC1ST00tSE9XVE8sXFxuICAxMzpcXHRcXHQgIGF2YWlsYWJsZSBmcm9tIFxcdTAwM2NodHRwOi8vd3d3LnRsZHAub3JnL2RvY3MuaHRtbCNob3d0b1xcdTAwM2UpLCB0aGVyZWJ5XFxuICAxNDpcXHRcXHQgIGVubGFyZ2luZyB5b3VyIGtlcm5lbCBieSBhYm91dCAyNyBLQjsgb3RoZXJ3aXNlIHNheSBOLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBmaWxlIHN5c3RlbSBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gIDE3OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGlzb2ZzLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgSk9MSUVUXFxuICAyMDpcXHRcXHRib29sIFxcXCJNaWNyb3NvZnQgSm9saWV0IENEUk9NIGV4dGVuc2lvbnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA5OjAxLjY3OTU5ODk5N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNzY3NzQ5MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJU085NjYwIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZm9jdXNpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGUgSVNPOTY2MCBmaWxlc3lzdGVtLiBJJ2xsIG1ha2Ugc3VyZSB0byBpbmNsdWRlIGBJU085NjYwX0ZTYCBhcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGVsZW1lbnQuIFRob3VnaCwgSSB3YXMgYWJvdXQgdG8gYWxzbyBpbmNsdWRlIGBCTE9DS2AsIGJ1dCBzaW5jZSBgQkxPQ0tgIGlzIHVzdWFsbHkgZW5hYmxlZCBhbG9uZ3NpZGUgYElTTzk2NjBfRlNgLCB0aGUgbW9yZSBzcGVjaWZpYyBgSVNPOTY2MF9GU2Agc2hvdWxkIGJlIHN1ZmZpY2llbnQuXG5cbk5vdywgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgaW52b2x2ZWQuIE15IGZvY3VzIGlzIG9uOlxuXG4qICAgYGRvX2lzb2ZzX3JlYWRkaXJgIC0gSXQgYXBwZWFycyB0byBiZSBzdGF0aWM7IEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IHRvIGJlIGNlcnRhaW4uXG4qICAgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCAtIEFub3RoZXIgcG90ZW50aWFsIHN0YXRpYyBmdW5jdGlvbjsgSSdsbCBmbGFnIGl0IGZvciB2ZXJpZmljYXRpb24uXG4qICAgYGlzb2ZzX2ZpbmRfZW50cnlgIC0gU2FtZSBhcyBhYm92ZSwgSSBzaG91bGQgdmVyaWZ5IGlmIGl0J3Mgc3RhdGljLlxuKiAgIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCAtIFRoaXMgb25lIGlzICpub3QqIHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93IGltbWVkaWF0ZWx5LlxuXG5UbyBiZWdpbiB0aGlzIGFuYWx5c2lzLCBJJ2xsIHN0YXJ0IHdpdGggYGZzL2lzb2ZzL2Rpci5jYCBhbmQgc3BlY2lmaWNhbGx5IGV4YW1pbmUgYGRvX2lzb2ZzX3JlYWRkaXJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MDYuMDU2Mzc2NDE5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjMwNDUzMjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX2lzb2ZzX3JlYWRkaXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaXNvZnMvZGlyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaXNvZnMvZGlyLmM9NTM9aW50IGdldF9hY29ybl9maWxlbmFtZShzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKmRlLFxcbi0tXFxuZnMvaXNvZnMvZGlyLmMtODQtICovXFxuZnMvaXNvZnMvZGlyLmM6ODU6c3RhdGljIGludCBkb19pc29mc19yZWFkZGlyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLFxcbmZzL2lzb2ZzL2Rpci5jLTg2LVxcdFxcdHN0cnVjdCBkaXJfY29udGV4dCAqY3R4LFxcbi0tXFxuZnMvaXNvZnMvZGlyLmMtMjQ4LSAqIGhhbmRsaW5nIHNwbGl0IGRpcmVjdG9yeSBlbnRyaWVzLi4gVGhlIHJlYWwgd29yayBpcyBkb25lIGJ5XFxuZnMvaXNvZnMvZGlyLmM6MjQ5OiAqIFxcXCJkb19pc29mc19yZWFkZGlyKClcXFwiLlxcbmZzL2lzb2ZzL2Rpci5jLTI1MC0gKi9cXG5mcy9pc29mcy9kaXIuYz0yNTE9c3RhdGljIGludCBpc29mc19yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eClcXG4tLVxcbmZzL2lzb2ZzL2Rpci5jLTI2My1cXG5mcy9pc29mcy9kaXIuYzoyNjQ6XFx0cmVzdWx0ID0gZG9faXNvZnNfcmVhZGRpcihpbm9kZSwgZmlsZSwgY3R4LCB0bXBuYW1lLCB0bXBkZSk7XFxuZnMvaXNvZnMvZGlyLmMtMjY1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTowOTowNy42ODY4MzYxODZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0MjA4MDQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgSVNPRlMgRmlsZSBTeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGRvX2lzb2ZzX3JlYWRkaXJgIGZ1bmN0aW9uLiBJdCdzIG1hcmtlZCBhcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nOyBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIFRoZSBleHRlcm5hbCBlbnRyeSBwb2ludCBmb3IgcmVhZGluZyBhIGRpcmVjdG9yeSBpbiBJU09GUyBzZWVtcyB0byBiZSBgaXNvZnNfcmVhZGRpcmAsIGFuZCB0aGF0J3MgdGhlIHByaW1hcnkgcG9pbnQgSSdtIGludGVyZXN0ZWQgaW4gaGVyZS5cblxuTm93LCB3aGVyZSdzIHRoZSBwYXJlbnQgaW5mb3JtYXRpb24gaGFuZGxlZD8gSSdsbCBiZXQgaXQncyBpbiB0aGUgZXhwb3J0IGNvZGUgc2luY2UgdGhhdCByZWxhdGVzIHRvIHRoZSBtb3VudCBwb2ludCBhbmQgaG93IHRoaW5ncyBhcmUgbWFkZSBhY2Nlc3NpYmxlIHRvIHRoZSB3aWRlciBzeXN0ZW0uIExldCdzIHNlZS4uLiBJJ2xsIGNoZWNrIGluIGBmcy9pc29mcy9leHBvcnQuY2AgdG8gbG9vayBmb3IgdGhlIGZ1bmN0aW9uIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAuIFRoYXQgZnVuY3Rpb24gcHJvYmFibHkgaG9sZHMgdGhlIGtleSB0byBob3cgZGlyZWN0b3J5IGVudHJpZXMgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIGZpbGUgc3lzdGVtIHN0cnVjdHVyZSBhdCB0aGUgbW91bnQgcG9pbnQuIEknbGwgdGFrZSBhIGxvb2sgYXQgdGhlIGV4cG9ydCBjb2RlIGFuZCBzZWUgd2hhdCBJIGNhbiB0dXJuIHVwIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjI0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MTEuNTI4OTE5NDQ4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTkzMjc5MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaXNvZnMvZXhwb3J0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaXNvZnMvZXhwb3J0LmM9MjA9aXNvZnNfZXhwb3J0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2lzb2ZzL2V4cG9ydC5jLTQzLSAqIGlzb2ZzX25vcm1hbGl6ZV9ibG9ja19hbmRfb2Zmc2V0KCkuICovXFxuZnMvaXNvZnMvZXhwb3J0LmM6NDQ6c3RhdGljIHN0cnVjdCBkZW50cnkgKmlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50KHN0cnVjdCBkZW50cnkgKmNoaWxkKVxcbmZzL2lzb2ZzL2V4cG9ydC5jLTQ1LXtcXG4tLVxcbmZzL2lzb2ZzL2V4cG9ydC5jLTU1LVxcdGlmICghU19JU0RJUihjaGlsZF9pbm9kZS1cXHUwMDNlaV9tb2RlKSkge1xcbmZzL2lzb2ZzL2V4cG9ydC5jOjU2OlxcdFxcdHByaW50ayhLRVJOX0VSUiBcXFwiaXNvZnM6IGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50KCk6IFxcXCJcXG5mcy9pc29mcy9leHBvcnQuYy01Ny1cXHRcXHQgICAgICAgXFxcImNoaWxkIGlzIG5vdCBhIGRpcmVjdG9yeSFcXFxcblxcXCIpO1xcbi0tXFxuZnMvaXNvZnMvZXhwb3J0LmMtNjUtXFx0aWYgKGVfY2hpbGRfaW5vZGUtXFx1MDAzZWlfaWdldDVfb2Zmc2V0ICE9IDApIHtcXG5mcy9pc29mcy9leHBvcnQuYzo2NjpcXHRcXHRwcmludGsoS0VSTl9FUlIgXFxcImlzb2ZzOiBpc29mc19leHBvcnRfZ2V0X3BhcmVudCgpOiBcXFwiXFxuZnMvaXNvZnMvZXhwb3J0LmMtNjctXFx0XFx0ICAgICAgIFxcXCJjaGlsZCBkaXJlY3Rvcnkgbm90IG5vcm1hbGl6ZWQhXFxcXG5cXFwiKTtcXG4tLVxcbmZzL2lzb2ZzL2V4cG9ydC5jPTE5Nj1jb25zdCBzdHJ1Y3QgZXhwb3J0X29wZXJhdGlvbnMgaXNvZnNfZXhwb3J0X29wcyA9IHtcXG4tLVxcbmZzL2lzb2ZzL2V4cG9ydC5jLTE5OS1cXHQuZmhfdG9fcGFyZW50XFx0PSBpc29mc19maF90b19wYXJlbnQsXFxuZnMvaXNvZnMvZXhwb3J0LmM6MjAwOlxcdC5nZXRfcGFyZW50ICAgICA9IGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50LFxcbmZzL2lzb2ZzL2V4cG9ydC5jLTIwMS19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTowOToxMS44NDgyNTM0NTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ3NzQyNTAyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgSVNPRlMgRXhwb3J0IGFuZCBTeXprYWxsZXIgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCBmdW5jdGlvbi4gSXQncyBtYXJrZWQgYXMgYHN0YXRpY2AsIGJ1dCB0aGVuIGl0J3MgZXhwb3NlZCB0aHJvdWdoIGBpc29mc19leHBvcnRfb3BzLmdldF9wYXJlbnRgLiBUaGF0J3MgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgaXQncyBgc3RhdGljYCBpbml0aWFsbHkgbWFkZSBtZSB0aGluayBpdCBtaWdodCBiZSBpbmxpbmVkLCBhbmQgdGhlcmVmb3JlIG5vdCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGZvciB0b29scyBsaWtlIHN5emthbGxlciB0byBmaW5kLiBCdXQsIGl0J3MgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCB3aGljaCBnZW5lcmFsbHkgcHJldmVudHMgaW5saW5pbmcuIFNvLCBJIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNvbXBpbGVyIG9wdGltaXppbmcgaXQgYXdheS5cblxuSG1tLCBidXQgbWF5YmUgdGhlcmUncyBhIGJldHRlciBhcHByb2FjaCBhbnl3YXk/IFNob3VsZCBJIGJlIHRoaW5raW5nIGFib3V0IHVzaW5nIGBpc29mc19maF90b19wYXJlbnRgIG9yIG1heWJlIGV2ZW4gbG9va2luZyBhdCBgaXNvZnNfZXhwb3J0X29wc2AgZGlyZWN0bHk/IE9uIHNlY29uZCB0aG91Z2h0LCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgICppcyogcGVyZmVjdGx5IGFjY2VwdGFibGUsIGFzIGxvbmcgYXMgdGhlIGNvbXBpbGVyIGlzbid0IGlubGluaW5nIGl0LiBBbmQgc2luY2UgaXQncyBhIGZ1bmN0aW9uIHBvaW50ZXIsIEkgdGhpbmsgd2UncmUgZ29vZCB0aGVyZS5cblxuSG93ZXZlciwgdGhlIHJlYWwgZ29hbCBpcyBjb21wYXRpYmlsaXR5IHdpdGggc3l6a2FsbGVyLCB3aGljaCBpcyBtYWlubHkgZm9jdXNlZCBvbiBub24tc3RhdGljIGZ1bmN0aW9ucy4gTGV0J3MgZGlnIGRlZXBlciBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgKm5vbi1zdGF0aWMqIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIGJlIG1vcmUgdXNlZnVsLiBUaW1lIHRvIGNoZWNrIGBmcy9pc29mcy9uYW1laS5jYCBhbmQgc3RhcnQgd2l0aCB0aGUgYGlzb2ZzX2ZpbmRfZW50cnlgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHBvdGVudGlhbCBjYW5kaWRhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTE5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA5OjE2LjMyNTY4MTY1MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NzI1OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzb2ZzX2ZpbmRfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaXNvZnMvbmFtZWkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9pc29mcy9uYW1laS5jPTM0PWlzb2ZzX2NtcChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGNvbnN0IGNoYXIgKmNvbXBhcmUsIGludCBkbGVuKVxcbi0tXFxuZnMvaXNvZnMvbmFtZWkuYy00Mi0vKlxcbmZzL2lzb2ZzL25hbWVpLmM6NDM6ICpcXHRpc29mc19maW5kX2VudHJ5KClcXG5mcy9pc29mcy9uYW1laS5jLTQ0LSAqXFxuLS1cXG5mcy9pc29mcy9uYW1laS5jPTQ4PXN0YXRpYyB1bnNpZ25lZCBsb25nXFxuZnMvaXNvZnMvbmFtZWkuYzo0OTppc29mc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuZnMvaXNvZnMvbmFtZWkuYy01MC1cXHR1bnNpZ25lZCBsb25nICpibG9ja19ydiwgdW5zaWduZWQgbG9uZyAqb2Zmc2V0X3J2LFxcbi0tXFxuZnMvaXNvZnMvbmFtZWkuYz0xNjY9c3RydWN0IGRlbnRyeSAqaXNvZnNfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVuc2lnbmVkIGludCBmbGFncylcXG4tLVxcbmZzL2lzb2ZzL25hbWVpLmMtMTc3LVxcbmZzL2lzb2ZzL25hbWVpLmM6MTc4OlxcdGZvdW5kID0gaXNvZnNfZmluZF9lbnRyeShkaXIsIGRlbnRyeSxcXG5mcy9pc29mcy9uYW1laS5jLTE3OS1cXHRcXHRcXHRcXHRcXHUwMDI2YmxvY2ssIFxcdTAwMjZvZmZzZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA5OjE2LjQzMzQxMzM1OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDczNjY2ODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBJU09GUyBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgSVNPRlMgZmlsZSBzeXN0ZW0gY29kZSBhbmQgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUga2V5IGZ1bmN0aW9ucy4gIGBpc29mc19maW5kX2VudHJ5YCBpcyBjbGVhcmx5IGEgaGVscGVyIGZ1bmN0aW9uIOKAkyBhIHN0YXRpYyBvbmUgYXQgdGhhdC4gVGhhdCBtZWFucyBpdCdzIGludGVybmFsIHRvIHRoZSBtb2R1bGUgYW5kIG5vdCBkaXJlY3RseSBleHBvc2VkIGFzIGFuIGVudHJ5IHBvaW50LiBUaGUgbWFpbiBwb2ludCBvZiBlbnRyeSBmb3IgbG9va3VwIG9wZXJhdGlvbnMgc2VlbXMgdG8gYmUgYGlzb2ZzX2xvb2t1cGAuXG5cblRoZXJlZm9yZSwgdGhlIGNyaXRpY2FsIHN5bWJvbHMgdG8gZm9jdXMgb24gaGVyZSBhcmUsIGluIGZhY3Q6IGBpc29mc19yZWFkZGlyYCwgdGhlIGZ1bmN0aW9uIHRvIHJlYWQgZGlyZWN0b3J5IGVudHJpZXM7IHRoZW4gYGlzb2ZzX2xvb2t1cGAgZm9yLCB3ZWxsLCBsb29rdXBzOyBhbmQgZmluYWxseSBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAuICBUaGF0IGxhc3Qgb25lIHNlZW1zIGltcG9ydGFudCBmb3IgdmVyaWZ5aW5nIGRpcmVjdG9yeSByZWNvcmRzLiBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogc3VyZSB0aGF0IGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCBpc24ndCBhbHNvIHN0YXRpYy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGl0IGlzIGluZGVlZCBleHRlcm5hbGx5IHZpc2libGUsIHNvIEknbGwgY2hlY2sgb24gdGhhdCBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzMzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MTkuOTA3MDgzNTI4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDg2ODM4OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNvZnNfZGlyX3JlY29yZF92YWxpZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9pc29mcy9uYW1laS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2lzb2ZzL25hbWVpLmMtMTItXFxuZnMvaXNvZnMvbmFtZWkuYzoxMzpib29sIGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSxcXG5mcy9pc29mcy9uYW1laS5jLTE0LVxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG9mZnNldCxcXG4tLVxcbmZzL2lzb2ZzL25hbWVpLmM9NDk9aXNvZnNfZmluZF9lbnRyeShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbi0tXFxuZnMvaXNvZnMvbmFtZWkuYy0xMTAtXFxuZnMvaXNvZnMvbmFtZWkuYzoxMTE6XFx0XFx0aWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCBkZSA9PSB0bXBkZSA/IDAgOiBvZmZzZXRfc2F2ZWQsXFxuZnMvaXNvZnMvbmFtZWkuYy0xMTItXFx0XFx0XFx0XFx0XFx0ICAgIGRlID09IHRtcGRlID8gZGVfbGVuIDogYnVmc2l6ZSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MjAuMjU1Nzc0MDAxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1OTQ0MzgzNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBJU09GUyBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAgaXMgKm5vdCogYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaGVscHMgbmFycm93IG15IGZvY3VzLiBJJ20gcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gdGhlIGZvbGxvd2luZyBzeW1ib2xzOiBgaXNvZnNfcmVhZGRpcmAsIGBpc29mc19sb29rdXBgLCBhbmQgb2YgY291cnNlIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgSSB3YW50IHRvIGV4YW1pbmUuXG5cbldhaXQgYSBzZWNvbmQsIHdoYXQgYWJvdXQgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YD8gSSByZW1lbWJlciBpdCBiZWluZyBzdGF0aWMuLi5hbmQgeWVzLCBpdCBpcy4gVGhlIGVudHJ5cG9pbnQgaXMgYGlzb2ZzX2V4cG9ydF9vcHMuZ2V0X3BhcmVudGAuIFRoaXMgaXMgaW52b2tlZCBieSB0aGUgTkZTIHNlcnZlciAob3IgYG9wZW5fYnlfaGFuZGxlX2F0YCkuIFNpbmNlIHRoZSBmdW5jdGlvbiBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgIGlzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQgd29uJ3QgYmUgaW5saW5lZC4gV2hpbGUgSSBjb3VsZCBpbmNsdWRlIGl0LCBJIHN1c3BlY3QgYGlzb2ZzX2xvb2t1cGAgYW5kIGBpc29mc19yZWFkZGlyYCBhcmUgdGhlIG1vcmUgY29tbW9uIGVudHJ5IHBvaW50cy5cblxuSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgIGluIGBmcy9pc29mcy9leHBvcnQuY2AganVzdCB0byBiZSBjZXJ0YWluLiBJJ2xsIGluY2x1ZGUgaXQgZm9yIHRoZSBzYWtlIG9mIHRob3JvdWdobmVzcywgYnV0IHVsdGltYXRlbHksIEkgdGhpbmsgSSdtIGJlc3Qgc2VydmVkIHN0aWNraW5nIHdpdGggbXkgb3JpZ2luYWwgdGhyZWUgb2YgYGlzb2ZzX3JlYWRkaXJgLCBgaXNvZnNfbG9va3VwYCwgYW5kIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYC4gVGhlc2UgYXBwZWFyIHRvIGJlIHRoZSBtb3N0IGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBnZW5lcmFsIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNTgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MjUuODUwMjE2Mjc4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzU4Mzk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpc29mc19leHBvcnRfZ2V0X3BhcmVudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9pc29mcy9leHBvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9pc29mcy9leHBvcnQuYz0yMD1pc29mc19leHBvcnRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvaXNvZnMvZXhwb3J0LmMtNDMtICogaXNvZnNfbm9ybWFsaXplX2Jsb2NrX2FuZF9vZmZzZXQoKS4gKi9cXG5mcy9pc29mcy9leHBvcnQuYzo0NDpzdGF0aWMgc3RydWN0IGRlbnRyeSAqaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQoc3RydWN0IGRlbnRyeSAqY2hpbGQpXFxuZnMvaXNvZnMvZXhwb3J0LmMtNDUte1xcbi0tXFxuZnMvaXNvZnMvZXhwb3J0LmMtNTUtXFx0aWYgKCFTX0lTRElSKGNoaWxkX2lub2RlLVxcdTAwM2VpX21vZGUpKSB7XFxuZnMvaXNvZnMvZXhwb3J0LmM6NTY6XFx0XFx0cHJpbnRrKEtFUk5fRVJSIFxcXCJpc29mczogaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQoKTogXFxcIlxcbmZzL2lzb2ZzL2V4cG9ydC5jLTU3LVxcdFxcdCAgICAgICBcXFwiY2hpbGQgaXMgbm90IGEgZGlyZWN0b3J5IVxcXFxuXFxcIik7XFxuLS1cXG5mcy9pc29mcy9leHBvcnQuYy02NS1cXHRpZiAoZV9jaGlsZF9pbm9kZS1cXHUwMDNlaV9pZ2V0NV9vZmZzZXQgIT0gMCkge1xcbmZzL2lzb2ZzL2V4cG9ydC5jOjY2OlxcdFxcdHByaW50ayhLRVJOX0VSUiBcXFwiaXNvZnM6IGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50KCk6IFxcXCJcXG5mcy9pc29mcy9leHBvcnQuYy02Ny1cXHRcXHQgICAgICAgXFxcImNoaWxkIGRpcmVjdG9yeSBub3Qgbm9ybWFsaXplZCFcXFxcblxcXCIpO1xcbi0tXFxuZnMvaXNvZnMvZXhwb3J0LmM9MTk2PWNvbnN0IHN0cnVjdCBleHBvcnRfb3BlcmF0aW9ucyBpc29mc19leHBvcnRfb3BzID0ge1xcbi0tXFxuZnMvaXNvZnMvZXhwb3J0LmMtMTk5LVxcdC5maF90b19wYXJlbnRcXHQ9IGlzb2ZzX2ZoX3RvX3BhcmVudCxcXG5mcy9pc29mcy9leHBvcnQuYzoyMDA6XFx0LmdldF9wYXJlbnQgICAgID0gaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQsXFxuZnMvaXNvZnMvZXhwb3J0LmMtMjAxLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA5OjI1LjkwNzgxMjc4N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ0Mjg0MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSVNPOTY2MCBEaXJlY3RvcnkgVHJhdmVyc2FsIE9wdGltaXphdGlvbioqXG5cbkFscmlnaHQsIGdpdmVuIHRoYXQgdGhpcyBhc3BlY3Qgb2YgdGhlIGZpbGUgc3lzdGVtIGlzIHN0YXRpYywgSSdtIGdvaW5nIHRvIHNpZGVzdGVwIGFueXRoaW5nIHRoYXQgaXNuJ3QgY3J1Y2lhbCB0byB0aGUgaW1wbGVtZW50YXRpb24gYW5kIGxlYW4gb24gdGhlIGNvcmUgZnVuY3Rpb25zLiBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAsIGBpc29mc19yZWFkZGlyYCwgYW5kIGBpc29mc19sb29rdXBgIHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgYnVpbGRpbmcgYmxvY2tzLlxuXG5Ob3csIGEgcXVpY2sgY2hlY2vigKYgaXMgYGlzb2ZzX3JlYWRkaXJgIHN0YXRpYz8gWWVzLCBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgaXQgaXMuIEFoLCBjb25maXJtZWQuIEl0J3MgaW5kZWVkIGRlZmluZWQgYXMgc3RhdGljIHdpdGhpbiBgZnMvaXNvZnMvZGlyLmNgLiBHb29kLCB0aGF0IHJlaW5mb3JjZXMgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBhbmQgZ3VpZGVzIHRoZSBhcmNoaXRlY3R1cmFsIGNob2ljZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNTksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTowOToyOS42NTIwOTk5NjJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTYwNTEzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpc29mc19yZWFkZGlyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2lzb2ZzL2Rpci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2lzb2ZzL2Rpci5jPTUzPWludCBnZXRfYWNvcm5fZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSxcXG4tLVxcbmZzL2lzb2ZzL2Rpci5jLTg0LSAqL1xcbmZzL2lzb2ZzL2Rpci5jOjg1OnN0YXRpYyBpbnQgZG9faXNvZnNfcmVhZGRpcihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG5mcy9pc29mcy9kaXIuYy04Ni1cXHRcXHRzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCxcXG4tLVxcbmZzL2lzb2ZzL2Rpci5jLTI0OC0gKiBoYW5kbGluZyBzcGxpdCBkaXJlY3RvcnkgZW50cmllcy4uIFRoZSByZWFsIHdvcmsgaXMgZG9uZSBieVxcbmZzL2lzb2ZzL2Rpci5jOjI0OTogKiBcXFwiZG9faXNvZnNfcmVhZGRpcigpXFxcIi5cXG5mcy9pc29mcy9kaXIuYy0yNTAtICovXFxuZnMvaXNvZnMvZGlyLmM6MjUxOnN0YXRpYyBpbnQgaXNvZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpXFxuZnMvaXNvZnMvZGlyLmMtMjUyLXtcXG4tLVxcbmZzL2lzb2ZzL2Rpci5jLTI2My1cXG5mcy9pc29mcy9kaXIuYzoyNjQ6XFx0cmVzdWx0ID0gZG9faXNvZnNfcmVhZGRpcihpbm9kZSwgZmlsZSwgY3R4LCB0bXBuYW1lLCB0bXBkZSk7XFxuZnMvaXNvZnMvZGlyLmMtMjY1LVxcbi0tXFxuZnMvaXNvZnMvZGlyLmM9Mjg0PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaXNvZnNfZGlyX29wZXJhdGlvbnMgPVxcbi0tXFxuZnMvaXNvZnMvZGlyLmMtMjg3LVxcdC5yZWFkID0gZ2VuZXJpY19yZWFkX2RpcixcXG5mcy9pc29mcy9kaXIuYzoyODg6XFx0Lml0ZXJhdGVfc2hhcmVkID0gaXNvZnNfcmVhZGRpcixcXG5mcy9pc29mcy9kaXIuYy0yODktXFx0LnNldGxlYXNlID0gZ2VuZXJpY19zZXRsZWFzZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MjkuNzUzNzEwNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjMwMTQ1MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipDb25zaWRlcmluZyBgaXNvZnNgIERpcmVjdG9yeSBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIG5vdGljaW5nIHRoYXQgdGhlIGBpc29mc19yZWFkZGlyYCBmdW5jdGlvbiBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgbWFrZXMgc2Vuc2UgZnJvbSBhbiBpbXBsZW1lbnRhdGlvbiBzdGFuZHBvaW50IHdpdGhpbiB0aGUgYGlzb2ZzYCBmaWxlIHN5c3RlbSBtb2R1bGUsIGJ1dCBpdCdzIG1ha2luZyBtZSB0aGluayBtb3JlIGJyb2FkbHkuIElmIHdlJ3JlIGxvb2tpbmcgYXQgaXNvbGF0aW5nIGFuZCBldmFsdWF0aW5nIHNwZWNpZmljIGNvbXBvbmVudHMsIHRoZSBzY29wZSBvZiB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLiBJIG5lZWQgdG8gdHJhY2sgd2hpY2ggZnVuY3Rpb25zIGFyZSBzdGF0aWMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZWlyIGludGVuZGVkIHZpc2liaWxpdHkuXG5cblRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMsIHdoYXQgYWJvdXQgYGlzb2ZzX2xvb2t1cGA/IFRoYXQncyBhIGtleSBvcGVyYXRpb24gZm9yIHBhdGggcmVzb2x1dGlvbiBhbmQgZmlsZSBhY2Nlc3MuIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGRlY2xhcmF0aW9uIGFuZCB2aXNpYmlsaXR5LCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgbGFyZ2VyIGZpbGUgc3lzdGVtIGFyY2hpdGVjdHVyZSBhbmQgcG90ZW50aWFsIGZvciBleHRlbnNpb24uIElzIGl0IHN0YXRpYyBhcyB3ZWxsPyBEb2VzIGl0IGludGVyYWN0IHdpdGggb3RoZXIgY29tcG9uZW50cyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCBob3cgaXQgcmVsYXRlcyB0byBgaXNvZnNfcmVhZGRpcmAsIGFuZCBmaWd1cmUgb3V0IGFueSBzaGFyZWQgZGF0YSBvciBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBkb2VzIHRvIG91ciBhYmlsaXR5IHRvIHJlZmFjdG9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTEzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MzIuOTgzODU4NTc0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzg0MTI4ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNvZnNfbG9va3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2lzb2ZzL25hbWVpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaXNvZnMvbmFtZWkuYz00OT1pc29mc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9pc29mcy9uYW1laS5jLTE2NS1cXG5mcy9pc29mcy9uYW1laS5jOjE2NjpzdHJ1Y3QgZGVudHJ5ICppc29mc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxcbmZzL2lzb2ZzL25hbWVpLmMtMTY3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MzMuMjYyMjc2ODE4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NDUyNDM2MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgSVNPOTY2MCBTeW1ib2wgRXhwb3N1cmUqKlxuXG5Pa2F5LCBzbyBgaXNvZnNfbG9va3VwYCBpcyAqbm90KiBzdGF0aWMsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhpcyBtZWFucyBpdCBoYXMgYSBkaXN0aW5jdCBzeW1ib2wgdGhhdCBJIGNhbiByZWFkaWx5IGV4cGxvaXQuIE15IHByaW1hcnkgZm9jdXMgc3ltYm9scywgdGhlcmVmb3JlLCBhcmUgYGlzb2ZzX2xvb2t1cGAgYW5kIGFsc28gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgLiBJJ2xsIHdhbnQgdG8gdGFyZ2V0IHRoZXNlLlxuXG5Ib3dldmVyLCBnaXZlbiB0aGF0IHN5emthbGxlciBoYW5kbGVzIHN0YXRpYyBmdW5jdGlvbnMgKmlmKiB0aGV5IGFyZW4ndCBpbmxpbmVkLCBJJ2xsIGFsc28gYWRkIGBpc29mc19yZWFkZGlyYCBhbmQgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCB0byB0aGUgbGlzdC4gSSByZWNhbGwgdGhvc2UgYXJlIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMsIG1lYW5pbmcgdGhleSBhcmUgbGlrZWx5IG5vdCBpbmxpbmVkIGFuZCB0aHVzIGhhdmUgdGhlaXIgb3duIHNlcGFyYXRlLCBhY2Nlc3NpYmxlIHN5bWJvbHMuIFdoaWxlIHN5emthbGxlciAqY291bGQqIGhhbmRsZSBzdGF0aWMgb25lcyBpZiBuZWNlc3NhcnksIHByb3ZpZGluZyBub24tc3RhdGljIG9uZXMgZ2l2ZXMgbWUgYmV0dGVyIGNvbnRyb2wuIFRoaXMgc2hvdWxkIGFsbG93IGEgd2lkZXIgdGVzdCBzdXJmYWNlLiBTbywgZm9yIHRoZSB0b29sLCBJJ2xsIHByb3ZpZGUgYGlzb2ZzX2xvb2t1cGAsIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCwgYGlzb2ZzX3JlYWRkaXJgLCBhbmQgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YC5cblxuTm93LCBsZXQgbWUgcmV2aWV3IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhpcy4gSSBrbm93IHRoYXQgYElTTzk2NjBfRlNgIGlzIHRoZSBmdW5kYW1lbnRhbCBvbmUsIGJ1dCBhcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWd1cmF0aW9ucz8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjaGFuZ2VzIGluIGBmcy9pc29mcy9leHBvcnQuY2AgYXJlIGd1YXJkZWQgYnkgKmFueSogY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIElmIGBleHBvcnQuY2AgaXMgY29tcGlsZWQgY29uZGl0aW9uYWxseSwgbXkgZWZmb3J0cyB0byBleHBsb2l0IHRob3NlIGZ1bmN0aW9ucyBiZWNvbWUgY29uZGl0aW9uYWwgYXMgd2VsbC4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGFueSByZWxhdGVkIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzA2LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA5OjM4LjAwNzUyMzc0M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwMDk3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXhwb3J0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaXNvZnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaXNvZnMvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfSVNPOTY2MF9GUykgKz0gaXNvZnMub1xcbmZzL2lzb2ZzL01ha2VmaWxlLTctXFxuZnMvaXNvZnMvTWFrZWZpbGU6ODppc29mcy15IFxcdFxcdDo9IG5hbWVpLm8gaW5vZGUubyBkaXIubyB1dGlsLm8gcm9jay5vIGV4cG9ydC5vXFxuZnMvaXNvZnMvTWFrZWZpbGUtOS1pc29mcy0kKENPTkZJR19KT0xJRVQpXFx0Kz0gam9saWV0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MzguMDU1NTM5OTQyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1ODM3MTExNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWw6IElTTzk2NjAgRmlsZXN5c3RlbSoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBzaXR1YXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkLiBJZiBgSVNPOTY2MF9GU2AgaXMgZW5hYmxlZCwgdGhlbiBgZXhwb3J0Lm9gIGlzICphbHdheXMqIGNvbXBpbGVkLiBUaGVyZWZvcmUsIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uIGlzIHNpbXBseSBgSVNPOTY2MF9GU2AuIE5vIG5lZWQgdG8gb3ZlcnRoaW5rIHRoYXQuXG5cbkxldCdzIGJyZWFrIGRvd24gdGhlIGZ1enppbmcgcG90ZW50aWFsIGhlcmUuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uLCBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAsIHdoaWNoIHZhbGlkYXRlcyBJU08gOTY2MCBkaXJlY3RvcnkgcmVjb3Jkcy4gVGhpcyBpcyBjcml0aWNhbCBiZWNhdXNlIGl0J3MgcmVwbGFjaW5nIHNvbWUgaW5saW5lIHNhbml0eSBjaGVja3Mgd2l0aCBjYWxscyB0byB0aGlzIG5ldyBmdW5jdGlvbiB3aXRoaW4ga2V5IGFyZWFzIG9mIHRoZSBmaWxlc3lzdGVtOiBgZG9faXNvZnNfcmVhZGRpcmAsIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAsIGFuZCBgaXNvZnNfZmluZF9lbnRyeWAuXG5cblRoaXMgZnVuZGFtZW50YWxseSBtb2RpZmllcyB0aGUgY29yZSBJU08gOTY2MCBmaWxlc3lzdGVtIGxvZ2ljLiBUaGF0J3MgZ29vZCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSBiZWNhdXNlIGl0J3MgKnJlYWNoYWJsZSogYW5kLCBpbXBvcnRhbnRseSwgY2FuIGJlIGF0dGFja2VkIGJ5IG1vdW50aW5nIGNyYWZ0ZWQgZGlzayBpbWFnZXMuXG5cblRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZyBhcmUgYGlzb2ZzX2xvb2t1cGAsIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCwgYGlzb2ZzX3JlYWRkaXJgLCBhbmQgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgYWZmZWN0ZWQuXG5cbkFsbCB0aGluZ3MgY29uc2lkZXJlZCwgdGhpcyBwYXRjaCBpcyAqd29ydGgqIGZ1enppbmcuIFdlIGNhbiBtYXJrIGBXb3J0aEZ1enppbmdgIGFzIGB0cnVlYC4gSSdsbCBnbyBhaGVhZCBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDk3NiwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6NDMuNjM5MjU0MzE5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkwNDMyMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklTTzk2NjBfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpc29mc19sb29rdXBcIixcbiAgICBcImlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRcIixcbiAgICBcImlzb2ZzX3JlYWRkaXJcIixcbiAgICBcImlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAgdG8gdmFsaWRhdGUgSVNPIDk2NjAgZGlyZWN0b3J5IHJlY29yZHMgYW5kIHJlcGxhY2VzIGlubGluZSBzYW5pdHkgY2hlY2tzIHdpdGggY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBpbiBgZG9faXNvZnNfcmVhZGRpcmAsIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAsIGFuZCBgaXNvZnNfZmluZF9lbnRyeWAuIFRoaXMgbW9kaWZpZXMgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIGZvciBJU08gOTY2MCwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIGJ5IG1vdW50aW5nIGNyYWZ0ZWQgZGlzayBpbWFnZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVNPOTY2MF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlzb2ZzX2xvb2t1cFwiLFxuICAgIFwiaXNvZnNfZGlyX3JlY29yZF92YWxpZFwiLFxuICAgIFwiaXNvZnNfcmVhZGRpclwiLFxuICAgIFwiaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCB0byB2YWxpZGF0ZSBJU08gOTY2MCBkaXJlY3RvcnkgcmVjb3JkcyBhbmQgcmVwbGFjZXMgaW5saW5lIHNhbml0eSBjaGVja3Mgd2l0aCBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIGluIGBkb19pc29mc19yZWFkZGlyYCwgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCwgYW5kIGBpc29mc19maW5kX2VudHJ5YC4gVGhpcyBtb2RpZmllcyBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgZm9yIElTTyA5NjYwLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgYnkgbW91bnRpbmcgY3JhZnRlZCBkaXNrIGltYWdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wt2l[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 04:42:26 +0000 UTC FinishedAt: 2026-07-29 05:09:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "05c09c9c8a79d5539fef30d42e732eba90a15dcf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ISO9660_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "05c09c9c8a79d5539fef30d42e732eba90a15dcf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ISO9660_FS" ], "series_id": "bead9d99-6f45-4cb4-955f-8c0b871e6b56" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "isofs_lookup", "isofs_dir_record_valid", "isofs_readdir", "isofs_export_get_parent" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lTTzk2NjBfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpc29mc19sb29rdXAmIzM0OywKICAgICYjMzQ7aXNvZnNfZGlyX3JlY29yZF92YWxpZCYjMzQ7LAogICAgJiMzNDtpc29mc19yZWFkZGlyJiMzNDssCiAgICAmIzM0O2lzb2ZzX2V4cG9ydF9nZXRfcGFyZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgIHRvIHZhbGlkYXRlIElTTyA5NjYwIGRpcmVjdG9yeSByZWNvcmRzIGFuZCByZXBsYWNlcyBpbmxpbmUgc2FuaXR5IGNoZWNrcyB3aXRoIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gaW4gYGRvX2lzb2ZzX3JlYWRkaXJgLCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgLCBhbmQgYGlzb2ZzX2ZpbmRfZW50cnlgLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBmb3IgSVNPIDk2NjAsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCBieSBtb3VudGluZyBjcmFmdGVkIGRpc2sgaW1hZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjZmM2Y1NzYxMmI5MGNiZjc2MWRhOTdhNmQwMTk1ZTJlNTdjOTZkMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDA1OjA4OjQ3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2lzb2ZzL2Rpci5jIGIvZnMvaXNvZnMvZGlyLmNcbmluZGV4IGNjNTg3Y2QyNTE2MjMuLmE5NjI2OGM5Y2E0MTMgMTAwNjQ0XG4tLS0gYS9mcy9pc29mcy9kaXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaXNvZnMvZGlyLmNcbkBAIC0xNDksMTAgJiM0MzsxNDksOCBAQCBzdGF0aWMgaW50IGRvX2lzb2ZzX3JlYWRkaXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdFx0fVxuIFx0XHRcdGRlID0gdG1wZGU7XG4gXHRcdH1cbi1cdFx0LyogQmFzaWMgc2FuaXR5IGNoZWNrLCB3aGV0aGVyIG5hbWUgZG9lc24mIzM5O3QgZXhjZWVkIGRpciBlbnRyeSAqL1xuLVx0XHRpZiAoZGVfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKSB8fFxuLVx0XHQgICAgZGVfbGVuIFx1MDAzYyBkZS1cdTAwM2VuYW1lX2xlblswXSAmIzQzO1xuLVx0XHRcdFx0XHRzaXplb2Yoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKSkge1xuJiM0MztcdFx0aWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCBkZSA9PSB0bXBkZSA/IDAgOiBvZmZzZXRfc2F2ZWQsXG4mIzQzO1x0XHRcdFx0XHQgICAgZGUgPT0gdG1wZGUgPyBkZV9sZW4gOiBidWZzaXplKSkge1xuIFx0XHRcdHByaW50ayhLRVJOX05PVElDRSBcJiMzNDtpc285NjYwOiBDb3JydXB0ZWQgZGlyZWN0b3J5IGVudHJ5XCYjMzQ7XG4gXHRcdFx0ICAgICAgIFwmIzM0OyBpbiBibG9jayAlbHUgb2YgaW5vZGUgJWxsdVxcblwmIzM0OywgYmxvY2ssXG4gXHRcdFx0ICAgICAgIGlub2RlLVx1MDAzZWlfaW5vKTtcbkBAIC0zMDAsNCAmIzQzOzI5OCwzIEBAIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGlzb2ZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zID1cbiBcdC5maWxlYXR0cl9nZXQgPSBpc29mc19maWxlYXR0cl9nZXQsXG4gfTtcbiBcbi1cbmRpZmYgLS1naXQgYS9mcy9pc29mcy9leHBvcnQuYyBiL2ZzL2lzb2ZzL2V4cG9ydC5jXG5pbmRleCA3OGY4MGMxYTVjNTRhLi40ZjdmYTFkNTA4YTEzIDEwMDY0NFxuLS0tIGEvZnMvaXNvZnMvZXhwb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2lzb2ZzL2V4cG9ydC5jXG5AQCAtODMsMTMgJiM0Mzs4MywyMSBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQoc3RydWN0IGRlbnRyeSAqY2hpbGQpXG4gXG4gXHQvKiBUaGlzIGlzIHRoZSBcJiMzNDsuXCYjMzQ7IGVudHJ5LiAqL1xuIFx0ZGUgPSAoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKiliaC1cdTAwM2ViX2RhdGE7XG4mIzQzO1x0aWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCAwLCBjaGlsZF9pbm9kZS1cdTAwM2VpX3NiLVx1MDAzZXNfYmxvY2tzaXplKSB8fFxuJiM0MztcdCAgICBpc29udW1fNzExKGRlLVx1MDAzZW5hbWVfbGVuKSAhPSAxIHx8IGRlLVx1MDAzZW5hbWVbMF0gIT0gMCkge1xuJiM0MztcdFx0cHJpbnRrKEtFUk5fRVJSIFwmIzM0O2lzb2ZzOiBVbmFibGUgdG8gZmluZCB0aGUgXFxcJiMzNDsuXFxcJiMzNDsgZGlyZWN0b3J5IGZvciBORlMuXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJ2ID0gRVJSX1BUUigtRUFDQ0VTKTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcdH1cbiBcbiBcdC8qIFRoZSBcJiMzNDsuLlwmIzM0OyBlbnRyeSBpcyBhbHdheXMgdGhlIHNlY29uZCBlbnRyeS4gKi9cbiBcdHBhcmVudF9vZmZzZXQgPSAodW5zaWduZWQgbG9uZylpc29udW1fNzExKGRlLVx1MDAzZWxlbmd0aCk7XG4gXHRkZSA9IChzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQqKShiaC1cdTAwM2ViX2RhdGEgJiM0MzsgcGFyZW50X29mZnNldCk7XG4gXG4gXHQvKiBWZXJpZnkgaXQgaXMgaW4gZmFjdCB0aGUgXCYjMzQ7Li5cJiMzNDsgZW50cnkuICovXG4tXHRpZiAoKGlzb251bV83MTEoZGUtXHUwMDNlbmFtZV9sZW4pICE9IDEpIHx8IChkZS1cdTAwM2VuYW1lWzBdICE9IDEpKSB7XG4mIzQzO1x0aWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCBwYXJlbnRfb2Zmc2V0LFxuJiM0MztcdFx0XHRcdCAgICBjaGlsZF9pbm9kZS1cdTAwM2VpX3NiLVx1MDAzZXNfYmxvY2tzaXplKSB8fFxuJiM0MztcdCAgICBpc29udW1fNzExKGRlLVx1MDAzZW5hbWVfbGVuKSAhPSAxIHx8IGRlLVx1MDAzZW5hbWVbMF0gIT0gMSkge1xuIFx0XHRwcmludGsoS0VSTl9FUlIgXCYjMzQ7aXNvZnM6IFVuYWJsZSB0byBmaW5kIHRoZSBcXFwmIzM0Oy4uXFxcJiMzNDsgXCYjMzQ7XG4gXHRcdCAgICAgICBcJiMzNDtkaXJlY3RvcnkgZm9yIE5GUy5cXG5cJiMzNDspO1xuIFx0XHRydiA9IEVSUl9QVFIoLUVBQ0NFUyk7XG5kaWZmIC0tZ2l0IGEvZnMvaXNvZnMvaXNvZnMuaCBiL2ZzL2lzb2ZzL2lzb2ZzLmhcbmluZGV4IDBlYzhiMjRhNDJlZGMuLmRhY2I5Y2RhZTRmZDEgMTAwNjQ0XG4tLS0gYS9mcy9pc29mcy9pc29mcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9pc29mcy9pc29mcy5oXG5AQCAtMTE1LDYgJiM0MzsxMTUsOSBAQCBzdHJ1Y3QgaW5vZGU7XHRcdC8qIFRvIG1ha2UgZ2NjIGhhcHB5ICovXG4gZXh0ZXJuIGludCBwYXJzZV9yb2NrX3JpZGdlX2lub2RlKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBzdHJ1Y3QgaW5vZGUgKiwgaW50IHJlbG9jYXRlZCk7XG4gZXh0ZXJuIGludCBnZXRfcm9ja19yaWRnZV9maWxlbmFtZShzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKiwgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKik7XG4gZXh0ZXJuIGludCBpc29mc19uYW1lX3RyYW5zbGF0ZShzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKiwgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKik7XG4mIzQzO2Jvb2wgaXNvZnNfZGlyX3JlY29yZF92YWxpZChzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKmRlLFxuJiM0MztcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsXG4mIzQzO1x0XHRcdCAgICB1bnNpZ25lZCBsb25nIGJ1ZnNpemUpO1xuIFxuIGludCBnZXRfam9saWV0X2ZpbGVuYW1lKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCB1bnNpZ25lZCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTtcbiBpbnQgZ2V0X2Fjb3JuX2ZpbGVuYW1lKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTtcbmRpZmYgLS1naXQgYS9mcy9pc29mcy9uYW1laS5jIGIvZnMvaXNvZnMvbmFtZWkuY1xuaW5kZXggM2FjZTNkNmE1NWU3OS4uYTE2MWIyODg5M2Q2MyAxMDA2NDRcbi0tLSBhL2ZzL2lzb2ZzL25hbWVpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2lzb2ZzL25hbWVpLmNcbkBAIC0xMCw2ICYjNDM7MTAsMjYgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9nZnAuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O2lzb2ZzLmhcJiMzNDtcbiBcbiYjNDM7Ym9vbCBpc29mc19kaXJfcmVjb3JkX3ZhbGlkKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqZGUsXG4mIzQzO1x0XHRcdCAgICB1bnNpZ25lZCBsb25nIG9mZnNldCxcbiYjNDM7XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgYnVmc2l6ZSlcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGludCBsZW47XG4mIzQzO1x0dW5zaWduZWQgaW50IG5hbWVfbGVuO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgbWluX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCwgbmFtZSk7XG4mIzQzO1xuJiM0MztcdGlmIChvZmZzZXQgXHUwMDNlIGJ1ZnNpemUgfHwgYnVmc2l6ZSAtIG9mZnNldCBcdTAwM2MgbWluX2xlbilcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0bGVuID0gaXNvbnVtXzcxMShkZS1cdTAwM2VsZW5ndGgpO1xuJiM0MztcdG5hbWVfbGVuID0gaXNvbnVtXzcxMShkZS1cdTAwM2VuYW1lX2xlbik7XG4mIzQzO1x0aWYgKGxlbiBcdTAwM2MgbWluX2xlbiB8fCBuYW1lX2xlbiBcdTAwM2UgbGVuIC0gbWluX2xlbilcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRpZiAobGVuIFx1MDAzZSBidWZzaXplIC0gb2Zmc2V0KVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnRcbiBpc29mc19jbXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpjb21wYXJlLCBpbnQgZGxlbilcbiB7XG5AQCAtODgsMTYgJiM0MzsxMDgsMTYgQEAgaXNvZnNfZmluZF9lbnRyeShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuIFx0XHRcdGRlID0gdG1wZGU7XG4gXHRcdH1cbiBcbi1cdFx0ZGxlbiA9IGRlLVx1MDAzZW5hbWVfbGVuWzBdO1xuLVx0XHRkcG50ID0gZGUtXHUwMDNlbmFtZTtcbi1cdFx0LyogQmFzaWMgc2FuaXR5IGNoZWNrLCB3aGV0aGVyIG5hbWUgZG9lc24mIzM5O3QgZXhjZWVkIGRpciBlbnRyeSAqL1xuLVx0XHRpZiAoZGVfbGVuIFx1MDAzYyBkbGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQpKSB7XG4mIzQzO1x0XHRpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIGRlID09IHRtcGRlID8gMCA6IG9mZnNldF9zYXZlZCxcbiYjNDM7XHRcdFx0XHRcdCAgICBkZSA9PSB0bXBkZSA/IGRlX2xlbiA6IGJ1ZnNpemUpKSB7XG4gXHRcdFx0cHJpbnRrKEtFUk5fTk9USUNFIFwmIzM0O2lzbzk2NjA6IENvcnJ1cHRlZCBkaXJlY3RvcnkgZW50cnlcJiMzNDtcbiBcdFx0XHQgICAgICAgXCYjMzQ7IGluIGJsb2NrICVsdSBvZiBpbm9kZSAlbGx1XFxuXCYjMzQ7LCBibG9jayxcbiBcdFx0XHQgICAgICAgZGlyLVx1MDAzZWlfaW5vKTtcbiBcdFx0XHRicmVsc2UoYmgpO1xuIFx0XHRcdHJldHVybiAwO1xuIFx0XHR9XG4mIzQzO1x0XHRkbGVuID0gZGUtXHUwMDNlbmFtZV9sZW5bMF07XG4mIzQzO1x0XHRkcG50ID0gZGUtXHUwMDNlbmFtZTtcbiBcbiBcdFx0aWYgKHNiaS1cdTAwM2VzX3JvY2sgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAoKGkgPSBnZXRfcm9ja19yaWRnZV9maWxlbmFtZShkZSwgdG1wbmFtZSwgZGlyKSkpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lTTzk2NjBfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpc29mc19sb29rdXAmIzM0OywKICAgICYjMzQ7aXNvZnNfZGlyX3JlY29yZF92YWxpZCYjMzQ7LAogICAgJiMzNDtpc29mc19yZWFkZGlyJiMzNDssCiAgICAmIzM0O2lzb2ZzX2V4cG9ydF9nZXRfcGFyZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgIHRvIHZhbGlkYXRlIElTTyA5NjYwIGRpcmVjdG9yeSByZWNvcmRzIGFuZCByZXBsYWNlcyBpbmxpbmUgc2FuaXR5IGNoZWNrcyB3aXRoIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gaW4gYGRvX2lzb2ZzX3JlYWRkaXJgLCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgLCBhbmQgYGlzb2ZzX2ZpbmRfZW50cnlgLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBmb3IgSVNPIDk2NjAsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCBieSBtb3VudGluZyBjcmFmdGVkIGRpc2sgaW1hZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjZmM2Y1NzYxMmI5MGNiZjc2MWRhOTdhNmQwMTk1ZTJlNTdjOTZkMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDI5IDA1OjA4OjQ3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvaXNvZnMvZGlyLmMgYi9mcy9pc29mcy9kaXIuYwppbmRleCBjYzU4N2NkMjUxNjIzLi5hOTYyNjhjOWNhNDEzIDEwMDY0NAotLS0gYS9mcy9pc29mcy9kaXIuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9pc29mcy9kaXIuYwpAQCAtMTQ5LDEwICYjNDM7MTQ5LDggQEAgc3RhdGljIGludCBkb19pc29mc19yZWFkZGlyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLAogCQkJfQogCQkJZGUgPSB0bXBkZTsKIAkJfQotCQkvKiBCYXNpYyBzYW5pdHkgY2hlY2ssIHdoZXRoZXIgbmFtZSBkb2VzbiYjMzk7dCBleGNlZWQgZGlyIGVudHJ5ICovCi0JCWlmIChkZV9sZW4gJmx0OyBzaXplb2Yoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKSB8fAotCQkgICAgZGVfbGVuICZsdDsgZGUtJmd0O25hbWVfbGVuWzBdICYjNDM7Ci0JCQkJCXNpemVvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQpKSB7CiYjNDM7CQlpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIGRlID09IHRtcGRlID8gMCA6IG9mZnNldF9zYXZlZCwKJiM0MzsJCQkJCSAgICBkZSA9PSB0bXBkZSA/IGRlX2xlbiA6IGJ1ZnNpemUpKSB7CiAJCQlwcmludGsoS0VSTl9OT1RJQ0UgJiMzNDtpc285NjYwOiBDb3JydXB0ZWQgZGlyZWN0b3J5IGVudHJ5JiMzNDsKIAkJCSAgICAgICAmIzM0OyBpbiBibG9jayAlbHUgb2YgaW5vZGUgJWxsdVxuJiMzNDssIGJsb2NrLAogCQkJICAgICAgIGlub2RlLSZndDtpX2lubyk7CkBAIC0zMDAsNCAmIzQzOzI5OCwzIEBAIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGlzb2ZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zID0KIAkuZmlsZWF0dHJfZ2V0ID0gaXNvZnNfZmlsZWF0dHJfZ2V0LAogfTsKIAotCmRpZmYgLS1naXQgYS9mcy9pc29mcy9leHBvcnQuYyBiL2ZzL2lzb2ZzL2V4cG9ydC5jCmluZGV4IDc4ZjgwYzFhNWM1NGEuLjRmN2ZhMWQ1MDhhMTMgMTAwNjQ0Ci0tLSBhL2ZzL2lzb2ZzL2V4cG9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2lzb2ZzL2V4cG9ydC5jCkBAIC04MywxMyAmIzQzOzgzLDIxIEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICppc29mc19leHBvcnRfZ2V0X3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpjaGlsZCkKIAogCS8qIFRoaXMgaXMgdGhlICYjMzQ7LiYjMzQ7IGVudHJ5LiAqLwogCWRlID0gKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCopYmgtJmd0O2JfZGF0YTsKJiM0MzsJaWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCAwLCBjaGlsZF9pbm9kZS0mZ3Q7aV9zYi0mZ3Q7c19ibG9ja3NpemUpIHx8CiYjNDM7CSAgICBpc29udW1fNzExKGRlLSZndDtuYW1lX2xlbikgIT0gMSB8fCBkZS0mZ3Q7bmFtZVswXSAhPSAwKSB7CiYjNDM7CQlwcmludGsoS0VSTl9FUlIgJiMzNDtpc29mczogVW5hYmxlIHRvIGZpbmQgdGhlIFwmIzM0Oy5cJiMzNDsgZGlyZWN0b3J5IGZvciBORlMuXG4mIzM0Oyk7CiYjNDM7CQlydiA9IEVSUl9QVFIoLUVBQ0NFUyk7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQogCiAJLyogVGhlICYjMzQ7Li4mIzM0OyBlbnRyeSBpcyBhbHdheXMgdGhlIHNlY29uZCBlbnRyeS4gKi8KIAlwYXJlbnRfb2Zmc2V0ID0gKHVuc2lnbmVkIGxvbmcpaXNvbnVtXzcxMShkZS0mZ3Q7bGVuZ3RoKTsKIAlkZSA9IChzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQqKShiaC0mZ3Q7Yl9kYXRhICYjNDM7IHBhcmVudF9vZmZzZXQpOwogCiAJLyogVmVyaWZ5IGl0IGlzIGluIGZhY3QgdGhlICYjMzQ7Li4mIzM0OyBlbnRyeS4gKi8KLQlpZiAoKGlzb251bV83MTEoZGUtJmd0O25hbWVfbGVuKSAhPSAxKSB8fCAoZGUtJmd0O25hbWVbMF0gIT0gMSkpIHsKJiM0MzsJaWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCBwYXJlbnRfb2Zmc2V0LAomIzQzOwkJCQkgICAgY2hpbGRfaW5vZGUtJmd0O2lfc2ItJmd0O3NfYmxvY2tzaXplKSB8fAomIzQzOwkgICAgaXNvbnVtXzcxMShkZS0mZ3Q7bmFtZV9sZW4pICE9IDEgfHwgZGUtJmd0O25hbWVbMF0gIT0gMSkgewogCQlwcmludGsoS0VSTl9FUlIgJiMzNDtpc29mczogVW5hYmxlIHRvIGZpbmQgdGhlIFwmIzM0Oy4uXCYjMzQ7ICYjMzQ7CiAJCSAgICAgICAmIzM0O2RpcmVjdG9yeSBmb3IgTkZTLlxuJiMzNDspOwogCQlydiA9IEVSUl9QVFIoLUVBQ0NFUyk7CmRpZmYgLS1naXQgYS9mcy9pc29mcy9pc29mcy5oIGIvZnMvaXNvZnMvaXNvZnMuaAppbmRleCAwZWM4YjI0YTQyZWRjLi5kYWNiOWNkYWU0ZmQxIDEwMDY0NAotLS0gYS9mcy9pc29mcy9pc29mcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2lzb2ZzL2lzb2ZzLmgKQEAgLTExNSw2ICYjNDM7MTE1LDkgQEAgc3RydWN0IGlub2RlOwkJLyogVG8gbWFrZSBnY2MgaGFwcHkgKi8KIGV4dGVybiBpbnQgcGFyc2Vfcm9ja19yaWRnZV9pbm9kZShzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKiwgc3RydWN0IGlub2RlICosIGludCByZWxvY2F0ZWQpOwogZXh0ZXJuIGludCBnZXRfcm9ja19yaWRnZV9maWxlbmFtZShzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKiwgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKik7CiBleHRlcm4gaW50IGlzb2ZzX25hbWVfdHJhbnNsYXRlKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTsKJiM0Mztib29sIGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSwKJiM0MzsJCQkgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsCiYjNDM7CQkJICAgIHVuc2lnbmVkIGxvbmcgYnVmc2l6ZSk7CiAKIGludCBnZXRfam9saWV0X2ZpbGVuYW1lKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCB1bnNpZ25lZCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTsKIGludCBnZXRfYWNvcm5fZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICosIGNoYXIgKiwgc3RydWN0IGlub2RlICopOwpkaWZmIC0tZ2l0IGEvZnMvaXNvZnMvbmFtZWkuYyBiL2ZzL2lzb2ZzL25hbWVpLmMKaW5kZXggM2FjZTNkNmE1NWU3OS4uYTE2MWIyODg5M2Q2MyAxMDA2NDQKLS0tIGEvZnMvaXNvZnMvbmFtZWkuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9pc29mcy9uYW1laS5jCkBAIC0xMCw2ICYjNDM7MTAsMjYgQEAKICNpbmNsdWRlICZsdDtsaW51eC9nZnAuaCZndDsKICNpbmNsdWRlICYjMzQ7aXNvZnMuaCYjMzQ7CiAKJiM0Mztib29sIGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSwKJiM0MzsJCQkgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsCiYjNDM7CQkJICAgIHVuc2lnbmVkIGxvbmcgYnVmc2l6ZSkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBsZW47CiYjNDM7CXVuc2lnbmVkIGludCBuYW1lX2xlbjsKJiM0MzsJdW5zaWduZWQgbG9uZyBtaW5fbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkLCBuYW1lKTsKJiM0MzsKJiM0MzsJaWYgKG9mZnNldCAmZ3Q7IGJ1ZnNpemUgfHwgYnVmc2l6ZSAtIG9mZnNldCAmbHQ7IG1pbl9sZW4pCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CWxlbiA9IGlzb251bV83MTEoZGUtJmd0O2xlbmd0aCk7CiYjNDM7CW5hbWVfbGVuID0gaXNvbnVtXzcxMShkZS0mZ3Q7bmFtZV9sZW4pOwomIzQzOwlpZiAobGVuICZsdDsgbWluX2xlbiB8fCBuYW1lX2xlbiAmZ3Q7IGxlbiAtIG1pbl9sZW4pCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CWlmIChsZW4gJmd0OyBidWZzaXplIC0gb2Zmc2V0KQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwlyZXR1cm4gdHJ1ZTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50CiBpc29mc19jbXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpjb21wYXJlLCBpbnQgZGxlbikKIHsKQEAgLTg4LDE2ICYjNDM7MTA4LDE2IEBAIGlzb2ZzX2ZpbmRfZW50cnkoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKIAkJCWRlID0gdG1wZGU7CiAJCX0KIAotCQlkbGVuID0gZGUtJmd0O25hbWVfbGVuWzBdOwotCQlkcG50ID0gZGUtJmd0O25hbWU7Ci0JCS8qIEJhc2ljIHNhbml0eSBjaGVjaywgd2hldGhlciBuYW1lIGRvZXNuJiMzOTt0IGV4Y2VlZCBkaXIgZW50cnkgKi8KLQkJaWYgKGRlX2xlbiAmbHQ7IGRsZW4gJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCkpIHsKJiM0MzsJCWlmICghaXNvZnNfZGlyX3JlY29yZF92YWxpZChkZSwgZGUgPT0gdG1wZGUgPyAwIDogb2Zmc2V0X3NhdmVkLAomIzQzOwkJCQkJICAgIGRlID09IHRtcGRlID8gZGVfbGVuIDogYnVmc2l6ZSkpIHsKIAkJCXByaW50ayhLRVJOX05PVElDRSAmIzM0O2lzbzk2NjA6IENvcnJ1cHRlZCBkaXJlY3RvcnkgZW50cnkmIzM0OwogCQkJICAgICAgICYjMzQ7IGluIGJsb2NrICVsdSBvZiBpbm9kZSAlbGx1XG4mIzM0OywgYmxvY2ssCiAJCQkgICAgICAgZGlyLSZndDtpX2lubyk7CiAJCQlicmVsc2UoYmgpOwogCQkJcmV0dXJuIDA7CiAJCX0KJiM0MzsJCWRsZW4gPSBkZS0mZ3Q7bmFtZV9sZW5bMF07CiYjNDM7CQlkcG50ID0gZGUtJmd0O25hbWU7CiAKIAkJaWYgKHNiaS0mZ3Q7c19yb2NrICZhbXA7JmFtcDsKIAkJICAgICgoaSA9IGdldF9yb2NrX3JpZGdlX2ZpbGVuYW1lKGRlLCB0bXBuYW1lLCBkaXIpKSkpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU3NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgSVNPIDk2NjAgRmlsZXN5c3RlbSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgc29tZSBwcmV0dHkgY3J1Y2lhbCBwYXJ0cyBvZiB0aGUgSVNPIDk2NjAgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbi4gSXQmIzM5O3MgbW9kaWZ5aW5nIGBmcy9pc29mcy9kaXIuY2AsIGBmcy9pc29mcy9leHBvcnQuY2AsIGBmcy9pc29mcy9pc29mcy5oYCwgYW5kIGBmcy9pc29mcy9uYW1laS5jYC4gIExvb2tzIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgbmV3IGZ1bmN0aW9uLCBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAsIHdoaWNoIGlzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLiBUaGlzIHN1Z2dlc3RzIHRoZXkmIzM5O3JlIHN0cmVuZ3RoZW5pbmcgdGhlIHZhbGlkYXRpb24gb2YgZGlyZWN0b3J5IHJlY29yZHMgd2l0aGluIHRoZSBmaWxlc3lzdGVtLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gc2VlIGluIHRoaXMga2luZCBvZiBjb2RlLiBUaGV5JiMzOTtyZSByZXBsYWNpbmcgc29tZSBpbi1saW5lIHNhbml0eSBjaGVja3Mgd2l0aCBjYWxscyB0byB0aGlzIG5ldyBmdW5jdGlvbiwgd2hpY2ggc2hvdWxkIG1ha2UgdGhlIGNvZGUgY2xlYW5lciBhbmQgZWFzaWVyIHRvIG1haW50YWluLgoKTm93LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgc2NvcGUuIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9ucyBhZmZlY3RlZCBhcmU6IGBkb19pc29mc19yZWFkZGlyYCBmcm9tIGBkaXIuY2AgKHRoYXQmIzM5O3MgYSBjb3JlIGRpcmVjdG9yeSByZWFkaW5nIG9wZXJhdGlvbiEpLCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgIGZyb20gYGV4cG9ydC5jYCAocmVsYXRlZCB0byBleHBvcnRpbmcgZmlsZXN5c3RlbSBpbmZvcm1hdGlvbiksIGBpc29mc19maW5kX2VudHJ5YCBmcm9tIGBuYW1laS5jYCAodGhlIGVudHJ5IHBvaW50IGZvciBzZWFyY2hpbmcgZm9yIGZpbGVzKSwgYW5kLCBvZiBjb3Vyc2UsIHRoZSBuZXcgYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgIGZyb20gYG5hbWVpLmNgLiBBbGwgcmVhY2hhYmxlIGtlcm5lbCBsb2dpYy4KClRoZSBmYWN0IHRoYXQgdGhpcyBwYXRjaCBpcyB0YXJnZXRpbmcgdGhlIElTTyA5NjYwIGZpbGVzeXN0ZW0gaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSBmaWxlc3lzdGVtIHN0aWxsIGNvbW1vbmx5IHVzZWQgZm9yIENELVJPTXMsIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgY2FuIGJlIG1vdW50ZWQgdGhyb3VnaCBsb29wYmFjayBkZXZpY2VzLiBUaGF0IG1lYW5zIHVudHJ1c3RlZCBkYXRhIGNhbiByZWFjaCB0aGUga2VybmVsIGNvZGUsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBXZSBtaWdodCBiZSBhYmxlIHRvIGNyYWZ0IG1hbGljaW91cyBJU08gaW1hZ2VzIGFuZCBmZWVkIHRoZW0gdG8gdGhlIGtlcm5lbCB0aHJvdWdoIGEgbG9vcGJhY2sgbW91bnQuCgpTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBjb250cm9sIHRoZSBJU08gOTY2MCBmaWxlc3lzdGVtLiBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIHNlYXJjaCB0aGUgYGZzL2lzb2ZzL0tjb25maWdgIGZpbGUgYW5kIGlkZW50aWZ5IGFueSByZWxldmFudCBmbGFncywgbGlrZSBgSVNPOTY2MF9GU2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRvIHNlZSBob3cgdG8gZW5hYmxlIGFuZCB0ZXN0IHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElTTzk2NjBfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9pc29mcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2lzb2ZzL0tjb25maWc6Mjpjb25maWcgSVNPOTY2MF9GU1xuZnMvaXNvZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7SVNPIDk2NjAgQ0RST00gZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NTQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyB0aGUgSVNPOTY2MCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBJU085NjYwX0ZTYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgdGhhdCYjMzk7cyB0aGUgYmFzZS4gQnV0IHdoYXQgZWxzZSBpcyByZXF1aXJlZCB0byBtYWtlIHRoaXMgd29yayBjb3JyZWN0bHk/JiMzNDsgSXQmIzM5O3MgcmFyZWx5IGEgc3RhbmRhbG9uZSBvcHRpb24uCgpJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBhbG1vc3QgY2VydGFpbiB0aGVyZSYjMzk7cyBhIHByZXJlcXVpc2l0ZSDigJMgc29tZXRoaW5nIGZvdW5kYXRpb25hbCDigJMgcHJvYmFibHkgc29tZXRoaW5nIGFsb25nIHRoZSBsaW5lcyBvZiBgZGVwZW5kcyBvbiBCTE9DS2AuIFRoaXMgaXMgdGhlIHN0YW5kYXJkLCBhZnRlciBhbGwsIGFuZCBJJiMzOTtkIGJlIHZlcnkgc3VycHJpc2VkIGlmIGl0IHdhc24mIzM5O3QgdGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoYXQmIzM5O3MgdGhlIGNhc2UuIEl0JiMzOTtzIGEgc3RhbmRhcmQgZGVwZW5kZW5jeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaXNvZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pc29mcy9LY29uZmlnPTE5PWNvbmZpZyBKT0xJRVRcbmZzL2lzb2ZzL0tjb25maWctMjAtXHRib29sIFwmIzM0O01pY3Jvc29mdCBKb2xpZXQgQ0RST00gZXh0ZW5zaW9uc1wmIzM0O1xuZnMvaXNvZnMvS2NvbmZpZzoyMTpcdGRlcGVuZHMgb24gSVNPOTY2MF9GU1xuZnMvaXNvZnMvS2NvbmZpZy0yMi1cdHNlbGVjdCBOTFNcbi0tXG5mcy9pc29mcy9LY29uZmlnPTMxPWNvbmZpZyBaSVNPRlNcbmZzL2lzb2ZzL0tjb25maWctMzItXHRib29sIFwmIzM0O1RyYW5zcGFyZW50IGRlY29tcHJlc3Npb24gZXh0ZW5zaW9uXCYjMzQ7XG5mcy9pc29mcy9LY29uZmlnOjMzOlx0ZGVwZW5kcyBvbiBJU085NjYwX0ZTXG5mcy9pc29mcy9LY29uZmlnLTM0LVx0c2VsZWN0IFpMSUJfSU5GTEFURVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NDYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBJU085NjYwIEZpbGVzeXN0ZW0gRGVwZW5kZW5jaWVzKioKCkhtbSwgaG9sZCBvbiBhIG1pbnV0ZS4gSSB3YXMganVzdCByZXZpZXdpbmcgdGhlIGZpbGVzeXN0ZW0gZGVwZW5kZW5jaWVzLCBhbmQgaXQgc2VlbXMgKmRpcmVjdGx5KiBsb29raW5nIGF0IGBJU085NjYwX0ZTYCwgdGhlIElTTzk2NjAgZmlsZXN5c3RlbSBpdHNlbGYsIGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IHJldmVhbCBhbnkgJiMzNDtkZXBlbmRzIG9uJiMzNDsgcmVsYXRpb25zaGlwcy4gVGhhdCYjMzk7cyBhIGJpdCBvZGQsIGlzbiYjMzk7dCBpdD8gR2VuZXJhbGx5LCBmaWxlc3lzdGVtcyBoYXZlIGRlcGVuZGVuY2llcywgZXZlbiBpZiB0aGV5JiMzOTtyZSBtaW5pbWFsLgoKUmlnaHQsIHNvIHdoZXJlJiMzOTtzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBpdHMgcmVxdWlyZW1lbnRzLCBhbnkgZmxhZ3MgaXQgbmVlZHM/IFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgYGZzL2lzb2ZzL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBmaWxlc3lzdGVtIHNob3VsZCBsaWUuIFRoYXQgc2hvdWxkIGxheSBpdCBhbGwgb3V0IGZvciBtZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvaXNvZnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBJU085NjYwX0ZTXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJU08gOTY2MCBDRFJPTSBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRzZWxlY3QgQlVGRkVSX0hFQURcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBpcyB0aGUgc3RhbmRhcmQgZmlsZSBzeXN0ZW0gdXNlZCBvbiBDRC1ST01zLiAgSXQgd2FzIHByZXZpb3VzbHlcbiAgIDc6XHRcdCAga25vd24gYXMgXCYjMzQ7SGlnaCBTaWVycmEgRmlsZSBTeXN0ZW1cJiMzNDsgYW5kIGlzIGNhbGxlZCBcJiMzNDtoc2ZzXCYjMzQ7IG9uIG90aGVyXG4gICA4Olx0XHQgIFVuaXggc3lzdGVtcy4gIFRoZSBzby1jYWxsZWQgUm9jay1SaWRnZSBleHRlbnNpb25zIHdoaWNoIGFsbG93IGZvclxuICAgOTpcdFx0ICBsb25nIFVuaXggZmlsZW5hbWVzIGFuZCBzeW1ib2xpYyBsaW5rcyBhcmUgYWxzbyBzdXBwb3J0ZWQgYnkgdGhpc1xuICAxMDpcdFx0ICBkcml2ZXIuICBJZiB5b3UgaGF2ZSBhIENELVJPTSBkcml2ZSBhbmQgd2FudCB0byBkbyBtb3JlIHdpdGggaXQgdGhhblxuICAxMTpcdFx0ICBqdXN0IGxpc3RlbiB0byBhdWRpbyBDRHMgYW5kIHdhdGNoIGl0cyBMRURzLCBzYXkgWSAoYW5kIHJlYWRcbiAgMTI6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lzb2ZzLnJzdFx1MDAzZSBhbmQgdGhlIENELVJPTS1IT1dUTyxcbiAgMTM6XHRcdCAgYXZhaWxhYmxlIGZyb20gXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG9cdTAwM2UpLCB0aGVyZWJ5XG4gIDE0Olx0XHQgIGVubGFyZ2luZyB5b3VyIGtlcm5lbCBieSBhYm91dCAyNyBLQjsgb3RoZXJ3aXNlIHNheSBOLlxuICAxNTpcdFxuICAxNjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZmlsZSBzeXN0ZW0gc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDE3Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpc29mcy5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgSk9MSUVUXG4gIDIwOlx0XHRib29sIFwmIzM0O01pY3Jvc29mdCBKb2xpZXQgQ0RST00gZXh0ZW5zaW9uc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NzEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJU085NjYwIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGUgSVNPOTY2MCBmaWxlc3lzdGVtLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gaW5jbHVkZSBgSVNPOTY2MF9GU2AgYXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBlbGVtZW50LiBUaG91Z2gsIEkgd2FzIGFib3V0IHRvIGFsc28gaW5jbHVkZSBgQkxPQ0tgLCBidXQgc2luY2UgYEJMT0NLYCBpcyB1c3VhbGx5IGVuYWJsZWQgYWxvbmdzaWRlIGBJU085NjYwX0ZTYCwgdGhlIG1vcmUgc3BlY2lmaWMgYElTTzk2NjBfRlNgIHNob3VsZCBiZSBzdWZmaWNpZW50LgoKTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBpbnZvbHZlZC4gTXkgZm9jdXMgaXMgb246CgoqICAgYGRvX2lzb2ZzX3JlYWRkaXJgIC0gSXQgYXBwZWFycyB0byBiZSBzdGF0aWM7IEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IHRvIGJlIGNlcnRhaW4uCiogICBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgIC0gQW5vdGhlciBwb3RlbnRpYWwgc3RhdGljIGZ1bmN0aW9uOyBJJiMzOTtsbCBmbGFnIGl0IGZvciB2ZXJpZmljYXRpb24uCiogICBgaXNvZnNfZmluZF9lbnRyeWAgLSBTYW1lIGFzIGFib3ZlLCBJIHNob3VsZCB2ZXJpZnkgaWYgaXQmIzM5O3Mgc3RhdGljLgoqICAgYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgIC0gVGhpcyBvbmUgaXMgKm5vdCogc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGtub3cgaW1tZWRpYXRlbHkuCgpUbyBiZWdpbiB0aGlzIGFuYWx5c2lzLCBJJiMzOTtsbCBzdGFydCB3aXRoIGBmcy9pc29mcy9kaXIuY2AgYW5kIHNwZWNpZmljYWxseSBleGFtaW5lIGBkb19pc29mc19yZWFkZGlyYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZG9faXNvZnNfcmVhZGRpciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL2Rpci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL2Rpci5jPTUzPWludCBnZXRfYWNvcm5fZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSxcbi0tXG5mcy9pc29mcy9kaXIuYy04NC0gKi9cbmZzL2lzb2ZzL2Rpci5jOjg1OnN0YXRpYyBpbnQgZG9faXNvZnNfcmVhZGRpcihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcbmZzL2lzb2ZzL2Rpci5jLTg2LVx0XHRzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCxcbi0tXG5mcy9pc29mcy9kaXIuYy0yNDgtICogaGFuZGxpbmcgc3BsaXQgZGlyZWN0b3J5IGVudHJpZXMuLiBUaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnlcbmZzL2lzb2ZzL2Rpci5jOjI0OTogKiBcJiMzNDtkb19pc29mc19yZWFkZGlyKClcJiMzNDsuXG5mcy9pc29mcy9kaXIuYy0yNTAtICovXG5mcy9pc29mcy9kaXIuYz0yNTE9c3RhdGljIGludCBpc29mc19yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eClcbi0tXG5mcy9pc29mcy9kaXIuYy0yNjMtXG5mcy9pc29mcy9kaXIuYzoyNjQ6XHRyZXN1bHQgPSBkb19pc29mc19yZWFkZGlyKGlub2RlLCBmaWxlLCBjdHgsIHRtcG5hbWUsIHRtcGRlKTtcbmZzL2lzb2ZzL2Rpci5jLTI2NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIyNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIElTT0ZTIEZpbGUgU3lzdGVtKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYGRvX2lzb2ZzX3JlYWRkaXJgIGZ1bmN0aW9uLiBJdCYjMzk7cyBtYXJrZWQgYXMgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZzsgSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLiBUaGUgZXh0ZXJuYWwgZW50cnkgcG9pbnQgZm9yIHJlYWRpbmcgYSBkaXJlY3RvcnkgaW4gSVNPRlMgc2VlbXMgdG8gYmUgYGlzb2ZzX3JlYWRkaXJgLCBhbmQgdGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBwb2ludCBJJiMzOTttIGludGVyZXN0ZWQgaW4gaGVyZS4KCk5vdywgd2hlcmUmIzM5O3MgdGhlIHBhcmVudCBpbmZvcm1hdGlvbiBoYW5kbGVkPyBJJiMzOTtsbCBiZXQgaXQmIzM5O3MgaW4gdGhlIGV4cG9ydCBjb2RlIHNpbmNlIHRoYXQgcmVsYXRlcyB0byB0aGUgbW91bnQgcG9pbnQgYW5kIGhvdyB0aGluZ3MgYXJlIG1hZGUgYWNjZXNzaWJsZSB0byB0aGUgd2lkZXIgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIGNoZWNrIGluIGBmcy9pc29mcy9leHBvcnQuY2AgdG8gbG9vayBmb3IgdGhlIGZ1bmN0aW9uIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAuIFRoYXQgZnVuY3Rpb24gcHJvYmFibHkgaG9sZHMgdGhlIGtleSB0byBob3cgZGlyZWN0b3J5IGVudHJpZXMgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIGZpbGUgc3lzdGVtIHN0cnVjdHVyZSBhdCB0aGUgbW91bnQgcG9pbnQuIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHRoZSBleHBvcnQgY29kZSBhbmQgc2VlIHdoYXQgSSBjYW4gdHVybiB1cCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNvZnNfZXhwb3J0X2dldF9wYXJlbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9pc29mcy9leHBvcnQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pc29mcy9leHBvcnQuYz0yMD1pc29mc19leHBvcnRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2lzb2ZzL2V4cG9ydC5jLTQzLSAqIGlzb2ZzX25vcm1hbGl6ZV9ibG9ja19hbmRfb2Zmc2V0KCkuICovXG5mcy9pc29mcy9leHBvcnQuYzo0NDpzdGF0aWMgc3RydWN0IGRlbnRyeSAqaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQoc3RydWN0IGRlbnRyeSAqY2hpbGQpXG5mcy9pc29mcy9leHBvcnQuYy00NS17XG4tLVxuZnMvaXNvZnMvZXhwb3J0LmMtNTUtXHRpZiAoIVNfSVNESVIoY2hpbGRfaW5vZGUtXHUwMDNlaV9tb2RlKSkge1xuZnMvaXNvZnMvZXhwb3J0LmM6NTY6XHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtpc29mczogaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQoKTogXCYjMzQ7XG5mcy9pc29mcy9leHBvcnQuYy01Ny1cdFx0ICAgICAgIFwmIzM0O2NoaWxkIGlzIG5vdCBhIGRpcmVjdG9yeSFcXG5cJiMzNDspO1xuLS1cbmZzL2lzb2ZzL2V4cG9ydC5jLTY1LVx0aWYgKGVfY2hpbGRfaW5vZGUtXHUwMDNlaV9pZ2V0NV9vZmZzZXQgIT0gMCkge1xuZnMvaXNvZnMvZXhwb3J0LmM6NjY6XHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtpc29mczogaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQoKTogXCYjMzQ7XG5mcy9pc29mcy9leHBvcnQuYy02Ny1cdFx0ICAgICAgIFwmIzM0O2NoaWxkIGRpcmVjdG9yeSBub3Qgbm9ybWFsaXplZCFcXG5cJiMzNDspO1xuLS1cbmZzL2lzb2ZzL2V4cG9ydC5jPTE5Nj1jb25zdCBzdHJ1Y3QgZXhwb3J0X29wZXJhdGlvbnMgaXNvZnNfZXhwb3J0X29wcyA9IHtcbi0tXG5mcy9pc29mcy9leHBvcnQuYy0xOTktXHQuZmhfdG9fcGFyZW50XHQ9IGlzb2ZzX2ZoX3RvX3BhcmVudCxcbmZzL2lzb2ZzL2V4cG9ydC5jOjIwMDpcdC5nZXRfcGFyZW50ICAgICA9IGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50LFxuZnMvaXNvZnMvZXhwb3J0LmMtMjAxLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIElTT0ZTIEV4cG9ydCBhbmQgU3l6a2FsbGVyIENvbXBhdGliaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCBmdW5jdGlvbi4gSXQmIzM5O3MgbWFya2VkIGFzIGBzdGF0aWNgLCBidXQgdGhlbiBpdCYjMzk7cyBleHBvc2VkIHRocm91Z2ggYGlzb2ZzX2V4cG9ydF9vcHMuZ2V0X3BhcmVudGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYHN0YXRpY2AgaW5pdGlhbGx5IG1hZGUgbWUgdGhpbmsgaXQgbWlnaHQgYmUgaW5saW5lZCwgYW5kIHRoZXJlZm9yZSBub3QgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBmb3IgdG9vbHMgbGlrZSBzeXprYWxsZXIgdG8gZmluZC4gQnV0LCBpdCYjMzk7cyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHdoaWNoIGdlbmVyYWxseSBwcmV2ZW50cyBpbmxpbmluZy4gU28sIEkgZG9uJiMzOTt0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNvbXBpbGVyIG9wdGltaXppbmcgaXQgYXdheS4KCkhtbSwgYnV0IG1heWJlIHRoZXJlJiMzOTtzIGEgYmV0dGVyIGFwcHJvYWNoIGFueXdheT8gU2hvdWxkIEkgYmUgdGhpbmtpbmcgYWJvdXQgdXNpbmcgYGlzb2ZzX2ZoX3RvX3BhcmVudGAgb3IgbWF5YmUgZXZlbiBsb29raW5nIGF0IGBpc29mc19leHBvcnRfb3BzYCBkaXJlY3RseT8gT24gc2Vjb25kIHRob3VnaHQsIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAgKmlzKiBwZXJmZWN0bHkgYWNjZXB0YWJsZSwgYXMgbG9uZyBhcyB0aGUgY29tcGlsZXIgaXNuJiMzOTt0IGlubGluaW5nIGl0LiBBbmQgc2luY2UgaXQmIzM5O3MgYSBmdW5jdGlvbiBwb2ludGVyLCBJIHRoaW5rIHdlJiMzOTtyZSBnb29kIHRoZXJlLgoKSG93ZXZlciwgdGhlIHJlYWwgZ29hbCBpcyBjb21wYXRpYmlsaXR5IHdpdGggc3l6a2FsbGVyLCB3aGljaCBpcyBtYWlubHkgZm9jdXNlZCBvbiBub24tc3RhdGljIGZ1bmN0aW9ucy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpub24tc3RhdGljKiBmdW5jdGlvbnMgdGhhdCBjb3VsZCBiZSBtb3JlIHVzZWZ1bC4gVGltZSB0byBjaGVjayBgZnMvaXNvZnMvbmFtZWkuY2AgYW5kIHN0YXJ0IHdpdGggdGhlIGBpc29mc19maW5kX2VudHJ5YCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIGEgbG9naWNhbCBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciBwb3RlbnRpYWwgY2FuZGlkYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNvZnNfZmluZF9lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL25hbWVpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaXNvZnMvbmFtZWkuYz0zND1pc29mc19jbXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpjb21wYXJlLCBpbnQgZGxlbilcbi0tXG5mcy9pc29mcy9uYW1laS5jLTQyLS8qXG5mcy9pc29mcy9uYW1laS5jOjQzOiAqXHRpc29mc19maW5kX2VudHJ5KClcbmZzL2lzb2ZzL25hbWVpLmMtNDQtICpcbi0tXG5mcy9pc29mcy9uYW1laS5jPTQ4PXN0YXRpYyB1bnNpZ25lZCBsb25nXG5mcy9pc29mcy9uYW1laS5jOjQ5Omlzb2ZzX2ZpbmRfZW50cnkoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbmZzL2lzb2ZzL25hbWVpLmMtNTAtXHR1bnNpZ25lZCBsb25nICpibG9ja19ydiwgdW5zaWduZWQgbG9uZyAqb2Zmc2V0X3J2LFxuLS1cbmZzL2lzb2ZzL25hbWVpLmM9MTY2PXN0cnVjdCBkZW50cnkgKmlzb2ZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4tLVxuZnMvaXNvZnMvbmFtZWkuYy0xNzctXG5mcy9pc29mcy9uYW1laS5jOjE3ODpcdGZvdW5kID0gaXNvZnNfZmluZF9lbnRyeShkaXIsIGRlbnRyeSxcbmZzL2lzb2ZzL25hbWVpLmMtMTc5LVx0XHRcdFx0XHUwMDI2YmxvY2ssIFx1MDAyNm9mZnNldCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzczMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBJU09GUyBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBJU09GUyBmaWxlIHN5c3RlbSBjb2RlIGFuZCB0cnlpbmcgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgZnVuY3Rpb25zLiAgYGlzb2ZzX2ZpbmRfZW50cnlgIGlzIGNsZWFybHkgYSBoZWxwZXIgZnVuY3Rpb24g4oCTIGEgc3RhdGljIG9uZSBhdCB0aGF0LiBUaGF0IG1lYW5zIGl0JiMzOTtzIGludGVybmFsIHRvIHRoZSBtb2R1bGUgYW5kIG5vdCBkaXJlY3RseSBleHBvc2VkIGFzIGFuIGVudHJ5IHBvaW50LiBUaGUgbWFpbiBwb2ludCBvZiBlbnRyeSBmb3IgbG9va3VwIG9wZXJhdGlvbnMgc2VlbXMgdG8gYmUgYGlzb2ZzX2xvb2t1cGAuCgpUaGVyZWZvcmUsIHRoZSBjcml0aWNhbCBzeW1ib2xzIHRvIGZvY3VzIG9uIGhlcmUgYXJlLCBpbiBmYWN0OiBgaXNvZnNfcmVhZGRpcmAsIHRoZSBmdW5jdGlvbiB0byByZWFkIGRpcmVjdG9yeSBlbnRyaWVzOyB0aGVuIGBpc29mc19sb29rdXBgIGZvciwgd2VsbCwgbG9va3VwczsgYW5kIGZpbmFsbHkgYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgLiAgVGhhdCBsYXN0IG9uZSBzZWVtcyBpbXBvcnRhbnQgZm9yIHZlcmlmeWluZyBkaXJlY3RvcnkgcmVjb3Jkcy4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAgaXNuJiMzOTt0IGFsc28gc3RhdGljLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgaXQgaXMgaW5kZWVkIGV4dGVybmFsbHkgdmlzaWJsZSwgc28gSSYjMzk7bGwgY2hlY2sgb24gdGhhdCBuZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpc29mc19kaXJfcmVjb3JkX3ZhbGlkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaXNvZnMvbmFtZWkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pc29mcy9uYW1laS5jLTEyLVxuZnMvaXNvZnMvbmFtZWkuYzoxMzpib29sIGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSxcbmZzL2lzb2ZzL25hbWVpLmMtMTQtXHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LFxuLS1cbmZzL2lzb2ZzL25hbWVpLmM9NDk9aXNvZnNfZmluZF9lbnRyeShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuLS1cbmZzL2lzb2ZzL25hbWVpLmMtMTEwLVxuZnMvaXNvZnMvbmFtZWkuYzoxMTE6XHRcdGlmICghaXNvZnNfZGlyX3JlY29yZF92YWxpZChkZSwgZGUgPT0gdG1wZGUgPyAwIDogb2Zmc2V0X3NhdmVkLFxuZnMvaXNvZnMvbmFtZWkuYy0xMTItXHRcdFx0XHRcdCAgICBkZSA9PSB0bXBkZSA/IGRlX2xlbiA6IGJ1ZnNpemUpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNTgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBJU09GUyBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCBpcyAqbm90KiBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBoZWxwcyBuYXJyb3cgbXkgZm9jdXMuIEkmIzM5O20gcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gdGhlIGZvbGxvd2luZyBzeW1ib2xzOiBgaXNvZnNfcmVhZGRpcmAsIGBpc29mc19sb29rdXBgLCBhbmQgb2YgY291cnNlIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgSSB3YW50IHRvIGV4YW1pbmUuCgpXYWl0IGEgc2Vjb25kLCB3aGF0IGFib3V0IGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGA/IEkgcmVtZW1iZXIgaXQgYmVpbmcgc3RhdGljLi4uYW5kIHllcywgaXQgaXMuIFRoZSBlbnRyeXBvaW50IGlzIGBpc29mc19leHBvcnRfb3BzLmdldF9wYXJlbnRgLiBUaGlzIGlzIGludm9rZWQgYnkgdGhlIE5GUyBzZXJ2ZXIgKG9yIGBvcGVuX2J5X2hhbmRsZV9hdGApLiBTaW5jZSB0aGUgZnVuY3Rpb24gYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGl0IHdvbiYjMzk7dCBiZSBpbmxpbmVkLiBXaGlsZSBJIGNvdWxkIGluY2x1ZGUgaXQsIEkgc3VzcGVjdCBgaXNvZnNfbG9va3VwYCBhbmQgYGlzb2ZzX3JlYWRkaXJgIGFyZSB0aGUgbW9yZSBjb21tb24gZW50cnkgcG9pbnRzLgoKSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCBpbiBgZnMvaXNvZnMvZXhwb3J0LmNgIGp1c3QgdG8gYmUgY2VydGFpbi4gSSYjMzk7bGwgaW5jbHVkZSBpdCBmb3IgdGhlIHNha2Ugb2YgdGhvcm91Z2huZXNzLCBidXQgdWx0aW1hdGVseSwgSSB0aGluayBJJiMzOTttIGJlc3Qgc2VydmVkIHN0aWNraW5nIHdpdGggbXkgb3JpZ2luYWwgdGhyZWUgb2YgYGlzb2ZzX3JlYWRkaXJgLCBgaXNvZnNfbG9va3VwYCwgYW5kIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYC4gVGhlc2UgYXBwZWFyIHRvIGJlIHRoZSBtb3N0IGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBnZW5lcmFsIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzb2ZzX2V4cG9ydF9nZXRfcGFyZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaXNvZnMvZXhwb3J0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaXNvZnMvZXhwb3J0LmM9MjA9aXNvZnNfZXhwb3J0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbi0tXG5mcy9pc29mcy9leHBvcnQuYy00My0gKiBpc29mc19ub3JtYWxpemVfYmxvY2tfYW5kX29mZnNldCgpLiAqL1xuZnMvaXNvZnMvZXhwb3J0LmM6NDQ6c3RhdGljIHN0cnVjdCBkZW50cnkgKmlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50KHN0cnVjdCBkZW50cnkgKmNoaWxkKVxuZnMvaXNvZnMvZXhwb3J0LmMtNDUte1xuLS1cbmZzL2lzb2ZzL2V4cG9ydC5jLTU1LVx0aWYgKCFTX0lTRElSKGNoaWxkX2lub2RlLVx1MDAzZWlfbW9kZSkpIHtcbmZzL2lzb2ZzL2V4cG9ydC5jOjU2Olx0XHRwcmludGsoS0VSTl9FUlIgXCYjMzQ7aXNvZnM6IGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50KCk6IFwmIzM0O1xuZnMvaXNvZnMvZXhwb3J0LmMtNTctXHRcdCAgICAgICBcJiMzNDtjaGlsZCBpcyBub3QgYSBkaXJlY3RvcnkhXFxuXCYjMzQ7KTtcbi0tXG5mcy9pc29mcy9leHBvcnQuYy02NS1cdGlmIChlX2NoaWxkX2lub2RlLVx1MDAzZWlfaWdldDVfb2Zmc2V0ICE9IDApIHtcbmZzL2lzb2ZzL2V4cG9ydC5jOjY2Olx0XHRwcmludGsoS0VSTl9FUlIgXCYjMzQ7aXNvZnM6IGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50KCk6IFwmIzM0O1xuZnMvaXNvZnMvZXhwb3J0LmMtNjctXHRcdCAgICAgICBcJiMzNDtjaGlsZCBkaXJlY3Rvcnkgbm90IG5vcm1hbGl6ZWQhXFxuXCYjMzQ7KTtcbi0tXG5mcy9pc29mcy9leHBvcnQuYz0xOTY9Y29uc3Qgc3RydWN0IGV4cG9ydF9vcGVyYXRpb25zIGlzb2ZzX2V4cG9ydF9vcHMgPSB7XG4tLVxuZnMvaXNvZnMvZXhwb3J0LmMtMTk5LVx0LmZoX3RvX3BhcmVudFx0PSBpc29mc19maF90b19wYXJlbnQsXG5mcy9pc29mcy9leHBvcnQuYzoyMDA6XHQuZ2V0X3BhcmVudCAgICAgPSBpc29mc19leHBvcnRfZ2V0X3BhcmVudCxcbmZzL2lzb2ZzL2V4cG9ydC5jLTIwMS19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjU5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKklTTzk2NjAgRGlyZWN0b3J5IFRyYXZlcnNhbCBPcHRpbWl6YXRpb24qKgoKQWxyaWdodCwgZ2l2ZW4gdGhhdCB0aGlzIGFzcGVjdCBvZiB0aGUgZmlsZSBzeXN0ZW0gaXMgc3RhdGljLCBJJiMzOTttIGdvaW5nIHRvIHNpZGVzdGVwIGFueXRoaW5nIHRoYXQgaXNuJiMzOTt0IGNydWNpYWwgdG8gdGhlIGltcGxlbWVudGF0aW9uIGFuZCBsZWFuIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucy4gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgLCBgaXNvZnNfcmVhZGRpcmAsIGFuZCBgaXNvZnNfbG9va3VwYCBzaG91bGQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGJ1aWxkaW5nIGJsb2Nrcy4KCk5vdywgYSBxdWljayBjaGVja+KApiBpcyBgaXNvZnNfcmVhZGRpcmAgc3RhdGljPyBZZXMsIEkgc2VlbSB0byByZWNhbGwgdGhhdCBpdCBpcy4gQWgsIGNvbmZpcm1lZC4gSXQmIzM5O3MgaW5kZWVkIGRlZmluZWQgYXMgc3RhdGljIHdpdGhpbiBgZnMvaXNvZnMvZGlyLmNgLiBHb29kLCB0aGF0IHJlaW5mb3JjZXMgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBhbmQgZ3VpZGVzIHRoZSBhcmNoaXRlY3R1cmFsIGNob2ljZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzb2ZzX3JlYWRkaXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9pc29mcy9kaXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pc29mcy9kaXIuYz01Mz1pbnQgZ2V0X2Fjb3JuX2ZpbGVuYW1lKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqZGUsXG4tLVxuZnMvaXNvZnMvZGlyLmMtODQtICovXG5mcy9pc29mcy9kaXIuYzo4NTpzdGF0aWMgaW50IGRvX2lzb2ZzX3JlYWRkaXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsXG5mcy9pc29mcy9kaXIuYy04Ni1cdFx0c3RydWN0IGRpcl9jb250ZXh0ICpjdHgsXG4tLVxuZnMvaXNvZnMvZGlyLmMtMjQ4LSAqIGhhbmRsaW5nIHNwbGl0IGRpcmVjdG9yeSBlbnRyaWVzLi4gVGhlIHJlYWwgd29yayBpcyBkb25lIGJ5XG5mcy9pc29mcy9kaXIuYzoyNDk6ICogXCYjMzQ7ZG9faXNvZnNfcmVhZGRpcigpXCYjMzQ7LlxuZnMvaXNvZnMvZGlyLmMtMjUwLSAqL1xuZnMvaXNvZnMvZGlyLmM6MjUxOnN0YXRpYyBpbnQgaXNvZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpXG5mcy9pc29mcy9kaXIuYy0yNTIte1xuLS1cbmZzL2lzb2ZzL2Rpci5jLTI2My1cbmZzL2lzb2ZzL2Rpci5jOjI2NDpcdHJlc3VsdCA9IGRvX2lzb2ZzX3JlYWRkaXIoaW5vZGUsIGZpbGUsIGN0eCwgdG1wbmFtZSwgdG1wZGUpO1xuZnMvaXNvZnMvZGlyLmMtMjY1LVxuLS1cbmZzL2lzb2ZzL2Rpci5jPTI4ND1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGlzb2ZzX2Rpcl9vcGVyYXRpb25zID1cbi0tXG5mcy9pc29mcy9kaXIuYy0yODctXHQucmVhZCA9IGdlbmVyaWNfcmVhZF9kaXIsXG5mcy9pc29mcy9kaXIuYzoyODg6XHQuaXRlcmF0ZV9zaGFyZWQgPSBpc29mc19yZWFkZGlyLFxuZnMvaXNvZnMvZGlyLmMtMjg5LVx0LnNldGxlYXNlID0gZ2VuZXJpY19zZXRsZWFzZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTkxMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkNvbnNpZGVyaW5nIGBpc29mc2AgRGlyZWN0b3J5IE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBub3RpY2luZyB0aGF0IHRoZSBgaXNvZnNfcmVhZGRpcmAgZnVuY3Rpb24gaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIG1ha2VzIHNlbnNlIGZyb20gYW4gaW1wbGVtZW50YXRpb24gc3RhbmRwb2ludCB3aXRoaW4gdGhlIGBpc29mc2AgZmlsZSBzeXN0ZW0gbW9kdWxlLCBidXQgaXQmIzM5O3MgbWFraW5nIG1lIHRoaW5rIG1vcmUgYnJvYWRseS4gSWYgd2UmIzM5O3JlIGxvb2tpbmcgYXQgaXNvbGF0aW5nIGFuZCBldmFsdWF0aW5nIHNwZWNpZmljIGNvbXBvbmVudHMsIHRoZSBzY29wZSBvZiB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLiBJIG5lZWQgdG8gdHJhY2sgd2hpY2ggZnVuY3Rpb25zIGFyZSBzdGF0aWMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZWlyIGludGVuZGVkIHZpc2liaWxpdHkuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gbm93IGlzLCB3aGF0IGFib3V0IGBpc29mc19sb29rdXBgPyBUaGF0JiMzOTtzIGEga2V5IG9wZXJhdGlvbiBmb3IgcGF0aCByZXNvbHV0aW9uIGFuZCBmaWxlIGFjY2Vzcy4gSSBuZWVkIHRvIHZlcmlmeSBpdHMgZGVjbGFyYXRpb24gYW5kIHZpc2liaWxpdHksIGVzcGVjaWFsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgZmlsZSBzeXN0ZW0gYXJjaGl0ZWN0dXJlIGFuZCBwb3RlbnRpYWwgZm9yIGV4dGVuc2lvbi4gSXMgaXQgc3RhdGljIGFzIHdlbGw/IERvZXMgaXQgaW50ZXJhY3Qgd2l0aCBvdGhlciBjb21wb25lbnRzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGBpc29mc19yZWFkZGlyYCwgYW5kIGZpZ3VyZSBvdXQgYW55IHNoYXJlZCBkYXRhIG9yIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGRvZXMgdG8gb3VyIGFiaWxpdHkgdG8gcmVmYWN0b3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzb2ZzX2xvb2t1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL25hbWVpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaXNvZnMvbmFtZWkuYz00OT1pc29mc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4tLVxuZnMvaXNvZnMvbmFtZWkuYy0xNjUtXG5mcy9pc29mcy9uYW1laS5jOjE2NjpzdHJ1Y3QgZGVudHJ5ICppc29mc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxuZnMvaXNvZnMvbmFtZWkuYy0xNjcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMwNgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBJU085NjYwIFN5bWJvbCBFeHBvc3VyZSoqCgpPa2F5LCBzbyBgaXNvZnNfbG9va3VwYCBpcyAqbm90KiBzdGF0aWMsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhpcyBtZWFucyBpdCBoYXMgYSBkaXN0aW5jdCBzeW1ib2wgdGhhdCBJIGNhbiByZWFkaWx5IGV4cGxvaXQuIE15IHByaW1hcnkgZm9jdXMgc3ltYm9scywgdGhlcmVmb3JlLCBhcmUgYGlzb2ZzX2xvb2t1cGAgYW5kIGFsc28gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgLiBJJiMzOTtsbCB3YW50IHRvIHRhcmdldCB0aGVzZS4KCkhvd2V2ZXIsIGdpdmVuIHRoYXQgc3l6a2FsbGVyIGhhbmRsZXMgc3RhdGljIGZ1bmN0aW9ucyAqaWYqIHRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkLCBJJiMzOTtsbCBhbHNvIGFkZCBgaXNvZnNfcmVhZGRpcmAgYW5kIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAgdG8gdGhlIGxpc3QuIEkgcmVjYWxsIHRob3NlIGFyZSB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzLCBtZWFuaW5nIHRoZXkgYXJlIGxpa2VseSBub3QgaW5saW5lZCBhbmQgdGh1cyBoYXZlIHRoZWlyIG93biBzZXBhcmF0ZSwgYWNjZXNzaWJsZSBzeW1ib2xzLiBXaGlsZSBzeXprYWxsZXIgKmNvdWxkKiBoYW5kbGUgc3RhdGljIG9uZXMgaWYgbmVjZXNzYXJ5LCBwcm92aWRpbmcgbm9uLXN0YXRpYyBvbmVzIGdpdmVzIG1lIGJldHRlciBjb250cm9sLiBUaGlzIHNob3VsZCBhbGxvdyBhIHdpZGVyIHRlc3Qgc3VyZmFjZS4gU28sIGZvciB0aGUgdG9vbCwgSSYjMzk7bGwgcHJvdmlkZSBgaXNvZnNfbG9va3VwYCwgYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgLCBgaXNvZnNfcmVhZGRpcmAsIGFuZCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgLgoKTm93LCBsZXQgbWUgcmV2aWV3IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhpcy4gSSBrbm93IHRoYXQgYElTTzk2NjBfRlNgIGlzIHRoZSBmdW5kYW1lbnRhbCBvbmUsIGJ1dCBhcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWd1cmF0aW9ucz8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjaGFuZ2VzIGluIGBmcy9pc29mcy9leHBvcnQuY2AgYXJlIGd1YXJkZWQgYnkgKmFueSogY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIElmIGBleHBvcnQuY2AgaXMgY29tcGlsZWQgY29uZGl0aW9uYWxseSwgbXkgZWZmb3J0cyB0byBleHBsb2l0IHRob3NlIGZ1bmN0aW9ucyBiZWNvbWUgY29uZGl0aW9uYWwgYXMgd2VsbC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBhbnkgcmVsYXRlZCBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHBvcnQubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2lzb2ZzL01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX0lTTzk2NjBfRlMpICYjNDM7PSBpc29mcy5vXG5mcy9pc29mcy9NYWtlZmlsZS03LVxuZnMvaXNvZnMvTWFrZWZpbGU6ODppc29mcy15IFx0XHQ6PSBuYW1laS5vIGlub2RlLm8gZGlyLm8gdXRpbC5vIHJvY2subyBleHBvcnQub1xuZnMvaXNvZnMvTWFrZWZpbGUtOS1pc29mcy0kKENPTkZJR19KT0xJRVQpXHQmIzQzOz0gam9saWV0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5NzYKCQkJCQkJCW91dHB1dDogMTY3CgkJCQkJCQl0aG91Z2h0czogMjA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUG90ZW50aWFsOiBJU085NjYwIEZpbGVzeXN0ZW0qKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBzaXR1YXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkLiBJZiBgSVNPOTY2MF9GU2AgaXMgZW5hYmxlZCwgdGhlbiBgZXhwb3J0Lm9gIGlzICphbHdheXMqIGNvbXBpbGVkLiBUaGVyZWZvcmUsIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uIGlzIHNpbXBseSBgSVNPOTY2MF9GU2AuIE5vIG5lZWQgdG8gb3ZlcnRoaW5rIHRoYXQuCgpMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgZnV6emluZyBwb3RlbnRpYWwgaGVyZS4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24sIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCwgd2hpY2ggdmFsaWRhdGVzIElTTyA5NjYwIGRpcmVjdG9yeSByZWNvcmRzLiBUaGlzIGlzIGNyaXRpY2FsIGJlY2F1c2UgaXQmIzM5O3MgcmVwbGFjaW5nIHNvbWUgaW5saW5lIHNhbml0eSBjaGVja3Mgd2l0aCBjYWxscyB0byB0aGlzIG5ldyBmdW5jdGlvbiB3aXRoaW4ga2V5IGFyZWFzIG9mIHRoZSBmaWxlc3lzdGVtOiBgZG9faXNvZnNfcmVhZGRpcmAsIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAsIGFuZCBgaXNvZnNfZmluZF9lbnRyeWAuCgpUaGlzIGZ1bmRhbWVudGFsbHkgbW9kaWZpZXMgdGhlIGNvcmUgSVNPIDk2NjAgZmlsZXN5c3RlbSBsb2dpYy4gVGhhdCYjMzk7cyBnb29kIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlIGJlY2F1c2UgaXQmIzM5O3MgKnJlYWNoYWJsZSogYW5kLCBpbXBvcnRhbnRseSwgY2FuIGJlIGF0dGFja2VkIGJ5IG1vdW50aW5nIGNyYWZ0ZWQgZGlzayBpbWFnZXMuCgpUaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcgYXJlIGBpc29mc19sb29rdXBgLCBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAsIGBpc29mc19yZWFkZGlyYCwgYW5kIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIGRpcmVjdGx5IGFmZmVjdGVkLgoKQWxsIHRoaW5ncyBjb25zaWRlcmVkLCB0aGlzIHBhdGNoIGlzICp3b3J0aCogZnV6emluZy4gV2UgY2FuIG1hcmsgYFdvcnRoRnV6emluZ2AgYXMgYHRydWVgLiBJJiMzOTtsbCBnbyBhaGVhZCBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVNPOTY2MF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lzb2ZzX2xvb2t1cCYjMzQ7LAogICAgJiMzNDtpc29mc19kaXJfcmVjb3JkX3ZhbGlkJiMzNDssCiAgICAmIzM0O2lzb2ZzX3JlYWRkaXImIzM0OywKICAgICYjMzQ7aXNvZnNfZXhwb3J0X2dldF9wYXJlbnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAgdG8gdmFsaWRhdGUgSVNPIDk2NjAgZGlyZWN0b3J5IHJlY29yZHMgYW5kIHJlcGxhY2VzIGlubGluZSBzYW5pdHkgY2hlY2tzIHdpdGggY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBpbiBgZG9faXNvZnNfcmVhZGRpcmAsIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAsIGFuZCBgaXNvZnNfZmluZF9lbnRyeWAuIFRoaXMgbW9kaWZpZXMgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIGZvciBJU08gOTY2MCwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIGJ5IG1vdW50aW5nIGNyYWZ0ZWQgZGlzayBpbWFnZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lTTzk2NjBfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpc29mc19sb29rdXAmIzM0OywKICAgICYjMzQ7aXNvZnNfZGlyX3JlY29yZF92YWxpZCYjMzQ7LAogICAgJiMzNDtpc29mc19yZWFkZGlyJiMzNDssCiAgICAmIzM0O2lzb2ZzX2V4cG9ydF9nZXRfcGFyZW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgIHRvIHZhbGlkYXRlIElTTyA5NjYwIGRpcmVjdG9yeSByZWNvcmRzIGFuZCByZXBsYWNlcyBpbmxpbmUgc2FuaXR5IGNoZWNrcyB3aXRoIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gaW4gYGRvX2lzb2ZzX3JlYWRkaXJgLCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgLCBhbmQgYGlzb2ZzX2ZpbmRfZW50cnlgLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBmb3IgSVNPIDk2NjAsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCBieSBtb3VudGluZyBjcmFmdGVkIGRpc2sgaW1hZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDg6NDguODcyNjI2Njk2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4NDU2ODcxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVNPOTY2MF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlzb2ZzX2xvb2t1cFwiLFxuICAgIFwiaXNvZnNfZGlyX3JlY29yZF92YWxpZFwiLFxuICAgIFwiaXNvZnNfcmVhZGRpclwiLFxuICAgIFwiaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCB0byB2YWxpZGF0ZSBJU08gOTY2MCBkaXJlY3RvcnkgcmVjb3JkcyBhbmQgcmVwbGFjZXMgaW5saW5lIHNhbml0eSBjaGVja3Mgd2l0aCBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIGluIGBkb19pc29mc19yZWFkZGlyYCwgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCwgYW5kIGBpc29mc19maW5kX2VudHJ5YC4gVGhpcyBtb2RpZmllcyBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgZm9yIElTTyA5NjYwLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgYnkgbW91bnRpbmcgY3JhZnRlZCBkaXNrIGltYWdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDg6NDguODcyNjMzOTY2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODU4MzkyMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyNmYzZjU3NjEyYjkwY2JmNzYxZGE5N2E2ZDAxOTVlMmU1N2M5NmQyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDA1OjA4OjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2lzb2ZzL2Rpci5jIGIvZnMvaXNvZnMvZGlyLmNcXG5pbmRleCBjYzU4N2NkMjUxNjIzLi5hOTYyNjhjOWNhNDEzIDEwMDY0NFxcbi0tLSBhL2ZzL2lzb2ZzL2Rpci5jXFxuKysrIGIvZnMvaXNvZnMvZGlyLmNcXG5AQCAtMTQ5LDEwICsxNDksOCBAQCBzdGF0aWMgaW50IGRvX2lzb2ZzX3JlYWRkaXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0ZGUgPSB0bXBkZTtcXG4gXFx0XFx0fVxcbi1cXHRcXHQvKiBCYXNpYyBzYW5pdHkgY2hlY2ssIHdoZXRoZXIgbmFtZSBkb2Vzbid0IGV4Y2VlZCBkaXIgZW50cnkgKi9cXG4tXFx0XFx0aWYgKGRlX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQpIHx8XFxuLVxcdFxcdCAgICBkZV9sZW4gXFx1MDAzYyBkZS1cXHUwMDNlbmFtZV9sZW5bMF0gK1xcbi1cXHRcXHRcXHRcXHRcXHRzaXplb2Yoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKSkge1xcbitcXHRcXHRpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIGRlID09IHRtcGRlID8gMCA6IG9mZnNldF9zYXZlZCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIGRlID09IHRtcGRlID8gZGVfbGVuIDogYnVmc2l6ZSkpIHtcXG4gXFx0XFx0XFx0cHJpbnRrKEtFUk5fTk9USUNFIFxcXCJpc285NjYwOiBDb3JydXB0ZWQgZGlyZWN0b3J5IGVudHJ5XFxcIlxcbiBcXHRcXHRcXHQgICAgICAgXFxcIiBpbiBibG9jayAlbHUgb2YgaW5vZGUgJWxsdVxcXFxuXFxcIiwgYmxvY2ssXFxuIFxcdFxcdFxcdCAgICAgICBpbm9kZS1cXHUwMDNlaV9pbm8pO1xcbkBAIC0zMDAsNCArMjk4LDMgQEAgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgaXNvZnNfZGlyX2lub2RlX29wZXJhdGlvbnMgPVxcbiBcXHQuZmlsZWF0dHJfZ2V0ID0gaXNvZnNfZmlsZWF0dHJfZ2V0LFxcbiB9O1xcbiBcXG4tXFxuZGlmZiAtLWdpdCBhL2ZzL2lzb2ZzL2V4cG9ydC5jIGIvZnMvaXNvZnMvZXhwb3J0LmNcXG5pbmRleCA3OGY4MGMxYTVjNTRhLi40ZjdmYTFkNTA4YTEzIDEwMDY0NFxcbi0tLSBhL2ZzL2lzb2ZzL2V4cG9ydC5jXFxuKysrIGIvZnMvaXNvZnMvZXhwb3J0LmNcXG5AQCAtODMsMTMgKzgzLDIxIEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICppc29mc19leHBvcnRfZ2V0X3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpjaGlsZClcXG4gXFxuIFxcdC8qIFRoaXMgaXMgdGhlIFxcXCIuXFxcIiBlbnRyeS4gKi9cXG4gXFx0ZGUgPSAoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKiliaC1cXHUwMDNlYl9kYXRhO1xcbitcXHRpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIDAsIGNoaWxkX2lub2RlLVxcdTAwM2VpX3NiLVxcdTAwM2VzX2Jsb2Nrc2l6ZSkgfHxcXG4rXFx0ICAgIGlzb251bV83MTEoZGUtXFx1MDAzZW5hbWVfbGVuKSAhPSAxIHx8IGRlLVxcdTAwM2VuYW1lWzBdICE9IDApIHtcXG4rXFx0XFx0cHJpbnRrKEtFUk5fRVJSIFxcXCJpc29mczogVW5hYmxlIHRvIGZpbmQgdGhlIFxcXFxcXFwiLlxcXFxcXFwiIGRpcmVjdG9yeSBmb3IgTkZTLlxcXFxuXFxcIik7XFxuK1xcdFxcdHJ2ID0gRVJSX1BUUigtRUFDQ0VTKTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4gXFxuIFxcdC8qIFRoZSBcXFwiLi5cXFwiIGVudHJ5IGlzIGFsd2F5cyB0aGUgc2Vjb25kIGVudHJ5LiAqL1xcbiBcXHRwYXJlbnRfb2Zmc2V0ID0gKHVuc2lnbmVkIGxvbmcpaXNvbnVtXzcxMShkZS1cXHUwMDNlbGVuZ3RoKTtcXG4gXFx0ZGUgPSAoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKikoYmgtXFx1MDAzZWJfZGF0YSArIHBhcmVudF9vZmZzZXQpO1xcbiBcXG4gXFx0LyogVmVyaWZ5IGl0IGlzIGluIGZhY3QgdGhlIFxcXCIuLlxcXCIgZW50cnkuICovXFxuLVxcdGlmICgoaXNvbnVtXzcxMShkZS1cXHUwMDNlbmFtZV9sZW4pICE9IDEpIHx8IChkZS1cXHUwMDNlbmFtZVswXSAhPSAxKSkge1xcbitcXHRpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIHBhcmVudF9vZmZzZXQsXFxuK1xcdFxcdFxcdFxcdCAgICBjaGlsZF9pbm9kZS1cXHUwMDNlaV9zYi1cXHUwMDNlc19ibG9ja3NpemUpIHx8XFxuK1xcdCAgICBpc29udW1fNzExKGRlLVxcdTAwM2VuYW1lX2xlbikgIT0gMSB8fCBkZS1cXHUwMDNlbmFtZVswXSAhPSAxKSB7XFxuIFxcdFxcdHByaW50ayhLRVJOX0VSUiBcXFwiaXNvZnM6IFVuYWJsZSB0byBmaW5kIHRoZSBcXFxcXFxcIi4uXFxcXFxcXCIgXFxcIlxcbiBcXHRcXHQgICAgICAgXFxcImRpcmVjdG9yeSBmb3IgTkZTLlxcXFxuXFxcIik7XFxuIFxcdFxcdHJ2ID0gRVJSX1BUUigtRUFDQ0VTKTtcXG5kaWZmIC0tZ2l0IGEvZnMvaXNvZnMvaXNvZnMuaCBiL2ZzL2lzb2ZzL2lzb2ZzLmhcXG5pbmRleCAwZWM4YjI0YTQyZWRjLi5kYWNiOWNkYWU0ZmQxIDEwMDY0NFxcbi0tLSBhL2ZzL2lzb2ZzL2lzb2ZzLmhcXG4rKysgYi9mcy9pc29mcy9pc29mcy5oXFxuQEAgLTExNSw2ICsxMTUsOSBAQCBzdHJ1Y3QgaW5vZGU7XFx0XFx0LyogVG8gbWFrZSBnY2MgaGFwcHkgKi9cXG4gZXh0ZXJuIGludCBwYXJzZV9yb2NrX3JpZGdlX2lub2RlKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBzdHJ1Y3QgaW5vZGUgKiwgaW50IHJlbG9jYXRlZCk7XFxuIGV4dGVybiBpbnQgZ2V0X3JvY2tfcmlkZ2VfZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICosIGNoYXIgKiwgc3RydWN0IGlub2RlICopO1xcbiBleHRlcm4gaW50IGlzb2ZzX25hbWVfdHJhbnNsYXRlKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTtcXG4rYm9vbCBpc29mc19kaXJfcmVjb3JkX3ZhbGlkKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqZGUsXFxuK1xcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG9mZnNldCxcXG4rXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgYnVmc2l6ZSk7XFxuIFxcbiBpbnQgZ2V0X2pvbGlldF9maWxlbmFtZShzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKiwgdW5zaWduZWQgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKik7XFxuIGludCBnZXRfYWNvcm5fZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICosIGNoYXIgKiwgc3RydWN0IGlub2RlICopO1xcbmRpZmYgLS1naXQgYS9mcy9pc29mcy9uYW1laS5jIGIvZnMvaXNvZnMvbmFtZWkuY1xcbmluZGV4IDNhY2UzZDZhNTVlNzkuLmExNjFiMjg4OTNkNjMgMTAwNjQ0XFxuLS0tIGEvZnMvaXNvZnMvbmFtZWkuY1xcbisrKyBiL2ZzL2lzb2ZzL25hbWVpLmNcXG5AQCAtMTAsNiArMTAsMjYgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dmcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiaXNvZnMuaFxcXCJcXG4gXFxuK2Jvb2wgaXNvZnNfZGlyX3JlY29yZF92YWxpZChzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKmRlLFxcbitcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsXFxuK1xcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIGJ1ZnNpemUpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IGxlbjtcXG4rXFx0dW5zaWduZWQgaW50IG5hbWVfbGVuO1xcbitcXHR1bnNpZ25lZCBsb25nIG1pbl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQsIG5hbWUpO1xcbitcXG4rXFx0aWYgKG9mZnNldCBcXHUwMDNlIGJ1ZnNpemUgfHwgYnVmc2l6ZSAtIG9mZnNldCBcXHUwMDNjIG1pbl9sZW4pXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGxlbiA9IGlzb251bV83MTEoZGUtXFx1MDAzZWxlbmd0aCk7XFxuK1xcdG5hbWVfbGVuID0gaXNvbnVtXzcxMShkZS1cXHUwMDNlbmFtZV9sZW4pO1xcbitcXHRpZiAobGVuIFxcdTAwM2MgbWluX2xlbiB8fCBuYW1lX2xlbiBcXHUwMDNlIGxlbiAtIG1pbl9sZW4pXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0aWYgKGxlbiBcXHUwMDNlIGJ1ZnNpemUgLSBvZmZzZXQpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnRcXG4gaXNvZnNfY21wKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3QgY2hhciAqY29tcGFyZSwgaW50IGRsZW4pXFxuIHtcXG5AQCAtODgsMTYgKzEwOCwxNiBAQCBpc29mc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuIFxcdFxcdFxcdGRlID0gdG1wZGU7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdGRsZW4gPSBkZS1cXHUwMDNlbmFtZV9sZW5bMF07XFxuLVxcdFxcdGRwbnQgPSBkZS1cXHUwMDNlbmFtZTtcXG4tXFx0XFx0LyogQmFzaWMgc2FuaXR5IGNoZWNrLCB3aGV0aGVyIG5hbWUgZG9lc24ndCBleGNlZWQgZGlyIGVudHJ5ICovXFxuLVxcdFxcdGlmIChkZV9sZW4gXFx1MDAzYyBkbGVuICsgc2l6ZW9mKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCkpIHtcXG4rXFx0XFx0aWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCBkZSA9PSB0bXBkZSA/IDAgOiBvZmZzZXRfc2F2ZWQsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBkZSA9PSB0bXBkZSA/IGRlX2xlbiA6IGJ1ZnNpemUpKSB7XFxuIFxcdFxcdFxcdHByaW50ayhLRVJOX05PVElDRSBcXFwiaXNvOTY2MDogQ29ycnVwdGVkIGRpcmVjdG9yeSBlbnRyeVxcXCJcXG4gXFx0XFx0XFx0ICAgICAgIFxcXCIgaW4gYmxvY2sgJWx1IG9mIGlub2RlICVsbHVcXFxcblxcXCIsIGJsb2NrLFxcbiBcXHRcXHRcXHQgICAgICAgZGlyLVxcdTAwM2VpX2lubyk7XFxuIFxcdFxcdFxcdGJyZWxzZShiaCk7XFxuIFxcdFxcdFxcdHJldHVybiAwO1xcbiBcXHRcXHR9XFxuK1xcdFxcdGRsZW4gPSBkZS1cXHUwMDNlbmFtZV9sZW5bMF07XFxuK1xcdFxcdGRwbnQgPSBkZS1cXHUwMDNlbmFtZTtcXG4gXFxuIFxcdFxcdGlmIChzYmktXFx1MDAzZXNfcm9jayBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgKChpID0gZ2V0X3JvY2tfcmlkZ2VfZmlsZW5hbWUoZGUsIHRtcG5hbWUsIGRpcikpKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTowODo0OS40NTk3MzA5MTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NDI1ODU3NDA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJU085NjYwX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXNvZnNfbG9va3VwXCIsXG4gICAgXCJpc29mc19kaXJfcmVjb3JkX3ZhbGlkXCIsXG4gICAgXCJpc29mc19yZWFkZGlyXCIsXG4gICAgXCJpc29mc19leHBvcnRfZ2V0X3BhcmVudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgIHRvIHZhbGlkYXRlIElTTyA5NjYwIGRpcmVjdG9yeSByZWNvcmRzIGFuZCByZXBsYWNlcyBpbmxpbmUgc2FuaXR5IGNoZWNrcyB3aXRoIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gaW4gYGRvX2lzb2ZzX3JlYWRkaXJgLCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgLCBhbmQgYGlzb2ZzX2ZpbmRfZW50cnlgLiBUaGlzIG1vZGlmaWVzIGNvcmUgZmlsZXN5c3RlbSBsb2dpYyBmb3IgSVNPIDk2NjAsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgY2FuIGJlIGZ1enplZCBieSBtb3VudGluZyBjcmFmdGVkIGRpc2sgaW1hZ2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyNmYzZjU3NjEyYjkwY2JmNzYxZGE5N2E2ZDAxOTVlMmU1N2M5NmQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDU6MDg6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9pc29mcy9kaXIuYyBiL2ZzL2lzb2ZzL2Rpci5jXG5pbmRleCBjYzU4N2NkMjUxNjIzLi5hOTYyNjhjOWNhNDEzIDEwMDY0NFxuLS0tIGEvZnMvaXNvZnMvZGlyLmNcbisrKyBiL2ZzL2lzb2ZzL2Rpci5jXG5AQCAtMTQ5LDEwICsxNDksOCBAQCBzdGF0aWMgaW50IGRvX2lzb2ZzX3JlYWRkaXIoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdFx0fVxuIFx0XHRcdGRlID0gdG1wZGU7XG4gXHRcdH1cbi1cdFx0LyogQmFzaWMgc2FuaXR5IGNoZWNrLCB3aGV0aGVyIG5hbWUgZG9lc24ndCBleGNlZWQgZGlyIGVudHJ5ICovXG4tXHRcdGlmIChkZV9sZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQpIHx8XG4tXHRcdCAgICBkZV9sZW4gXHUwMDNjIGRlLVx1MDAzZW5hbWVfbGVuWzBdICtcbi1cdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCkpIHtcbitcdFx0aWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCBkZSA9PSB0bXBkZSA/IDAgOiBvZmZzZXRfc2F2ZWQsXG4rXHRcdFx0XHRcdCAgICBkZSA9PSB0bXBkZSA/IGRlX2xlbiA6IGJ1ZnNpemUpKSB7XG4gXHRcdFx0cHJpbnRrKEtFUk5fTk9USUNFIFwiaXNvOTY2MDogQ29ycnVwdGVkIGRpcmVjdG9yeSBlbnRyeVwiXG4gXHRcdFx0ICAgICAgIFwiIGluIGJsb2NrICVsdSBvZiBpbm9kZSAlbGx1XFxuXCIsIGJsb2NrLFxuIFx0XHRcdCAgICAgICBpbm9kZS1cdTAwM2VpX2lubyk7XG5AQCAtMzAwLDQgKzI5OCwzIEBAIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGlzb2ZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zID1cbiBcdC5maWxlYXR0cl9nZXQgPSBpc29mc19maWxlYXR0cl9nZXQsXG4gfTtcbiBcbi1cbmRpZmYgLS1naXQgYS9mcy9pc29mcy9leHBvcnQuYyBiL2ZzL2lzb2ZzL2V4cG9ydC5jXG5pbmRleCA3OGY4MGMxYTVjNTRhLi40ZjdmYTFkNTA4YTEzIDEwMDY0NFxuLS0tIGEvZnMvaXNvZnMvZXhwb3J0LmNcbisrKyBiL2ZzL2lzb2ZzL2V4cG9ydC5jXG5AQCAtODMsMTMgKzgzLDIxIEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICppc29mc19leHBvcnRfZ2V0X3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpjaGlsZClcbiBcbiBcdC8qIFRoaXMgaXMgdGhlIFwiLlwiIGVudHJ5LiAqL1xuIFx0ZGUgPSAoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkKiliaC1cdTAwM2ViX2RhdGE7XG4rXHRpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIDAsIGNoaWxkX2lub2RlLVx1MDAzZWlfc2ItXHUwMDNlc19ibG9ja3NpemUpIHx8XG4rXHQgICAgaXNvbnVtXzcxMShkZS1cdTAwM2VuYW1lX2xlbikgIT0gMSB8fCBkZS1cdTAwM2VuYW1lWzBdICE9IDApIHtcbitcdFx0cHJpbnRrKEtFUk5fRVJSIFwiaXNvZnM6IFVuYWJsZSB0byBmaW5kIHRoZSBcXFwiLlxcXCIgZGlyZWN0b3J5IGZvciBORlMuXFxuXCIpO1xuK1x0XHRydiA9IEVSUl9QVFIoLUVBQ0NFUyk7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fVxuIFxuIFx0LyogVGhlIFwiLi5cIiBlbnRyeSBpcyBhbHdheXMgdGhlIHNlY29uZCBlbnRyeS4gKi9cbiBcdHBhcmVudF9vZmZzZXQgPSAodW5zaWduZWQgbG9uZylpc29udW1fNzExKGRlLVx1MDAzZWxlbmd0aCk7XG4gXHRkZSA9IChzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQqKShiaC1cdTAwM2ViX2RhdGEgKyBwYXJlbnRfb2Zmc2V0KTtcbiBcbiBcdC8qIFZlcmlmeSBpdCBpcyBpbiBmYWN0IHRoZSBcIi4uXCIgZW50cnkuICovXG4tXHRpZiAoKGlzb251bV83MTEoZGUtXHUwMDNlbmFtZV9sZW4pICE9IDEpIHx8IChkZS1cdTAwM2VuYW1lWzBdICE9IDEpKSB7XG4rXHRpZiAoIWlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoZGUsIHBhcmVudF9vZmZzZXQsXG4rXHRcdFx0XHQgICAgY2hpbGRfaW5vZGUtXHUwMDNlaV9zYi1cdTAwM2VzX2Jsb2Nrc2l6ZSkgfHxcbitcdCAgICBpc29udW1fNzExKGRlLVx1MDAzZW5hbWVfbGVuKSAhPSAxIHx8IGRlLVx1MDAzZW5hbWVbMF0gIT0gMSkge1xuIFx0XHRwcmludGsoS0VSTl9FUlIgXCJpc29mczogVW5hYmxlIHRvIGZpbmQgdGhlIFxcXCIuLlxcXCIgXCJcbiBcdFx0ICAgICAgIFwiZGlyZWN0b3J5IGZvciBORlMuXFxuXCIpO1xuIFx0XHRydiA9IEVSUl9QVFIoLUVBQ0NFUyk7XG5kaWZmIC0tZ2l0IGEvZnMvaXNvZnMvaXNvZnMuaCBiL2ZzL2lzb2ZzL2lzb2ZzLmhcbmluZGV4IDBlYzhiMjRhNDJlZGMuLmRhY2I5Y2RhZTRmZDEgMTAwNjQ0XG4tLS0gYS9mcy9pc29mcy9pc29mcy5oXG4rKysgYi9mcy9pc29mcy9pc29mcy5oXG5AQCAtMTE1LDYgKzExNSw5IEBAIHN0cnVjdCBpbm9kZTtcdFx0LyogVG8gbWFrZSBnY2MgaGFwcHkgKi9cbiBleHRlcm4gaW50IHBhcnNlX3JvY2tfcmlkZ2VfaW5vZGUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICosIHN0cnVjdCBpbm9kZSAqLCBpbnQgcmVsb2NhdGVkKTtcbiBleHRlcm4gaW50IGdldF9yb2NrX3JpZGdlX2ZpbGVuYW1lKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTtcbiBleHRlcm4gaW50IGlzb2ZzX25hbWVfdHJhbnNsYXRlKHN0cnVjdCBpc29fZGlyZWN0b3J5X3JlY29yZCAqLCBjaGFyICosIHN0cnVjdCBpbm9kZSAqKTtcbitib29sIGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSxcbitcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsXG4rXHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgYnVmc2l6ZSk7XG4gXG4gaW50IGdldF9qb2xpZXRfZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICosIHVuc2lnbmVkIGNoYXIgKiwgc3RydWN0IGlub2RlICopO1xuIGludCBnZXRfYWNvcm5fZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICosIGNoYXIgKiwgc3RydWN0IGlub2RlICopO1xuZGlmZiAtLWdpdCBhL2ZzL2lzb2ZzL25hbWVpLmMgYi9mcy9pc29mcy9uYW1laS5jXG5pbmRleCAzYWNlM2Q2YTU1ZTc5Li5hMTYxYjI4ODkzZDYzIDEwMDY0NFxuLS0tIGEvZnMvaXNvZnMvbmFtZWkuY1xuKysrIGIvZnMvaXNvZnMvbmFtZWkuY1xuQEAgLTEwLDYgKzEwLDI2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ2ZwLmhcdTAwM2VcbiAjaW5jbHVkZSBcImlzb2ZzLmhcIlxuIFxuK2Jvb2wgaXNvZnNfZGlyX3JlY29yZF92YWxpZChzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKmRlLFxuK1x0XHRcdCAgICB1bnNpZ25lZCBsb25nIG9mZnNldCxcbitcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBidWZzaXplKVxuK3tcbitcdHVuc2lnbmVkIGludCBsZW47XG4rXHR1bnNpZ25lZCBpbnQgbmFtZV9sZW47XG4rXHR1bnNpZ25lZCBsb25nIG1pbl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQsIG5hbWUpO1xuK1xuK1x0aWYgKG9mZnNldCBcdTAwM2UgYnVmc2l6ZSB8fCBidWZzaXplIC0gb2Zmc2V0IFx1MDAzYyBtaW5fbGVuKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRsZW4gPSBpc29udW1fNzExKGRlLVx1MDAzZWxlbmd0aCk7XG4rXHRuYW1lX2xlbiA9IGlzb251bV83MTEoZGUtXHUwMDNlbmFtZV9sZW4pO1xuK1x0aWYgKGxlbiBcdTAwM2MgbWluX2xlbiB8fCBuYW1lX2xlbiBcdTAwM2UgbGVuIC0gbWluX2xlbilcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0aWYgKGxlbiBcdTAwM2UgYnVmc2l6ZSAtIG9mZnNldClcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuK1xuIHN0YXRpYyBpbnRcbiBpc29mc19jbXAoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpjb21wYXJlLCBpbnQgZGxlbilcbiB7XG5AQCAtODgsMTYgKzEwOCwxNiBAQCBpc29mc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4gXHRcdFx0ZGUgPSB0bXBkZTtcbiBcdFx0fVxuIFxuLVx0XHRkbGVuID0gZGUtXHUwMDNlbmFtZV9sZW5bMF07XG4tXHRcdGRwbnQgPSBkZS1cdTAwM2VuYW1lO1xuLVx0XHQvKiBCYXNpYyBzYW5pdHkgY2hlY2ssIHdoZXRoZXIgbmFtZSBkb2Vzbid0IGV4Y2VlZCBkaXIgZW50cnkgKi9cbi1cdFx0aWYgKGRlX2xlbiBcdTAwM2MgZGxlbiArIHNpemVvZihzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQpKSB7XG4rXHRcdGlmICghaXNvZnNfZGlyX3JlY29yZF92YWxpZChkZSwgZGUgPT0gdG1wZGUgPyAwIDogb2Zmc2V0X3NhdmVkLFxuK1x0XHRcdFx0XHQgICAgZGUgPT0gdG1wZGUgPyBkZV9sZW4gOiBidWZzaXplKSkge1xuIFx0XHRcdHByaW50ayhLRVJOX05PVElDRSBcImlzbzk2NjA6IENvcnJ1cHRlZCBkaXJlY3RvcnkgZW50cnlcIlxuIFx0XHRcdCAgICAgICBcIiBpbiBibG9jayAlbHUgb2YgaW5vZGUgJWxsdVxcblwiLCBibG9jayxcbiBcdFx0XHQgICAgICAgZGlyLVx1MDAzZWlfaW5vKTtcbiBcdFx0XHRicmVsc2UoYmgpO1xuIFx0XHRcdHJldHVybiAwO1xuIFx0XHR9XG4rXHRcdGRsZW4gPSBkZS1cdTAwM2VuYW1lX2xlblswXTtcbitcdFx0ZHBudCA9IGRlLVx1MDAzZW5hbWU7XG4gXG4gXHRcdGlmIChzYmktXHUwMDNlc19yb2NrIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgKChpID0gZ2V0X3JvY2tfcmlkZ2VfZmlsZW5hbWUoZGUsIHRtcG5hbWUsIGRpcikpKSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDg6NDkuNDU5NzMyNjg0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM2NDk1MzY2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgSVNPIDk2NjAgRmlsZXN5c3RlbSoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgc29tZSBwcmV0dHkgY3J1Y2lhbCBwYXJ0cyBvZiB0aGUgSVNPIDk2NjAgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbi4gSXQncyBtb2RpZnlpbmcgYGZzL2lzb2ZzL2Rpci5jYCwgYGZzL2lzb2ZzL2V4cG9ydC5jYCwgYGZzL2lzb2ZzL2lzb2ZzLmhgLCBhbmQgYGZzL2lzb2ZzL25hbWVpLmNgLiAgTG9va3MgbGlrZSB0aGV5J3JlIGFkZGluZyBhIG5ldyBmdW5jdGlvbiwgYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgLCB3aGljaCBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4gVGhpcyBzdWdnZXN0cyB0aGV5J3JlIHN0cmVuZ3RoZW5pbmcgdGhlIHZhbGlkYXRpb24gb2YgZGlyZWN0b3J5IHJlY29yZHMgd2l0aGluIHRoZSBmaWxlc3lzdGVtLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgdG8gc2VlIGluIHRoaXMga2luZCBvZiBjb2RlLiBUaGV5J3JlIHJlcGxhY2luZyBzb21lIGluLWxpbmUgc2FuaXR5IGNoZWNrcyB3aXRoIGNhbGxzIHRvIHRoaXMgbmV3IGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgbWFrZSB0aGUgY29kZSBjbGVhbmVyIGFuZCBlYXNpZXIgdG8gbWFpbnRhaW4uXG5cbk5vdywgbGV0J3MgYnJlYWsgZG93biB0aGUgc2NvcGUuIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9ucyBhZmZlY3RlZCBhcmU6IGBkb19pc29mc19yZWFkZGlyYCBmcm9tIGBkaXIuY2AgKHRoYXQncyBhIGNvcmUgZGlyZWN0b3J5IHJlYWRpbmcgb3BlcmF0aW9uISksIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAgZnJvbSBgZXhwb3J0LmNgIChyZWxhdGVkIHRvIGV4cG9ydGluZyBmaWxlc3lzdGVtIGluZm9ybWF0aW9uKSwgYGlzb2ZzX2ZpbmRfZW50cnlgIGZyb20gYG5hbWVpLmNgICh0aGUgZW50cnkgcG9pbnQgZm9yIHNlYXJjaGluZyBmb3IgZmlsZXMpLCBhbmQsIG9mIGNvdXJzZSwgdGhlIG5ldyBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAgZnJvbSBgbmFtZWkuY2AuIEFsbCByZWFjaGFibGUga2VybmVsIGxvZ2ljLlxuXG5UaGUgZmFjdCB0aGF0IHRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIHRoZSBJU08gOTY2MCBmaWxlc3lzdGVtIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBmaWxlc3lzdGVtIHN0aWxsIGNvbW1vbmx5IHVzZWQgZm9yIENELVJPTXMsIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgY2FuIGJlIG1vdW50ZWQgdGhyb3VnaCBsb29wYmFjayBkZXZpY2VzLiBUaGF0IG1lYW5zIHVudHJ1c3RlZCBkYXRhIGNhbiByZWFjaCB0aGUga2VybmVsIGNvZGUsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBXZSBtaWdodCBiZSBhYmxlIHRvIGNyYWZ0IG1hbGljaW91cyBJU08gaW1hZ2VzIGFuZCBmZWVkIHRoZW0gdG8gdGhlIGtlcm5lbCB0aHJvdWdoIGEgbG9vcGJhY2sgbW91bnQuXG5cblNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGNvbnRyb2wgdGhlIElTTyA5NjYwIGZpbGVzeXN0ZW0uIEknbGwgdXNlIGBncmVwcGVyYCB0byBzZWFyY2ggdGhlIGBmcy9pc29mcy9LY29uZmlnYCBmaWxlIGFuZCBpZGVudGlmeSBhbnkgcmVsZXZhbnQgZmxhZ3MsIGxpa2UgYElTTzk2NjBfRlNgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB0byBzZWUgaG93IHRvIGVuYWJsZSBhbmQgdGVzdCB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTc0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDg6NTQuODI0NjkxMjU2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDUyOTg5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVNPOTY2MF9GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9pc29mcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2lzb2ZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9pc29mcy9LY29uZmlnOjI6Y29uZmlnIElTTzk2NjBfRlNcXG5mcy9pc29mcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklTTyA5NjYwIENEUk9NIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA4OjU0Ljk4OTIyNjQ2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNzI0NDgyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBJU085NjYwIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgSVNPOTY2MF9GU2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHRoYXQncyB0aGUgYmFzZS4gQnV0IHdoYXQgZWxzZSBpcyByZXF1aXJlZCB0byBtYWtlIHRoaXMgd29yayBjb3JyZWN0bHk/XCIgSXQncyByYXJlbHkgYSBzdGFuZGFsb25lIG9wdGlvbi5cblxuSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBkZXBlbmRlbmNpZXMuIEknbSBhbG1vc3QgY2VydGFpbiB0aGVyZSdzIGEgcHJlcmVxdWlzaXRlIOKAkyBzb21ldGhpbmcgZm91bmRhdGlvbmFsIOKAkyBwcm9iYWJseSBzb21ldGhpbmcgYWxvbmcgdGhlIGxpbmVzIG9mIGBkZXBlbmRzIG9uIEJMT0NLYC4gVGhpcyBpcyB0aGUgc3RhbmRhcmQsIGFmdGVyIGFsbCwgYW5kIEknZCBiZSB2ZXJ5IHN1cnByaXNlZCBpZiBpdCB3YXNuJ3QgdGhlcmUuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhhdCdzIHRoZSBjYXNlLiBJdCdzIGEgc3RhbmRhcmQgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ1NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA4OjU4LjM2MTY3OTAzNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTc3NzE3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2lzb2ZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaXNvZnMvS2NvbmZpZz0xOT1jb25maWcgSk9MSUVUXFxuZnMvaXNvZnMvS2NvbmZpZy0yMC1cXHRib29sIFxcXCJNaWNyb3NvZnQgSm9saWV0IENEUk9NIGV4dGVuc2lvbnNcXFwiXFxuZnMvaXNvZnMvS2NvbmZpZzoyMTpcXHRkZXBlbmRzIG9uIElTTzk2NjBfRlNcXG5mcy9pc29mcy9LY29uZmlnLTIyLVxcdHNlbGVjdCBOTFNcXG4tLVxcbmZzL2lzb2ZzL0tjb25maWc9MzE9Y29uZmlnIFpJU09GU1xcbmZzL2lzb2ZzL0tjb25maWctMzItXFx0Ym9vbCBcXFwiVHJhbnNwYXJlbnQgZGVjb21wcmVzc2lvbiBleHRlbnNpb25cXFwiXFxuZnMvaXNvZnMvS2NvbmZpZzozMzpcXHRkZXBlbmRzIG9uIElTTzk2NjBfRlNcXG5mcy9pc29mcy9LY29uZmlnLTM0LVxcdHNlbGVjdCBaTElCX0lORkxBVEVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDg6NTguNDUxNDYxOTYyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyODA2OTgxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgSVNPOTY2MCBGaWxlc3lzdGVtIERlcGVuZGVuY2llcyoqXG5cbkhtbSwgaG9sZCBvbiBhIG1pbnV0ZS4gSSB3YXMganVzdCByZXZpZXdpbmcgdGhlIGZpbGVzeXN0ZW0gZGVwZW5kZW5jaWVzLCBhbmQgaXQgc2VlbXMgKmRpcmVjdGx5KiBsb29raW5nIGF0IGBJU085NjYwX0ZTYCwgdGhlIElTTzk2NjAgZmlsZXN5c3RlbSBpdHNlbGYsIGRvZXNuJ3QgaW1tZWRpYXRlbHkgcmV2ZWFsIGFueSBcImRlcGVuZHMgb25cIiByZWxhdGlvbnNoaXBzLiBUaGF0J3MgYSBiaXQgb2RkLCBpc24ndCBpdD8gR2VuZXJhbGx5LCBmaWxlc3lzdGVtcyBoYXZlIGRlcGVuZGVuY2llcywgZXZlbiBpZiB0aGV5J3JlIG1pbmltYWwuXG5cblJpZ2h0LCBzbyB3aGVyZSdzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBpdHMgcmVxdWlyZW1lbnRzLCBhbnkgZmxhZ3MgaXQgbmVlZHM/IFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgYGZzL2lzb2ZzL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGZpbGVzeXN0ZW0gc2hvdWxkIGxpZS4gVGhhdCBzaG91bGQgbGF5IGl0IGFsbCBvdXQgZm9yIG1lLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODQ2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MDEuNjc5NTM1NzA3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvaXNvZnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIElTTzk2NjBfRlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJJU08gOTY2MCBDRFJPTSBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0c2VsZWN0IEJVRkZFUl9IRUFEXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgaXMgdGhlIHN0YW5kYXJkIGZpbGUgc3lzdGVtIHVzZWQgb24gQ0QtUk9Ncy4gIEl0IHdhcyBwcmV2aW91c2x5XFxuICAgNzpcXHRcXHQgIGtub3duIGFzIFxcXCJIaWdoIFNpZXJyYSBGaWxlIFN5c3RlbVxcXCIgYW5kIGlzIGNhbGxlZCBcXFwiaHNmc1xcXCIgb24gb3RoZXJcXG4gICA4OlxcdFxcdCAgVW5peCBzeXN0ZW1zLiAgVGhlIHNvLWNhbGxlZCBSb2NrLVJpZGdlIGV4dGVuc2lvbnMgd2hpY2ggYWxsb3cgZm9yXFxuICAgOTpcXHRcXHQgIGxvbmcgVW5peCBmaWxlbmFtZXMgYW5kIHN5bWJvbGljIGxpbmtzIGFyZSBhbHNvIHN1cHBvcnRlZCBieSB0aGlzXFxuICAxMDpcXHRcXHQgIGRyaXZlci4gIElmIHlvdSBoYXZlIGEgQ0QtUk9NIGRyaXZlIGFuZCB3YW50IHRvIGRvIG1vcmUgd2l0aCBpdCB0aGFuXFxuICAxMTpcXHRcXHQgIGp1c3QgbGlzdGVuIHRvIGF1ZGlvIENEcyBhbmQgd2F0Y2ggaXRzIExFRHMsIHNheSBZIChhbmQgcmVhZFxcbiAgMTI6XFx0XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lzb2ZzLnJzdFxcdTAwM2UgYW5kIHRoZSBDRC1ST00tSE9XVE8sXFxuICAxMzpcXHRcXHQgIGF2YWlsYWJsZSBmcm9tIFxcdTAwM2NodHRwOi8vd3d3LnRsZHAub3JnL2RvY3MuaHRtbCNob3d0b1xcdTAwM2UpLCB0aGVyZWJ5XFxuICAxNDpcXHRcXHQgIGVubGFyZ2luZyB5b3VyIGtlcm5lbCBieSBhYm91dCAyNyBLQjsgb3RoZXJ3aXNlIHNheSBOLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBmaWxlIHN5c3RlbSBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gIDE3OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGlzb2ZzLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgSk9MSUVUXFxuICAyMDpcXHRcXHRib29sIFxcXCJNaWNyb3NvZnQgSm9saWV0IENEUk9NIGV4dGVuc2lvbnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA5OjAxLjY3OTU5ODk5N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNzY3NzQ5MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJU085NjYwIEZpbGVzeXN0ZW0gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZm9jdXNpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGUgSVNPOTY2MCBmaWxlc3lzdGVtLiBJJ2xsIG1ha2Ugc3VyZSB0byBpbmNsdWRlIGBJU085NjYwX0ZTYCBhcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGVsZW1lbnQuIFRob3VnaCwgSSB3YXMgYWJvdXQgdG8gYWxzbyBpbmNsdWRlIGBCTE9DS2AsIGJ1dCBzaW5jZSBgQkxPQ0tgIGlzIHVzdWFsbHkgZW5hYmxlZCBhbG9uZ3NpZGUgYElTTzk2NjBfRlNgLCB0aGUgbW9yZSBzcGVjaWZpYyBgSVNPOTY2MF9GU2Agc2hvdWxkIGJlIHN1ZmZpY2llbnQuXG5cbk5vdywgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgaW52b2x2ZWQuIE15IGZvY3VzIGlzIG9uOlxuXG4qICAgYGRvX2lzb2ZzX3JlYWRkaXJgIC0gSXQgYXBwZWFycyB0byBiZSBzdGF0aWM7IEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IHRvIGJlIGNlcnRhaW4uXG4qICAgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCAtIEFub3RoZXIgcG90ZW50aWFsIHN0YXRpYyBmdW5jdGlvbjsgSSdsbCBmbGFnIGl0IGZvciB2ZXJpZmljYXRpb24uXG4qICAgYGlzb2ZzX2ZpbmRfZW50cnlgIC0gU2FtZSBhcyBhYm92ZSwgSSBzaG91bGQgdmVyaWZ5IGlmIGl0J3Mgc3RhdGljLlxuKiAgIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCAtIFRoaXMgb25lIGlzICpub3QqIHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93IGltbWVkaWF0ZWx5LlxuXG5UbyBiZWdpbiB0aGlzIGFuYWx5c2lzLCBJJ2xsIHN0YXJ0IHdpdGggYGZzL2lzb2ZzL2Rpci5jYCBhbmQgc3BlY2lmaWNhbGx5IGV4YW1pbmUgYGRvX2lzb2ZzX3JlYWRkaXJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MDYuMDU2Mzc2NDE5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjMwNDUzMjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX2lzb2ZzX3JlYWRkaXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaXNvZnMvZGlyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaXNvZnMvZGlyLmM9NTM9aW50IGdldF9hY29ybl9maWxlbmFtZShzdHJ1Y3QgaXNvX2RpcmVjdG9yeV9yZWNvcmQgKmRlLFxcbi0tXFxuZnMvaXNvZnMvZGlyLmMtODQtICovXFxuZnMvaXNvZnMvZGlyLmM6ODU6c3RhdGljIGludCBkb19pc29mc19yZWFkZGlyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLFxcbmZzL2lzb2ZzL2Rpci5jLTg2LVxcdFxcdHN0cnVjdCBkaXJfY29udGV4dCAqY3R4LFxcbi0tXFxuZnMvaXNvZnMvZGlyLmMtMjQ4LSAqIGhhbmRsaW5nIHNwbGl0IGRpcmVjdG9yeSBlbnRyaWVzLi4gVGhlIHJlYWwgd29yayBpcyBkb25lIGJ5XFxuZnMvaXNvZnMvZGlyLmM6MjQ5OiAqIFxcXCJkb19pc29mc19yZWFkZGlyKClcXFwiLlxcbmZzL2lzb2ZzL2Rpci5jLTI1MC0gKi9cXG5mcy9pc29mcy9kaXIuYz0yNTE9c3RhdGljIGludCBpc29mc19yZWFkZGlyKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eClcXG4tLVxcbmZzL2lzb2ZzL2Rpci5jLTI2My1cXG5mcy9pc29mcy9kaXIuYzoyNjQ6XFx0cmVzdWx0ID0gZG9faXNvZnNfcmVhZGRpcihpbm9kZSwgZmlsZSwgY3R4LCB0bXBuYW1lLCB0bXBkZSk7XFxuZnMvaXNvZnMvZGlyLmMtMjY1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTowOTowNy42ODY4MzYxODZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0MjA4MDQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgSVNPRlMgRmlsZSBTeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYGRvX2lzb2ZzX3JlYWRkaXJgIGZ1bmN0aW9uLiBJdCdzIG1hcmtlZCBhcyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nOyBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIFRoZSBleHRlcm5hbCBlbnRyeSBwb2ludCBmb3IgcmVhZGluZyBhIGRpcmVjdG9yeSBpbiBJU09GUyBzZWVtcyB0byBiZSBgaXNvZnNfcmVhZGRpcmAsIGFuZCB0aGF0J3MgdGhlIHByaW1hcnkgcG9pbnQgSSdtIGludGVyZXN0ZWQgaW4gaGVyZS5cblxuTm93LCB3aGVyZSdzIHRoZSBwYXJlbnQgaW5mb3JtYXRpb24gaGFuZGxlZD8gSSdsbCBiZXQgaXQncyBpbiB0aGUgZXhwb3J0IGNvZGUgc2luY2UgdGhhdCByZWxhdGVzIHRvIHRoZSBtb3VudCBwb2ludCBhbmQgaG93IHRoaW5ncyBhcmUgbWFkZSBhY2Nlc3NpYmxlIHRvIHRoZSB3aWRlciBzeXN0ZW0uIExldCdzIHNlZS4uLiBJJ2xsIGNoZWNrIGluIGBmcy9pc29mcy9leHBvcnQuY2AgdG8gbG9vayBmb3IgdGhlIGZ1bmN0aW9uIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAuIFRoYXQgZnVuY3Rpb24gcHJvYmFibHkgaG9sZHMgdGhlIGtleSB0byBob3cgZGlyZWN0b3J5IGVudHJpZXMgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIGZpbGUgc3lzdGVtIHN0cnVjdHVyZSBhdCB0aGUgbW91bnQgcG9pbnQuIEknbGwgdGFrZSBhIGxvb2sgYXQgdGhlIGV4cG9ydCBjb2RlIGFuZCBzZWUgd2hhdCBJIGNhbiB0dXJuIHVwIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjI0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MTEuNTI4OTE5NDQ4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTkzMjc5MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaXNvZnMvZXhwb3J0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaXNvZnMvZXhwb3J0LmM9MjA9aXNvZnNfZXhwb3J0X2lnZXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2lzb2ZzL2V4cG9ydC5jLTQzLSAqIGlzb2ZzX25vcm1hbGl6ZV9ibG9ja19hbmRfb2Zmc2V0KCkuICovXFxuZnMvaXNvZnMvZXhwb3J0LmM6NDQ6c3RhdGljIHN0cnVjdCBkZW50cnkgKmlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50KHN0cnVjdCBkZW50cnkgKmNoaWxkKVxcbmZzL2lzb2ZzL2V4cG9ydC5jLTQ1LXtcXG4tLVxcbmZzL2lzb2ZzL2V4cG9ydC5jLTU1LVxcdGlmICghU19JU0RJUihjaGlsZF9pbm9kZS1cXHUwMDNlaV9tb2RlKSkge1xcbmZzL2lzb2ZzL2V4cG9ydC5jOjU2OlxcdFxcdHByaW50ayhLRVJOX0VSUiBcXFwiaXNvZnM6IGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50KCk6IFxcXCJcXG5mcy9pc29mcy9leHBvcnQuYy01Ny1cXHRcXHQgICAgICAgXFxcImNoaWxkIGlzIG5vdCBhIGRpcmVjdG9yeSFcXFxcblxcXCIpO1xcbi0tXFxuZnMvaXNvZnMvZXhwb3J0LmMtNjUtXFx0aWYgKGVfY2hpbGRfaW5vZGUtXFx1MDAzZWlfaWdldDVfb2Zmc2V0ICE9IDApIHtcXG5mcy9pc29mcy9leHBvcnQuYzo2NjpcXHRcXHRwcmludGsoS0VSTl9FUlIgXFxcImlzb2ZzOiBpc29mc19leHBvcnRfZ2V0X3BhcmVudCgpOiBcXFwiXFxuZnMvaXNvZnMvZXhwb3J0LmMtNjctXFx0XFx0ICAgICAgIFxcXCJjaGlsZCBkaXJlY3Rvcnkgbm90IG5vcm1hbGl6ZWQhXFxcXG5cXFwiKTtcXG4tLVxcbmZzL2lzb2ZzL2V4cG9ydC5jPTE5Nj1jb25zdCBzdHJ1Y3QgZXhwb3J0X29wZXJhdGlvbnMgaXNvZnNfZXhwb3J0X29wcyA9IHtcXG4tLVxcbmZzL2lzb2ZzL2V4cG9ydC5jLTE5OS1cXHQuZmhfdG9fcGFyZW50XFx0PSBpc29mc19maF90b19wYXJlbnQsXFxuZnMvaXNvZnMvZXhwb3J0LmM6MjAwOlxcdC5nZXRfcGFyZW50ICAgICA9IGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50LFxcbmZzL2lzb2ZzL2V4cG9ydC5jLTIwMS19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTowOToxMS44NDgyNTM0NTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ3NzQyNTAyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgSVNPRlMgRXhwb3J0IGFuZCBTeXprYWxsZXIgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCBmdW5jdGlvbi4gSXQncyBtYXJrZWQgYXMgYHN0YXRpY2AsIGJ1dCB0aGVuIGl0J3MgZXhwb3NlZCB0aHJvdWdoIGBpc29mc19leHBvcnRfb3BzLmdldF9wYXJlbnRgLiBUaGF0J3MgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgaXQncyBgc3RhdGljYCBpbml0aWFsbHkgbWFkZSBtZSB0aGluayBpdCBtaWdodCBiZSBpbmxpbmVkLCBhbmQgdGhlcmVmb3JlIG5vdCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGZvciB0b29scyBsaWtlIHN5emthbGxlciB0byBmaW5kLiBCdXQsIGl0J3MgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCB3aGljaCBnZW5lcmFsbHkgcHJldmVudHMgaW5saW5pbmcuIFNvLCBJIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNvbXBpbGVyIG9wdGltaXppbmcgaXQgYXdheS5cblxuSG1tLCBidXQgbWF5YmUgdGhlcmUncyBhIGJldHRlciBhcHByb2FjaCBhbnl3YXk/IFNob3VsZCBJIGJlIHRoaW5raW5nIGFib3V0IHVzaW5nIGBpc29mc19maF90b19wYXJlbnRgIG9yIG1heWJlIGV2ZW4gbG9va2luZyBhdCBgaXNvZnNfZXhwb3J0X29wc2AgZGlyZWN0bHk/IE9uIHNlY29uZCB0aG91Z2h0LCBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgICppcyogcGVyZmVjdGx5IGFjY2VwdGFibGUsIGFzIGxvbmcgYXMgdGhlIGNvbXBpbGVyIGlzbid0IGlubGluaW5nIGl0LiBBbmQgc2luY2UgaXQncyBhIGZ1bmN0aW9uIHBvaW50ZXIsIEkgdGhpbmsgd2UncmUgZ29vZCB0aGVyZS5cblxuSG93ZXZlciwgdGhlIHJlYWwgZ29hbCBpcyBjb21wYXRpYmlsaXR5IHdpdGggc3l6a2FsbGVyLCB3aGljaCBpcyBtYWlubHkgZm9jdXNlZCBvbiBub24tc3RhdGljIGZ1bmN0aW9ucy4gTGV0J3MgZGlnIGRlZXBlciBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgKm5vbi1zdGF0aWMqIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIGJlIG1vcmUgdXNlZnVsLiBUaW1lIHRvIGNoZWNrIGBmcy9pc29mcy9uYW1laS5jYCBhbmQgc3RhcnQgd2l0aCB0aGUgYGlzb2ZzX2ZpbmRfZW50cnlgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIGxpa2UgYSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHBvdGVudGlhbCBjYW5kaWRhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTE5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA5OjE2LjMyNTY4MTY1MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NzI1OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzb2ZzX2ZpbmRfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaXNvZnMvbmFtZWkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9pc29mcy9uYW1laS5jPTM0PWlzb2ZzX2NtcChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGNvbnN0IGNoYXIgKmNvbXBhcmUsIGludCBkbGVuKVxcbi0tXFxuZnMvaXNvZnMvbmFtZWkuYy00Mi0vKlxcbmZzL2lzb2ZzL25hbWVpLmM6NDM6ICpcXHRpc29mc19maW5kX2VudHJ5KClcXG5mcy9pc29mcy9uYW1laS5jLTQ0LSAqXFxuLS1cXG5mcy9pc29mcy9uYW1laS5jPTQ4PXN0YXRpYyB1bnNpZ25lZCBsb25nXFxuZnMvaXNvZnMvbmFtZWkuYzo0OTppc29mc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuZnMvaXNvZnMvbmFtZWkuYy01MC1cXHR1bnNpZ25lZCBsb25nICpibG9ja19ydiwgdW5zaWduZWQgbG9uZyAqb2Zmc2V0X3J2LFxcbi0tXFxuZnMvaXNvZnMvbmFtZWkuYz0xNjY9c3RydWN0IGRlbnRyeSAqaXNvZnNfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVuc2lnbmVkIGludCBmbGFncylcXG4tLVxcbmZzL2lzb2ZzL25hbWVpLmMtMTc3LVxcbmZzL2lzb2ZzL25hbWVpLmM6MTc4OlxcdGZvdW5kID0gaXNvZnNfZmluZF9lbnRyeShkaXIsIGRlbnRyeSxcXG5mcy9pc29mcy9uYW1laS5jLTE3OS1cXHRcXHRcXHRcXHRcXHUwMDI2YmxvY2ssIFxcdTAwMjZvZmZzZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA5OjE2LjQzMzQxMzM1OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDczNjY2ODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBJU09GUyBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgSVNPRlMgZmlsZSBzeXN0ZW0gY29kZSBhbmQgdHJ5aW5nIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUga2V5IGZ1bmN0aW9ucy4gIGBpc29mc19maW5kX2VudHJ5YCBpcyBjbGVhcmx5IGEgaGVscGVyIGZ1bmN0aW9uIOKAkyBhIHN0YXRpYyBvbmUgYXQgdGhhdC4gVGhhdCBtZWFucyBpdCdzIGludGVybmFsIHRvIHRoZSBtb2R1bGUgYW5kIG5vdCBkaXJlY3RseSBleHBvc2VkIGFzIGFuIGVudHJ5IHBvaW50LiBUaGUgbWFpbiBwb2ludCBvZiBlbnRyeSBmb3IgbG9va3VwIG9wZXJhdGlvbnMgc2VlbXMgdG8gYmUgYGlzb2ZzX2xvb2t1cGAuXG5cblRoZXJlZm9yZSwgdGhlIGNyaXRpY2FsIHN5bWJvbHMgdG8gZm9jdXMgb24gaGVyZSBhcmUsIGluIGZhY3Q6IGBpc29mc19yZWFkZGlyYCwgdGhlIGZ1bmN0aW9uIHRvIHJlYWQgZGlyZWN0b3J5IGVudHJpZXM7IHRoZW4gYGlzb2ZzX2xvb2t1cGAgZm9yLCB3ZWxsLCBsb29rdXBzOyBhbmQgZmluYWxseSBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAuICBUaGF0IGxhc3Qgb25lIHNlZW1zIGltcG9ydGFudCBmb3IgdmVyaWZ5aW5nIGRpcmVjdG9yeSByZWNvcmRzLiBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogc3VyZSB0aGF0IGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCBpc24ndCBhbHNvIHN0YXRpYy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGl0IGlzIGluZGVlZCBleHRlcm5hbGx5IHZpc2libGUsIHNvIEknbGwgY2hlY2sgb24gdGhhdCBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzMzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MTkuOTA3MDgzNTI4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDg2ODM4OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNvZnNfZGlyX3JlY29yZF92YWxpZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9pc29mcy9uYW1laS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2lzb2ZzL25hbWVpLmMtMTItXFxuZnMvaXNvZnMvbmFtZWkuYzoxMzpib29sIGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWQoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSxcXG5mcy9pc29mcy9uYW1laS5jLTE0LVxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG9mZnNldCxcXG4tLVxcbmZzL2lzb2ZzL25hbWVpLmM9NDk9aXNvZnNfZmluZF9lbnRyeShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbi0tXFxuZnMvaXNvZnMvbmFtZWkuYy0xMTAtXFxuZnMvaXNvZnMvbmFtZWkuYzoxMTE6XFx0XFx0aWYgKCFpc29mc19kaXJfcmVjb3JkX3ZhbGlkKGRlLCBkZSA9PSB0bXBkZSA/IDAgOiBvZmZzZXRfc2F2ZWQsXFxuZnMvaXNvZnMvbmFtZWkuYy0xMTItXFx0XFx0XFx0XFx0XFx0ICAgIGRlID09IHRtcGRlID8gZGVfbGVuIDogYnVmc2l6ZSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MjAuMjU1Nzc0MDAxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1OTQ0MzgzNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBJU09GUyBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAgaXMgKm5vdCogYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaGVscHMgbmFycm93IG15IGZvY3VzLiBJJ20gcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gdGhlIGZvbGxvd2luZyBzeW1ib2xzOiBgaXNvZnNfcmVhZGRpcmAsIGBpc29mc19sb29rdXBgLCBhbmQgb2YgY291cnNlIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgSSB3YW50IHRvIGV4YW1pbmUuXG5cbldhaXQgYSBzZWNvbmQsIHdoYXQgYWJvdXQgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YD8gSSByZW1lbWJlciBpdCBiZWluZyBzdGF0aWMuLi5hbmQgeWVzLCBpdCBpcy4gVGhlIGVudHJ5cG9pbnQgaXMgYGlzb2ZzX2V4cG9ydF9vcHMuZ2V0X3BhcmVudGAuIFRoaXMgaXMgaW52b2tlZCBieSB0aGUgTkZTIHNlcnZlciAob3IgYG9wZW5fYnlfaGFuZGxlX2F0YCkuIFNpbmNlIHRoZSBmdW5jdGlvbiBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgIGlzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgaXQgd29uJ3QgYmUgaW5saW5lZC4gV2hpbGUgSSBjb3VsZCBpbmNsdWRlIGl0LCBJIHN1c3BlY3QgYGlzb2ZzX2xvb2t1cGAgYW5kIGBpc29mc19yZWFkZGlyYCBhcmUgdGhlIG1vcmUgY29tbW9uIGVudHJ5IHBvaW50cy5cblxuSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayBgaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRgIGluIGBmcy9pc29mcy9leHBvcnQuY2AganVzdCB0byBiZSBjZXJ0YWluLiBJJ2xsIGluY2x1ZGUgaXQgZm9yIHRoZSBzYWtlIG9mIHRob3JvdWdobmVzcywgYnV0IHVsdGltYXRlbHksIEkgdGhpbmsgSSdtIGJlc3Qgc2VydmVkIHN0aWNraW5nIHdpdGggbXkgb3JpZ2luYWwgdGhyZWUgb2YgYGlzb2ZzX3JlYWRkaXJgLCBgaXNvZnNfbG9va3VwYCwgYW5kIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYC4gVGhlc2UgYXBwZWFyIHRvIGJlIHRoZSBtb3N0IGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBnZW5lcmFsIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNTgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MjUuODUwMjE2Mjc4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzU4Mzk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpc29mc19leHBvcnRfZ2V0X3BhcmVudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9pc29mcy9leHBvcnQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9pc29mcy9leHBvcnQuYz0yMD1pc29mc19leHBvcnRfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbi0tXFxuZnMvaXNvZnMvZXhwb3J0LmMtNDMtICogaXNvZnNfbm9ybWFsaXplX2Jsb2NrX2FuZF9vZmZzZXQoKS4gKi9cXG5mcy9pc29mcy9leHBvcnQuYzo0NDpzdGF0aWMgc3RydWN0IGRlbnRyeSAqaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQoc3RydWN0IGRlbnRyeSAqY2hpbGQpXFxuZnMvaXNvZnMvZXhwb3J0LmMtNDUte1xcbi0tXFxuZnMvaXNvZnMvZXhwb3J0LmMtNTUtXFx0aWYgKCFTX0lTRElSKGNoaWxkX2lub2RlLVxcdTAwM2VpX21vZGUpKSB7XFxuZnMvaXNvZnMvZXhwb3J0LmM6NTY6XFx0XFx0cHJpbnRrKEtFUk5fRVJSIFxcXCJpc29mczogaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQoKTogXFxcIlxcbmZzL2lzb2ZzL2V4cG9ydC5jLTU3LVxcdFxcdCAgICAgICBcXFwiY2hpbGQgaXMgbm90IGEgZGlyZWN0b3J5IVxcXFxuXFxcIik7XFxuLS1cXG5mcy9pc29mcy9leHBvcnQuYy02NS1cXHRpZiAoZV9jaGlsZF9pbm9kZS1cXHUwMDNlaV9pZ2V0NV9vZmZzZXQgIT0gMCkge1xcbmZzL2lzb2ZzL2V4cG9ydC5jOjY2OlxcdFxcdHByaW50ayhLRVJOX0VSUiBcXFwiaXNvZnM6IGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50KCk6IFxcXCJcXG5mcy9pc29mcy9leHBvcnQuYy02Ny1cXHRcXHQgICAgICAgXFxcImNoaWxkIGRpcmVjdG9yeSBub3Qgbm9ybWFsaXplZCFcXFxcblxcXCIpO1xcbi0tXFxuZnMvaXNvZnMvZXhwb3J0LmM9MTk2PWNvbnN0IHN0cnVjdCBleHBvcnRfb3BlcmF0aW9ucyBpc29mc19leHBvcnRfb3BzID0ge1xcbi0tXFxuZnMvaXNvZnMvZXhwb3J0LmMtMTk5LVxcdC5maF90b19wYXJlbnRcXHQ9IGlzb2ZzX2ZoX3RvX3BhcmVudCxcXG5mcy9pc29mcy9leHBvcnQuYzoyMDA6XFx0LmdldF9wYXJlbnQgICAgID0gaXNvZnNfZXhwb3J0X2dldF9wYXJlbnQsXFxuZnMvaXNvZnMvZXhwb3J0LmMtMjAxLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA5OjI1LjkwNzgxMjc4N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ0Mjg0MTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSVNPOTY2MCBEaXJlY3RvcnkgVHJhdmVyc2FsIE9wdGltaXphdGlvbioqXG5cbkFscmlnaHQsIGdpdmVuIHRoYXQgdGhpcyBhc3BlY3Qgb2YgdGhlIGZpbGUgc3lzdGVtIGlzIHN0YXRpYywgSSdtIGdvaW5nIHRvIHNpZGVzdGVwIGFueXRoaW5nIHRoYXQgaXNuJ3QgY3J1Y2lhbCB0byB0aGUgaW1wbGVtZW50YXRpb24gYW5kIGxlYW4gb24gdGhlIGNvcmUgZnVuY3Rpb25zLiBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAsIGBpc29mc19yZWFkZGlyYCwgYW5kIGBpc29mc19sb29rdXBgIHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgYnVpbGRpbmcgYmxvY2tzLlxuXG5Ob3csIGEgcXVpY2sgY2hlY2vigKYgaXMgYGlzb2ZzX3JlYWRkaXJgIHN0YXRpYz8gWWVzLCBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgaXQgaXMuIEFoLCBjb25maXJtZWQuIEl0J3MgaW5kZWVkIGRlZmluZWQgYXMgc3RhdGljIHdpdGhpbiBgZnMvaXNvZnMvZGlyLmNgLiBHb29kLCB0aGF0IHJlaW5mb3JjZXMgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBhbmQgZ3VpZGVzIHRoZSBhcmNoaXRlY3R1cmFsIGNob2ljZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNTksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTowOToyOS42NTIwOTk5NjJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTYwNTEzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpc29mc19yZWFkZGlyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2lzb2ZzL2Rpci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2lzb2ZzL2Rpci5jPTUzPWludCBnZXRfYWNvcm5fZmlsZW5hbWUoc3RydWN0IGlzb19kaXJlY3RvcnlfcmVjb3JkICpkZSxcXG4tLVxcbmZzL2lzb2ZzL2Rpci5jLTg0LSAqL1xcbmZzL2lzb2ZzL2Rpci5jOjg1OnN0YXRpYyBpbnQgZG9faXNvZnNfcmVhZGRpcihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSxcXG5mcy9pc29mcy9kaXIuYy04Ni1cXHRcXHRzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCxcXG4tLVxcbmZzL2lzb2ZzL2Rpci5jLTI0OC0gKiBoYW5kbGluZyBzcGxpdCBkaXJlY3RvcnkgZW50cmllcy4uIFRoZSByZWFsIHdvcmsgaXMgZG9uZSBieVxcbmZzL2lzb2ZzL2Rpci5jOjI0OTogKiBcXFwiZG9faXNvZnNfcmVhZGRpcigpXFxcIi5cXG5mcy9pc29mcy9kaXIuYy0yNTAtICovXFxuZnMvaXNvZnMvZGlyLmM6MjUxOnN0YXRpYyBpbnQgaXNvZnNfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpXFxuZnMvaXNvZnMvZGlyLmMtMjUyLXtcXG4tLVxcbmZzL2lzb2ZzL2Rpci5jLTI2My1cXG5mcy9pc29mcy9kaXIuYzoyNjQ6XFx0cmVzdWx0ID0gZG9faXNvZnNfcmVhZGRpcihpbm9kZSwgZmlsZSwgY3R4LCB0bXBuYW1lLCB0bXBkZSk7XFxuZnMvaXNvZnMvZGlyLmMtMjY1LVxcbi0tXFxuZnMvaXNvZnMvZGlyLmM9Mjg0PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaXNvZnNfZGlyX29wZXJhdGlvbnMgPVxcbi0tXFxuZnMvaXNvZnMvZGlyLmMtMjg3LVxcdC5yZWFkID0gZ2VuZXJpY19yZWFkX2RpcixcXG5mcy9pc29mcy9kaXIuYzoyODg6XFx0Lml0ZXJhdGVfc2hhcmVkID0gaXNvZnNfcmVhZGRpcixcXG5mcy9pc29mcy9kaXIuYy0yODktXFx0LnNldGxlYXNlID0gZ2VuZXJpY19zZXRsZWFzZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MjkuNzUzNzEwNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjMwMTQ1MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipDb25zaWRlcmluZyBgaXNvZnNgIERpcmVjdG9yeSBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIG5vdGljaW5nIHRoYXQgdGhlIGBpc29mc19yZWFkZGlyYCBmdW5jdGlvbiBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoaXMgbWFrZXMgc2Vuc2UgZnJvbSBhbiBpbXBsZW1lbnRhdGlvbiBzdGFuZHBvaW50IHdpdGhpbiB0aGUgYGlzb2ZzYCBmaWxlIHN5c3RlbSBtb2R1bGUsIGJ1dCBpdCdzIG1ha2luZyBtZSB0aGluayBtb3JlIGJyb2FkbHkuIElmIHdlJ3JlIGxvb2tpbmcgYXQgaXNvbGF0aW5nIGFuZCBldmFsdWF0aW5nIHNwZWNpZmljIGNvbXBvbmVudHMsIHRoZSBzY29wZSBvZiB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLiBJIG5lZWQgdG8gdHJhY2sgd2hpY2ggZnVuY3Rpb25zIGFyZSBzdGF0aWMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZWlyIGludGVuZGVkIHZpc2liaWxpdHkuXG5cblRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMsIHdoYXQgYWJvdXQgYGlzb2ZzX2xvb2t1cGA/IFRoYXQncyBhIGtleSBvcGVyYXRpb24gZm9yIHBhdGggcmVzb2x1dGlvbiBhbmQgZmlsZSBhY2Nlc3MuIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGRlY2xhcmF0aW9uIGFuZCB2aXNpYmlsaXR5LCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgbGFyZ2VyIGZpbGUgc3lzdGVtIGFyY2hpdGVjdHVyZSBhbmQgcG90ZW50aWFsIGZvciBleHRlbnNpb24uIElzIGl0IHN0YXRpYyBhcyB3ZWxsPyBEb2VzIGl0IGludGVyYWN0IHdpdGggb3RoZXIgY29tcG9uZW50cyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCBob3cgaXQgcmVsYXRlcyB0byBgaXNvZnNfcmVhZGRpcmAsIGFuZCBmaWd1cmUgb3V0IGFueSBzaGFyZWQgZGF0YSBvciBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBkb2VzIHRvIG91ciBhYmlsaXR5IHRvIHJlZmFjdG9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTEzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MzIuOTgzODU4NTc0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzg0MTI4ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNvZnNfbG9va3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2lzb2ZzL25hbWVpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaXNvZnMvbmFtZWkuYz00OT1pc29mc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5mcy9pc29mcy9uYW1laS5jLTE2NS1cXG5mcy9pc29mcy9uYW1laS5jOjE2NjpzdHJ1Y3QgZGVudHJ5ICppc29mc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxcbmZzL2lzb2ZzL25hbWVpLmMtMTY3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MzMuMjYyMjc2ODE4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NDUyNDM2MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgSVNPOTY2MCBTeW1ib2wgRXhwb3N1cmUqKlxuXG5Pa2F5LCBzbyBgaXNvZnNfbG9va3VwYCBpcyAqbm90KiBzdGF0aWMsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gVGhpcyBtZWFucyBpdCBoYXMgYSBkaXN0aW5jdCBzeW1ib2wgdGhhdCBJIGNhbiByZWFkaWx5IGV4cGxvaXQuIE15IHByaW1hcnkgZm9jdXMgc3ltYm9scywgdGhlcmVmb3JlLCBhcmUgYGlzb2ZzX2xvb2t1cGAgYW5kIGFsc28gYGlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRgLiBJJ2xsIHdhbnQgdG8gdGFyZ2V0IHRoZXNlLlxuXG5Ib3dldmVyLCBnaXZlbiB0aGF0IHN5emthbGxlciBoYW5kbGVzIHN0YXRpYyBmdW5jdGlvbnMgKmlmKiB0aGV5IGFyZW4ndCBpbmxpbmVkLCBJJ2xsIGFsc28gYWRkIGBpc29mc19yZWFkZGlyYCBhbmQgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCB0byB0aGUgbGlzdC4gSSByZWNhbGwgdGhvc2UgYXJlIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMsIG1lYW5pbmcgdGhleSBhcmUgbGlrZWx5IG5vdCBpbmxpbmVkIGFuZCB0aHVzIGhhdmUgdGhlaXIgb3duIHNlcGFyYXRlLCBhY2Nlc3NpYmxlIHN5bWJvbHMuIFdoaWxlIHN5emthbGxlciAqY291bGQqIGhhbmRsZSBzdGF0aWMgb25lcyBpZiBuZWNlc3NhcnksIHByb3ZpZGluZyBub24tc3RhdGljIG9uZXMgZ2l2ZXMgbWUgYmV0dGVyIGNvbnRyb2wuIFRoaXMgc2hvdWxkIGFsbG93IGEgd2lkZXIgdGVzdCBzdXJmYWNlLiBTbywgZm9yIHRoZSB0b29sLCBJJ2xsIHByb3ZpZGUgYGlzb2ZzX2xvb2t1cGAsIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCwgYGlzb2ZzX3JlYWRkaXJgLCBhbmQgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YC5cblxuTm93LCBsZXQgbWUgcmV2aWV3IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhZmZlY3QgdGhpcy4gSSBrbm93IHRoYXQgYElTTzk2NjBfRlNgIGlzIHRoZSBmdW5kYW1lbnRhbCBvbmUsIGJ1dCBhcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWd1cmF0aW9ucz8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjaGFuZ2VzIGluIGBmcy9pc29mcy9leHBvcnQuY2AgYXJlIGd1YXJkZWQgYnkgKmFueSogY29uZGl0aW9uYWwgY29tcGlsYXRpb24uIElmIGBleHBvcnQuY2AgaXMgY29tcGlsZWQgY29uZGl0aW9uYWxseSwgbXkgZWZmb3J0cyB0byBleHBsb2l0IHRob3NlIGZ1bmN0aW9ucyBiZWNvbWUgY29uZGl0aW9uYWwgYXMgd2VsbC4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGFueSByZWxhdGVkIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzA2LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjA5OjM4LjAwNzUyMzc0M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgwMDk3NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXhwb3J0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaXNvZnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaXNvZnMvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfSVNPOTY2MF9GUykgKz0gaXNvZnMub1xcbmZzL2lzb2ZzL01ha2VmaWxlLTctXFxuZnMvaXNvZnMvTWFrZWZpbGU6ODppc29mcy15IFxcdFxcdDo9IG5hbWVpLm8gaW5vZGUubyBkaXIubyB1dGlsLm8gcm9jay5vIGV4cG9ydC5vXFxuZnMvaXNvZnMvTWFrZWZpbGUtOS1pc29mcy0kKENPTkZJR19KT0xJRVQpXFx0Kz0gam9saWV0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6MzguMDU1NTM5OTQyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1ODM3MTExNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQb3RlbnRpYWw6IElTTzk2NjAgRmlsZXN5c3RlbSoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBzaXR1YXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkLiBJZiBgSVNPOTY2MF9GU2AgaXMgZW5hYmxlZCwgdGhlbiBgZXhwb3J0Lm9gIGlzICphbHdheXMqIGNvbXBpbGVkLiBUaGVyZWZvcmUsIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uIGlzIHNpbXBseSBgSVNPOTY2MF9GU2AuIE5vIG5lZWQgdG8gb3ZlcnRoaW5rIHRoYXQuXG5cbkxldCdzIGJyZWFrIGRvd24gdGhlIGZ1enppbmcgcG90ZW50aWFsIGhlcmUuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uLCBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAsIHdoaWNoIHZhbGlkYXRlcyBJU08gOTY2MCBkaXJlY3RvcnkgcmVjb3Jkcy4gVGhpcyBpcyBjcml0aWNhbCBiZWNhdXNlIGl0J3MgcmVwbGFjaW5nIHNvbWUgaW5saW5lIHNhbml0eSBjaGVja3Mgd2l0aCBjYWxscyB0byB0aGlzIG5ldyBmdW5jdGlvbiB3aXRoaW4ga2V5IGFyZWFzIG9mIHRoZSBmaWxlc3lzdGVtOiBgZG9faXNvZnNfcmVhZGRpcmAsIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAsIGFuZCBgaXNvZnNfZmluZF9lbnRyeWAuXG5cblRoaXMgZnVuZGFtZW50YWxseSBtb2RpZmllcyB0aGUgY29yZSBJU08gOTY2MCBmaWxlc3lzdGVtIGxvZ2ljLiBUaGF0J3MgZ29vZCBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSBiZWNhdXNlIGl0J3MgKnJlYWNoYWJsZSogYW5kLCBpbXBvcnRhbnRseSwgY2FuIGJlIGF0dGFja2VkIGJ5IG1vdW50aW5nIGNyYWZ0ZWQgZGlzayBpbWFnZXMuXG5cblRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZyBhcmUgYGlzb2ZzX2xvb2t1cGAsIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCwgYGlzb2ZzX3JlYWRkaXJgLCBhbmQgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgYWZmZWN0ZWQuXG5cbkFsbCB0aGluZ3MgY29uc2lkZXJlZCwgdGhpcyBwYXRjaCBpcyAqd29ydGgqIGZ1enppbmcuIFdlIGNhbiBtYXJrIGBXb3J0aEZ1enppbmdgIGFzIGB0cnVlYC4gSSdsbCBnbyBhaGVhZCBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDk3NiwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MDk6NDMuNjM5MjU0MzE5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkwNDMyMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklTTzk2NjBfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpc29mc19sb29rdXBcIixcbiAgICBcImlzb2ZzX2Rpcl9yZWNvcmRfdmFsaWRcIixcbiAgICBcImlzb2ZzX3JlYWRkaXJcIixcbiAgICBcImlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgaXNvZnNfZGlyX3JlY29yZF92YWxpZGAgdG8gdmFsaWRhdGUgSVNPIDk2NjAgZGlyZWN0b3J5IHJlY29yZHMgYW5kIHJlcGxhY2VzIGlubGluZSBzYW5pdHkgY2hlY2tzIHdpdGggY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBpbiBgZG9faXNvZnNfcmVhZGRpcmAsIGBpc29mc19leHBvcnRfZ2V0X3BhcmVudGAsIGFuZCBgaXNvZnNfZmluZF9lbnRyeWAuIFRoaXMgbW9kaWZpZXMgY29yZSBmaWxlc3lzdGVtIGxvZ2ljIGZvciBJU08gOTY2MCwgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCBjYW4gYmUgZnV6emVkIGJ5IG1vdW50aW5nIGNyYWZ0ZWQgZGlzayBpbWFnZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVNPOTY2MF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlzb2ZzX2xvb2t1cFwiLFxuICAgIFwiaXNvZnNfZGlyX3JlY29yZF92YWxpZFwiLFxuICAgIFwiaXNvZnNfcmVhZGRpclwiLFxuICAgIFwiaXNvZnNfZXhwb3J0X2dldF9wYXJlbnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBpc29mc19kaXJfcmVjb3JkX3ZhbGlkYCB0byB2YWxpZGF0ZSBJU08gOTY2MCBkaXJlY3RvcnkgcmVjb3JkcyBhbmQgcmVwbGFjZXMgaW5saW5lIHNhbml0eSBjaGVja3Mgd2l0aCBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIGluIGBkb19pc29mc19yZWFkZGlyYCwgYGlzb2ZzX2V4cG9ydF9nZXRfcGFyZW50YCwgYW5kIGBpc29mc19maW5kX2VudHJ5YC4gVGhpcyBtb2RpZmllcyBjb3JlIGZpbGVzeXN0ZW0gbG9naWMgZm9yIElTTyA5NjYwLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIGNhbiBiZSBmdXp6ZWQgYnkgbW91bnRpbmcgY3JhZnRlZCBkaXNrIGltYWdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wt2l[1] Phase: Succeeded StartedAt: 2026-07-29 05:09:54 +0000 UTC FinishedAt: 2026-07-29 05:09:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 05:09:54 +0000 UTC FinishedAt: 2026-07-29 05:09:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2] Phase: Succeeded StartedAt: 2026-07-29 05:09:54 +0000 UTC FinishedAt: 2026-07-29 09:14:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 05:09:54 +0000 UTC FinishedAt: 2026-07-29 09:14:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 05:09:54 +0000 UTC FinishedAt: 2026-07-29 05:10:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 05:09:54 +0000 UTC FinishedAt: 2026-07-29 05:09:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7wt2l/series-workflow7wt2l-convert-artifact-3099393230/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 05:10:04 +0000 UTC FinishedAt: 2026-07-29 05:35:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 05:10:04 +0000 UTC FinishedAt: 2026-07-29 05:35: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:*0d0e40bd-367f-4619-b63e-9341841a092f,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-workflow7wt2l/series-workflow7wt2l-convert-artifact-3099393230/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": "a7c39490-df98-447d-bada-e3173162a1b0", "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-workflow7wt2l/series-workflow7wt2l-build-action-566453556/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 05:10:04 +0000 UTC FinishedAt: 2026-07-29 05:34:43 +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:*0d0e40bd-367f-4619-b63e-9341841a092f,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-workflow7wt2l/series-workflow7wt2l-convert-artifact-3099393230/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": "a7c39490-df98-447d-bada-e3173162a1b0", "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-workflow7wt2l/series-workflow7wt2l-build-action-566453556/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 05:35:06 +0000 UTC FinishedAt: 2026-07-29 05:35:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 05:35:06 +0000 UTC FinishedAt: 2026-07-29 05:35:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 05:35:06 +0000 UTC FinishedAt: 2026-07-29 05:35:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 05:35:06 +0000 UTC FinishedAt: 2026-07-29 05:35:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7wt2l/series-workflow7wt2l-convert-artifact-2763221953/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 05:35:16 +0000 UTC FinishedAt: 2026-07-29 05:37:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 05:35:16 +0000 UTC FinishedAt: 2026-07-29 05:37:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a7c39490-df98-447d-bada-e3173162a1b0,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-workflow7wt2l/series-workflow7wt2l-build-action-566453556/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-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 05:37:21 +0000 UTC FinishedAt: 2026-07-29 05:37:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 05:37:21 +0000 UTC FinishedAt: 2026-07-29 05:37:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 05:37:21 +0000 UTC FinishedAt: 2026-07-29 06:10:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 05:37:21 +0000 UTC FinishedAt: 2026-07-29 06:10:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0d0e40bd-367f-4619-b63e-9341841a092f,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-workflow7wt2l/series-workflow7wt2l-convert-artifact-2763221953/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": "40f3301b-7c81-4c4f-a1ca-c6b00b2d6856", "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-workflow7wt2l/series-workflow7wt2l-build-action-1251312973/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 05:37:21 +0000 UTC FinishedAt: 2026-07-29 06:10:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0d0e40bd-367f-4619-b63e-9341841a092f,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-workflow7wt2l/series-workflow7wt2l-convert-artifact-2763221953/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": "40f3301b-7c81-4c4f-a1ca-c6b00b2d6856", "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-workflow7wt2l/series-workflow7wt2l-build-action-1251312973/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 06:10:42 +0000 UTC FinishedAt: 2026-07-29 06:10:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 06:10:42 +0000 UTC FinishedAt: 2026-07-29 06:10:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 06:10:42 +0000 UTC FinishedAt: 2026-07-29 06:12:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 06:10:42 +0000 UTC FinishedAt: 2026-07-29 06:12:22 +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:*40f3301b-7c81-4c4f-a1ca-c6b00b2d6856,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-workflow7wt2l/series-workflow7wt2l-build-action-1251312973/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-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 06:12:31 +0000 UTC FinishedAt: 2026-07-29 09:14:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 06:12:31 +0000 UTC FinishedAt: 2026-07-29 09:14:31 +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":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"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:*a7c39490-df98-447d-bada-e3173162a1b0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*40f3301b-7c81-4c4f-a1ca-c6b00b2d6856,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-workflow7wt2l/series-workflow7wt2l-build-action-566453556/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-workflow7wt2l/series-workflow7wt2l-build-action-1251312973/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 06:12:31 +0000 UTC FinishedAt: 2026-07-29 06:12:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 06:12:31 +0000 UTC FinishedAt: 2026-07-29 06:12:36 +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":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"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-workflow7wt2l/series-workflow7wt2l-convert-artifact-78499414/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 06:12:31 +0000 UTC FinishedAt: 2026-07-29 06:12:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 06:12:31 +0000 UTC FinishedAt: 2026-07-29 06:12:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 06:12:31 +0000 UTC FinishedAt: 2026-07-29 06:12:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 06:12:41 +0000 UTC FinishedAt: 2026-07-29 09:14:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wt2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["isofs_lookup","isofs_dir_record_valid","isofs_readdir","isofs_export_get_parent"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"05c09c9c8a79d5539fef30d42e732eba90a15dcf","config_name":"upstream-apparmor-kasan.config","enable_configs":["ISO9660_FS"],"series_id":"bead9d99-6f45-4cb4-955f-8c0b871e6b56","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 06:12:41 +0000 UTC FinishedAt: 2026-07-29 09:14:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a7c39490-df98-447d-bada-e3173162a1b0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*40f3301b-7c81-4c4f-a1ca-c6b00b2d6856,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-workflow7wt2l/series-workflow7wt2l-build-action-566453556/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-workflow7wt2l/series-workflow7wt2l-build-action-1251312973/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-workflow7wt2l/series-workflow7wt2l-convert-artifact-78499414/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,}