Name: series-workflowfmxp4 Phase: Succeeded StartedAt: 2026-08-07 07:25:28 +0000 UTC FinishedAt: 2026-08-07 11:51:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[0] Phase: Succeeded StartedAt: 2026-08-07 07:25:28 +0000 UTC FinishedAt: 2026-08-07 08:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 07:25:28 +0000 UTC FinishedAt: 2026-08-07 08:06:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "7303b63f-2169-473c-bb74-2e4b07b1ea16" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_auth_calculate_hmac", "sctp_packet_transmit", "sctp_sf_eat_auth" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMmIzM0OywKICAgICYjMzQ7c2N0cF9wYWNrZXRfdHJhbnNtaXQmIzM0OywKICAgICYjMzQ7c2N0cF9zZl9lYXRfYXV0aCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBTQ1RQIGF1dGhlbnRpY2F0aW9uIGNvZGUgdG8gaGFuZGxlIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzIGR1cmluZyBITUFDIGNhbGN1bGF0aW9uLiBJdCBjaGFuZ2VzIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIHRvIHJldHVybiBhbiBlcnJvciBjb2RlIGFuZCB1cGRhdGVzIGl0cyBjYWxsZXJzIChgc2N0cF9wYWNrZXRfcGFja2AgYW5kIGBzY3RwX3NmX2F1dGhlbnRpY2F0ZWApIHRvIGhhbmRsZSB0aGUgZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBTQ1RQIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgcHJvcGVyIGVycm9yIGhhbmRsaW5nIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZGUyNjRmZGRjMDU1MzUyZDliZTAzNTVkZThkNWRlZDdmNDUwZDM1ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDg6MDU6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmggYi9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxuaW5kZXggNmYyY2Q1NjJiMWRlNi4uZWViMzI5N2ZlOTdkMyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxuQEAgLTgzLDkgJiM0Mzs4Myw5IEBAIGludCBzY3RwX2F1dGhfc2VuZF9jaWQoZW51bSBzY3RwX2NpZCBjaHVuayxcbiBcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcbiBpbnQgc2N0cF9hdXRoX3JlY3ZfY2lkKGVudW0gc2N0cF9jaWQgY2h1bmssXG4gXHRcdCAgICAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyk7XG4tdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4tXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCxcbi1cdFx0XHQgICAgICBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICplcF9rZXksIGdmcF90IGdmcCk7XG4mIzQzO2ludCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4mIzQzO1x0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICplcF9rZXksIGdmcF90IGdmcCk7XG4gdm9pZCBzY3RwX2F1dGhfc2hrZXlfcmVsZWFzZShzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICpzaF9rZXkpO1xuIHZvaWQgc2N0cF9hdXRoX3Noa2V5X2hvbGQoc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqc2hfa2V5KTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hdXRoLmMgYi9uZXQvc2N0cC9hdXRoLmNcbmluZGV4IGM5MDFkMzczYWY4MDMuLjZkZTY2ZjU2YzQxY2UgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9hdXRoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL2F1dGguY1xuQEAgLTYxMyw5ICYjNDM7NjEzLDkgQEAgaW50IHNjdHBfYXV0aF9yZWN2X2NpZChlbnVtIHNjdHBfY2lkIGNodW5rLCBjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbiAgKiAgICB6ZXJvIChhcyBzaG93biBpbiBGaWd1cmUgNikgZm9sbG93ZWQgYnkgYWxsIGNodW5rcyB0aGF0IGFyZSBwbGFjZWRcbiAgKiAgICBhZnRlciB0aGUgQVVUSCBjaHVuayBpbiB0aGUgU0NUUCBwYWNrZXQuXG4gICovXG4tdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4tXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCxcbi1cdFx0XHQgICAgICBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICplcF9rZXksIGdmcF90IGdmcClcbiYjNDM7aW50IHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoLFxuJiM0MztcdFx0XHQgICAgIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKmVwX2tleSwgZ2ZwX3QgZ2ZwKVxuIHtcbiBcdHN0cnVjdCBzY3RwX2F1dGhfYnl0ZXMgKmFzb2Nfa2V5O1xuIFx0X191MTYga2V5X2lkLCBobWFjX2lkO1xuQEAgLTYzNiw3ICYjNDM7NjM2LDcgQEAgdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4gXHRcdC8qIGVwX2tleSBjYW4mIzM5O3QgYmUgTlVMTCBoZXJlICovXG4gXHRcdGFzb2Nfa2V5ID0gc2N0cF9hdXRoX2Fzb2NfY3JlYXRlX3NlY3JldChhc29jLCBlcF9rZXksIGdmcCk7XG4gXHRcdGlmICghYXNvY19rZXkpXG4tXHRcdFx0cmV0dXJuO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdFx0ZnJlZV9rZXkgPSAxO1xuIFx0fVxuQEAgLTY1NCw2ICYjNDM7NjU0LDggQEAgdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4gXG4gXHRpZiAoZnJlZV9rZXkpXG4gXHRcdHNjdHBfYXV0aF9rZXlfcHV0KGFzb2Nfa2V5KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIC8qIEFQSSBIZWxwZXJzICovXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvb3V0cHV0LmMgYi9uZXQvc2N0cC9vdXRwdXQuY1xuaW5kZXggMjNlOTYzMDVjYWQ3Yy4uM2Q3ZWFkOWQ0MGUxOSAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL291dHB1dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9vdXRwdXQuY1xuQEAgLTUxNyw4ICYjNDM7NTE3LDE0IEBAIHN0YXRpYyBpbnQgc2N0cF9wYWNrZXRfcGFjayhzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBhY2tldCxcbiBcdFx0fVxuIFxuIFx0XHRpZiAoYXV0aCkge1xuLVx0XHRcdHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyh0cC1cdTAwM2Vhc29jLCBuc2tiLCBhdXRoLFxuLVx0XHRcdFx0XHRcdCBwYWNrZXQtXHUwMDNlYXV0aC1cdTAwM2VzaGtleSwgZ2ZwKTtcbiYjNDM7XHRcdFx0aWYgKHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyh0cC1cdTAwM2Vhc29jLCBuc2tiLCBhdXRoLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIHBhY2tldC1cdTAwM2VhdXRoLVx1MDAzZXNoa2V5LCBnZnApKSB7XG4mIzQzO1x0XHRcdFx0c2N0cF9jaHVua19mcmVlKHBhY2tldC1cdTAwM2VhdXRoKTtcbiYjNDM7XHRcdFx0XHRwYWNrZXQtXHUwMDNlYXV0aCA9IE5VTEw7XG4mIzQzO1x0XHRcdFx0aWYgKGdzbylcbiYjNDM7XHRcdFx0XHRcdGtmcmVlX3NrYihuc2tiKTtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHRcdFx0fVxuIFx0XHRcdC8qIGZyZWUgYXV0aCBpZiBubyBtb3JlIGNodW5rcywgb3IgYWRkIGl0IGJhY2sgKi9cbiBcdFx0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZwYWNrZXQtXHUwMDNlY2h1bmtfbGlzdCkpXG4gXHRcdFx0XHRzY3RwX2NodW5rX2ZyZWUocGFja2V0LVx1MDAzZWF1dGgpO1xuQEAgLTYxOSw3ICYjNDM7NjI1LDcgQEAgaW50IHNjdHBfcGFja2V0X3RyYW5zbWl0KHN0cnVjdCBzY3RwX3BhY2tldCAqcGFja2V0LCBnZnBfdCBnZnApXG4gXG4gXHQvKiBwYWNrIHVwIGNodW5rcyAqL1xuIFx0cGt0X2NvdW50ID0gc2N0cF9wYWNrZXRfcGFjayhwYWNrZXQsIGhlYWQsIGdzbywgZ2ZwKTtcbi1cdGlmICghcGt0X2NvdW50KSB7XG4mIzQzO1x0aWYgKHBrdF9jb3VudCBcdTAwM2M9IDApIHtcbiBcdFx0a2ZyZWVfc2tiKGhlYWQpO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5pbmRleCA3MDhmYTA3ZDVmZmZjLi5iYjg5YzliNTJlMGIwIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5AQCAtNDQ1NSw5ICYjNDM7NDQ1NSwxMiBAQCBzdGF0aWMgZW51bSBzY3RwX2llcnJvciBzY3RwX3NmX2F1dGhlbnRpY2F0ZShcbiBcbiBcdG1lbXNldChkaWdlc3QsIDAsIHNpZ19sZW4pO1xuIFxuLVx0c2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGFzb2MsIGNodW5rLVx1MDAzZXNrYixcbi1cdFx0XHRcdCAoc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqKWNodW5rLVx1MDAzZWNodW5rX2hkcixcbi1cdFx0XHRcdCBzaF9rZXksIEdGUF9BVE9NSUMpO1xuJiM0MztcdGlmIChzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoYXNvYywgY2h1bmstXHUwMDNlc2tiLFxuJiM0MztcdFx0XHRcdCAgICAgKHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKiljaHVuay1cdTAwM2VjaHVua19oZHIsXG4mIzQzO1x0XHRcdFx0ICAgICBzaF9rZXksIEdGUF9BVE9NSUMpKSB7XG4mIzQzO1x0XHRrZnJlZShzYXZlX2RpZ2VzdCk7XG4mIzQzO1x0XHRyZXR1cm4gU0NUUF9JRVJST1JfTk9NRU07XG4mIzQzO1x0fVxuIFxuIFx0LyogRGlzY2FyZCB0aGUgcGFja2V0IGlmIHRoZSBkaWdlc3RzIGRvIG5vdCBtYXRjaCAqL1xuIFx0aWYgKGNyeXB0b19tZW1uZXEoc2F2ZV9kaWdlc3QsIGRpZ2VzdCwgc2lnX2xlbikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwODowNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyYjMzQ7LAogICAgJiMzNDtzY3RwX3BhY2tldF90cmFuc21pdCYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2VhdF9hdXRoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgYXV0aGVudGljYXRpb24gY29kZSB0byBoYW5kbGUgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMgZHVyaW5nIEhNQUMgY2FsY3VsYXRpb24uIEl0IGNoYW5nZXMgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AgdG8gcmV0dXJuIGFuIGVycm9yIGNvZGUgYW5kIHVwZGF0ZXMgaXRzIGNhbGxlcnMgKGBzY3RwX3BhY2tldF9wYWNrYCBhbmQgYHNjdHBfc2ZfYXV0aGVudGljYXRlYCkgdG8gaGFuZGxlIHRoZSBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNDVFAgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZTI2NGZkZGMwNTUzNTJkOWJlMDM1NWRlOGQ1ZGVkN2Y0NTBkMzVlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAwODowNTowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmgKaW5kZXggNmYyY2Q1NjJiMWRlNi4uZWViMzI5N2ZlOTdkMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmgKQEAgLTgzLDkgJiM0Mzs4Myw5IEBAIGludCBzY3RwX2F1dGhfc2VuZF9jaWQoZW51bSBzY3RwX2NpZCBjaHVuaywKIAkJICAgICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTsKIGludCBzY3RwX2F1dGhfcmVjdl9jaWQoZW51bSBzY3RwX2NpZCBjaHVuaywKIAkJICAgICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTsKLXZvaWQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAotCQkJICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCwKLQkJCSAgICAgIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKmVwX2tleSwgZ2ZwX3QgZ2ZwKTsKJiM0MztpbnQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAomIzQzOwkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCwKJiM0MzsJCQkgICAgIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKmVwX2tleSwgZ2ZwX3QgZ2ZwKTsKIHZvaWQgc2N0cF9hdXRoX3Noa2V5X3JlbGVhc2Uoc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqc2hfa2V5KTsKIHZvaWQgc2N0cF9hdXRoX3Noa2V5X2hvbGQoc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqc2hfa2V5KTsKIApkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXV0aC5jIGIvbmV0L3NjdHAvYXV0aC5jCmluZGV4IGM5MDFkMzczYWY4MDMuLjZkZTY2ZjU2YzQxY2UgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2F1dGguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hdXRoLmMKQEAgLTYxMyw5ICYjNDM7NjEzLDkgQEAgaW50IHNjdHBfYXV0aF9yZWN2X2NpZChlbnVtIHNjdHBfY2lkIGNodW5rLCBjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYykKICAqICAgIHplcm8gKGFzIHNob3duIGluIEZpZ3VyZSA2KSBmb2xsb3dlZCBieSBhbGwgY2h1bmtzIHRoYXQgYXJlIHBsYWNlZAogICogICAgYWZ0ZXIgdGhlIEFVVEggY2h1bmsgaW4gdGhlIFNDVFAgcGFja2V0LgogICovCi12b2lkIHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKLQkJCSAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsCi0JCQkgICAgICBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICplcF9rZXksIGdmcF90IGdmcCkKJiM0MztpbnQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAomIzQzOwkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCwKJiM0MzsJCQkgICAgIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKmVwX2tleSwgZ2ZwX3QgZ2ZwKQogewogCXN0cnVjdCBzY3RwX2F1dGhfYnl0ZXMgKmFzb2Nfa2V5OwogCV9fdTE2IGtleV9pZCwgaG1hY19pZDsKQEAgLTYzNiw3ICYjNDM7NjM2LDcgQEAgdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCS8qIGVwX2tleSBjYW4mIzM5O3QgYmUgTlVMTCBoZXJlICovCiAJCWFzb2Nfa2V5ID0gc2N0cF9hdXRoX2Fzb2NfY3JlYXRlX3NlY3JldChhc29jLCBlcF9rZXksIGdmcCk7CiAJCWlmICghYXNvY19rZXkpCi0JCQlyZXR1cm47CiYjNDM7CQkJcmV0dXJuIC1FTk9NRU07CiAKIAkJZnJlZV9rZXkgPSAxOwogCX0KQEAgLTY1NCw2ICYjNDM7NjU0LDggQEAgdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAKIAlpZiAoZnJlZV9rZXkpCiAJCXNjdHBfYXV0aF9rZXlfcHV0KGFzb2Nfa2V5KTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIC8qIEFQSSBIZWxwZXJzICovCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9vdXRwdXQuYyBiL25ldC9zY3RwL291dHB1dC5jCmluZGV4IDIzZTk2MzA1Y2FkN2MuLjNkN2VhZDlkNDBlMTkgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL291dHB1dC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL291dHB1dC5jCkBAIC01MTcsOCAmIzQzOzUxNywxNCBAQCBzdGF0aWMgaW50IHNjdHBfcGFja2V0X3BhY2soc3RydWN0IHNjdHBfcGFja2V0ICpwYWNrZXQsCiAJCX0KIAogCQlpZiAoYXV0aCkgewotCQkJc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKHRwLSZndDthc29jLCBuc2tiLCBhdXRoLAotCQkJCQkJIHBhY2tldC0mZ3Q7YXV0aC0mZ3Q7c2hrZXksIGdmcCk7CiYjNDM7CQkJaWYgKHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyh0cC0mZ3Q7YXNvYywgbnNrYiwgYXV0aCwKJiM0MzsJCQkJCQkgICAgIHBhY2tldC0mZ3Q7YXV0aC0mZ3Q7c2hrZXksIGdmcCkpIHsKJiM0MzsJCQkJc2N0cF9jaHVua19mcmVlKHBhY2tldC0mZ3Q7YXV0aCk7CiYjNDM7CQkJCXBhY2tldC0mZ3Q7YXV0aCA9IE5VTEw7CiYjNDM7CQkJCWlmIChnc28pCiYjNDM7CQkJCQlrZnJlZV9za2IobnNrYik7CiYjNDM7CQkJCXJldHVybiAtRU5PTUVNOwomIzQzOwkJCX0KIAkJCS8qIGZyZWUgYXV0aCBpZiBubyBtb3JlIGNodW5rcywgb3IgYWRkIGl0IGJhY2sgKi8KIAkJCWlmIChsaXN0X2VtcHR5KCZhbXA7cGFja2V0LSZndDtjaHVua19saXN0KSkKIAkJCQlzY3RwX2NodW5rX2ZyZWUocGFja2V0LSZndDthdXRoKTsKQEAgLTYxOSw3ICYjNDM7NjI1LDcgQEAgaW50IHNjdHBfcGFja2V0X3RyYW5zbWl0KHN0cnVjdCBzY3RwX3BhY2tldCAqcGFja2V0LCBnZnBfdCBnZnApCiAKIAkvKiBwYWNrIHVwIGNodW5rcyAqLwogCXBrdF9jb3VudCA9IHNjdHBfcGFja2V0X3BhY2socGFja2V0LCBoZWFkLCBnc28sIGdmcCk7Ci0JaWYgKCFwa3RfY291bnQpIHsKJiM0MzsJaWYgKHBrdF9jb3VudCAmbHQ7PSAwKSB7CiAJCWtmcmVlX3NrYihoZWFkKTsKIAkJZ290byBvdXQ7CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwppbmRleCA3MDhmYTA3ZDVmZmZjLi5iYjg5YzliNTJlMGIwIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwpAQCAtNDQ1NSw5ICYjNDM7NDQ1NSwxMiBAQCBzdGF0aWMgZW51bSBzY3RwX2llcnJvciBzY3RwX3NmX2F1dGhlbnRpY2F0ZSgKIAogCW1lbXNldChkaWdlc3QsIDAsIHNpZ19sZW4pOwogCi0Jc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGFzb2MsIGNodW5rLSZndDtza2IsCi0JCQkJIChzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICopY2h1bmstJmd0O2NodW5rX2hkciwKLQkJCQkgc2hfa2V5LCBHRlBfQVRPTUlDKTsKJiM0MzsJaWYgKHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhhc29jLCBjaHVuay0mZ3Q7c2tiLAomIzQzOwkJCQkgICAgIChzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICopY2h1bmstJmd0O2NodW5rX2hkciwKJiM0MzsJCQkJICAgICBzaF9rZXksIEdGUF9BVE9NSUMpKSB7CiYjNDM7CQlrZnJlZShzYXZlX2RpZ2VzdCk7CiYjNDM7CQlyZXR1cm4gU0NUUF9JRVJST1JfTk9NRU07CiYjNDM7CX0KIAogCS8qIERpc2NhcmQgdGhlIHBhY2tldCBpZiB0aGUgZGlnZXN0cyBkbyBub3QgbWF0Y2ggKi8KIAlpZiAoY3J5cHRvX21lbW5lcShzYXZlX2RpZ2VzdCwgZGlnZXN0LCBzaWdfbGVuKSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwODowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTM0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU0NUUCBBdXRoZW50aWNhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgbWVzc2luZyB3aXRoIHRoZSBTQ1RQIGF1dGhlbnRpY2F0aW9uIGNvZGUuIFRoZSBrZXkgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgLiBJdCYjMzk7cyBnb2luZyBmcm9tIGB2b2lkYCB0byByZXR1cm5pbmcgYW4gYGludGAuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBob3cgaXQgYmVoYXZlcywgY2xlYXJseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IHJldHVybiB2YWx1ZS4gSSBzZWUgdGhhdCBgc2N0cF9wYWNrZXRfcGFja2AgYW5kIGBzY3RwX3NmX2F1dGhlbnRpY2F0ZWAgYXJlIGhhbmRsaW5nIHRoaXMgbmV3IHJldHVybiB2YWx1ZSwgc28gdGhvc2UgYXJlIGtleSBhcmVhcyBvZiBmb2N1cy4KClJpZ2h0LCB0aW1lIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgcmVsZXZhbnQgc3ltYm9scyBhbmQgYW55IHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIHRvIGJlIGFibGUgdG8gZnVsbHkgYXNzZXNzIHRoaXMgY2hhbmdlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgYmFzaWNzOyBTQ1RQIGl0c2VsZi4gSSBrbm93IHRoYXQgYENPTkZJR19JUF9TQ1RQYCBpcyB0aGUgYmlnIG9uZSwgdGhlIG1hc3RlciBzd2l0Y2gsIHNvIHRvIHNwZWFrLiBMZXQmIzM5O3MgZG8gYSBxdWljayBncmVwIGZvciBgSVBfU0NUUGAgaW4gdGhlIGBuZXQvc2N0cC9LY29uZmlnYCBmaWxlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgYWxsIHRoZSBjb25maWd1cmFibGUgYXNwZWN0cy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgdG8gd29yayBmcm9tLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMTQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBTQ1RQIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIFNDVFAuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlLCBgbmV0L3NjdHAvS2NvbmZpZ2AuIFRoaXMgaXMgdGhlIHN0YW5kYXJkIHBsYWNlIHdoZXJlIGtlcm5lbCBtb2R1bGVzIGFuZCBmZWF0dXJlcyBkZWZpbmUgdGhlaXIgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGNvbXBvbmVudHMuIEkgd2FudCB0byBzZWUgd2hpY2ggb3RoZXIgb3B0aW9ucywgZmVhdHVyZXMsIG9yIGxpYnJhcmllcyBuZWVkIHRvIGJlIGVuYWJsZWQgb3IgY29uZmlndXJlZCBmb3IgU0NUUCB0byB3b3JrIGNvcnJlY3RseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYW55IGNvbmZsaWN0cywgdG9vLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgZmlndXJpbmcgb3V0IGhvdyBTQ1RQIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFNDVFAgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51Y29uZmlnIElQX1NDVFBcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1RoZSBTQ1RQIFByb3RvY29sXCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIElORVRcbiAgIDk6XHRcdHNlbGVjdCBDUllQVE9fTElCX1NIQTFcbiAgMTA6XHRcdHNlbGVjdCBDUllQVE9fTElCX1NIQTI1NlxuICAxMTpcdFx0c2VsZWN0IENSWVBUT19MSUJfVVRJTFNcbiAgMTI6XHRcdHNlbGVjdCBORVRfQ1JDMzJDXG4gIDEzOlx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgU3RyZWFtIENvbnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sXG4gIDE2Olx0XG4gIDE3Olx0XHQgIEZyb20gUkZDIDI5NjAgXHUwMDNjaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjk2MC50eHRcdTAwM2UuXG4gIDE4Olx0XG4gIDE5Olx0XHQgIFwmIzM0O1NDVFAgaXMgYSByZWxpYWJsZSB0cmFuc3BvcnQgcHJvdG9jb2wgb3BlcmF0aW5nIG9uIHRvcCBvZiBhXG4gIDIwOlx0XHQgIGNvbm5lY3Rpb25sZXNzIHBhY2tldCBuZXR3b3JrIHN1Y2ggYXMgSVAuICBJdCBvZmZlcnMgdGhlIGZvbGxvd2luZ1xuICAyMTpcdFx0ICBzZXJ2aWNlcyB0byBpdHMgdXNlcnM6XG4gIDIyOlx0XG4gIDIzOlx0XHQgIC0tIGFja25vd2xlZGdlZCBlcnJvci1mcmVlIG5vbi1kdXBsaWNhdGVkIHRyYW5zZmVyIG9mIHVzZXIgZGF0YSxcbiAgMjQ6XHRcdCAgLS0gZGF0YSBmcmFnbWVudGF0aW9uIHRvIGNvbmZvcm0gdG8gZGlzY292ZXJlZCBwYXRoIE1UVSBzaXplLFxuICAyNTpcdFx0ICAtLSBzZXF1ZW5jZWQgZGVsaXZlcnkgb2YgdXNlciBtZXNzYWdlcyB3aXRoaW4gbXVsdGlwbGUgc3RyZWFtcyxcbiAgMjY6XHRcdCAgd2l0aCBhbiBvcHRpb24gZm9yIG9yZGVyLW9mLWFycml2YWwgZGVsaXZlcnkgb2YgaW5kaXZpZHVhbCB1c2VyXG4gIDI3Olx0XHQgIG1lc3NhZ2VzLFxuICAyODpcdFx0ICAtLSBvcHRpb25hbCBidW5kbGluZyBvZiBtdWx0aXBsZSB1c2VyIG1lc3NhZ2VzIGludG8gYSBzaW5nbGUgU0NUUFxuICAyOTpcdFx0ICBwYWNrZXQsIGFuZFxuICAzMDpcdFx0ICAtLSBuZXR3b3JrLWxldmVsIGZhdWx0IHRvbGVyYW5jZSB0aHJvdWdoIHN1cHBvcnRpbmcgb2YgbXVsdGktXG4gIDMxOlx0XHQgIGhvbWluZyBhdCBlaXRoZXIgb3IgYm90aCBlbmRzIG9mIGFuIGFzc29jaWF0aW9uLlwmIzM0O1xuICAzMjpcdFxuICAzMzpcdFx0ICBUbyBjb21waWxlIHRoaXMgcHJvdG9jb2wgc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDM0Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY3RwLiBEZWJ1ZyBtZXNzYWdlcyBhcmUgaGFuZGxlZCBieSB0aGVcbiAgMzU6XHRcdCAga2VybmVsJiMzOTtzIGR5bmFtaWMgZGVidWdnaW5nIGZyYW1ld29yay5cbiAgMzY6XHRcbiAgMzc6XHRcdCAgSWYgaW4gZG91YnQsIHNheSBOLlxuICAzODpcdFxuICAzOTpcdGlmIElQX1NDVFBcbiAgNDA6XHRcbiAgNDE6XHRjb25maWcgU0NUUF9EQkdfT0JKQ05UXG4gIDQyOlx0XHRib29sIFwmIzM0O1NDVFA6IERlYnVnIG9iamVjdCBjb3VudHNcJiMzNDtcbiAgNDM6XHRcdGRlcGVuZHMgb24gUFJPQ19GU1xuICA0NDpcdFx0aGVscFxuICA0NTpcdFx0ICBJZiB5b3Ugc2F5IFksIHRoaXMgd2lsbCBlbmFibGUgZGVidWdnaW5nIHN1cHBvcnQgZm9yIGNvdW50aW5nIHRoZVxuICA0NjpcdFx0ICB0eXBlIG9mIG9iamVjdHMgdGhhdCBhcmUgY3VycmVudGx5IGFsbG9jYXRlZC4gIFRoaXMgaXMgdXNlZnVsIGZvclxuICA0NzpcdFx0ICBpZGVudGlmeWluZyBtZW1vcnkgbGVha3MuIFRoaXMgZGVidWcgaW5mb3JtYXRpb24gY2FuIGJlIHZpZXdlZCBieVxuICA0ODpcdFx0ICAmIzM5O2NhdCAvcHJvYy9uZXQvc2N0cC9zY3RwX2RiZ19vYmpjbnQmIzM5O1xuICA0OTpcdFxuICA1MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg5MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU0NUUCBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbiBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYElQX1NDVFBgIGNvbmZpZ3VyYXRpb24g4oCTIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkLiBJJiMzOTt2ZSBpZGVudGlmaWVkIGZvdXI6IGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgLCBgc2N0cF9wYWNrZXRfcGFja2AsIGBzY3RwX3BhY2tldF90cmFuc21pdGAsIGFuZCBgc2N0cF9zZl9hdXRoZW50aWNhdGVgLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBzY29wZS4gQXJlIHRoZXNlIHN0YXRpYyBvciBub3Q/IExldCYjMzk7cyBzZWUuLi4gYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AgaXMgKm5vdCogc3RhdGljLCBzbyBpdCYjMzk7cyBsaWtlbHkgY2FsbGFibGUgZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUuIGBzY3RwX3BhY2tldF9wYWNrYCAqaXMqIHN0YXRpYywgbWVhbmluZyBpdCYjMzk7cyBvbmx5IHZpc2libGUgd2l0aGluIHRoZSBjdXJyZW50IHRyYW5zbGF0aW9uIHVuaXQuIExpa2V3aXNlLCBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgIGlzIG5vdCBzdGF0aWMuIGBzY3RwX3NmX2F1dGhlbnRpY2F0ZWAgaXMgc3RhdGljLgoKR2l2ZW4gdGhhdCBkaXN0aW5jdGlvbiwgSSB3aWxsIG5vdyBmb2N1cyBteSBhdHRlbnRpb24gb24gYHNjdHBfcGFja2V0X3BhY2tgIGFuZCBgc2N0cF9zZl9hdXRoZW50aWNhdGVgIHNpbmNlIHRoZXkgYXJlIHN0YXRpYy4gSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIHNvdXJjZSBjb2RlIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgYXJlIGJlaW5nIHVzZWQgd2l0aGluIHRoZWlyIHJlc3BlY3RpdmUgbW9kdWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX3BhY2tldF9wYWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvb3V0cHV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvb3V0cHV0LmM9NDIwPXN0YXRpYyB2b2lkIHNjdHBfcGFja2V0X2dzb19hcHBlbmQoc3RydWN0IHNrX2J1ZmYgKmhlYWQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjdHAvb3V0cHV0LmMtNDM1LVxubmV0L3NjdHAvb3V0cHV0LmM6NDM2OnN0YXRpYyBpbnQgc2N0cF9wYWNrZXRfcGFjayhzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBhY2tldCxcbm5ldC9zY3RwL291dHB1dC5jLTQzNy1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKmhlYWQsIGludCBnc28sIGdmcF90IGdmcClcbi0tXG5uZXQvc2N0cC9vdXRwdXQuYz01NzU9aW50IHNjdHBfcGFja2V0X3RyYW5zbWl0KHN0cnVjdCBzY3RwX3BhY2tldCAqcGFja2V0LCBnZnBfdCBnZnApXG4tLVxubmV0L3NjdHAvb3V0cHV0LmMtNjI2LVx0LyogcGFjayB1cCBjaHVua3MgKi9cbm5ldC9zY3RwL291dHB1dC5jOjYyNzpcdHBrdF9jb3VudCA9IHNjdHBfcGFja2V0X3BhY2socGFja2V0LCBoZWFkLCBnc28sIGdmcCk7XG5uZXQvc2N0cC9vdXRwdXQuYy02MjgtXHRpZiAocGt0X2NvdW50IFx1MDAzYz0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MTgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOgoKKipBbmFseXppbmcgU0NUUCBQYWNrZXQgSGFuZGxpbmcgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBTQ1RQIHBhY2tldCBmdW5jdGlvbnMgYW5kIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBzY29wZSBhbmQgaG93IHRoZXkmIzM5O3JlIHVzZWQuIEZpcnN0LCBgc2N0cF9wYWNrZXRfcGFja2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQmIzM5O3MgaW50ZXJuYWwgdG8gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgbGlrZWx5IG9ubHkgdXNlZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBtb2R1bGUuIFRoaXMgaXMgdXNlZnVsOyBpdCBtZWFucyBJIGRvbiYjMzk7dCBuZWVkIHRvIHdvcnJ5IGFib3V0IGV4dGVybmFsIGRlcGVuZGVuY2llcyBvciBkaXJlY3QgY2FsbHMgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJIGNhbiBmb2N1cyBvbiBpdHMgbG9jYWwgaW50ZXJhY3Rpb25zLgoKVGhlbiB0aGVyZSYjMzk7cyBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgLiBUaGlzIG9uZSBpcyBleHBvcnRlZCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byBiZSBhd2FyZSBvZiB0aGUgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgbW9kdWxlcy4gVGhpcyBmdW5jdGlvbiBpcyBsaWtlbHkgYSBjcml0aWNhbCBwb2ludCBmb3IgdGhlIHBhY2tldCB0cmFuc21pc3Npb24gcGF0aHdheSwgc28gdW5kZXJzdGFuZGluZyBpdHMgaW50ZXJmYWNlIGFuZCBob3cgaXQmIzM5O3MgY2FsbGVkIGlzIGltcG9ydGFudC4KCkZpbmFsbHksIGBzY3RwX3NmX2F1dGhlbnRpY2F0ZWAgaXMgc3RhdGljIGFzIHdlbGwuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGxzIHRvIHNlZSBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gdGhpcyBtb2R1bGUsIGFuZCBob3cgYXV0aGVudGljYXRpb24gaXMgaW1wbGVtZW50ZWQuIFdoZXJlIGl0IGlzIGNhbGxlZCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXV0aGVudGljYXRpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9zZl9hdXRoZW50aWNhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0xNDI9c3RhdGljIGVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX3Zpb2xhdGlvbl9jaHVuayhcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xNDktXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzoxNTA6c3RhdGljIGVudW0gc2N0cF9pZXJyb3Igc2N0cF9zZl9hdXRoZW50aWNhdGUoXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xNTEtXHRcdFx0XHRcdGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTY0MD1zdGF0aWMgYm9vbCBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNjdHBfY2h1bmsgKmNodW5rLFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTY2OC1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjY2OTpcdHJldHVybiBzY3RwX3NmX2F1dGhlbnRpY2F0ZShhc29jLCBcdTAwMjZhdXRoKSA9PSBTQ1RQX0lFUlJPUl9OT19FUlJPUjtcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTY3MC19XG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NDMxMz1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9lYXRfZndkX3Rzbl9mYXN0KFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQ0MDAtICovXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo0NDAxOnN0YXRpYyBlbnVtIHNjdHBfaWVycm9yIHNjdHBfc2ZfYXV0aGVudGljYXRlKFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDQwMi1cdFx0XHRcdFx0Y29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NDQ3OT1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9lYXRfYXV0aChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDUwNS1cdGF1dGhfaGRyID0gKHN0cnVjdCBzY3RwX2F1dGhoZHIgKiljaHVuay1cdTAwM2Vza2ItXHUwMDNlZGF0YTtcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjQ1MDY6XHRlcnJvciA9IHNjdHBfc2ZfYXV0aGVudGljYXRlKGFzb2MsIGNodW5rKTtcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQ1MDctXHRzd2l0Y2ggKGVycm9yKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MjEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byBTQ1RQIEF1dGhlbnRpY2F0aW9uIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBTQ1RQIGF1dGhlbnRpY2F0aW9uIGZ1bmN0aW9ucy4gSW50ZXJlc3RpbmcuIGBzY3RwX3NmX2VhdF9hdXRoYCBpcyBkZWZpbmVkIGFzIG5vbi1zdGF0aWMsIHdoaWNoIG1lYW5zIGl0IGhhcyBleHRlcm5hbCBsaW5rYWdlLiBJdCBjYW4gYmUgY2FsbGVkIGZyb20gb3RoZXIgY29tcGlsYXRpb24gdW5pdHMgd2l0aGluIHRoZSBwcm9qZWN0IG9yIGxpbmtlZCBiaW5hcmllcy4gVGhhdOKAmXMgcHJvYmFibHkgYSBrZXkgZnVuY3Rpb24gZm9yIGludGVyYWN0aW5nIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gT24gdGhlIG90aGVyIGhhbmQsIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBpcyBzdGF0aWMuIFRoYXQgbWVhbnMgaXTigJlzIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgdHJhbnNsYXRpb24gdW5pdCwgcHJlc3VtYWJseSBhIGhlbHBlciBmdW5jdGlvbiwgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiB0aGUgYXV0aGVudGljYXRpb24gY2h1bmsgdmVyaWZpY2F0aW9uIGxvZ2ljLgoKTm93LCBJIG5lZWQgdG8gc2VlICpob3cqIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC4gTGV0IG1lIGNoZWNrIHRoZSBjb2RlIHdoZXJlIGBzY3RwX3NmX2VhdF9hdXRoYCBhbmQgYHNjdHBfcGFja2V0X3RyYW5zbWl0YCBhcmUgdXNlZCwgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBmaXQgdG9nZXRoZXIgaW4gdGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3NpbmcgYW5kIHRyYW5zbWlzc2lvbiB3b3JrZmxvdy4gSSBzdXNwZWN0IGBzY3RwX3BhY2tldF90cmFuc21pdGAgbWlnaHQgYmUgcGFzc2luZyB0aGUgbmVjZXNzYXJ5IGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIG9yIHVzaW5nIHRoZSByZXN1bHRzIG9mIGBzY3RwX3NmX2VhdF9hdXRoYC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zLCBhbmQgaG93IHRoZXkgaW50ZXJhY3QsIHdpbGwgZ2l2ZSBtZSBhIG1vcmUgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgYXV0aGVudGljYXRpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9zZl9lYXRfYXV0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz00NDAxPXN0YXRpYyBlbnVtIHNjdHBfaWVycm9yIHNjdHBfc2ZfYXV0aGVudGljYXRlKFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQ0NzgtXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo0NDc5OmVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2VhdF9hdXRoKHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQ0ODAtXHRcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYz00OTg9cmVjb25mX2NodW5rX2V2ZW50X3RhYmxlW1NDVFBfTlVNX1JFQ09ORl9DSFVOS19UWVBFU11bU0NUUF9TVEFURV9OVU1fU1RBVEVTXSA9IHtcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTA3LVx0LyogU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEICovIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6NTA4Olx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9lYXRfYXV0aCksIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTA5LVx0LyogU0NUUF9TVEFURV9FU1RBQkxJU0hFRCAqLyBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjUxMDpcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZWF0X2F1dGgpLCBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTUxMS1cdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyAqLyBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjUxMjpcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZWF0X2F1dGgpLCBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTUxMy1cdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCAqLyBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjUxNDpcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZWF0X2F1dGgpLCBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTUxNS1cdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQgKi8gXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYzo1MTY6XHRUWVBFX1NDVFBfRlVOQyhzY3RwX3NmX2VhdF9hdXRoKSwgXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy01MTctXHQvKiBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UICovIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6NTE4Olx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9lYXRfYXV0aCksIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTE5LX0gLyogVFlQRV9TQ1RQX0FVVEggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUxOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBTQ1RQIENvZGUgQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBzdGF0ZSBtYWNoaW5lIGZ1bmN0aW9uLCBgc2N0cF9zZl9lYXRfYXV0aGAsIHdoaWNoIGlzIGEga2V5IHByb2Nlc3MsIGFuZCBhbHNvIG9uIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgLiBJIHNob3VsZCBhbHNvIGtlZXAgYHNjdHBfcGFja2V0X3RyYW5zbWl0YCBpbiBtaW5kIGFzIHdlbGwuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIHNpZ25pZmljYW50IHBhcnRzLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJdCBsb29rcyBsaWtlIGBJUF9TQ1RQYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gQWgsIHdhaXQsIHRoZXJlJiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZTsgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIHRvIHJldHVybiBgLUVOT01FTWAgaW5zdGVhZCBvZiBgdm9pZGAuIFRoYXQmIzM5O3Mgbm90IGp1c3QgYSBtaW5vciB0d2VhazsgaXQmIzM5O3MgYSBzdHJ1Y3R1cmFsIGFsdGVyYXRpb24uIEEgcmV0dXJuIHZhbHVlIGlzIGEgbXVjaCBzdHJvbmdlciBzaWduYWwsIGluZGljYXRpbmcgcG90ZW50aWFsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgd2hpY2ggbXVzdCBiZSBoYW5kbGVkLgoKVG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIGRldGFpbHMsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AgaW4gYG5ldC9zY3RwL2F1dGguY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgdGhvcm91Z2hseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvYXV0aC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL2F1dGguYz01OTU9aW50IHNjdHBfYXV0aF9yZWN2X2NpZChlbnVtIHNjdHBfY2lkIGNodW5rLCBjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbi0tXG5uZXQvc2N0cC9hdXRoLmMtNjE1LSAqL1xubmV0L3NjdHAvYXV0aC5jOjYxNjppbnQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxubmV0L3NjdHAvYXV0aC5jLTYxNy1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMTcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBGdW5jdGlvbmFsIFBhdGNoKioKCk9rYXksIHRoaXMgcGF0Y2ggc2VlbXMgc29saWQsIGl0JiMzOTtzIGRlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQgZGVzZXJ2ZXMgYSBnb29kIGZ1enppbmcgY2FtcGFpZ24uIEkmIzM5O20gdGhpbmtpbmcgd2Ugc2hvdWxkIHplcm8gaW4gb24gYSBmZXcga2V5IHN5bWJvbHMgdG8gZ3VpZGUgdGhhdCBwcm9jZXNzOiBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYCwgYHNjdHBfcGFja2V0X3RyYW5zbWl0YCwgYW5kIGBzY3RwX3NmX2VhdF9hdXRoYC4gVGhlc2UgbG9vayBsaWtlIHByaW1lIHRhcmdldHMgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIExldCYjMzk7cyBzZWUgaWYgdGhlIGZpcnN0IG9uZSwgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AsIGlzIGV4cG9ydGVkIHByb3Blcmx5OyBpdCB3b3VsZCBiZSBwcmV0dHkgdXNlbGVzcyBpZiBpdCYjMzk7cyBub3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM3MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqRXhhbWluaW5nIFNDVFAgRnVuY3Rpb24gVmlzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgU0NUUCBmdW5jdGlvbnMuIFRoZSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgd2hpbGUgaXQmIzM5O3Mgbm90IGV4cG9ydGVkIChtZWFuaW5nIGl0JiMzOTtzIG5vdCBwYXJ0IG9mIHRoZSBleHRlcm5hbCBBUEksIGxpa2VseSksIGl0IGlzICpub3QqIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiAgU3BlY2lmaWNhbGx5LCBJJiMzOTttIG5vdGluZyB0aGF0IGBzY3RwX3NmX2VhdF9hdXRoYCBpcyBub24tc3RhdGljLCBhbmQgYWxzbyBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgIGlzIG5vbi1zdGF0aWMuIFRoaXMgY291bGQgYmUgcmVsZXZhbnQgZm9yIGxhdGVyIG1vZGlmaWNhdGlvbnMgb3IgYW5hbHlzaXMuCgpOb3csIG15IGZvY3VzIHNoaWZ0cyB0byBpZGVudGlmeWluZyAqb3RoZXIqIGZ1bmN0aW9ucyBhbmQgdGhlaXIgdmlzaWJpbGl0eS4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJJiMzOTttIGNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIGF1dGhlbnRpY2F0aW9uIGxvZ2ljLgoKSG1tLCBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAgKmlzKiBzdGF0aWMuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIGZ1bmN0aW9uIEkgaGF2ZSBpbiBtaW5kLiBXYWl0IGEgbW9tZW50LCBJIG1pc3JlYWQgc29tZXRoaW5nLiBJdCBsb29rcyBsaWtlIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBpcyAqY2FsbGVkKiBieSBgc2N0cF9zZl9hdXRoZW50aWNhdGVgLiBJdCBpc24mIzM5O3QgdGhlIG90aGVyIHdheSBhcm91bmQuIE9rYXksIEkgd2FzIG1vbWVudGFyaWx5IGNvbmZ1c2VkIHRoZXJlLiBUbyBiZSBzdXJlIGFib3V0IHRoZSBjYWxsaW5nIHN0cnVjdHVyZSwgbGV0IG1lIHZlcmlmeSB3aGVyZSBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAgaXMgYWN0dWFsbHkgY2FsbGVkLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfYXV0aF9jaHVua192ZXJpZnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NTIxPWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMUNfYWNrKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy02MzktXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo2NDA6c3RhdGljIGJvb2wgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzY3RwX2NodW5rICpjaHVuayxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTY0MS1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTcwMz1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy04MjgtXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo4Mjk6XHRpZiAoIXNjdHBfYXV0aF9jaHVua192ZXJpZnkobmV0LCBjaHVuaywgbmV3X2Fzb2MpKSB7XG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy04MzAtXHRcdHNjdHBfYXNzb2NpYXRpb25fZnJlZShuZXdfYXNvYyk7XG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9MTg4Mj1zdGF0aWMgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fZHVwY29va19hKFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTE5MDYtXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzoxOTA3Olx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIG5ld19hc29jKSlcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTE5MDgtXHRcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0RJU0NBUkQ7XG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9MjAwNT1zdGF0aWMgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fZHVwY29va19iKFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIwMjYtXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzoyMDI3Olx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIG5ld19hc29jKSlcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIwMjgtXHRcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0RJU0NBUkQ7XG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9MjExMj1zdGF0aWMgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fZHVwY29va19kKFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIxMjktXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzoyMTMwOlx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIGFzb2MpKVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMjEzMS1cdFx0cmV0dXJuIFNDVFBfRElTUE9TSVRJT05fRElTQ0FSRDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTU0OAoJCQkJCQkJb3V0cHV0OiAxNjQKCQkJCQkJCXRob3VnaHRzOiAyNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgU0NUUCBBdXRoZW50aWNhdGlvbiBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgc2N0cF9zZl9hdXRoZW50aWNhdGVgIGdldHMgaW52b2tlZCBieSBib3RoIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBhbmQgYHNjdHBfc2ZfZWF0X2F1dGhgLCBidXQgdGhlIHJlYWwgd29ya2hvcnNlIGZvciBBVVRIIGNodW5rIHByb2Nlc3Npbmcgc2VlbXMgdG8gYmUgYHNjdHBfc2ZfZWF0X2F1dGhgLiBOb3csIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIGlzIGNydWNpYWwgYXMgd2VsbCwgZ2V0dGluZyBjYWxsZWQgZnJvbSBib3RoIGBzY3RwX3BhY2tldF9wYWNrYCAqYW5kKiBgc2N0cF9zZl9hdXRoZW50aWNhdGVgLiBUaGlzIGdpdmVzIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBmdW5jdGlvbiBjYWxscyBhbmQgdGhlIGRhdGEgZmxvdy4KCkkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gVGhlIGNydWNpYWwgY29uZmlnIGlzIGBJUF9TQ1RQYCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQuIGBJUF9TQ1RQYCBkZXBlbmRzIG9uIGBJTkVUYCwgd2hpY2ggaXMgcHJhY3RpY2FsbHkgYSBnaXZlbi4gVGhlcmVmb3JlLCBgSVBfU0NUUGAgaXMgc3VmZmljaWVudCBmb3IgZW5hYmxlbWVudC4KCk5vdywgYSBxdWljayBzYW5pdHkgY2hlY2suIEkgbmVlZCB0byBjb25maXJtIHRoZXNlIGNyaXRpY2FsIGZ1bmN0aW9ucyBhcmUgZXh0ZXJuYWxseSB2aXNpYmxlLCB0aGF0IHRoZXkmIzM5O3JlIG5vdCBkZWNsYXJlZCBzdGF0aWMuIExldCYjMzk7cyBzZWUuLi4geWVwLCBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYCBpcyBub24tc3RhdGljLCBqdXN0IGxpa2UgSSBleHBlY3QuIFNpbWlsYXJseSwgYm90aCBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgIGFuZCBgc2N0cF9zZl9lYXRfYXV0aGAgYXJlIG5vbi1zdGF0aWMgYXMgd2VsbC4gVGhhdCBjb25maXJtcyB0aGVzZSBmdW5jdGlvbnMgYXJlIHByb3Blcmx5IGV4cG9zZWQgYW5kIGNhbiBiZSBjYWxsZWQgZnJvbSBvdGhlciBtb2R1bGVzIG9yIGxheWVycy4KCkFscmlnaHQsIHRoYXQgY292ZXJzIGV2ZXJ5dGhpbmcuIFRpbWUgdG8gc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjJiMzNDssCiAgICAmIzM0O3NjdHBfcGFja2V0X3RyYW5zbWl0JiMzNDssCiAgICAmIzM0O3NjdHBfc2ZfZWF0X2F1dGgmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgU0NUUCBhdXRoZW50aWNhdGlvbiBjb2RlIHRvIGhhbmRsZSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyBkdXJpbmcgSE1BQyBjYWxjdWxhdGlvbi4gSXQgY2hhbmdlcyBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYCB0byByZXR1cm4gYW4gZXJyb3IgY29kZSBhbmQgdXBkYXRlcyBpdHMgY2FsbGVycyAoYHNjdHBfcGFja2V0X3BhY2tgIGFuZCBgc2N0cF9zZl9hdXRoZW50aWNhdGVgKSB0byBoYW5kbGUgdGhlIGVycm9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgU0NUUCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyYjMzQ7LAogICAgJiMzNDtzY3RwX3BhY2tldF90cmFuc21pdCYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2VhdF9hdXRoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgYXV0aGVudGljYXRpb24gY29kZSB0byBoYW5kbGUgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMgZHVyaW5nIEhNQUMgY2FsY3VsYXRpb24uIEl0IGNoYW5nZXMgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AgdG8gcmV0dXJuIGFuIGVycm9yIGNvZGUgYW5kIHVwZGF0ZXMgaXRzIGNhbGxlcnMgKGBzY3RwX3BhY2tldF9wYWNrYCBhbmQgYHNjdHBfc2ZfYXV0aGVudGljYXRlYCkgdG8gaGFuZGxlIHRoZSBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNDVFAgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwODowNToxMC4zNjg1ODIyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0Nzc0MzQxMzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNcIixcbiAgICBcInNjdHBfcGFja2V0X3RyYW5zbWl0XCIsXG4gICAgXCJzY3RwX3NmX2VhdF9hdXRoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgU0NUUCBhdXRoZW50aWNhdGlvbiBjb2RlIHRvIGhhbmRsZSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyBkdXJpbmcgSE1BQyBjYWxjdWxhdGlvbi4gSXQgY2hhbmdlcyBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYCB0byByZXR1cm4gYW4gZXJyb3IgY29kZSBhbmQgdXBkYXRlcyBpdHMgY2FsbGVycyAoYHNjdHBfcGFja2V0X3BhY2tgIGFuZCBgc2N0cF9zZl9hdXRoZW50aWNhdGVgKSB0byBoYW5kbGUgdGhlIGVycm9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgU0NUUCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MTAuMzY4NTg5MjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzkxODA4MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZTI2NGZkZGMwNTUzNTJkOWJlMDM1NWRlOGQ1ZGVkN2Y0NTBkMzVlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMDg6MDU6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmggYi9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxcbmluZGV4IDZmMmNkNTYyYjFkZTYuLmVlYjMyOTdmZTk3ZDMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcXG4rKysgYi9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxcbkBAIC04Myw5ICs4Myw5IEBAIGludCBzY3RwX2F1dGhfc2VuZF9jaWQoZW51bSBzY3RwX2NpZCBjaHVuayxcXG4gXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcXG4gaW50IHNjdHBfYXV0aF9yZWN2X2NpZChlbnVtIHNjdHBfY2lkIGNodW5rLFxcbiBcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpO1xcbi12b2lkIHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcXG4tXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCxcXG4tXFx0XFx0XFx0ICAgICAgc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqZXBfa2V5LCBnZnBfdCBnZnApO1xcbitpbnQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsXFxuK1xcdFxcdFxcdCAgICAgc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqZXBfa2V5LCBnZnBfdCBnZnApO1xcbiB2b2lkIHNjdHBfYXV0aF9zaGtleV9yZWxlYXNlKHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKnNoX2tleSk7XFxuIHZvaWQgc2N0cF9hdXRoX3Noa2V5X2hvbGQoc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqc2hfa2V5KTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2F1dGguYyBiL25ldC9zY3RwL2F1dGguY1xcbmluZGV4IGM5MDFkMzczYWY4MDMuLjZkZTY2ZjU2YzQxY2UgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjdHAvYXV0aC5jXFxuKysrIGIvbmV0L3NjdHAvYXV0aC5jXFxuQEAgLTYxMyw5ICs2MTMsOSBAQCBpbnQgc2N0cF9hdXRoX3JlY3ZfY2lkKGVudW0gc2N0cF9jaWQgY2h1bmssIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxcbiAgKiAgICB6ZXJvIChhcyBzaG93biBpbiBGaWd1cmUgNikgZm9sbG93ZWQgYnkgYWxsIGNodW5rcyB0aGF0IGFyZSBwbGFjZWRcXG4gICogICAgYWZ0ZXIgdGhlIEFVVEggY2h1bmsgaW4gdGhlIFNDVFAgcGFja2V0LlxcbiAgKi9cXG4tdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsXFxuLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKmVwX2tleSwgZ2ZwX3QgZ2ZwKVxcbitpbnQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsXFxuK1xcdFxcdFxcdCAgICAgc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqZXBfa2V5LCBnZnBfdCBnZnApXFxuIHtcXG4gXFx0c3RydWN0IHNjdHBfYXV0aF9ieXRlcyAqYXNvY19rZXk7XFxuIFxcdF9fdTE2IGtleV9pZCwgaG1hY19pZDtcXG5AQCAtNjM2LDcgKzYzNiw3IEBAIHZvaWQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbiBcXHRcXHQvKiBlcF9rZXkgY2FuJ3QgYmUgTlVMTCBoZXJlICovXFxuIFxcdFxcdGFzb2Nfa2V5ID0gc2N0cF9hdXRoX2Fzb2NfY3JlYXRlX3NlY3JldChhc29jLCBlcF9rZXksIGdmcCk7XFxuIFxcdFxcdGlmICghYXNvY19rZXkpXFxuLVxcdFxcdFxcdHJldHVybjtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRcXHRmcmVlX2tleSA9IDE7XFxuIFxcdH1cXG5AQCAtNjU0LDYgKzY1NCw4IEBAIHZvaWQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbiBcXG4gXFx0aWYgKGZyZWVfa2V5KVxcbiBcXHRcXHRzY3RwX2F1dGhfa2V5X3B1dChhc29jX2tleSk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gLyogQVBJIEhlbHBlcnMgKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvb3V0cHV0LmMgYi9uZXQvc2N0cC9vdXRwdXQuY1xcbmluZGV4IDIzZTk2MzA1Y2FkN2MuLjNkN2VhZDlkNDBlMTkgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjdHAvb3V0cHV0LmNcXG4rKysgYi9uZXQvc2N0cC9vdXRwdXQuY1xcbkBAIC01MTcsOCArNTE3LDE0IEBAIHN0YXRpYyBpbnQgc2N0cF9wYWNrZXRfcGFjayhzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBhY2tldCxcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0aWYgKGF1dGgpIHtcXG4tXFx0XFx0XFx0c2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKHRwLVxcdTAwM2Vhc29jLCBuc2tiLCBhdXRoLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgcGFja2V0LVxcdTAwM2VhdXRoLVxcdTAwM2VzaGtleSwgZ2ZwKTtcXG4rXFx0XFx0XFx0aWYgKHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyh0cC1cXHUwMDNlYXNvYywgbnNrYiwgYXV0aCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBwYWNrZXQtXFx1MDAzZWF1dGgtXFx1MDAzZXNoa2V5LCBnZnApKSB7XFxuK1xcdFxcdFxcdFxcdHNjdHBfY2h1bmtfZnJlZShwYWNrZXQtXFx1MDAzZWF1dGgpO1xcbitcXHRcXHRcXHRcXHRwYWNrZXQtXFx1MDAzZWF1dGggPSBOVUxMO1xcbitcXHRcXHRcXHRcXHRpZiAoZ3NvKVxcbitcXHRcXHRcXHRcXHRcXHRrZnJlZV9za2IobnNrYik7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdC8qIGZyZWUgYXV0aCBpZiBubyBtb3JlIGNodW5rcywgb3IgYWRkIGl0IGJhY2sgKi9cXG4gXFx0XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNnBhY2tldC1cXHUwMDNlY2h1bmtfbGlzdCkpXFxuIFxcdFxcdFxcdFxcdHNjdHBfY2h1bmtfZnJlZShwYWNrZXQtXFx1MDAzZWF1dGgpO1xcbkBAIC02MTksNyArNjI1LDcgQEAgaW50IHNjdHBfcGFja2V0X3RyYW5zbWl0KHN0cnVjdCBzY3RwX3BhY2tldCAqcGFja2V0LCBnZnBfdCBnZnApXFxuIFxcbiBcXHQvKiBwYWNrIHVwIGNodW5rcyAqL1xcbiBcXHRwa3RfY291bnQgPSBzY3RwX3BhY2tldF9wYWNrKHBhY2tldCwgaGVhZCwgZ3NvLCBnZnApO1xcbi1cXHRpZiAoIXBrdF9jb3VudCkge1xcbitcXHRpZiAocGt0X2NvdW50IFxcdTAwM2M9IDApIHtcXG4gXFx0XFx0a2ZyZWVfc2tiKGhlYWQpO1xcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXFxuaW5kZXggNzA4ZmEwN2Q1ZmZmYy4uYmI4OWM5YjUyZTBiMCAxMDA2NDRcXG4tLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xcbisrKyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXFxuQEAgLTQ0NTUsOSArNDQ1NSwxMiBAQCBzdGF0aWMgZW51bSBzY3RwX2llcnJvciBzY3RwX3NmX2F1dGhlbnRpY2F0ZShcXG4gXFxuIFxcdG1lbXNldChkaWdlc3QsIDAsIHNpZ19sZW4pO1xcbiBcXG4tXFx0c2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGFzb2MsIGNodW5rLVxcdTAwM2Vza2IsXFxuLVxcdFxcdFxcdFxcdCAoc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqKWNodW5rLVxcdTAwM2VjaHVua19oZHIsXFxuLVxcdFxcdFxcdFxcdCBzaF9rZXksIEdGUF9BVE9NSUMpO1xcbitcXHRpZiAoc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGFzb2MsIGNodW5rLVxcdTAwM2Vza2IsXFxuK1xcdFxcdFxcdFxcdCAgICAgKHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKiljaHVuay1cXHUwMDNlY2h1bmtfaGRyLFxcbitcXHRcXHRcXHRcXHQgICAgIHNoX2tleSwgR0ZQX0FUT01JQykpIHtcXG4rXFx0XFx0a2ZyZWUoc2F2ZV9kaWdlc3QpO1xcbitcXHRcXHRyZXR1cm4gU0NUUF9JRVJST1JfTk9NRU07XFxuK1xcdH1cXG4gXFxuIFxcdC8qIERpc2NhcmQgdGhlIHBhY2tldCBpZiB0aGUgZGlnZXN0cyBkbyBub3QgbWF0Y2ggKi9cXG4gXFx0aWYgKGNyeXB0b19tZW1uZXEoc2F2ZV9kaWdlc3QsIGRpZ2VzdCwgc2lnX2xlbikpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MTEuNzA4NjU3MzQ0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTM0MzQyNTcyNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY1wiLFxuICAgIFwic2N0cF9wYWNrZXRfdHJhbnNtaXRcIixcbiAgICBcInNjdHBfc2ZfZWF0X2F1dGhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBTQ1RQIGF1dGhlbnRpY2F0aW9uIGNvZGUgdG8gaGFuZGxlIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzIGR1cmluZyBITUFDIGNhbGN1bGF0aW9uLiBJdCBjaGFuZ2VzIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIHRvIHJldHVybiBhbiBlcnJvciBjb2RlIGFuZCB1cGRhdGVzIGl0cyBjYWxsZXJzIChgc2N0cF9wYWNrZXRfcGFja2AgYW5kIGBzY3RwX3NmX2F1dGhlbnRpY2F0ZWApIHRvIGhhbmRsZSB0aGUgZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBTQ1RQIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgcHJvcGVyIGVycm9yIGhhbmRsaW5nIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZTI2NGZkZGMwNTUzNTJkOWJlMDM1NWRlOGQ1ZGVkN2Y0NTBkMzVlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwODowNTowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcbmluZGV4IDZmMmNkNTYyYjFkZTYuLmVlYjMyOTdmZTk3ZDMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxuKysrIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcbkBAIC04Myw5ICs4Myw5IEBAIGludCBzY3RwX2F1dGhfc2VuZF9jaWQoZW51bSBzY3RwX2NpZCBjaHVuayxcbiBcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcbiBpbnQgc2N0cF9hdXRoX3JlY3ZfY2lkKGVudW0gc2N0cF9jaWQgY2h1bmssXG4gXHRcdCAgICAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyk7XG4tdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4tXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCxcbi1cdFx0XHQgICAgICBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICplcF9rZXksIGdmcF90IGdmcCk7XG4raW50IHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbitcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsXG4rXHRcdFx0ICAgICBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICplcF9rZXksIGdmcF90IGdmcCk7XG4gdm9pZCBzY3RwX2F1dGhfc2hrZXlfcmVsZWFzZShzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICpzaF9rZXkpO1xuIHZvaWQgc2N0cF9hdXRoX3Noa2V5X2hvbGQoc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqc2hfa2V5KTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hdXRoLmMgYi9uZXQvc2N0cC9hdXRoLmNcbmluZGV4IGM5MDFkMzczYWY4MDMuLjZkZTY2ZjU2YzQxY2UgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9hdXRoLmNcbisrKyBiL25ldC9zY3RwL2F1dGguY1xuQEAgLTYxMyw5ICs2MTMsOSBAQCBpbnQgc2N0cF9hdXRoX3JlY3ZfY2lkKGVudW0gc2N0cF9jaWQgY2h1bmssIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxuICAqICAgIHplcm8gKGFzIHNob3duIGluIEZpZ3VyZSA2KSBmb2xsb3dlZCBieSBhbGwgY2h1bmtzIHRoYXQgYXJlIHBsYWNlZFxuICAqICAgIGFmdGVyIHRoZSBBVVRIIGNodW5rIGluIHRoZSBTQ1RQIHBhY2tldC5cbiAgKi9cbi12b2lkIHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbi1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoLFxuLVx0XHRcdCAgICAgIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKmVwX2tleSwgZ2ZwX3QgZ2ZwKVxuK2ludCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4rXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoLFxuK1x0XHRcdCAgICAgc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqZXBfa2V5LCBnZnBfdCBnZnApXG4ge1xuIFx0c3RydWN0IHNjdHBfYXV0aF9ieXRlcyAqYXNvY19rZXk7XG4gXHRfX3UxNiBrZXlfaWQsIGhtYWNfaWQ7XG5AQCAtNjM2LDcgKzYzNiw3IEBAIHZvaWQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuIFx0XHQvKiBlcF9rZXkgY2FuJ3QgYmUgTlVMTCBoZXJlICovXG4gXHRcdGFzb2Nfa2V5ID0gc2N0cF9hdXRoX2Fzb2NfY3JlYXRlX3NlY3JldChhc29jLCBlcF9rZXksIGdmcCk7XG4gXHRcdGlmICghYXNvY19rZXkpXG4tXHRcdFx0cmV0dXJuO1xuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0XHRmcmVlX2tleSA9IDE7XG4gXHR9XG5AQCAtNjU0LDYgKzY1NCw4IEBAIHZvaWQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuIFxuIFx0aWYgKGZyZWVfa2V5KVxuIFx0XHRzY3RwX2F1dGhfa2V5X3B1dChhc29jX2tleSk7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gLyogQVBJIEhlbHBlcnMgKi9cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9vdXRwdXQuYyBiL25ldC9zY3RwL291dHB1dC5jXG5pbmRleCAyM2U5NjMwNWNhZDdjLi4zZDdlYWQ5ZDQwZTE5IDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvb3V0cHV0LmNcbisrKyBiL25ldC9zY3RwL291dHB1dC5jXG5AQCAtNTE3LDggKzUxNywxNCBAQCBzdGF0aWMgaW50IHNjdHBfcGFja2V0X3BhY2soc3RydWN0IHNjdHBfcGFja2V0ICpwYWNrZXQsXG4gXHRcdH1cbiBcbiBcdFx0aWYgKGF1dGgpIHtcbi1cdFx0XHRzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWModHAtXHUwMDNlYXNvYywgbnNrYiwgYXV0aCxcbi1cdFx0XHRcdFx0XHQgcGFja2V0LVx1MDAzZWF1dGgtXHUwMDNlc2hrZXksIGdmcCk7XG4rXHRcdFx0aWYgKHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyh0cC1cdTAwM2Vhc29jLCBuc2tiLCBhdXRoLFxuK1x0XHRcdFx0XHRcdCAgICAgcGFja2V0LVx1MDAzZWF1dGgtXHUwMDNlc2hrZXksIGdmcCkpIHtcbitcdFx0XHRcdHNjdHBfY2h1bmtfZnJlZShwYWNrZXQtXHUwMDNlYXV0aCk7XG4rXHRcdFx0XHRwYWNrZXQtXHUwMDNlYXV0aCA9IE5VTEw7XG4rXHRcdFx0XHRpZiAoZ3NvKVxuK1x0XHRcdFx0XHRrZnJlZV9za2IobnNrYik7XG4rXHRcdFx0XHRyZXR1cm4gLUVOT01FTTtcbitcdFx0XHR9XG4gXHRcdFx0LyogZnJlZSBhdXRoIGlmIG5vIG1vcmUgY2h1bmtzLCBvciBhZGQgaXQgYmFjayAqL1xuIFx0XHRcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnBhY2tldC1cdTAwM2VjaHVua19saXN0KSlcbiBcdFx0XHRcdHNjdHBfY2h1bmtfZnJlZShwYWNrZXQtXHUwMDNlYXV0aCk7XG5AQCAtNjE5LDcgKzYyNSw3IEBAIGludCBzY3RwX3BhY2tldF90cmFuc21pdChzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBhY2tldCwgZ2ZwX3QgZ2ZwKVxuIFxuIFx0LyogcGFjayB1cCBjaHVua3MgKi9cbiBcdHBrdF9jb3VudCA9IHNjdHBfcGFja2V0X3BhY2socGFja2V0LCBoZWFkLCBnc28sIGdmcCk7XG4tXHRpZiAoIXBrdF9jb3VudCkge1xuK1x0aWYgKHBrdF9jb3VudCBcdTAwM2M9IDApIHtcbiBcdFx0a2ZyZWVfc2tiKGhlYWQpO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5pbmRleCA3MDhmYTA3ZDVmZmZjLi5iYjg5YzliNTJlMGIwIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbisrKyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5AQCAtNDQ1NSw5ICs0NDU1LDEyIEBAIHN0YXRpYyBlbnVtIHNjdHBfaWVycm9yIHNjdHBfc2ZfYXV0aGVudGljYXRlKFxuIFxuIFx0bWVtc2V0KGRpZ2VzdCwgMCwgc2lnX2xlbik7XG4gXG4tXHRzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoYXNvYywgY2h1bmstXHUwMDNlc2tiLFxuLVx0XHRcdFx0IChzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICopY2h1bmstXHUwMDNlY2h1bmtfaGRyLFxuLVx0XHRcdFx0IHNoX2tleSwgR0ZQX0FUT01JQyk7XG4rXHRpZiAoc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGFzb2MsIGNodW5rLVx1MDAzZXNrYixcbitcdFx0XHRcdCAgICAgKHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKiljaHVuay1cdTAwM2VjaHVua19oZHIsXG4rXHRcdFx0XHQgICAgIHNoX2tleSwgR0ZQX0FUT01JQykpIHtcbitcdFx0a2ZyZWUoc2F2ZV9kaWdlc3QpO1xuK1x0XHRyZXR1cm4gU0NUUF9JRVJST1JfTk9NRU07XG4rXHR9XG4gXG4gXHQvKiBEaXNjYXJkIHRoZSBwYWNrZXQgaWYgdGhlIGRpZ2VzdHMgZG8gbm90IG1hdGNoICovXG4gXHRpZiAoY3J5cHRvX21lbW5lcShzYXZlX2RpZ2VzdCwgZGlnZXN0LCBzaWdfbGVuKSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MTEuNzA4NjU5NDY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI0NDk4NDcyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNDVFAgQXV0aGVudGljYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIG1lc3Npbmcgd2l0aCB0aGUgU0NUUCBhdXRoZW50aWNhdGlvbiBjb2RlLiBUaGUga2V5IGNoYW5nZSBzZWVtcyB0byBiZSBpbiBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYC4gSXQncyBnb2luZyBmcm9tIGB2b2lkYCB0byByZXR1cm5pbmcgYW4gYGludGAuIFRoYXQncyBhIGZ1bmRhbWVudGFsIHNoaWZ0IGluIGhvdyBpdCBiZWhhdmVzLCBjbGVhcmx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgcmV0dXJuIHZhbHVlLiBJIHNlZSB0aGF0IGBzY3RwX3BhY2tldF9wYWNrYCBhbmQgYHNjdHBfc2ZfYXV0aGVudGljYXRlYCBhcmUgaGFuZGxpbmcgdGhpcyBuZXcgcmV0dXJuIHZhbHVlLCBzbyB0aG9zZSBhcmUga2V5IGFyZWFzIG9mIGZvY3VzLlxuXG5SaWdodCwgdGltZSB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBuYWlsIGRvd24gdGhlIHJlbGV2YW50IHN5bWJvbHMgYW5kIGFueSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyB0byBiZSBhYmxlIHRvIGZ1bGx5IGFzc2VzcyB0aGlzIGNoYW5nZS4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgYmFzaWNzOyBTQ1RQIGl0c2VsZi4gSSBrbm93IHRoYXQgYENPTkZJR19JUF9TQ1RQYCBpcyB0aGUgYmlnIG9uZSwgdGhlIG1hc3RlciBzd2l0Y2gsIHNvIHRvIHNwZWFrLiBMZXQncyBkbyBhIHF1aWNrIGdyZXAgZm9yIGBJUF9TQ1RQYCBpbiB0aGUgYG5ldC9zY3RwL0tjb25maWdgIGZpbGUgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBhbGwgdGhlIGNvbmZpZ3VyYWJsZSBhc3BlY3RzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgYmFzZSB0byB3b3JrIGZyb20uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwODowNToxNi45NTM2NDYxMjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQwNzAzNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NDVFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9LY29uZmlnLTUtXFxubmV0L3NjdHAvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBfU0NUUFxcbm5ldC9zY3RwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA4OjA1OjE3LjAyNzcyMTczNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MDc0NjAzNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIFNDVFAgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBTQ1RQLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSwgYG5ldC9zY3RwL0tjb25maWdgLiBUaGlzIGlzIHRoZSBzdGFuZGFyZCBwbGFjZSB3aGVyZSBrZXJuZWwgbW9kdWxlcyBhbmQgZmVhdHVyZXMgZGVmaW5lIHRoZWlyIGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb21wb25lbnRzLiBJIHdhbnQgdG8gc2VlIHdoaWNoIG90aGVyIG9wdGlvbnMsIGZlYXR1cmVzLCBvciBsaWJyYXJpZXMgbmVlZCB0byBiZSBlbmFibGVkIG9yIGNvbmZpZ3VyZWQgZm9yIFNDVFAgdG8gd29yayBjb3JyZWN0bHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFueSBjb25mbGljdHMsIHRvby4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGZpZ3VyaW5nIG91dCBob3cgU0NUUCBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAxNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA4OjA1OjE5LjczNTE4NDk2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjdHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBTQ1RQIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudWNvbmZpZyBJUF9TQ1RQXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gICA5OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX1NIQTFcXG4gIDEwOlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX1NIQTI1NlxcbiAgMTE6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfVVRJTFNcXG4gIDEyOlxcdFxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuICAxMzpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgU3RyZWFtIENvbnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgRnJvbSBSRkMgMjk2MCBcXHUwMDNjaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjk2MC50eHRcXHUwMDNlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRcXHQgIFxcXCJTQ1RQIGlzIGEgcmVsaWFibGUgdHJhbnNwb3J0IHByb3RvY29sIG9wZXJhdGluZyBvbiB0b3Agb2YgYVxcbiAgMjA6XFx0XFx0ICBjb25uZWN0aW9ubGVzcyBwYWNrZXQgbmV0d29yayBzdWNoIGFzIElQLiAgSXQgb2ZmZXJzIHRoZSBmb2xsb3dpbmdcXG4gIDIxOlxcdFxcdCAgc2VydmljZXMgdG8gaXRzIHVzZXJzOlxcbiAgMjI6XFx0XFxuICAyMzpcXHRcXHQgIC0tIGFja25vd2xlZGdlZCBlcnJvci1mcmVlIG5vbi1kdXBsaWNhdGVkIHRyYW5zZmVyIG9mIHVzZXIgZGF0YSxcXG4gIDI0OlxcdFxcdCAgLS0gZGF0YSBmcmFnbWVudGF0aW9uIHRvIGNvbmZvcm0gdG8gZGlzY292ZXJlZCBwYXRoIE1UVSBzaXplLFxcbiAgMjU6XFx0XFx0ICAtLSBzZXF1ZW5jZWQgZGVsaXZlcnkgb2YgdXNlciBtZXNzYWdlcyB3aXRoaW4gbXVsdGlwbGUgc3RyZWFtcyxcXG4gIDI2OlxcdFxcdCAgd2l0aCBhbiBvcHRpb24gZm9yIG9yZGVyLW9mLWFycml2YWwgZGVsaXZlcnkgb2YgaW5kaXZpZHVhbCB1c2VyXFxuICAyNzpcXHRcXHQgIG1lc3NhZ2VzLFxcbiAgMjg6XFx0XFx0ICAtLSBvcHRpb25hbCBidW5kbGluZyBvZiBtdWx0aXBsZSB1c2VyIG1lc3NhZ2VzIGludG8gYSBzaW5nbGUgU0NUUFxcbiAgMjk6XFx0XFx0ICBwYWNrZXQsIGFuZFxcbiAgMzA6XFx0XFx0ICAtLSBuZXR3b3JrLWxldmVsIGZhdWx0IHRvbGVyYW5jZSB0aHJvdWdoIHN1cHBvcnRpbmcgb2YgbXVsdGktXFxuICAzMTpcXHRcXHQgIGhvbWluZyBhdCBlaXRoZXIgb3IgYm90aCBlbmRzIG9mIGFuIGFzc29jaWF0aW9uLlxcXCJcXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgcHJvdG9jb2wgc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuICAzNDpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY3RwLiBEZWJ1ZyBtZXNzYWdlcyBhcmUgaGFuZGxlZCBieSB0aGVcXG4gIDM1OlxcdFxcdCAga2VybmVsJ3MgZHluYW1pYyBkZWJ1Z2dpbmcgZnJhbWV3b3JrLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIElmIGluIGRvdWJ0LCBzYXkgTi5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0aWYgSVBfU0NUUFxcbiAgNDA6XFx0XFxuICA0MTpcXHRjb25maWcgU0NUUF9EQkdfT0JKQ05UXFxuICA0MjpcXHRcXHRib29sIFxcXCJTQ1RQOiBEZWJ1ZyBvYmplY3QgY291bnRzXFxcIlxcbiAgNDM6XFx0XFx0ZGVwZW5kcyBvbiBQUk9DX0ZTXFxuICA0NDpcXHRcXHRoZWxwXFxuICA0NTpcXHRcXHQgIElmIHlvdSBzYXkgWSwgdGhpcyB3aWxsIGVuYWJsZSBkZWJ1Z2dpbmcgc3VwcG9ydCBmb3IgY291bnRpbmcgdGhlXFxuICA0NjpcXHRcXHQgIHR5cGUgb2Ygb2JqZWN0cyB0aGF0IGFyZSBjdXJyZW50bHkgYWxsb2NhdGVkLiAgVGhpcyBpcyB1c2VmdWwgZm9yXFxuICA0NzpcXHRcXHQgIGlkZW50aWZ5aW5nIG1lbW9yeSBsZWFrcy4gVGhpcyBkZWJ1ZyBpbmZvcm1hdGlvbiBjYW4gYmUgdmlld2VkIGJ5XFxuICA0ODpcXHRcXHQgICdjYXQgL3Byb2MvbmV0L3NjdHAvc2N0cF9kYmdfb2JqY250J1xcbiAgNDk6XFx0XFxuICA1MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MTkuNzM1MjY2NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzEzMDAyNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFNDVFAgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb24gTW9kaWZpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgSVBfU0NUUGAgY29uZmlndXJhdGlvbiDigJMgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZC4gSSd2ZSBpZGVudGlmaWVkIGZvdXI6IGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgLCBgc2N0cF9wYWNrZXRfcGFja2AsIGBzY3RwX3BhY2tldF90cmFuc21pdGAsIGFuZCBgc2N0cF9zZl9hdXRoZW50aWNhdGVgLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHNjb3BlLiBBcmUgdGhlc2Ugc3RhdGljIG9yIG5vdD8gTGV0J3Mgc2VlLi4uIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIGlzICpub3QqIHN0YXRpYywgc28gaXQncyBsaWtlbHkgY2FsbGFibGUgZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUuIGBzY3RwX3BhY2tldF9wYWNrYCAqaXMqIHN0YXRpYywgbWVhbmluZyBpdCdzIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgdHJhbnNsYXRpb24gdW5pdC4gTGlrZXdpc2UsIGBzY3RwX3BhY2tldF90cmFuc21pdGAgaXMgbm90IHN0YXRpYy4gYHNjdHBfc2ZfYXV0aGVudGljYXRlYCBpcyBzdGF0aWMuXG5cbkdpdmVuIHRoYXQgZGlzdGluY3Rpb24sIEkgd2lsbCBub3cgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGBzY3RwX3BhY2tldF9wYWNrYCBhbmQgYHNjdHBfc2ZfYXV0aGVudGljYXRlYCBzaW5jZSB0aGV5IGFyZSBzdGF0aWMuIEkgbmVlZCB0byBkZWx2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGFyZSBiZWluZyB1c2VkIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4OTMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwODowNToyNC4wMDY1Njg5ODRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NjQyMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfcGFja2V0X3BhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvb3V0cHV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvb3V0cHV0LmM9NDIwPXN0YXRpYyB2b2lkIHNjdHBfcGFja2V0X2dzb19hcHBlbmQoc3RydWN0IHNrX2J1ZmYgKmhlYWQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvc2N0cC9vdXRwdXQuYy00MzUtXFxubmV0L3NjdHAvb3V0cHV0LmM6NDM2OnN0YXRpYyBpbnQgc2N0cF9wYWNrZXRfcGFjayhzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBhY2tldCxcXG5uZXQvc2N0cC9vdXRwdXQuYy00MzctXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpoZWFkLCBpbnQgZ3NvLCBnZnBfdCBnZnApXFxuLS1cXG5uZXQvc2N0cC9vdXRwdXQuYz01NzU9aW50IHNjdHBfcGFja2V0X3RyYW5zbWl0KHN0cnVjdCBzY3RwX3BhY2tldCAqcGFja2V0LCBnZnBfdCBnZnApXFxuLS1cXG5uZXQvc2N0cC9vdXRwdXQuYy02MjYtXFx0LyogcGFjayB1cCBjaHVua3MgKi9cXG5uZXQvc2N0cC9vdXRwdXQuYzo2Mjc6XFx0cGt0X2NvdW50ID0gc2N0cF9wYWNrZXRfcGFjayhwYWNrZXQsIGhlYWQsIGdzbywgZ2ZwKTtcXG5uZXQvc2N0cC9vdXRwdXQuYy02MjgtXFx0aWYgKHBrdF9jb3VudCBcXHUwMDNjPSAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA4OjA1OjI0LjEyNDIxNTcwNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyMjU0NTM1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqQW5hbHl6aW5nIFNDVFAgUGFja2V0IEhhbmRsaW5nIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIFNDVFAgcGFja2V0IGZ1bmN0aW9ucyBhbmQgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHNjb3BlIGFuZCBob3cgdGhleSdyZSB1c2VkLiBGaXJzdCwgYHNjdHBfcGFja2V0X3BhY2tgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgaW50ZXJuYWwgdG8gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgbGlrZWx5IG9ubHkgdXNlZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBtb2R1bGUuIFRoaXMgaXMgdXNlZnVsOyBpdCBtZWFucyBJIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIG9yIGRpcmVjdCBjYWxscyBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIEkgY2FuIGZvY3VzIG9uIGl0cyBsb2NhbCBpbnRlcmFjdGlvbnMuXG5cblRoZW4gdGhlcmUncyBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgLiBUaGlzIG9uZSBpcyBleHBvcnRlZCwgd2hpY2ggbWVhbnMgaXQncyBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRoZSBleHRlcm5hbCBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBtb2R1bGVzLiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VseSBhIGNyaXRpY2FsIHBvaW50IGZvciB0aGUgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRod2F5LCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBpbnRlcmZhY2UgYW5kIGhvdyBpdCdzIGNhbGxlZCBpcyBpbXBvcnRhbnQuXG5cbkZpbmFsbHksIGBzY3RwX3NmX2F1dGhlbnRpY2F0ZWAgaXMgc3RhdGljIGFzIHdlbGwuIEknbGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbHMgdG8gc2VlIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoaXMgbW9kdWxlLCBhbmQgaG93IGF1dGhlbnRpY2F0aW9uIGlzIGltcGxlbWVudGVkLiBXaGVyZSBpdCBpcyBjYWxsZWQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MTgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwODowNTozMC4zNDk2NzA4MjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MTkwNzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfc2ZfYXV0aGVudGljYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTE0Mj1zdGF0aWMgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfdmlvbGF0aW9uX2NodW5rKFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMTQ5LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjE1MDpzdGF0aWMgZW51bSBzY3RwX2llcnJvciBzY3RwX3NmX2F1dGhlbnRpY2F0ZShcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xNTEtXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz02NDA9c3RhdGljIGJvb2wgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzY3RwX2NodW5rICpjaHVuayxcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTY2OC1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo2Njk6XFx0cmV0dXJuIHNjdHBfc2ZfYXV0aGVudGljYXRlKGFzb2MsIFxcdTAwMjZhdXRoKSA9PSBTQ1RQX0lFUlJPUl9OT19FUlJPUjtcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy02NzAtfVxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NDMxMz1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9lYXRfZndkX3Rzbl9mYXN0KFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDQwMC0gKi9cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo0NDAxOnN0YXRpYyBlbnVtIHNjdHBfaWVycm9yIHNjdHBfc2ZfYXV0aGVudGljYXRlKFxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQ0MDItXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz00NDc5PWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2VhdF9hdXRoKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQ1MDUtXFx0YXV0aF9oZHIgPSAoc3RydWN0IHNjdHBfYXV0aGhkciAqKWNodW5rLVxcdTAwM2Vza2ItXFx1MDAzZWRhdGE7XFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NDUwNjpcXHRlcnJvciA9IHNjdHBfc2ZfYXV0aGVudGljYXRlKGFzb2MsIGNodW5rKTtcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy00NTA3LVxcdHN3aXRjaCAoZXJyb3IpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MzAuNDI3ODY3MjU1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTIzNzA0MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OlxuXG4qKkRpdmluZyBpbnRvIFNDVFAgQXV0aGVudGljYXRpb24gSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBTQ1RQIGF1dGhlbnRpY2F0aW9uIGZ1bmN0aW9ucy4gSW50ZXJlc3RpbmcuIGBzY3RwX3NmX2VhdF9hdXRoYCBpcyBkZWZpbmVkIGFzIG5vbi1zdGF0aWMsIHdoaWNoIG1lYW5zIGl0IGhhcyBleHRlcm5hbCBsaW5rYWdlLiBJdCBjYW4gYmUgY2FsbGVkIGZyb20gb3RoZXIgY29tcGlsYXRpb24gdW5pdHMgd2l0aGluIHRoZSBwcm9qZWN0IG9yIGxpbmtlZCBiaW5hcmllcy4gVGhhdOKAmXMgcHJvYmFibHkgYSBrZXkgZnVuY3Rpb24gZm9yIGludGVyYWN0aW5nIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gT24gdGhlIG90aGVyIGhhbmQsIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBpcyBzdGF0aWMuIFRoYXQgbWVhbnMgaXTigJlzIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgdHJhbnNsYXRpb24gdW5pdCwgcHJlc3VtYWJseSBhIGhlbHBlciBmdW5jdGlvbiwgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiB0aGUgYXV0aGVudGljYXRpb24gY2h1bmsgdmVyaWZpY2F0aW9uIGxvZ2ljLlxuXG5Ob3csIEkgbmVlZCB0byBzZWUgKmhvdyogdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkLiBMZXQgbWUgY2hlY2sgdGhlIGNvZGUgd2hlcmUgYHNjdHBfc2ZfZWF0X2F1dGhgIGFuZCBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgIGFyZSB1c2VkLCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGZpdCB0b2dldGhlciBpbiB0aGUgYXV0aGVudGljYXRpb24gcHJvY2Vzc2luZyBhbmQgdHJhbnNtaXNzaW9uIHdvcmtmbG93LiBJIHN1c3BlY3QgYHNjdHBfcGFja2V0X3RyYW5zbWl0YCBtaWdodCBiZSBwYXNzaW5nIHRoZSBuZWNlc3NhcnkgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gb3IgdXNpbmcgdGhlIHJlc3VsdHMgb2YgYHNjdHBfc2ZfZWF0X2F1dGhgLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxscyB0byB0aGVzZSBmdW5jdGlvbnMsIGFuZCBob3cgdGhleSBpbnRlcmFjdCwgd2lsbCBnaXZlIG1lIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTIxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MzQuMTgwMjQyNjg3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Njc3OTY0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3NmX2VhdF9hdXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz00NDAxPXN0YXRpYyBlbnVtIHNjdHBfaWVycm9yIHNjdHBfc2ZfYXV0aGVudGljYXRlKFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDQ3OC1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo0NDc5OmVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2VhdF9hdXRoKHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy00NDgwLVxcdFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM9NDk4PXJlY29uZl9jaHVua19ldmVudF90YWJsZVtTQ1RQX05VTV9SRUNPTkZfQ0hVTktfVFlQRVNdW1NDVFBfU1RBVEVfTlVNX1NUQVRFU10gPSB7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTA3LVxcdC8qIFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCAqLyBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjUwODpcXHRUWVBFX1NDVFBfRlVOQyhzY3RwX3NmX2VhdF9hdXRoKSwgXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy01MDktXFx0LyogU0NUUF9TVEFURV9FU1RBQkxJU0hFRCAqLyBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjUxMDpcXHRUWVBFX1NDVFBfRlVOQyhzY3RwX3NmX2VhdF9hdXRoKSwgXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy01MTEtXFx0LyogU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HICovIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6NTEyOlxcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZWF0X2F1dGgpLCBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTUxMy1cXHQvKiBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQgKi8gXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYzo1MTQ6XFx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9lYXRfYXV0aCksIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTE1LVxcdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQgKi8gXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYzo1MTY6XFx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9lYXRfYXV0aCksIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTE3LVxcdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQgKi8gXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYzo1MTg6XFx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9lYXRfYXV0aCksIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTE5LX0gLyogVFlQRV9TQ1RQX0FVVEggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MzQuMjQ3MDI2MjAyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5MzY1NTAyMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgU0NUUCBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIHN0YXRlIG1hY2hpbmUgZnVuY3Rpb24sIGBzY3RwX3NmX2VhdF9hdXRoYCwgd2hpY2ggaXMgYSBrZXkgcHJvY2VzcywgYW5kIGFsc28gb24gYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AuIEkgc2hvdWxkIGFsc28ga2VlcCBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgIGluIG1pbmQgYXMgd2VsbC4gSSdtIGZvY3VzaW5nIG9uIHRoZSBzaWduaWZpY2FudCBwYXJ0cy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJdCBsb29rcyBsaWtlIGBJUF9TQ1RQYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gQWgsIHdhaXQsIHRoZXJlJ3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBoZXJlOyB0aGUgcGF0Y2ggaXMgY2hhbmdpbmcgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AgdG8gcmV0dXJuIGAtRU5PTUVNYCBpbnN0ZWFkIG9mIGB2b2lkYC4gVGhhdCdzIG5vdCBqdXN0IGEgbWlub3IgdHdlYWs7IGl0J3MgYSBzdHJ1Y3R1cmFsIGFsdGVyYXRpb24uIEEgcmV0dXJuIHZhbHVlIGlzIGEgbXVjaCBzdHJvbmdlciBzaWduYWwsIGluZGljYXRpbmcgcG90ZW50aWFsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgd2hpY2ggbXVzdCBiZSBoYW5kbGVkLlxuXG5UbyBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgZGV0YWlscywgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYCBpbiBgbmV0L3NjdHAvYXV0aC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSB0aG9yb3VnaGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTE4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA4OjA1OjQ0LjE4MzU4MDk1MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg3NDI4ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL2F1dGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9hdXRoLmM9NTk1PWludCBzY3RwX2F1dGhfcmVjdl9jaWQoZW51bSBzY3RwX2NpZCBjaHVuaywgY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXFxuLS1cXG5uZXQvc2N0cC9hdXRoLmMtNjE1LSAqL1xcbm5ldC9zY3RwL2F1dGguYzo2MTY6aW50IHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcXG5uZXQvc2N0cC9hdXRoLmMtNjE3LVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6NDQuMjQyMzI5NDk2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1ODk1ODk0MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgRnVuY3Rpb25hbCBQYXRjaCoqXG5cbk9rYXksIHRoaXMgcGF0Y2ggc2VlbXMgc29saWQsIGl0J3MgZGVmaW5pdGVseSBmdW5jdGlvbmFsIGFuZCBkZXNlcnZlcyBhIGdvb2QgZnV6emluZyBjYW1wYWlnbi4gSSdtIHRoaW5raW5nIHdlIHNob3VsZCB6ZXJvIGluIG9uIGEgZmV3IGtleSBzeW1ib2xzIHRvIGd1aWRlIHRoYXQgcHJvY2VzczogYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AsIGBzY3RwX3BhY2tldF90cmFuc21pdGAsIGFuZCBgc2N0cF9zZl9lYXRfYXV0aGAuIFRoZXNlIGxvb2sgbGlrZSBwcmltZSB0YXJnZXRzIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBMZXQncyBzZWUgaWYgdGhlIGZpcnN0IG9uZSwgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AsIGlzIGV4cG9ydGVkIHByb3Blcmx5OyBpdCB3b3VsZCBiZSBwcmV0dHkgdXNlbGVzcyBpZiBpdCdzIG5vdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODExNywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA4OjA1OjUzLjgzMTkyMTE5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA2Nzg0MjIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKnNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA4OjA1OjUzLjk0MjYwNTY5MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDI3ODQ5MDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqRXhhbWluaW5nIFNDVFAgRnVuY3Rpb24gVmlzaWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIFNDVFAgZnVuY3Rpb25zLiBUaGUgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IHdoaWxlIGl0J3Mgbm90IGV4cG9ydGVkIChtZWFuaW5nIGl0J3Mgbm90IHBhcnQgb2YgdGhlIGV4dGVybmFsIEFQSSwgbGlrZWx5KSwgaXQgaXMgKm5vdCogZGVjbGFyZWQgYXMgYHN0YXRpY2AuICBTcGVjaWZpY2FsbHksIEknbSBub3RpbmcgdGhhdCBgc2N0cF9zZl9lYXRfYXV0aGAgaXMgbm9uLXN0YXRpYywgYW5kIGFsc28gYHNjdHBfcGFja2V0X3RyYW5zbWl0YCBpcyBub24tc3RhdGljLiBUaGlzIGNvdWxkIGJlIHJlbGV2YW50IGZvciBsYXRlciBtb2RpZmljYXRpb25zIG9yIGFuYWx5c2lzLlxuXG5Ob3csIG15IGZvY3VzIHNoaWZ0cyB0byBpZGVudGlmeWluZyAqb3RoZXIqIGZ1bmN0aW9ucyBhbmQgdGhlaXIgdmlzaWJpbGl0eS4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJJ20gY2hlY2tpbmcgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgYXV0aGVudGljYXRpb24gbG9naWMuXG5cbkhtbSwgYHNjdHBfYXV0aF9jaHVua192ZXJpZnlgICppcyogc3RhdGljLiBUaGF0J3MgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIGZ1bmN0aW9uIEkgaGF2ZSBpbiBtaW5kLiBXYWl0IGEgbW9tZW50LCBJIG1pc3JlYWQgc29tZXRoaW5nLiBJdCBsb29rcyBsaWtlIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBpcyAqY2FsbGVkKiBieSBgc2N0cF9zZl9hdXRoZW50aWNhdGVgLiBJdCBpc24ndCB0aGUgb3RoZXIgd2F5IGFyb3VuZC4gT2theSwgSSB3YXMgbW9tZW50YXJpbHkgY29uZnVzZWQgdGhlcmUuIFRvIGJlIHN1cmUgYWJvdXQgdGhlIGNhbGxpbmcgc3RydWN0dXJlLCBsZXQgbWUgdmVyaWZ5IHdoZXJlIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBpcyBhY3R1YWxseSBjYWxsZWQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM3MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwODowNTo1OC4zNzA0NTc5NDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMDg0MTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfYXV0aF9jaHVua192ZXJpZnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTUyMT1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFDX2FjayhzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy02MzktXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NjQwOnN0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua192ZXJpZnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNjQxLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NzAzPWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMURfY2Uoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtODI4LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjgyOTpcXHRpZiAoIXNjdHBfYXV0aF9jaHVua192ZXJpZnkobmV0LCBjaHVuaywgbmV3X2Fzb2MpKSB7XFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtODMwLVxcdFxcdHNjdHBfYXNzb2NpYXRpb25fZnJlZShuZXdfYXNvYyk7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0xODgyPXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2EoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xOTA2LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjE5MDc6XFx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIG5ld19hc29jKSlcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xOTA4LVxcdFxcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0RJU0NBUkQ7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0yMDA1PXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2IoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMDI2LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIwMjc6XFx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIG5ld19hc29jKSlcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMDI4LVxcdFxcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0RJU0NBUkQ7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0yMTEyPXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2QoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMTI5LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIxMzA6XFx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIGFzb2MpKVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIxMzEtXFx0XFx0cmV0dXJuIFNDVFBfRElTUE9TSVRJT05fRElTQ0FSRDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6NTguNDQzNTUwMDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU1MjM4MjU4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBTQ1RQIEF1dGhlbnRpY2F0aW9uIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgc2N0cF9zZl9hdXRoZW50aWNhdGVgIGdldHMgaW52b2tlZCBieSBib3RoIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBhbmQgYHNjdHBfc2ZfZWF0X2F1dGhgLCBidXQgdGhlIHJlYWwgd29ya2hvcnNlIGZvciBBVVRIIGNodW5rIHByb2Nlc3Npbmcgc2VlbXMgdG8gYmUgYHNjdHBfc2ZfZWF0X2F1dGhgLiBOb3csIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIGlzIGNydWNpYWwgYXMgd2VsbCwgZ2V0dGluZyBjYWxsZWQgZnJvbSBib3RoIGBzY3RwX3BhY2tldF9wYWNrYCAqYW5kKiBgc2N0cF9zZl9hdXRoZW50aWNhdGVgLiBUaGlzIGdpdmVzIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBmdW5jdGlvbiBjYWxscyBhbmQgdGhlIGRhdGEgZmxvdy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgY3J1Y2lhbCBjb25maWcgaXMgYElQX1NDVFBgLCB3aGljaCBpcyBhcyBleHBlY3RlZC4gYElQX1NDVFBgIGRlcGVuZHMgb24gYElORVRgLCB3aGljaCBpcyBwcmFjdGljYWxseSBhIGdpdmVuLiBUaGVyZWZvcmUsIGBJUF9TQ1RQYCBpcyBzdWZmaWNpZW50IGZvciBlbmFibGVtZW50LlxuXG5Ob3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJIG5lZWQgdG8gY29uZmlybSB0aGVzZSBjcml0aWNhbCBmdW5jdGlvbnMgYXJlIGV4dGVybmFsbHkgdmlzaWJsZSwgdGhhdCB0aGV5J3JlIG5vdCBkZWNsYXJlZCBzdGF0aWMuIExldCdzIHNlZS4uLiB5ZXAsIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIGlzIG5vbi1zdGF0aWMsIGp1c3QgbGlrZSBJIGV4cGVjdC4gU2ltaWxhcmx5LCBib3RoIGBzY3RwX3BhY2tldF90cmFuc21pdGAgYW5kIGBzY3RwX3NmX2VhdF9hdXRoYCBhcmUgbm9uLXN0YXRpYyBhcyB3ZWxsLiBUaGF0IGNvbmZpcm1zIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcHJvcGVybHkgZXhwb3NlZCBhbmQgY2FuIGJlIGNhbGxlZCBmcm9tIG90aGVyIG1vZHVsZXMgb3IgbGF5ZXJzLlxuXG5BbHJpZ2h0LCB0aGF0IGNvdmVycyBldmVyeXRoaW5nLiBUaW1lIHRvIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTQ4LCJPdXRwdXRUb2tlbnMiOjE2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwODowNjowNC45OTU5MzU1NDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY5NzU3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNcIixcbiAgICBcInNjdHBfcGFja2V0X3RyYW5zbWl0XCIsXG4gICAgXCJzY3RwX3NmX2VhdF9hdXRoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgU0NUUCBhdXRoZW50aWNhdGlvbiBjb2RlIHRvIGhhbmRsZSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyBkdXJpbmcgSE1BQyBjYWxjdWxhdGlvbi4gSXQgY2hhbmdlcyBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYCB0byByZXR1cm4gYW4gZXJyb3IgY29kZSBhbmQgdXBkYXRlcyBpdHMgY2FsbGVycyAoYHNjdHBfcGFja2V0X3BhY2tgIGFuZCBgc2N0cF9zZl9hdXRoZW50aWNhdGVgKSB0byBoYW5kbGUgdGhlIGVycm9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgU0NUUCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjXCIsXG4gICAgXCJzY3RwX3BhY2tldF90cmFuc21pdFwiLFxuICAgIFwic2N0cF9zZl9lYXRfYXV0aFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgYXV0aGVudGljYXRpb24gY29kZSB0byBoYW5kbGUgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMgZHVyaW5nIEhNQUMgY2FsY3VsYXRpb24uIEl0IGNoYW5nZXMgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AgdG8gcmV0dXJuIGFuIGVycm9yIGNvZGUgYW5kIHVwZGF0ZXMgaXRzIGNhbGxlcnMgKGBzY3RwX3BhY2tldF9wYWNrYCBhbmQgYHNjdHBfc2ZfYXV0aGVudGljYXRlYCkgdG8gaGFuZGxlIHRoZSBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNDVFAgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfmxp4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 07:25:28 +0000 UTC FinishedAt: 2026-08-07 08:06:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "7303b63f-2169-473c-bb74-2e4b07b1ea16" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_auth_calculate_hmac", "sctp_packet_transmit", "sctp_sf_eat_auth" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMmIzM0OywKICAgICYjMzQ7c2N0cF9wYWNrZXRfdHJhbnNtaXQmIzM0OywKICAgICYjMzQ7c2N0cF9zZl9lYXRfYXV0aCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBTQ1RQIGF1dGhlbnRpY2F0aW9uIGNvZGUgdG8gaGFuZGxlIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzIGR1cmluZyBITUFDIGNhbGN1bGF0aW9uLiBJdCBjaGFuZ2VzIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIHRvIHJldHVybiBhbiBlcnJvciBjb2RlIGFuZCB1cGRhdGVzIGl0cyBjYWxsZXJzIChgc2N0cF9wYWNrZXRfcGFja2AgYW5kIGBzY3RwX3NmX2F1dGhlbnRpY2F0ZWApIHRvIGhhbmRsZSB0aGUgZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBTQ1RQIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgcHJvcGVyIGVycm9yIGhhbmRsaW5nIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZGUyNjRmZGRjMDU1MzUyZDliZTAzNTVkZThkNWRlZDdmNDUwZDM1ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDg6MDU6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmggYi9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxuaW5kZXggNmYyY2Q1NjJiMWRlNi4uZWViMzI5N2ZlOTdkMyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxuQEAgLTgzLDkgJiM0Mzs4Myw5IEBAIGludCBzY3RwX2F1dGhfc2VuZF9jaWQoZW51bSBzY3RwX2NpZCBjaHVuayxcbiBcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcbiBpbnQgc2N0cF9hdXRoX3JlY3ZfY2lkKGVudW0gc2N0cF9jaWQgY2h1bmssXG4gXHRcdCAgICAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyk7XG4tdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4tXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCxcbi1cdFx0XHQgICAgICBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICplcF9rZXksIGdmcF90IGdmcCk7XG4mIzQzO2ludCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4mIzQzO1x0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICplcF9rZXksIGdmcF90IGdmcCk7XG4gdm9pZCBzY3RwX2F1dGhfc2hrZXlfcmVsZWFzZShzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICpzaF9rZXkpO1xuIHZvaWQgc2N0cF9hdXRoX3Noa2V5X2hvbGQoc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqc2hfa2V5KTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hdXRoLmMgYi9uZXQvc2N0cC9hdXRoLmNcbmluZGV4IGM5MDFkMzczYWY4MDMuLjZkZTY2ZjU2YzQxY2UgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9hdXRoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL2F1dGguY1xuQEAgLTYxMyw5ICYjNDM7NjEzLDkgQEAgaW50IHNjdHBfYXV0aF9yZWN2X2NpZChlbnVtIHNjdHBfY2lkIGNodW5rLCBjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbiAgKiAgICB6ZXJvIChhcyBzaG93biBpbiBGaWd1cmUgNikgZm9sbG93ZWQgYnkgYWxsIGNodW5rcyB0aGF0IGFyZSBwbGFjZWRcbiAgKiAgICBhZnRlciB0aGUgQVVUSCBjaHVuayBpbiB0aGUgU0NUUCBwYWNrZXQuXG4gICovXG4tdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4tXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCxcbi1cdFx0XHQgICAgICBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICplcF9rZXksIGdmcF90IGdmcClcbiYjNDM7aW50IHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoLFxuJiM0MztcdFx0XHQgICAgIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKmVwX2tleSwgZ2ZwX3QgZ2ZwKVxuIHtcbiBcdHN0cnVjdCBzY3RwX2F1dGhfYnl0ZXMgKmFzb2Nfa2V5O1xuIFx0X191MTYga2V5X2lkLCBobWFjX2lkO1xuQEAgLTYzNiw3ICYjNDM7NjM2LDcgQEAgdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4gXHRcdC8qIGVwX2tleSBjYW4mIzM5O3QgYmUgTlVMTCBoZXJlICovXG4gXHRcdGFzb2Nfa2V5ID0gc2N0cF9hdXRoX2Fzb2NfY3JlYXRlX3NlY3JldChhc29jLCBlcF9rZXksIGdmcCk7XG4gXHRcdGlmICghYXNvY19rZXkpXG4tXHRcdFx0cmV0dXJuO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdFx0ZnJlZV9rZXkgPSAxO1xuIFx0fVxuQEAgLTY1NCw2ICYjNDM7NjU0LDggQEAgdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4gXG4gXHRpZiAoZnJlZV9rZXkpXG4gXHRcdHNjdHBfYXV0aF9rZXlfcHV0KGFzb2Nfa2V5KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIC8qIEFQSSBIZWxwZXJzICovXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvb3V0cHV0LmMgYi9uZXQvc2N0cC9vdXRwdXQuY1xuaW5kZXggMjNlOTYzMDVjYWQ3Yy4uM2Q3ZWFkOWQ0MGUxOSAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL291dHB1dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9vdXRwdXQuY1xuQEAgLTUxNyw4ICYjNDM7NTE3LDE0IEBAIHN0YXRpYyBpbnQgc2N0cF9wYWNrZXRfcGFjayhzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBhY2tldCxcbiBcdFx0fVxuIFxuIFx0XHRpZiAoYXV0aCkge1xuLVx0XHRcdHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyh0cC1cdTAwM2Vhc29jLCBuc2tiLCBhdXRoLFxuLVx0XHRcdFx0XHRcdCBwYWNrZXQtXHUwMDNlYXV0aC1cdTAwM2VzaGtleSwgZ2ZwKTtcbiYjNDM7XHRcdFx0aWYgKHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyh0cC1cdTAwM2Vhc29jLCBuc2tiLCBhdXRoLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIHBhY2tldC1cdTAwM2VhdXRoLVx1MDAzZXNoa2V5LCBnZnApKSB7XG4mIzQzO1x0XHRcdFx0c2N0cF9jaHVua19mcmVlKHBhY2tldC1cdTAwM2VhdXRoKTtcbiYjNDM7XHRcdFx0XHRwYWNrZXQtXHUwMDNlYXV0aCA9IE5VTEw7XG4mIzQzO1x0XHRcdFx0aWYgKGdzbylcbiYjNDM7XHRcdFx0XHRcdGtmcmVlX3NrYihuc2tiKTtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHRcdFx0fVxuIFx0XHRcdC8qIGZyZWUgYXV0aCBpZiBubyBtb3JlIGNodW5rcywgb3IgYWRkIGl0IGJhY2sgKi9cbiBcdFx0XHRpZiAobGlzdF9lbXB0eShcdTAwMjZwYWNrZXQtXHUwMDNlY2h1bmtfbGlzdCkpXG4gXHRcdFx0XHRzY3RwX2NodW5rX2ZyZWUocGFja2V0LVx1MDAzZWF1dGgpO1xuQEAgLTYxOSw3ICYjNDM7NjI1LDcgQEAgaW50IHNjdHBfcGFja2V0X3RyYW5zbWl0KHN0cnVjdCBzY3RwX3BhY2tldCAqcGFja2V0LCBnZnBfdCBnZnApXG4gXG4gXHQvKiBwYWNrIHVwIGNodW5rcyAqL1xuIFx0cGt0X2NvdW50ID0gc2N0cF9wYWNrZXRfcGFjayhwYWNrZXQsIGhlYWQsIGdzbywgZ2ZwKTtcbi1cdGlmICghcGt0X2NvdW50KSB7XG4mIzQzO1x0aWYgKHBrdF9jb3VudCBcdTAwM2M9IDApIHtcbiBcdFx0a2ZyZWVfc2tiKGhlYWQpO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5pbmRleCA3MDhmYTA3ZDVmZmZjLi5iYjg5YzliNTJlMGIwIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5AQCAtNDQ1NSw5ICYjNDM7NDQ1NSwxMiBAQCBzdGF0aWMgZW51bSBzY3RwX2llcnJvciBzY3RwX3NmX2F1dGhlbnRpY2F0ZShcbiBcbiBcdG1lbXNldChkaWdlc3QsIDAsIHNpZ19sZW4pO1xuIFxuLVx0c2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGFzb2MsIGNodW5rLVx1MDAzZXNrYixcbi1cdFx0XHRcdCAoc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqKWNodW5rLVx1MDAzZWNodW5rX2hkcixcbi1cdFx0XHRcdCBzaF9rZXksIEdGUF9BVE9NSUMpO1xuJiM0MztcdGlmIChzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoYXNvYywgY2h1bmstXHUwMDNlc2tiLFxuJiM0MztcdFx0XHRcdCAgICAgKHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKiljaHVuay1cdTAwM2VjaHVua19oZHIsXG4mIzQzO1x0XHRcdFx0ICAgICBzaF9rZXksIEdGUF9BVE9NSUMpKSB7XG4mIzQzO1x0XHRrZnJlZShzYXZlX2RpZ2VzdCk7XG4mIzQzO1x0XHRyZXR1cm4gU0NUUF9JRVJST1JfTk9NRU07XG4mIzQzO1x0fVxuIFxuIFx0LyogRGlzY2FyZCB0aGUgcGFja2V0IGlmIHRoZSBkaWdlc3RzIGRvIG5vdCBtYXRjaCAqL1xuIFx0aWYgKGNyeXB0b19tZW1uZXEoc2F2ZV9kaWdlc3QsIGRpZ2VzdCwgc2lnX2xlbikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwODowNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyYjMzQ7LAogICAgJiMzNDtzY3RwX3BhY2tldF90cmFuc21pdCYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2VhdF9hdXRoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgYXV0aGVudGljYXRpb24gY29kZSB0byBoYW5kbGUgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMgZHVyaW5nIEhNQUMgY2FsY3VsYXRpb24uIEl0IGNoYW5nZXMgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AgdG8gcmV0dXJuIGFuIGVycm9yIGNvZGUgYW5kIHVwZGF0ZXMgaXRzIGNhbGxlcnMgKGBzY3RwX3BhY2tldF9wYWNrYCBhbmQgYHNjdHBfc2ZfYXV0aGVudGljYXRlYCkgdG8gaGFuZGxlIHRoZSBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNDVFAgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZTI2NGZkZGMwNTUzNTJkOWJlMDM1NWRlOGQ1ZGVkN2Y0NTBkMzVlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAwODowNTowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmgKaW5kZXggNmYyY2Q1NjJiMWRlNi4uZWViMzI5N2ZlOTdkMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmgKQEAgLTgzLDkgJiM0Mzs4Myw5IEBAIGludCBzY3RwX2F1dGhfc2VuZF9jaWQoZW51bSBzY3RwX2NpZCBjaHVuaywKIAkJICAgICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTsKIGludCBzY3RwX2F1dGhfcmVjdl9jaWQoZW51bSBzY3RwX2NpZCBjaHVuaywKIAkJICAgICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTsKLXZvaWQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAotCQkJICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCwKLQkJCSAgICAgIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKmVwX2tleSwgZ2ZwX3QgZ2ZwKTsKJiM0MztpbnQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAomIzQzOwkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCwKJiM0MzsJCQkgICAgIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKmVwX2tleSwgZ2ZwX3QgZ2ZwKTsKIHZvaWQgc2N0cF9hdXRoX3Noa2V5X3JlbGVhc2Uoc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqc2hfa2V5KTsKIHZvaWQgc2N0cF9hdXRoX3Noa2V5X2hvbGQoc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqc2hfa2V5KTsKIApkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXV0aC5jIGIvbmV0L3NjdHAvYXV0aC5jCmluZGV4IGM5MDFkMzczYWY4MDMuLjZkZTY2ZjU2YzQxY2UgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2F1dGguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hdXRoLmMKQEAgLTYxMyw5ICYjNDM7NjEzLDkgQEAgaW50IHNjdHBfYXV0aF9yZWN2X2NpZChlbnVtIHNjdHBfY2lkIGNodW5rLCBjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYykKICAqICAgIHplcm8gKGFzIHNob3duIGluIEZpZ3VyZSA2KSBmb2xsb3dlZCBieSBhbGwgY2h1bmtzIHRoYXQgYXJlIHBsYWNlZAogICogICAgYWZ0ZXIgdGhlIEFVVEggY2h1bmsgaW4gdGhlIFNDVFAgcGFja2V0LgogICovCi12b2lkIHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKLQkJCSAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsCi0JCQkgICAgICBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICplcF9rZXksIGdmcF90IGdmcCkKJiM0MztpbnQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAomIzQzOwkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCwKJiM0MzsJCQkgICAgIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKmVwX2tleSwgZ2ZwX3QgZ2ZwKQogewogCXN0cnVjdCBzY3RwX2F1dGhfYnl0ZXMgKmFzb2Nfa2V5OwogCV9fdTE2IGtleV9pZCwgaG1hY19pZDsKQEAgLTYzNiw3ICYjNDM7NjM2LDcgQEAgdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCS8qIGVwX2tleSBjYW4mIzM5O3QgYmUgTlVMTCBoZXJlICovCiAJCWFzb2Nfa2V5ID0gc2N0cF9hdXRoX2Fzb2NfY3JlYXRlX3NlY3JldChhc29jLCBlcF9rZXksIGdmcCk7CiAJCWlmICghYXNvY19rZXkpCi0JCQlyZXR1cm47CiYjNDM7CQkJcmV0dXJuIC1FTk9NRU07CiAKIAkJZnJlZV9rZXkgPSAxOwogCX0KQEAgLTY1NCw2ICYjNDM7NjU0LDggQEAgdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAKIAlpZiAoZnJlZV9rZXkpCiAJCXNjdHBfYXV0aF9rZXlfcHV0KGFzb2Nfa2V5KTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIC8qIEFQSSBIZWxwZXJzICovCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9vdXRwdXQuYyBiL25ldC9zY3RwL291dHB1dC5jCmluZGV4IDIzZTk2MzA1Y2FkN2MuLjNkN2VhZDlkNDBlMTkgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL291dHB1dC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL291dHB1dC5jCkBAIC01MTcsOCAmIzQzOzUxNywxNCBAQCBzdGF0aWMgaW50IHNjdHBfcGFja2V0X3BhY2soc3RydWN0IHNjdHBfcGFja2V0ICpwYWNrZXQsCiAJCX0KIAogCQlpZiAoYXV0aCkgewotCQkJc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKHRwLSZndDthc29jLCBuc2tiLCBhdXRoLAotCQkJCQkJIHBhY2tldC0mZ3Q7YXV0aC0mZ3Q7c2hrZXksIGdmcCk7CiYjNDM7CQkJaWYgKHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyh0cC0mZ3Q7YXNvYywgbnNrYiwgYXV0aCwKJiM0MzsJCQkJCQkgICAgIHBhY2tldC0mZ3Q7YXV0aC0mZ3Q7c2hrZXksIGdmcCkpIHsKJiM0MzsJCQkJc2N0cF9jaHVua19mcmVlKHBhY2tldC0mZ3Q7YXV0aCk7CiYjNDM7CQkJCXBhY2tldC0mZ3Q7YXV0aCA9IE5VTEw7CiYjNDM7CQkJCWlmIChnc28pCiYjNDM7CQkJCQlrZnJlZV9za2IobnNrYik7CiYjNDM7CQkJCXJldHVybiAtRU5PTUVNOwomIzQzOwkJCX0KIAkJCS8qIGZyZWUgYXV0aCBpZiBubyBtb3JlIGNodW5rcywgb3IgYWRkIGl0IGJhY2sgKi8KIAkJCWlmIChsaXN0X2VtcHR5KCZhbXA7cGFja2V0LSZndDtjaHVua19saXN0KSkKIAkJCQlzY3RwX2NodW5rX2ZyZWUocGFja2V0LSZndDthdXRoKTsKQEAgLTYxOSw3ICYjNDM7NjI1LDcgQEAgaW50IHNjdHBfcGFja2V0X3RyYW5zbWl0KHN0cnVjdCBzY3RwX3BhY2tldCAqcGFja2V0LCBnZnBfdCBnZnApCiAKIAkvKiBwYWNrIHVwIGNodW5rcyAqLwogCXBrdF9jb3VudCA9IHNjdHBfcGFja2V0X3BhY2socGFja2V0LCBoZWFkLCBnc28sIGdmcCk7Ci0JaWYgKCFwa3RfY291bnQpIHsKJiM0MzsJaWYgKHBrdF9jb3VudCAmbHQ7PSAwKSB7CiAJCWtmcmVlX3NrYihoZWFkKTsKIAkJZ290byBvdXQ7CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwppbmRleCA3MDhmYTA3ZDVmZmZjLi5iYjg5YzliNTJlMGIwIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwpAQCAtNDQ1NSw5ICYjNDM7NDQ1NSwxMiBAQCBzdGF0aWMgZW51bSBzY3RwX2llcnJvciBzY3RwX3NmX2F1dGhlbnRpY2F0ZSgKIAogCW1lbXNldChkaWdlc3QsIDAsIHNpZ19sZW4pOwogCi0Jc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGFzb2MsIGNodW5rLSZndDtza2IsCi0JCQkJIChzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICopY2h1bmstJmd0O2NodW5rX2hkciwKLQkJCQkgc2hfa2V5LCBHRlBfQVRPTUlDKTsKJiM0MzsJaWYgKHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhhc29jLCBjaHVuay0mZ3Q7c2tiLAomIzQzOwkJCQkgICAgIChzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICopY2h1bmstJmd0O2NodW5rX2hkciwKJiM0MzsJCQkJICAgICBzaF9rZXksIEdGUF9BVE9NSUMpKSB7CiYjNDM7CQlrZnJlZShzYXZlX2RpZ2VzdCk7CiYjNDM7CQlyZXR1cm4gU0NUUF9JRVJST1JfTk9NRU07CiYjNDM7CX0KIAogCS8qIERpc2NhcmQgdGhlIHBhY2tldCBpZiB0aGUgZGlnZXN0cyBkbyBub3QgbWF0Y2ggKi8KIAlpZiAoY3J5cHRvX21lbW5lcShzYXZlX2RpZ2VzdCwgZGlnZXN0LCBzaWdfbGVuKSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwODowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTM0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU0NUUCBBdXRoZW50aWNhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgbWVzc2luZyB3aXRoIHRoZSBTQ1RQIGF1dGhlbnRpY2F0aW9uIGNvZGUuIFRoZSBrZXkgY2hhbmdlIHNlZW1zIHRvIGJlIGluIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgLiBJdCYjMzk7cyBnb2luZyBmcm9tIGB2b2lkYCB0byByZXR1cm5pbmcgYW4gYGludGAuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBzaGlmdCBpbiBob3cgaXQgYmVoYXZlcywgY2xlYXJseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IHJldHVybiB2YWx1ZS4gSSBzZWUgdGhhdCBgc2N0cF9wYWNrZXRfcGFja2AgYW5kIGBzY3RwX3NmX2F1dGhlbnRpY2F0ZWAgYXJlIGhhbmRsaW5nIHRoaXMgbmV3IHJldHVybiB2YWx1ZSwgc28gdGhvc2UgYXJlIGtleSBhcmVhcyBvZiBmb2N1cy4KClJpZ2h0LCB0aW1lIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgcmVsZXZhbnQgc3ltYm9scyBhbmQgYW55IHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIHRvIGJlIGFibGUgdG8gZnVsbHkgYXNzZXNzIHRoaXMgY2hhbmdlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgYmFzaWNzOyBTQ1RQIGl0c2VsZi4gSSBrbm93IHRoYXQgYENPTkZJR19JUF9TQ1RQYCBpcyB0aGUgYmlnIG9uZSwgdGhlIG1hc3RlciBzd2l0Y2gsIHNvIHRvIHNwZWFrLiBMZXQmIzM5O3MgZG8gYSBxdWljayBncmVwIGZvciBgSVBfU0NUUGAgaW4gdGhlIGBuZXQvc2N0cC9LY29uZmlnYCBmaWxlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgYWxsIHRoZSBjb25maWd1cmFibGUgYXNwZWN0cy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGJhc2UgdG8gd29yayBmcm9tLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMTQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBTQ1RQIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIFNDVFAuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlLCBgbmV0L3NjdHAvS2NvbmZpZ2AuIFRoaXMgaXMgdGhlIHN0YW5kYXJkIHBsYWNlIHdoZXJlIGtlcm5lbCBtb2R1bGVzIGFuZCBmZWF0dXJlcyBkZWZpbmUgdGhlaXIgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGNvbXBvbmVudHMuIEkgd2FudCB0byBzZWUgd2hpY2ggb3RoZXIgb3B0aW9ucywgZmVhdHVyZXMsIG9yIGxpYnJhcmllcyBuZWVkIHRvIGJlIGVuYWJsZWQgb3IgY29uZmlndXJlZCBmb3IgU0NUUCB0byB3b3JrIGNvcnJlY3RseS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYW55IGNvbmZsaWN0cywgdG9vLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgZmlndXJpbmcgb3V0IGhvdyBTQ1RQIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFNDVFAgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51Y29uZmlnIElQX1NDVFBcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1RoZSBTQ1RQIFByb3RvY29sXCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIElORVRcbiAgIDk6XHRcdHNlbGVjdCBDUllQVE9fTElCX1NIQTFcbiAgMTA6XHRcdHNlbGVjdCBDUllQVE9fTElCX1NIQTI1NlxuICAxMTpcdFx0c2VsZWN0IENSWVBUT19MSUJfVVRJTFNcbiAgMTI6XHRcdHNlbGVjdCBORVRfQ1JDMzJDXG4gIDEzOlx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgU3RyZWFtIENvbnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sXG4gIDE2Olx0XG4gIDE3Olx0XHQgIEZyb20gUkZDIDI5NjAgXHUwMDNjaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjk2MC50eHRcdTAwM2UuXG4gIDE4Olx0XG4gIDE5Olx0XHQgIFwmIzM0O1NDVFAgaXMgYSByZWxpYWJsZSB0cmFuc3BvcnQgcHJvdG9jb2wgb3BlcmF0aW5nIG9uIHRvcCBvZiBhXG4gIDIwOlx0XHQgIGNvbm5lY3Rpb25sZXNzIHBhY2tldCBuZXR3b3JrIHN1Y2ggYXMgSVAuICBJdCBvZmZlcnMgdGhlIGZvbGxvd2luZ1xuICAyMTpcdFx0ICBzZXJ2aWNlcyB0byBpdHMgdXNlcnM6XG4gIDIyOlx0XG4gIDIzOlx0XHQgIC0tIGFja25vd2xlZGdlZCBlcnJvci1mcmVlIG5vbi1kdXBsaWNhdGVkIHRyYW5zZmVyIG9mIHVzZXIgZGF0YSxcbiAgMjQ6XHRcdCAgLS0gZGF0YSBmcmFnbWVudGF0aW9uIHRvIGNvbmZvcm0gdG8gZGlzY292ZXJlZCBwYXRoIE1UVSBzaXplLFxuICAyNTpcdFx0ICAtLSBzZXF1ZW5jZWQgZGVsaXZlcnkgb2YgdXNlciBtZXNzYWdlcyB3aXRoaW4gbXVsdGlwbGUgc3RyZWFtcyxcbiAgMjY6XHRcdCAgd2l0aCBhbiBvcHRpb24gZm9yIG9yZGVyLW9mLWFycml2YWwgZGVsaXZlcnkgb2YgaW5kaXZpZHVhbCB1c2VyXG4gIDI3Olx0XHQgIG1lc3NhZ2VzLFxuICAyODpcdFx0ICAtLSBvcHRpb25hbCBidW5kbGluZyBvZiBtdWx0aXBsZSB1c2VyIG1lc3NhZ2VzIGludG8gYSBzaW5nbGUgU0NUUFxuICAyOTpcdFx0ICBwYWNrZXQsIGFuZFxuICAzMDpcdFx0ICAtLSBuZXR3b3JrLWxldmVsIGZhdWx0IHRvbGVyYW5jZSB0aHJvdWdoIHN1cHBvcnRpbmcgb2YgbXVsdGktXG4gIDMxOlx0XHQgIGhvbWluZyBhdCBlaXRoZXIgb3IgYm90aCBlbmRzIG9mIGFuIGFzc29jaWF0aW9uLlwmIzM0O1xuICAzMjpcdFxuICAzMzpcdFx0ICBUbyBjb21waWxlIHRoaXMgcHJvdG9jb2wgc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDM0Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY3RwLiBEZWJ1ZyBtZXNzYWdlcyBhcmUgaGFuZGxlZCBieSB0aGVcbiAgMzU6XHRcdCAga2VybmVsJiMzOTtzIGR5bmFtaWMgZGVidWdnaW5nIGZyYW1ld29yay5cbiAgMzY6XHRcbiAgMzc6XHRcdCAgSWYgaW4gZG91YnQsIHNheSBOLlxuICAzODpcdFxuICAzOTpcdGlmIElQX1NDVFBcbiAgNDA6XHRcbiAgNDE6XHRjb25maWcgU0NUUF9EQkdfT0JKQ05UXG4gIDQyOlx0XHRib29sIFwmIzM0O1NDVFA6IERlYnVnIG9iamVjdCBjb3VudHNcJiMzNDtcbiAgNDM6XHRcdGRlcGVuZHMgb24gUFJPQ19GU1xuICA0NDpcdFx0aGVscFxuICA0NTpcdFx0ICBJZiB5b3Ugc2F5IFksIHRoaXMgd2lsbCBlbmFibGUgZGVidWdnaW5nIHN1cHBvcnQgZm9yIGNvdW50aW5nIHRoZVxuICA0NjpcdFx0ICB0eXBlIG9mIG9iamVjdHMgdGhhdCBhcmUgY3VycmVudGx5IGFsbG9jYXRlZC4gIFRoaXMgaXMgdXNlZnVsIGZvclxuICA0NzpcdFx0ICBpZGVudGlmeWluZyBtZW1vcnkgbGVha3MuIFRoaXMgZGVidWcgaW5mb3JtYXRpb24gY2FuIGJlIHZpZXdlZCBieVxuICA0ODpcdFx0ICAmIzM5O2NhdCAvcHJvYy9uZXQvc2N0cC9zY3RwX2RiZ19vYmpjbnQmIzM5O1xuICA0OTpcdFxuICA1MDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg5MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU0NUUCBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbiBNb2RpZmljYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYElQX1NDVFBgIGNvbmZpZ3VyYXRpb24g4oCTIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkLiBJJiMzOTt2ZSBpZGVudGlmaWVkIGZvdXI6IGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgLCBgc2N0cF9wYWNrZXRfcGFja2AsIGBzY3RwX3BhY2tldF90cmFuc21pdGAsIGFuZCBgc2N0cF9zZl9hdXRoZW50aWNhdGVgLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBzY29wZS4gQXJlIHRoZXNlIHN0YXRpYyBvciBub3Q/IExldCYjMzk7cyBzZWUuLi4gYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AgaXMgKm5vdCogc3RhdGljLCBzbyBpdCYjMzk7cyBsaWtlbHkgY2FsbGFibGUgZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUuIGBzY3RwX3BhY2tldF9wYWNrYCAqaXMqIHN0YXRpYywgbWVhbmluZyBpdCYjMzk7cyBvbmx5IHZpc2libGUgd2l0aGluIHRoZSBjdXJyZW50IHRyYW5zbGF0aW9uIHVuaXQuIExpa2V3aXNlLCBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgIGlzIG5vdCBzdGF0aWMuIGBzY3RwX3NmX2F1dGhlbnRpY2F0ZWAgaXMgc3RhdGljLgoKR2l2ZW4gdGhhdCBkaXN0aW5jdGlvbiwgSSB3aWxsIG5vdyBmb2N1cyBteSBhdHRlbnRpb24gb24gYHNjdHBfcGFja2V0X3BhY2tgIGFuZCBgc2N0cF9zZl9hdXRoZW50aWNhdGVgIHNpbmNlIHRoZXkgYXJlIHN0YXRpYy4gSSBuZWVkIHRvIGRlbHZlIGludG8gdGhlIHNvdXJjZSBjb2RlIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgYXJlIGJlaW5nIHVzZWQgd2l0aGluIHRoZWlyIHJlc3BlY3RpdmUgbW9kdWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX3BhY2tldF9wYWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvb3V0cHV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvb3V0cHV0LmM9NDIwPXN0YXRpYyB2b2lkIHNjdHBfcGFja2V0X2dzb19hcHBlbmQoc3RydWN0IHNrX2J1ZmYgKmhlYWQsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3NjdHAvb3V0cHV0LmMtNDM1LVxubmV0L3NjdHAvb3V0cHV0LmM6NDM2OnN0YXRpYyBpbnQgc2N0cF9wYWNrZXRfcGFjayhzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBhY2tldCxcbm5ldC9zY3RwL291dHB1dC5jLTQzNy1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKmhlYWQsIGludCBnc28sIGdmcF90IGdmcClcbi0tXG5uZXQvc2N0cC9vdXRwdXQuYz01NzU9aW50IHNjdHBfcGFja2V0X3RyYW5zbWl0KHN0cnVjdCBzY3RwX3BhY2tldCAqcGFja2V0LCBnZnBfdCBnZnApXG4tLVxubmV0L3NjdHAvb3V0cHV0LmMtNjI2LVx0LyogcGFjayB1cCBjaHVua3MgKi9cbm5ldC9zY3RwL291dHB1dC5jOjYyNzpcdHBrdF9jb3VudCA9IHNjdHBfcGFja2V0X3BhY2socGFja2V0LCBoZWFkLCBnc28sIGdmcCk7XG5uZXQvc2N0cC9vdXRwdXQuYy02MjgtXHRpZiAocGt0X2NvdW50IFx1MDAzYz0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MTgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOgoKKipBbmFseXppbmcgU0NUUCBQYWNrZXQgSGFuZGxpbmcgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBTQ1RQIHBhY2tldCBmdW5jdGlvbnMgYW5kIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBzY29wZSBhbmQgaG93IHRoZXkmIzM5O3JlIHVzZWQuIEZpcnN0LCBgc2N0cF9wYWNrZXRfcGFja2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQmIzM5O3MgaW50ZXJuYWwgdG8gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgbGlrZWx5IG9ubHkgdXNlZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBtb2R1bGUuIFRoaXMgaXMgdXNlZnVsOyBpdCBtZWFucyBJIGRvbiYjMzk7dCBuZWVkIHRvIHdvcnJ5IGFib3V0IGV4dGVybmFsIGRlcGVuZGVuY2llcyBvciBkaXJlY3QgY2FsbHMgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJIGNhbiBmb2N1cyBvbiBpdHMgbG9jYWwgaW50ZXJhY3Rpb25zLgoKVGhlbiB0aGVyZSYjMzk7cyBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgLiBUaGlzIG9uZSBpcyBleHBvcnRlZCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byBiZSBhd2FyZSBvZiB0aGUgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgbW9kdWxlcy4gVGhpcyBmdW5jdGlvbiBpcyBsaWtlbHkgYSBjcml0aWNhbCBwb2ludCBmb3IgdGhlIHBhY2tldCB0cmFuc21pc3Npb24gcGF0aHdheSwgc28gdW5kZXJzdGFuZGluZyBpdHMgaW50ZXJmYWNlIGFuZCBob3cgaXQmIzM5O3MgY2FsbGVkIGlzIGltcG9ydGFudC4KCkZpbmFsbHksIGBzY3RwX3NmX2F1dGhlbnRpY2F0ZWAgaXMgc3RhdGljIGFzIHdlbGwuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGxzIHRvIHNlZSBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gdGhpcyBtb2R1bGUsIGFuZCBob3cgYXV0aGVudGljYXRpb24gaXMgaW1wbGVtZW50ZWQuIFdoZXJlIGl0IGlzIGNhbGxlZCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXV0aGVudGljYXRpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9zZl9hdXRoZW50aWNhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0xNDI9c3RhdGljIGVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX3Zpb2xhdGlvbl9jaHVuayhcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xNDktXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzoxNTA6c3RhdGljIGVudW0gc2N0cF9pZXJyb3Igc2N0cF9zZl9hdXRoZW50aWNhdGUoXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xNTEtXHRcdFx0XHRcdGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTY0MD1zdGF0aWMgYm9vbCBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNjdHBfY2h1bmsgKmNodW5rLFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTY2OC1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjY2OTpcdHJldHVybiBzY3RwX3NmX2F1dGhlbnRpY2F0ZShhc29jLCBcdTAwMjZhdXRoKSA9PSBTQ1RQX0lFUlJPUl9OT19FUlJPUjtcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTY3MC19XG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NDMxMz1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9lYXRfZndkX3Rzbl9mYXN0KFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQ0MDAtICovXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo0NDAxOnN0YXRpYyBlbnVtIHNjdHBfaWVycm9yIHNjdHBfc2ZfYXV0aGVudGljYXRlKFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDQwMi1cdFx0XHRcdFx0Y29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NDQ3OT1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9lYXRfYXV0aChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDUwNS1cdGF1dGhfaGRyID0gKHN0cnVjdCBzY3RwX2F1dGhoZHIgKiljaHVuay1cdTAwM2Vza2ItXHUwMDNlZGF0YTtcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjQ1MDY6XHRlcnJvciA9IHNjdHBfc2ZfYXV0aGVudGljYXRlKGFzb2MsIGNodW5rKTtcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQ1MDctXHRzd2l0Y2ggKGVycm9yKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MjEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OgoKKipEaXZpbmcgaW50byBTQ1RQIEF1dGhlbnRpY2F0aW9uIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBTQ1RQIGF1dGhlbnRpY2F0aW9uIGZ1bmN0aW9ucy4gSW50ZXJlc3RpbmcuIGBzY3RwX3NmX2VhdF9hdXRoYCBpcyBkZWZpbmVkIGFzIG5vbi1zdGF0aWMsIHdoaWNoIG1lYW5zIGl0IGhhcyBleHRlcm5hbCBsaW5rYWdlLiBJdCBjYW4gYmUgY2FsbGVkIGZyb20gb3RoZXIgY29tcGlsYXRpb24gdW5pdHMgd2l0aGluIHRoZSBwcm9qZWN0IG9yIGxpbmtlZCBiaW5hcmllcy4gVGhhdOKAmXMgcHJvYmFibHkgYSBrZXkgZnVuY3Rpb24gZm9yIGludGVyYWN0aW5nIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gT24gdGhlIG90aGVyIGhhbmQsIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBpcyBzdGF0aWMuIFRoYXQgbWVhbnMgaXTigJlzIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgdHJhbnNsYXRpb24gdW5pdCwgcHJlc3VtYWJseSBhIGhlbHBlciBmdW5jdGlvbiwgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiB0aGUgYXV0aGVudGljYXRpb24gY2h1bmsgdmVyaWZpY2F0aW9uIGxvZ2ljLgoKTm93LCBJIG5lZWQgdG8gc2VlICpob3cqIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC4gTGV0IG1lIGNoZWNrIHRoZSBjb2RlIHdoZXJlIGBzY3RwX3NmX2VhdF9hdXRoYCBhbmQgYHNjdHBfcGFja2V0X3RyYW5zbWl0YCBhcmUgdXNlZCwgdG8gdW5kZXJzdGFuZCBob3cgdGhleSBmaXQgdG9nZXRoZXIgaW4gdGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3NpbmcgYW5kIHRyYW5zbWlzc2lvbiB3b3JrZmxvdy4gSSBzdXNwZWN0IGBzY3RwX3BhY2tldF90cmFuc21pdGAgbWlnaHQgYmUgcGFzc2luZyB0aGUgbmVjZXNzYXJ5IGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIG9yIHVzaW5nIHRoZSByZXN1bHRzIG9mIGBzY3RwX3NmX2VhdF9hdXRoYC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zLCBhbmQgaG93IHRoZXkgaW50ZXJhY3QsIHdpbGwgZ2l2ZSBtZSBhIG1vcmUgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgYXV0aGVudGljYXRpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9zZl9lYXRfYXV0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz00NDAxPXN0YXRpYyBlbnVtIHNjdHBfaWVycm9yIHNjdHBfc2ZfYXV0aGVudGljYXRlKFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQ0NzgtXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo0NDc5OmVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2VhdF9hdXRoKHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQ0ODAtXHRcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYz00OTg9cmVjb25mX2NodW5rX2V2ZW50X3RhYmxlW1NDVFBfTlVNX1JFQ09ORl9DSFVOS19UWVBFU11bU0NUUF9TVEFURV9OVU1fU1RBVEVTXSA9IHtcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTA3LVx0LyogU0NUUF9TVEFURV9DT09LSUVfRUNIT0VEICovIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6NTA4Olx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9lYXRfYXV0aCksIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTA5LVx0LyogU0NUUF9TVEFURV9FU1RBQkxJU0hFRCAqLyBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjUxMDpcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZWF0X2F1dGgpLCBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTUxMS1cdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyAqLyBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjUxMjpcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZWF0X2F1dGgpLCBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTUxMy1cdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCAqLyBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjUxNDpcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZWF0X2F1dGgpLCBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTUxNS1cdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQgKi8gXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYzo1MTY6XHRUWVBFX1NDVFBfRlVOQyhzY3RwX3NmX2VhdF9hdXRoKSwgXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy01MTctXHQvKiBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UICovIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6NTE4Olx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9lYXRfYXV0aCksIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTE5LX0gLyogVFlQRV9TQ1RQX0FVVEggKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUxOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE2NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBTQ1RQIENvZGUgQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBzdGF0ZSBtYWNoaW5lIGZ1bmN0aW9uLCBgc2N0cF9zZl9lYXRfYXV0aGAsIHdoaWNoIGlzIGEga2V5IHByb2Nlc3MsIGFuZCBhbHNvIG9uIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgLiBJIHNob3VsZCBhbHNvIGtlZXAgYHNjdHBfcGFja2V0X3RyYW5zbWl0YCBpbiBtaW5kIGFzIHdlbGwuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIHNpZ25pZmljYW50IHBhcnRzLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJdCBsb29rcyBsaWtlIGBJUF9TQ1RQYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gQWgsIHdhaXQsIHRoZXJlJiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZTsgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIHRvIHJldHVybiBgLUVOT01FTWAgaW5zdGVhZCBvZiBgdm9pZGAuIFRoYXQmIzM5O3Mgbm90IGp1c3QgYSBtaW5vciB0d2VhazsgaXQmIzM5O3MgYSBzdHJ1Y3R1cmFsIGFsdGVyYXRpb24uIEEgcmV0dXJuIHZhbHVlIGlzIGEgbXVjaCBzdHJvbmdlciBzaWduYWwsIGluZGljYXRpbmcgcG90ZW50aWFsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgd2hpY2ggbXVzdCBiZSBoYW5kbGVkLgoKVG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIGRldGFpbHMsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AgaW4gYG5ldC9zY3RwL2F1dGguY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgdGhvcm91Z2hseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvYXV0aC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL2F1dGguYz01OTU9aW50IHNjdHBfYXV0aF9yZWN2X2NpZChlbnVtIHNjdHBfY2lkIGNodW5rLCBjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYylcbi0tXG5uZXQvc2N0cC9hdXRoLmMtNjE1LSAqL1xubmV0L3NjdHAvYXV0aC5jOjYxNjppbnQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxubmV0L3NjdHAvYXV0aC5jLTYxNy1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMTcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBGdW5jdGlvbmFsIFBhdGNoKioKCk9rYXksIHRoaXMgcGF0Y2ggc2VlbXMgc29saWQsIGl0JiMzOTtzIGRlZmluaXRlbHkgZnVuY3Rpb25hbCBhbmQgZGVzZXJ2ZXMgYSBnb29kIGZ1enppbmcgY2FtcGFpZ24uIEkmIzM5O20gdGhpbmtpbmcgd2Ugc2hvdWxkIHplcm8gaW4gb24gYSBmZXcga2V5IHN5bWJvbHMgdG8gZ3VpZGUgdGhhdCBwcm9jZXNzOiBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYCwgYHNjdHBfcGFja2V0X3RyYW5zbWl0YCwgYW5kIGBzY3RwX3NmX2VhdF9hdXRoYC4gVGhlc2UgbG9vayBsaWtlIHByaW1lIHRhcmdldHMgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIExldCYjMzk7cyBzZWUgaWYgdGhlIGZpcnN0IG9uZSwgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AsIGlzIGV4cG9ydGVkIHByb3Blcmx5OyBpdCB3b3VsZCBiZSBwcmV0dHkgdXNlbGVzcyBpZiBpdCYjMzk7cyBub3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM3MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqRXhhbWluaW5nIFNDVFAgRnVuY3Rpb24gVmlzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgU0NUUCBmdW5jdGlvbnMuIFRoZSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgd2hpbGUgaXQmIzM5O3Mgbm90IGV4cG9ydGVkIChtZWFuaW5nIGl0JiMzOTtzIG5vdCBwYXJ0IG9mIHRoZSBleHRlcm5hbCBBUEksIGxpa2VseSksIGl0IGlzICpub3QqIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiAgU3BlY2lmaWNhbGx5LCBJJiMzOTttIG5vdGluZyB0aGF0IGBzY3RwX3NmX2VhdF9hdXRoYCBpcyBub24tc3RhdGljLCBhbmQgYWxzbyBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgIGlzIG5vbi1zdGF0aWMuIFRoaXMgY291bGQgYmUgcmVsZXZhbnQgZm9yIGxhdGVyIG1vZGlmaWNhdGlvbnMgb3IgYW5hbHlzaXMuCgpOb3csIG15IGZvY3VzIHNoaWZ0cyB0byBpZGVudGlmeWluZyAqb3RoZXIqIGZ1bmN0aW9ucyBhbmQgdGhlaXIgdmlzaWJpbGl0eS4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJJiMzOTttIGNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIGF1dGhlbnRpY2F0aW9uIGxvZ2ljLgoKSG1tLCBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAgKmlzKiBzdGF0aWMuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIGZ1bmN0aW9uIEkgaGF2ZSBpbiBtaW5kLiBXYWl0IGEgbW9tZW50LCBJIG1pc3JlYWQgc29tZXRoaW5nLiBJdCBsb29rcyBsaWtlIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBpcyAqY2FsbGVkKiBieSBgc2N0cF9zZl9hdXRoZW50aWNhdGVgLiBJdCBpc24mIzM5O3QgdGhlIG90aGVyIHdheSBhcm91bmQuIE9rYXksIEkgd2FzIG1vbWVudGFyaWx5IGNvbmZ1c2VkIHRoZXJlLiBUbyBiZSBzdXJlIGFib3V0IHRoZSBjYWxsaW5nIHN0cnVjdHVyZSwgbGV0IG1lIHZlcmlmeSB3aGVyZSBgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeWAgaXMgYWN0dWFsbHkgY2FsbGVkLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfYXV0aF9jaHVua192ZXJpZnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NTIxPWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMUNfYWNrKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy02MzktXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo2NDA6c3RhdGljIGJvb2wgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzY3RwX2NodW5rICpjaHVuayxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTY0MS1cdFx0XHRcdCAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTcwMz1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy04MjgtXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo4Mjk6XHRpZiAoIXNjdHBfYXV0aF9jaHVua192ZXJpZnkobmV0LCBjaHVuaywgbmV3X2Fzb2MpKSB7XG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy04MzAtXHRcdHNjdHBfYXNzb2NpYXRpb25fZnJlZShuZXdfYXNvYyk7XG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9MTg4Mj1zdGF0aWMgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fZHVwY29va19hKFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTE5MDYtXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzoxOTA3Olx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIG5ld19hc29jKSlcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTE5MDgtXHRcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0RJU0NBUkQ7XG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9MjAwNT1zdGF0aWMgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fZHVwY29va19iKFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIwMjYtXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzoyMDI3Olx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIG5ld19hc29jKSlcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIwMjgtXHRcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0RJU0NBUkQ7XG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9MjExMj1zdGF0aWMgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fZHVwY29va19kKFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIxMjktXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzoyMTMwOlx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIGFzb2MpKVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMjEzMS1cdFx0cmV0dXJuIFNDVFBfRElTUE9TSVRJT05fRElTQ0FSRDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTU0OAoJCQkJCQkJb3V0cHV0OiAxNjQKCQkJCQkJCXRob3VnaHRzOiAyNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgU0NUUCBBdXRoZW50aWNhdGlvbiBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgc2N0cF9zZl9hdXRoZW50aWNhdGVgIGdldHMgaW52b2tlZCBieSBib3RoIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBhbmQgYHNjdHBfc2ZfZWF0X2F1dGhgLCBidXQgdGhlIHJlYWwgd29ya2hvcnNlIGZvciBBVVRIIGNodW5rIHByb2Nlc3Npbmcgc2VlbXMgdG8gYmUgYHNjdHBfc2ZfZWF0X2F1dGhgLiBOb3csIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIGlzIGNydWNpYWwgYXMgd2VsbCwgZ2V0dGluZyBjYWxsZWQgZnJvbSBib3RoIGBzY3RwX3BhY2tldF9wYWNrYCAqYW5kKiBgc2N0cF9zZl9hdXRoZW50aWNhdGVgLiBUaGlzIGdpdmVzIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBmdW5jdGlvbiBjYWxscyBhbmQgdGhlIGRhdGEgZmxvdy4KCkkgbmVlZCB0byBjb25maXJtIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gVGhlIGNydWNpYWwgY29uZmlnIGlzIGBJUF9TQ1RQYCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQuIGBJUF9TQ1RQYCBkZXBlbmRzIG9uIGBJTkVUYCwgd2hpY2ggaXMgcHJhY3RpY2FsbHkgYSBnaXZlbi4gVGhlcmVmb3JlLCBgSVBfU0NUUGAgaXMgc3VmZmljaWVudCBmb3IgZW5hYmxlbWVudC4KCk5vdywgYSBxdWljayBzYW5pdHkgY2hlY2suIEkgbmVlZCB0byBjb25maXJtIHRoZXNlIGNyaXRpY2FsIGZ1bmN0aW9ucyBhcmUgZXh0ZXJuYWxseSB2aXNpYmxlLCB0aGF0IHRoZXkmIzM5O3JlIG5vdCBkZWNsYXJlZCBzdGF0aWMuIExldCYjMzk7cyBzZWUuLi4geWVwLCBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYCBpcyBub24tc3RhdGljLCBqdXN0IGxpa2UgSSBleHBlY3QuIFNpbWlsYXJseSwgYm90aCBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgIGFuZCBgc2N0cF9zZl9lYXRfYXV0aGAgYXJlIG5vbi1zdGF0aWMgYXMgd2VsbC4gVGhhdCBjb25maXJtcyB0aGVzZSBmdW5jdGlvbnMgYXJlIHByb3Blcmx5IGV4cG9zZWQgYW5kIGNhbiBiZSBjYWxsZWQgZnJvbSBvdGhlciBtb2R1bGVzIG9yIGxheWVycy4KCkFscmlnaHQsIHRoYXQgY292ZXJzIGV2ZXJ5dGhpbmcuIFRpbWUgdG8gc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA4OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjJiMzNDssCiAgICAmIzM0O3NjdHBfcGFja2V0X3RyYW5zbWl0JiMzNDssCiAgICAmIzM0O3NjdHBfc2ZfZWF0X2F1dGgmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgU0NUUCBhdXRoZW50aWNhdGlvbiBjb2RlIHRvIGhhbmRsZSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyBkdXJpbmcgSE1BQyBjYWxjdWxhdGlvbi4gSXQgY2hhbmdlcyBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYCB0byByZXR1cm4gYW4gZXJyb3IgY29kZSBhbmQgdXBkYXRlcyBpdHMgY2FsbGVycyAoYHNjdHBfcGFja2V0X3BhY2tgIGFuZCBgc2N0cF9zZl9hdXRoZW50aWNhdGVgKSB0byBoYW5kbGUgdGhlIGVycm9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgU0NUUCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyYjMzQ7LAogICAgJiMzNDtzY3RwX3BhY2tldF90cmFuc21pdCYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2VhdF9hdXRoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgYXV0aGVudGljYXRpb24gY29kZSB0byBoYW5kbGUgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMgZHVyaW5nIEhNQUMgY2FsY3VsYXRpb24uIEl0IGNoYW5nZXMgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AgdG8gcmV0dXJuIGFuIGVycm9yIGNvZGUgYW5kIHVwZGF0ZXMgaXRzIGNhbGxlcnMgKGBzY3RwX3BhY2tldF9wYWNrYCBhbmQgYHNjdHBfc2ZfYXV0aGVudGljYXRlYCkgdG8gaGFuZGxlIHRoZSBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNDVFAgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwODowNToxMC4zNjg1ODIyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0Nzc0MzQxMzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNcIixcbiAgICBcInNjdHBfcGFja2V0X3RyYW5zbWl0XCIsXG4gICAgXCJzY3RwX3NmX2VhdF9hdXRoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgU0NUUCBhdXRoZW50aWNhdGlvbiBjb2RlIHRvIGhhbmRsZSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyBkdXJpbmcgSE1BQyBjYWxjdWxhdGlvbi4gSXQgY2hhbmdlcyBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYCB0byByZXR1cm4gYW4gZXJyb3IgY29kZSBhbmQgdXBkYXRlcyBpdHMgY2FsbGVycyAoYHNjdHBfcGFja2V0X3BhY2tgIGFuZCBgc2N0cF9zZl9hdXRoZW50aWNhdGVgKSB0byBoYW5kbGUgdGhlIGVycm9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgU0NUUCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MTAuMzY4NTg5MjZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzkxODA4MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZTI2NGZkZGMwNTUzNTJkOWJlMDM1NWRlOGQ1ZGVkN2Y0NTBkMzVlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMDg6MDU6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmggYi9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxcbmluZGV4IDZmMmNkNTYyYjFkZTYuLmVlYjMyOTdmZTk3ZDMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcXG4rKysgYi9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxcbkBAIC04Myw5ICs4Myw5IEBAIGludCBzY3RwX2F1dGhfc2VuZF9jaWQoZW51bSBzY3RwX2NpZCBjaHVuayxcXG4gXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcXG4gaW50IHNjdHBfYXV0aF9yZWN2X2NpZChlbnVtIHNjdHBfY2lkIGNodW5rLFxcbiBcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpO1xcbi12b2lkIHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcXG4tXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCxcXG4tXFx0XFx0XFx0ICAgICAgc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqZXBfa2V5LCBnZnBfdCBnZnApO1xcbitpbnQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsXFxuK1xcdFxcdFxcdCAgICAgc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqZXBfa2V5LCBnZnBfdCBnZnApO1xcbiB2b2lkIHNjdHBfYXV0aF9zaGtleV9yZWxlYXNlKHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKnNoX2tleSk7XFxuIHZvaWQgc2N0cF9hdXRoX3Noa2V5X2hvbGQoc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqc2hfa2V5KTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL2F1dGguYyBiL25ldC9zY3RwL2F1dGguY1xcbmluZGV4IGM5MDFkMzczYWY4MDMuLjZkZTY2ZjU2YzQxY2UgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjdHAvYXV0aC5jXFxuKysrIGIvbmV0L3NjdHAvYXV0aC5jXFxuQEAgLTYxMyw5ICs2MTMsOSBAQCBpbnQgc2N0cF9hdXRoX3JlY3ZfY2lkKGVudW0gc2N0cF9jaWQgY2h1bmssIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxcbiAgKiAgICB6ZXJvIChhcyBzaG93biBpbiBGaWd1cmUgNikgZm9sbG93ZWQgYnkgYWxsIGNodW5rcyB0aGF0IGFyZSBwbGFjZWRcXG4gICogICAgYWZ0ZXIgdGhlIEFVVEggY2h1bmsgaW4gdGhlIFNDVFAgcGFja2V0LlxcbiAgKi9cXG4tdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsXFxuLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKmVwX2tleSwgZ2ZwX3QgZ2ZwKVxcbitpbnQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsXFxuK1xcdFxcdFxcdCAgICAgc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqZXBfa2V5LCBnZnBfdCBnZnApXFxuIHtcXG4gXFx0c3RydWN0IHNjdHBfYXV0aF9ieXRlcyAqYXNvY19rZXk7XFxuIFxcdF9fdTE2IGtleV9pZCwgaG1hY19pZDtcXG5AQCAtNjM2LDcgKzYzNiw3IEBAIHZvaWQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbiBcXHRcXHQvKiBlcF9rZXkgY2FuJ3QgYmUgTlVMTCBoZXJlICovXFxuIFxcdFxcdGFzb2Nfa2V5ID0gc2N0cF9hdXRoX2Fzb2NfY3JlYXRlX3NlY3JldChhc29jLCBlcF9rZXksIGdmcCk7XFxuIFxcdFxcdGlmICghYXNvY19rZXkpXFxuLVxcdFxcdFxcdHJldHVybjtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRcXHRmcmVlX2tleSA9IDE7XFxuIFxcdH1cXG5AQCAtNjU0LDYgKzY1NCw4IEBAIHZvaWQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbiBcXG4gXFx0aWYgKGZyZWVfa2V5KVxcbiBcXHRcXHRzY3RwX2F1dGhfa2V5X3B1dChhc29jX2tleSk7XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gLyogQVBJIEhlbHBlcnMgKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvb3V0cHV0LmMgYi9uZXQvc2N0cC9vdXRwdXQuY1xcbmluZGV4IDIzZTk2MzA1Y2FkN2MuLjNkN2VhZDlkNDBlMTkgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjdHAvb3V0cHV0LmNcXG4rKysgYi9uZXQvc2N0cC9vdXRwdXQuY1xcbkBAIC01MTcsOCArNTE3LDE0IEBAIHN0YXRpYyBpbnQgc2N0cF9wYWNrZXRfcGFjayhzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBhY2tldCxcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0aWYgKGF1dGgpIHtcXG4tXFx0XFx0XFx0c2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKHRwLVxcdTAwM2Vhc29jLCBuc2tiLCBhdXRoLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgcGFja2V0LVxcdTAwM2VhdXRoLVxcdTAwM2VzaGtleSwgZ2ZwKTtcXG4rXFx0XFx0XFx0aWYgKHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyh0cC1cXHUwMDNlYXNvYywgbnNrYiwgYXV0aCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBwYWNrZXQtXFx1MDAzZWF1dGgtXFx1MDAzZXNoa2V5LCBnZnApKSB7XFxuK1xcdFxcdFxcdFxcdHNjdHBfY2h1bmtfZnJlZShwYWNrZXQtXFx1MDAzZWF1dGgpO1xcbitcXHRcXHRcXHRcXHRwYWNrZXQtXFx1MDAzZWF1dGggPSBOVUxMO1xcbitcXHRcXHRcXHRcXHRpZiAoZ3NvKVxcbitcXHRcXHRcXHRcXHRcXHRrZnJlZV9za2IobnNrYik7XFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdC8qIGZyZWUgYXV0aCBpZiBubyBtb3JlIGNodW5rcywgb3IgYWRkIGl0IGJhY2sgKi9cXG4gXFx0XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNnBhY2tldC1cXHUwMDNlY2h1bmtfbGlzdCkpXFxuIFxcdFxcdFxcdFxcdHNjdHBfY2h1bmtfZnJlZShwYWNrZXQtXFx1MDAzZWF1dGgpO1xcbkBAIC02MTksNyArNjI1LDcgQEAgaW50IHNjdHBfcGFja2V0X3RyYW5zbWl0KHN0cnVjdCBzY3RwX3BhY2tldCAqcGFja2V0LCBnZnBfdCBnZnApXFxuIFxcbiBcXHQvKiBwYWNrIHVwIGNodW5rcyAqL1xcbiBcXHRwa3RfY291bnQgPSBzY3RwX3BhY2tldF9wYWNrKHBhY2tldCwgaGVhZCwgZ3NvLCBnZnApO1xcbi1cXHRpZiAoIXBrdF9jb3VudCkge1xcbitcXHRpZiAocGt0X2NvdW50IFxcdTAwM2M9IDApIHtcXG4gXFx0XFx0a2ZyZWVfc2tiKGhlYWQpO1xcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXFxuaW5kZXggNzA4ZmEwN2Q1ZmZmYy4uYmI4OWM5YjUyZTBiMCAxMDA2NDRcXG4tLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xcbisrKyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXFxuQEAgLTQ0NTUsOSArNDQ1NSwxMiBAQCBzdGF0aWMgZW51bSBzY3RwX2llcnJvciBzY3RwX3NmX2F1dGhlbnRpY2F0ZShcXG4gXFxuIFxcdG1lbXNldChkaWdlc3QsIDAsIHNpZ19sZW4pO1xcbiBcXG4tXFx0c2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGFzb2MsIGNodW5rLVxcdTAwM2Vza2IsXFxuLVxcdFxcdFxcdFxcdCAoc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqKWNodW5rLVxcdTAwM2VjaHVua19oZHIsXFxuLVxcdFxcdFxcdFxcdCBzaF9rZXksIEdGUF9BVE9NSUMpO1xcbitcXHRpZiAoc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGFzb2MsIGNodW5rLVxcdTAwM2Vza2IsXFxuK1xcdFxcdFxcdFxcdCAgICAgKHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKiljaHVuay1cXHUwMDNlY2h1bmtfaGRyLFxcbitcXHRcXHRcXHRcXHQgICAgIHNoX2tleSwgR0ZQX0FUT01JQykpIHtcXG4rXFx0XFx0a2ZyZWUoc2F2ZV9kaWdlc3QpO1xcbitcXHRcXHRyZXR1cm4gU0NUUF9JRVJST1JfTk9NRU07XFxuK1xcdH1cXG4gXFxuIFxcdC8qIERpc2NhcmQgdGhlIHBhY2tldCBpZiB0aGUgZGlnZXN0cyBkbyBub3QgbWF0Y2ggKi9cXG4gXFx0aWYgKGNyeXB0b19tZW1uZXEoc2F2ZV9kaWdlc3QsIGRpZ2VzdCwgc2lnX2xlbikpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MTEuNzA4NjU3MzQ0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTM0MzQyNTcyNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY1wiLFxuICAgIFwic2N0cF9wYWNrZXRfdHJhbnNtaXRcIixcbiAgICBcInNjdHBfc2ZfZWF0X2F1dGhcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBTQ1RQIGF1dGhlbnRpY2F0aW9uIGNvZGUgdG8gaGFuZGxlIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzIGR1cmluZyBITUFDIGNhbGN1bGF0aW9uLiBJdCBjaGFuZ2VzIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIHRvIHJldHVybiBhbiBlcnJvciBjb2RlIGFuZCB1cGRhdGVzIGl0cyBjYWxsZXJzIChgc2N0cF9wYWNrZXRfcGFja2AgYW5kIGBzY3RwX3NmX2F1dGhlbnRpY2F0ZWApIHRvIGhhbmRsZSB0aGUgZXJyb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBTQ1RQIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgcHJvcGVyIGVycm9yIGhhbmRsaW5nIGFuZCBwcmV2ZW50IG1lbW9yeSBsZWFrcyBvciBjcmFzaGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZTI2NGZkZGMwNTUzNTJkOWJlMDM1NWRlOGQ1ZGVkN2Y0NTBkMzVlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwODowNTowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcbmluZGV4IDZmMmNkNTYyYjFkZTYuLmVlYjMyOTdmZTk3ZDMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxuKysrIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcbkBAIC04Myw5ICs4Myw5IEBAIGludCBzY3RwX2F1dGhfc2VuZF9jaWQoZW51bSBzY3RwX2NpZCBjaHVuayxcbiBcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcbiBpbnQgc2N0cF9hdXRoX3JlY3ZfY2lkKGVudW0gc2N0cF9jaWQgY2h1bmssXG4gXHRcdCAgICAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyk7XG4tdm9pZCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4tXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCxcbi1cdFx0XHQgICAgICBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICplcF9rZXksIGdmcF90IGdmcCk7XG4raW50IHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbitcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKmF1dGgsXG4rXHRcdFx0ICAgICBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICplcF9rZXksIGdmcF90IGdmcCk7XG4gdm9pZCBzY3RwX2F1dGhfc2hrZXlfcmVsZWFzZShzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICpzaF9rZXkpO1xuIHZvaWQgc2N0cF9hdXRoX3Noa2V5X2hvbGQoc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqc2hfa2V5KTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hdXRoLmMgYi9uZXQvc2N0cC9hdXRoLmNcbmluZGV4IGM5MDFkMzczYWY4MDMuLjZkZTY2ZjU2YzQxY2UgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9hdXRoLmNcbisrKyBiL25ldC9zY3RwL2F1dGguY1xuQEAgLTYxMyw5ICs2MTMsOSBAQCBpbnQgc2N0cF9hdXRoX3JlY3ZfY2lkKGVudW0gc2N0cF9jaWQgY2h1bmssIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxuICAqICAgIHplcm8gKGFzIHNob3duIGluIEZpZ3VyZSA2KSBmb2xsb3dlZCBieSBhbGwgY2h1bmtzIHRoYXQgYXJlIHBsYWNlZFxuICAqICAgIGFmdGVyIHRoZSBBVVRIIGNodW5rIGluIHRoZSBTQ1RQIHBhY2tldC5cbiAgKi9cbi12b2lkIHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbi1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoLFxuLVx0XHRcdCAgICAgIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKmVwX2tleSwgZ2ZwX3QgZ2ZwKVxuK2ludCBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4rXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICphdXRoLFxuK1x0XHRcdCAgICAgc3RydWN0IHNjdHBfc2hhcmVkX2tleSAqZXBfa2V5LCBnZnBfdCBnZnApXG4ge1xuIFx0c3RydWN0IHNjdHBfYXV0aF9ieXRlcyAqYXNvY19rZXk7XG4gXHRfX3UxNiBrZXlfaWQsIGhtYWNfaWQ7XG5AQCAtNjM2LDcgKzYzNiw3IEBAIHZvaWQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuIFx0XHQvKiBlcF9rZXkgY2FuJ3QgYmUgTlVMTCBoZXJlICovXG4gXHRcdGFzb2Nfa2V5ID0gc2N0cF9hdXRoX2Fzb2NfY3JlYXRlX3NlY3JldChhc29jLCBlcF9rZXksIGdmcCk7XG4gXHRcdGlmICghYXNvY19rZXkpXG4tXHRcdFx0cmV0dXJuO1xuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0XHRmcmVlX2tleSA9IDE7XG4gXHR9XG5AQCAtNjU0LDYgKzY1NCw4IEBAIHZvaWQgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuIFxuIFx0aWYgKGZyZWVfa2V5KVxuIFx0XHRzY3RwX2F1dGhfa2V5X3B1dChhc29jX2tleSk7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gLyogQVBJIEhlbHBlcnMgKi9cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9vdXRwdXQuYyBiL25ldC9zY3RwL291dHB1dC5jXG5pbmRleCAyM2U5NjMwNWNhZDdjLi4zZDdlYWQ5ZDQwZTE5IDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvb3V0cHV0LmNcbisrKyBiL25ldC9zY3RwL291dHB1dC5jXG5AQCAtNTE3LDggKzUxNywxNCBAQCBzdGF0aWMgaW50IHNjdHBfcGFja2V0X3BhY2soc3RydWN0IHNjdHBfcGFja2V0ICpwYWNrZXQsXG4gXHRcdH1cbiBcbiBcdFx0aWYgKGF1dGgpIHtcbi1cdFx0XHRzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWModHAtXHUwMDNlYXNvYywgbnNrYiwgYXV0aCxcbi1cdFx0XHRcdFx0XHQgcGFja2V0LVx1MDAzZWF1dGgtXHUwMDNlc2hrZXksIGdmcCk7XG4rXHRcdFx0aWYgKHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyh0cC1cdTAwM2Vhc29jLCBuc2tiLCBhdXRoLFxuK1x0XHRcdFx0XHRcdCAgICAgcGFja2V0LVx1MDAzZWF1dGgtXHUwMDNlc2hrZXksIGdmcCkpIHtcbitcdFx0XHRcdHNjdHBfY2h1bmtfZnJlZShwYWNrZXQtXHUwMDNlYXV0aCk7XG4rXHRcdFx0XHRwYWNrZXQtXHUwMDNlYXV0aCA9IE5VTEw7XG4rXHRcdFx0XHRpZiAoZ3NvKVxuK1x0XHRcdFx0XHRrZnJlZV9za2IobnNrYik7XG4rXHRcdFx0XHRyZXR1cm4gLUVOT01FTTtcbitcdFx0XHR9XG4gXHRcdFx0LyogZnJlZSBhdXRoIGlmIG5vIG1vcmUgY2h1bmtzLCBvciBhZGQgaXQgYmFjayAqL1xuIFx0XHRcdGlmIChsaXN0X2VtcHR5KFx1MDAyNnBhY2tldC1cdTAwM2VjaHVua19saXN0KSlcbiBcdFx0XHRcdHNjdHBfY2h1bmtfZnJlZShwYWNrZXQtXHUwMDNlYXV0aCk7XG5AQCAtNjE5LDcgKzYyNSw3IEBAIGludCBzY3RwX3BhY2tldF90cmFuc21pdChzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBhY2tldCwgZ2ZwX3QgZ2ZwKVxuIFxuIFx0LyogcGFjayB1cCBjaHVua3MgKi9cbiBcdHBrdF9jb3VudCA9IHNjdHBfcGFja2V0X3BhY2socGFja2V0LCBoZWFkLCBnc28sIGdmcCk7XG4tXHRpZiAoIXBrdF9jb3VudCkge1xuK1x0aWYgKHBrdF9jb3VudCBcdTAwM2M9IDApIHtcbiBcdFx0a2ZyZWVfc2tiKGhlYWQpO1xuIFx0XHRnb3RvIG91dDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5pbmRleCA3MDhmYTA3ZDVmZmZjLi5iYjg5YzliNTJlMGIwIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbisrKyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5AQCAtNDQ1NSw5ICs0NDU1LDEyIEBAIHN0YXRpYyBlbnVtIHNjdHBfaWVycm9yIHNjdHBfc2ZfYXV0aGVudGljYXRlKFxuIFxuIFx0bWVtc2V0KGRpZ2VzdCwgMCwgc2lnX2xlbik7XG4gXG4tXHRzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWMoYXNvYywgY2h1bmstXHUwMDNlc2tiLFxuLVx0XHRcdFx0IChzdHJ1Y3Qgc2N0cF9hdXRoX2NodW5rICopY2h1bmstXHUwMDNlY2h1bmtfaGRyLFxuLVx0XHRcdFx0IHNoX2tleSwgR0ZQX0FUT01JQyk7XG4rXHRpZiAoc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjKGFzb2MsIGNodW5rLVx1MDAzZXNrYixcbitcdFx0XHRcdCAgICAgKHN0cnVjdCBzY3RwX2F1dGhfY2h1bmsgKiljaHVuay1cdTAwM2VjaHVua19oZHIsXG4rXHRcdFx0XHQgICAgIHNoX2tleSwgR0ZQX0FUT01JQykpIHtcbitcdFx0a2ZyZWUoc2F2ZV9kaWdlc3QpO1xuK1x0XHRyZXR1cm4gU0NUUF9JRVJST1JfTk9NRU07XG4rXHR9XG4gXG4gXHQvKiBEaXNjYXJkIHRoZSBwYWNrZXQgaWYgdGhlIGRpZ2VzdHMgZG8gbm90IG1hdGNoICovXG4gXHRpZiAoY3J5cHRvX21lbW5lcShzYXZlX2RpZ2VzdCwgZGlnZXN0LCBzaWdfbGVuKSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MTEuNzA4NjU5NDY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI0NDk4NDcyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNDVFAgQXV0aGVudGljYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIG1lc3Npbmcgd2l0aCB0aGUgU0NUUCBhdXRoZW50aWNhdGlvbiBjb2RlLiBUaGUga2V5IGNoYW5nZSBzZWVtcyB0byBiZSBpbiBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYC4gSXQncyBnb2luZyBmcm9tIGB2b2lkYCB0byByZXR1cm5pbmcgYW4gYGludGAuIFRoYXQncyBhIGZ1bmRhbWVudGFsIHNoaWZ0IGluIGhvdyBpdCBiZWhhdmVzLCBjbGVhcmx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgcmV0dXJuIHZhbHVlLiBJIHNlZSB0aGF0IGBzY3RwX3BhY2tldF9wYWNrYCBhbmQgYHNjdHBfc2ZfYXV0aGVudGljYXRlYCBhcmUgaGFuZGxpbmcgdGhpcyBuZXcgcmV0dXJuIHZhbHVlLCBzbyB0aG9zZSBhcmUga2V5IGFyZWFzIG9mIGZvY3VzLlxuXG5SaWdodCwgdGltZSB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBuYWlsIGRvd24gdGhlIHJlbGV2YW50IHN5bWJvbHMgYW5kIGFueSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyB0byBiZSBhYmxlIHRvIGZ1bGx5IGFzc2VzcyB0aGlzIGNoYW5nZS4gTGV0J3Mgc3RhcnQgd2l0aCB0aGUgYmFzaWNzOyBTQ1RQIGl0c2VsZi4gSSBrbm93IHRoYXQgYENPTkZJR19JUF9TQ1RQYCBpcyB0aGUgYmlnIG9uZSwgdGhlIG1hc3RlciBzd2l0Y2gsIHNvIHRvIHNwZWFrLiBMZXQncyBkbyBhIHF1aWNrIGdyZXAgZm9yIGBJUF9TQ1RQYCBpbiB0aGUgYG5ldC9zY3RwL0tjb25maWdgIGZpbGUgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBhbGwgdGhlIGNvbmZpZ3VyYWJsZSBhc3BlY3RzLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgYmFzZSB0byB3b3JrIGZyb20uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwODowNToxNi45NTM2NDYxMjlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQwNzAzNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NDVFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9LY29uZmlnLTUtXFxubmV0L3NjdHAvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBfU0NUUFxcbm5ldC9zY3RwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA4OjA1OjE3LjAyNzcyMTczNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MDc0NjAzNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIFNDVFAgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBTQ1RQLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSwgYG5ldC9zY3RwL0tjb25maWdgLiBUaGlzIGlzIHRoZSBzdGFuZGFyZCBwbGFjZSB3aGVyZSBrZXJuZWwgbW9kdWxlcyBhbmQgZmVhdHVyZXMgZGVmaW5lIHRoZWlyIGRlcGVuZGVuY2llcyBvbiBvdGhlciBjb21wb25lbnRzLiBJIHdhbnQgdG8gc2VlIHdoaWNoIG90aGVyIG9wdGlvbnMsIGZlYXR1cmVzLCBvciBsaWJyYXJpZXMgbmVlZCB0byBiZSBlbmFibGVkIG9yIGNvbmZpZ3VyZWQgZm9yIFNDVFAgdG8gd29yayBjb3JyZWN0bHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGFueSBjb25mbGljdHMsIHRvby4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGZpZ3VyaW5nIG91dCBob3cgU0NUUCBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAxNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA4OjA1OjE5LjczNTE4NDk2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjdHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBTQ1RQIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudWNvbmZpZyBJUF9TQ1RQXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gICA5OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX1NIQTFcXG4gIDEwOlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX1NIQTI1NlxcbiAgMTE6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfVVRJTFNcXG4gIDEyOlxcdFxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuICAxMzpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gIDE0OlxcdFxcdGhlbHBcXG4gIDE1OlxcdFxcdCAgU3RyZWFtIENvbnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sXFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdCAgRnJvbSBSRkMgMjk2MCBcXHUwMDNjaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjk2MC50eHRcXHUwMDNlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRcXHQgIFxcXCJTQ1RQIGlzIGEgcmVsaWFibGUgdHJhbnNwb3J0IHByb3RvY29sIG9wZXJhdGluZyBvbiB0b3Agb2YgYVxcbiAgMjA6XFx0XFx0ICBjb25uZWN0aW9ubGVzcyBwYWNrZXQgbmV0d29yayBzdWNoIGFzIElQLiAgSXQgb2ZmZXJzIHRoZSBmb2xsb3dpbmdcXG4gIDIxOlxcdFxcdCAgc2VydmljZXMgdG8gaXRzIHVzZXJzOlxcbiAgMjI6XFx0XFxuICAyMzpcXHRcXHQgIC0tIGFja25vd2xlZGdlZCBlcnJvci1mcmVlIG5vbi1kdXBsaWNhdGVkIHRyYW5zZmVyIG9mIHVzZXIgZGF0YSxcXG4gIDI0OlxcdFxcdCAgLS0gZGF0YSBmcmFnbWVudGF0aW9uIHRvIGNvbmZvcm0gdG8gZGlzY292ZXJlZCBwYXRoIE1UVSBzaXplLFxcbiAgMjU6XFx0XFx0ICAtLSBzZXF1ZW5jZWQgZGVsaXZlcnkgb2YgdXNlciBtZXNzYWdlcyB3aXRoaW4gbXVsdGlwbGUgc3RyZWFtcyxcXG4gIDI2OlxcdFxcdCAgd2l0aCBhbiBvcHRpb24gZm9yIG9yZGVyLW9mLWFycml2YWwgZGVsaXZlcnkgb2YgaW5kaXZpZHVhbCB1c2VyXFxuICAyNzpcXHRcXHQgIG1lc3NhZ2VzLFxcbiAgMjg6XFx0XFx0ICAtLSBvcHRpb25hbCBidW5kbGluZyBvZiBtdWx0aXBsZSB1c2VyIG1lc3NhZ2VzIGludG8gYSBzaW5nbGUgU0NUUFxcbiAgMjk6XFx0XFx0ICBwYWNrZXQsIGFuZFxcbiAgMzA6XFx0XFx0ICAtLSBuZXR3b3JrLWxldmVsIGZhdWx0IHRvbGVyYW5jZSB0aHJvdWdoIHN1cHBvcnRpbmcgb2YgbXVsdGktXFxuICAzMTpcXHRcXHQgIGhvbWluZyBhdCBlaXRoZXIgb3IgYm90aCBlbmRzIG9mIGFuIGFzc29jaWF0aW9uLlxcXCJcXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgcHJvdG9jb2wgc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuICAzNDpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY3RwLiBEZWJ1ZyBtZXNzYWdlcyBhcmUgaGFuZGxlZCBieSB0aGVcXG4gIDM1OlxcdFxcdCAga2VybmVsJ3MgZHluYW1pYyBkZWJ1Z2dpbmcgZnJhbWV3b3JrLlxcbiAgMzY6XFx0XFxuICAzNzpcXHRcXHQgIElmIGluIGRvdWJ0LCBzYXkgTi5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0aWYgSVBfU0NUUFxcbiAgNDA6XFx0XFxuICA0MTpcXHRjb25maWcgU0NUUF9EQkdfT0JKQ05UXFxuICA0MjpcXHRcXHRib29sIFxcXCJTQ1RQOiBEZWJ1ZyBvYmplY3QgY291bnRzXFxcIlxcbiAgNDM6XFx0XFx0ZGVwZW5kcyBvbiBQUk9DX0ZTXFxuICA0NDpcXHRcXHRoZWxwXFxuICA0NTpcXHRcXHQgIElmIHlvdSBzYXkgWSwgdGhpcyB3aWxsIGVuYWJsZSBkZWJ1Z2dpbmcgc3VwcG9ydCBmb3IgY291bnRpbmcgdGhlXFxuICA0NjpcXHRcXHQgIHR5cGUgb2Ygb2JqZWN0cyB0aGF0IGFyZSBjdXJyZW50bHkgYWxsb2NhdGVkLiAgVGhpcyBpcyB1c2VmdWwgZm9yXFxuICA0NzpcXHRcXHQgIGlkZW50aWZ5aW5nIG1lbW9yeSBsZWFrcy4gVGhpcyBkZWJ1ZyBpbmZvcm1hdGlvbiBjYW4gYmUgdmlld2VkIGJ5XFxuICA0ODpcXHRcXHQgICdjYXQgL3Byb2MvbmV0L3NjdHAvc2N0cF9kYmdfb2JqY250J1xcbiAgNDk6XFx0XFxuICA1MDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MTkuNzM1MjY2NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzEzMDAyNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFNDVFAgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb24gTW9kaWZpY2F0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgSVBfU0NUUGAgY29uZmlndXJhdGlvbiDigJMgdGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZC4gSSd2ZSBpZGVudGlmaWVkIGZvdXI6IGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgLCBgc2N0cF9wYWNrZXRfcGFja2AsIGBzY3RwX3BhY2tldF90cmFuc21pdGAsIGFuZCBgc2N0cF9zZl9hdXRoZW50aWNhdGVgLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHNjb3BlLiBBcmUgdGhlc2Ugc3RhdGljIG9yIG5vdD8gTGV0J3Mgc2VlLi4uIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIGlzICpub3QqIHN0YXRpYywgc28gaXQncyBsaWtlbHkgY2FsbGFibGUgZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUuIGBzY3RwX3BhY2tldF9wYWNrYCAqaXMqIHN0YXRpYywgbWVhbmluZyBpdCdzIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgdHJhbnNsYXRpb24gdW5pdC4gTGlrZXdpc2UsIGBzY3RwX3BhY2tldF90cmFuc21pdGAgaXMgbm90IHN0YXRpYy4gYHNjdHBfc2ZfYXV0aGVudGljYXRlYCBpcyBzdGF0aWMuXG5cbkdpdmVuIHRoYXQgZGlzdGluY3Rpb24sIEkgd2lsbCBub3cgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGBzY3RwX3BhY2tldF9wYWNrYCBhbmQgYHNjdHBfc2ZfYXV0aGVudGljYXRlYCBzaW5jZSB0aGV5IGFyZSBzdGF0aWMuIEkgbmVlZCB0byBkZWx2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGFyZSBiZWluZyB1c2VkIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIG1vZHVsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4OTMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwODowNToyNC4wMDY1Njg5ODRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NjQyMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfcGFja2V0X3BhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvb3V0cHV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvb3V0cHV0LmM9NDIwPXN0YXRpYyB2b2lkIHNjdHBfcGFja2V0X2dzb19hcHBlbmQoc3RydWN0IHNrX2J1ZmYgKmhlYWQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvc2N0cC9vdXRwdXQuYy00MzUtXFxubmV0L3NjdHAvb3V0cHV0LmM6NDM2OnN0YXRpYyBpbnQgc2N0cF9wYWNrZXRfcGFjayhzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBhY2tldCxcXG5uZXQvc2N0cC9vdXRwdXQuYy00MzctXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpoZWFkLCBpbnQgZ3NvLCBnZnBfdCBnZnApXFxuLS1cXG5uZXQvc2N0cC9vdXRwdXQuYz01NzU9aW50IHNjdHBfcGFja2V0X3RyYW5zbWl0KHN0cnVjdCBzY3RwX3BhY2tldCAqcGFja2V0LCBnZnBfdCBnZnApXFxuLS1cXG5uZXQvc2N0cC9vdXRwdXQuYy02MjYtXFx0LyogcGFjayB1cCBjaHVua3MgKi9cXG5uZXQvc2N0cC9vdXRwdXQuYzo2Mjc6XFx0cGt0X2NvdW50ID0gc2N0cF9wYWNrZXRfcGFjayhwYWNrZXQsIGhlYWQsIGdzbywgZ2ZwKTtcXG5uZXQvc2N0cC9vdXRwdXQuYy02MjgtXFx0aWYgKHBrdF9jb3VudCBcXHUwMDNjPSAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA4OjA1OjI0LjEyNDIxNTcwNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyMjU0NTM1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqQW5hbHl6aW5nIFNDVFAgUGFja2V0IEhhbmRsaW5nIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIFNDVFAgcGFja2V0IGZ1bmN0aW9ucyBhbmQgbmVlZCB0byB1bmRlcnN0YW5kIHRoZWlyIHNjb3BlIGFuZCBob3cgdGhleSdyZSB1c2VkLiBGaXJzdCwgYHNjdHBfcGFja2V0X3BhY2tgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0J3MgaW50ZXJuYWwgdG8gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgbGlrZWx5IG9ubHkgdXNlZCB3aXRoaW4gdGhpcyBzcGVjaWZpYyBtb2R1bGUuIFRoaXMgaXMgdXNlZnVsOyBpdCBtZWFucyBJIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIG9yIGRpcmVjdCBjYWxscyBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIEkgY2FuIGZvY3VzIG9uIGl0cyBsb2NhbCBpbnRlcmFjdGlvbnMuXG5cblRoZW4gdGhlcmUncyBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgLiBUaGlzIG9uZSBpcyBleHBvcnRlZCwgd2hpY2ggbWVhbnMgaXQncyBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRoZSBleHRlcm5hbCBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBtb2R1bGVzLiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VseSBhIGNyaXRpY2FsIHBvaW50IGZvciB0aGUgcGFja2V0IHRyYW5zbWlzc2lvbiBwYXRod2F5LCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBpbnRlcmZhY2UgYW5kIGhvdyBpdCdzIGNhbGxlZCBpcyBpbXBvcnRhbnQuXG5cbkZpbmFsbHksIGBzY3RwX3NmX2F1dGhlbnRpY2F0ZWAgaXMgc3RhdGljIGFzIHdlbGwuIEknbGwgbmVlZCB0byB0cmFjZSBpdHMgY2FsbHMgdG8gc2VlIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoaXMgbW9kdWxlLCBhbmQgaG93IGF1dGhlbnRpY2F0aW9uIGlzIGltcGxlbWVudGVkLiBXaGVyZSBpdCBpcyBjYWxsZWQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MTgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwODowNTozMC4zNDk2NzA4MjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MTkwNzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfc2ZfYXV0aGVudGljYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTE0Mj1zdGF0aWMgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfdmlvbGF0aW9uX2NodW5rKFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtMTQ5LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjE1MDpzdGF0aWMgZW51bSBzY3RwX2llcnJvciBzY3RwX3NmX2F1dGhlbnRpY2F0ZShcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xNTEtXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz02NDA9c3RhdGljIGJvb2wgc2N0cF9hdXRoX2NodW5rX3ZlcmlmeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzY3RwX2NodW5rICpjaHVuayxcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTY2OC1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo2Njk6XFx0cmV0dXJuIHNjdHBfc2ZfYXV0aGVudGljYXRlKGFzb2MsIFxcdTAwMjZhdXRoKSA9PSBTQ1RQX0lFUlJPUl9OT19FUlJPUjtcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy02NzAtfVxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NDMxMz1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9lYXRfZndkX3Rzbl9mYXN0KFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDQwMC0gKi9cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo0NDAxOnN0YXRpYyBlbnVtIHNjdHBfaWVycm9yIHNjdHBfc2ZfYXV0aGVudGljYXRlKFxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQ0MDItXFx0XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz00NDc5PWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2VhdF9hdXRoKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQ1MDUtXFx0YXV0aF9oZHIgPSAoc3RydWN0IHNjdHBfYXV0aGhkciAqKWNodW5rLVxcdTAwM2Vza2ItXFx1MDAzZWRhdGE7XFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NDUwNjpcXHRlcnJvciA9IHNjdHBfc2ZfYXV0aGVudGljYXRlKGFzb2MsIGNodW5rKTtcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy00NTA3LVxcdHN3aXRjaCAoZXJyb3IpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MzAuNDI3ODY3MjU1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTIzNzA0MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OlxuXG4qKkRpdmluZyBpbnRvIFNDVFAgQXV0aGVudGljYXRpb24gSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBTQ1RQIGF1dGhlbnRpY2F0aW9uIGZ1bmN0aW9ucy4gSW50ZXJlc3RpbmcuIGBzY3RwX3NmX2VhdF9hdXRoYCBpcyBkZWZpbmVkIGFzIG5vbi1zdGF0aWMsIHdoaWNoIG1lYW5zIGl0IGhhcyBleHRlcm5hbCBsaW5rYWdlLiBJdCBjYW4gYmUgY2FsbGVkIGZyb20gb3RoZXIgY29tcGlsYXRpb24gdW5pdHMgd2l0aGluIHRoZSBwcm9qZWN0IG9yIGxpbmtlZCBiaW5hcmllcy4gVGhhdOKAmXMgcHJvYmFibHkgYSBrZXkgZnVuY3Rpb24gZm9yIGludGVyYWN0aW5nIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gT24gdGhlIG90aGVyIGhhbmQsIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBpcyBzdGF0aWMuIFRoYXQgbWVhbnMgaXTigJlzIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgdHJhbnNsYXRpb24gdW5pdCwgcHJlc3VtYWJseSBhIGhlbHBlciBmdW5jdGlvbiwgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiB0aGUgYXV0aGVudGljYXRpb24gY2h1bmsgdmVyaWZpY2F0aW9uIGxvZ2ljLlxuXG5Ob3csIEkgbmVlZCB0byBzZWUgKmhvdyogdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkLiBMZXQgbWUgY2hlY2sgdGhlIGNvZGUgd2hlcmUgYHNjdHBfc2ZfZWF0X2F1dGhgIGFuZCBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgIGFyZSB1c2VkLCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGZpdCB0b2dldGhlciBpbiB0aGUgYXV0aGVudGljYXRpb24gcHJvY2Vzc2luZyBhbmQgdHJhbnNtaXNzaW9uIHdvcmtmbG93LiBJIHN1c3BlY3QgYHNjdHBfcGFja2V0X3RyYW5zbWl0YCBtaWdodCBiZSBwYXNzaW5nIHRoZSBuZWNlc3NhcnkgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gb3IgdXNpbmcgdGhlIHJlc3VsdHMgb2YgYHNjdHBfc2ZfZWF0X2F1dGhgLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxscyB0byB0aGVzZSBmdW5jdGlvbnMsIGFuZCBob3cgdGhleSBpbnRlcmFjdCwgd2lsbCBnaXZlIG1lIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTIxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MzQuMTgwMjQyNjg3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Njc3OTY0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3NmX2VhdF9hdXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz00NDAxPXN0YXRpYyBlbnVtIHNjdHBfaWVycm9yIHNjdHBfc2ZfYXV0aGVudGljYXRlKFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDQ3OC1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo0NDc5OmVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2VhdF9hdXRoKHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy00NDgwLVxcdFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM9NDk4PXJlY29uZl9jaHVua19ldmVudF90YWJsZVtTQ1RQX05VTV9SRUNPTkZfQ0hVTktfVFlQRVNdW1NDVFBfU1RBVEVfTlVNX1NUQVRFU10gPSB7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTA3LVxcdC8qIFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRCAqLyBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjUwODpcXHRUWVBFX1NDVFBfRlVOQyhzY3RwX3NmX2VhdF9hdXRoKSwgXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy01MDktXFx0LyogU0NUUF9TVEFURV9FU1RBQkxJU0hFRCAqLyBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjUxMDpcXHRUWVBFX1NDVFBfRlVOQyhzY3RwX3NmX2VhdF9hdXRoKSwgXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy01MTEtXFx0LyogU0NUUF9TVEFURV9TSFVURE9XTl9QRU5ESU5HICovIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6NTEyOlxcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZWF0X2F1dGgpLCBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTUxMy1cXHQvKiBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQgKi8gXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYzo1MTQ6XFx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9lYXRfYXV0aCksIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTE1LVxcdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fUkVDRUlWRUQgKi8gXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYzo1MTY6XFx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9lYXRfYXV0aCksIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTE3LVxcdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQgKi8gXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYzo1MTg6XFx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9lYXRfYXV0aCksIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNTE5LX0gLyogVFlQRV9TQ1RQX0FVVEggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6MzQuMjQ3MDI2MjAyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5MzY1NTAyMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgU0NUUCBDb2RlIENoYW5nZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIHN0YXRlIG1hY2hpbmUgZnVuY3Rpb24sIGBzY3RwX3NmX2VhdF9hdXRoYCwgd2hpY2ggaXMgYSBrZXkgcHJvY2VzcywgYW5kIGFsc28gb24gYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AuIEkgc2hvdWxkIGFsc28ga2VlcCBgc2N0cF9wYWNrZXRfdHJhbnNtaXRgIGluIG1pbmQgYXMgd2VsbC4gSSdtIGZvY3VzaW5nIG9uIHRoZSBzaWduaWZpY2FudCBwYXJ0cy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJdCBsb29rcyBsaWtlIGBJUF9TQ1RQYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbi4gQWgsIHdhaXQsIHRoZXJlJ3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBoZXJlOyB0aGUgcGF0Y2ggaXMgY2hhbmdpbmcgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AgdG8gcmV0dXJuIGAtRU5PTUVNYCBpbnN0ZWFkIG9mIGB2b2lkYC4gVGhhdCdzIG5vdCBqdXN0IGEgbWlub3IgdHdlYWs7IGl0J3MgYSBzdHJ1Y3R1cmFsIGFsdGVyYXRpb24uIEEgcmV0dXJuIHZhbHVlIGlzIGEgbXVjaCBzdHJvbmdlciBzaWduYWwsIGluZGljYXRpbmcgcG90ZW50aWFsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgd2hpY2ggbXVzdCBiZSBoYW5kbGVkLlxuXG5UbyBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgZGV0YWlscywgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYCBpbiBgbmV0L3NjdHAvYXV0aC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSB0aG9yb3VnaGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTE4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA4OjA1OjQ0LjE4MzU4MDk1MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg3NDI4ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL2F1dGguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9hdXRoLmM9NTk1PWludCBzY3RwX2F1dGhfcmVjdl9jaWQoZW51bSBzY3RwX2NpZCBjaHVuaywgY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpXFxuLS1cXG5uZXQvc2N0cC9hdXRoLmMtNjE1LSAqL1xcbm5ldC9zY3RwL2F1dGguYzo2MTY6aW50IHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcXG5uZXQvc2N0cC9hdXRoLmMtNjE3LVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNjdHBfYXV0aF9jaHVuayAqYXV0aCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6NDQuMjQyMzI5NDk2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1ODk1ODk0MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgRnVuY3Rpb25hbCBQYXRjaCoqXG5cbk9rYXksIHRoaXMgcGF0Y2ggc2VlbXMgc29saWQsIGl0J3MgZGVmaW5pdGVseSBmdW5jdGlvbmFsIGFuZCBkZXNlcnZlcyBhIGdvb2QgZnV6emluZyBjYW1wYWlnbi4gSSdtIHRoaW5raW5nIHdlIHNob3VsZCB6ZXJvIGluIG9uIGEgZmV3IGtleSBzeW1ib2xzIHRvIGd1aWRlIHRoYXQgcHJvY2VzczogYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AsIGBzY3RwX3BhY2tldF90cmFuc21pdGAsIGFuZCBgc2N0cF9zZl9lYXRfYXV0aGAuIFRoZXNlIGxvb2sgbGlrZSBwcmltZSB0YXJnZXRzIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBMZXQncyBzZWUgaWYgdGhlIGZpcnN0IG9uZSwgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AsIGlzIGV4cG9ydGVkIHByb3Blcmx5OyBpdCB3b3VsZCBiZSBwcmV0dHkgdXNlbGVzcyBpZiBpdCdzIG5vdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODExNywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA4OjA1OjUzLjgzMTkyMTE5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA2Nzg0MjIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKnNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA4OjA1OjUzLjk0MjYwNTY5MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDI3ODQ5MDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqRXhhbWluaW5nIFNDVFAgRnVuY3Rpb24gVmlzaWJpbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIFNDVFAgZnVuY3Rpb25zLiBUaGUgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IHdoaWxlIGl0J3Mgbm90IGV4cG9ydGVkIChtZWFuaW5nIGl0J3Mgbm90IHBhcnQgb2YgdGhlIGV4dGVybmFsIEFQSSwgbGlrZWx5KSwgaXQgaXMgKm5vdCogZGVjbGFyZWQgYXMgYHN0YXRpY2AuICBTcGVjaWZpY2FsbHksIEknbSBub3RpbmcgdGhhdCBgc2N0cF9zZl9lYXRfYXV0aGAgaXMgbm9uLXN0YXRpYywgYW5kIGFsc28gYHNjdHBfcGFja2V0X3RyYW5zbWl0YCBpcyBub24tc3RhdGljLiBUaGlzIGNvdWxkIGJlIHJlbGV2YW50IGZvciBsYXRlciBtb2RpZmljYXRpb25zIG9yIGFuYWx5c2lzLlxuXG5Ob3csIG15IGZvY3VzIHNoaWZ0cyB0byBpZGVudGlmeWluZyAqb3RoZXIqIGZ1bmN0aW9ucyBhbmQgdGhlaXIgdmlzaWJpbGl0eS4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBJJ20gY2hlY2tpbmcgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgYXV0aGVudGljYXRpb24gbG9naWMuXG5cbkhtbSwgYHNjdHBfYXV0aF9jaHVua192ZXJpZnlgICppcyogc3RhdGljLiBUaGF0J3MgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG90aGVyIGZ1bmN0aW9uIEkgaGF2ZSBpbiBtaW5kLiBXYWl0IGEgbW9tZW50LCBJIG1pc3JlYWQgc29tZXRoaW5nLiBJdCBsb29rcyBsaWtlIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBpcyAqY2FsbGVkKiBieSBgc2N0cF9zZl9hdXRoZW50aWNhdGVgLiBJdCBpc24ndCB0aGUgb3RoZXIgd2F5IGFyb3VuZC4gT2theSwgSSB3YXMgbW9tZW50YXJpbHkgY29uZnVzZWQgdGhlcmUuIFRvIGJlIHN1cmUgYWJvdXQgdGhlIGNhbGxpbmcgc3RydWN0dXJlLCBsZXQgbWUgdmVyaWZ5IHdoZXJlIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBpcyBhY3R1YWxseSBjYWxsZWQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODM3MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwODowNTo1OC4zNzA0NTc5NDVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMDg0MTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfYXV0aF9jaHVua192ZXJpZnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTUyMT1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFDX2FjayhzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy02MzktXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NjQwOnN0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua192ZXJpZnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNjQxLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKVxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NzAzPWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMURfY2Uoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtODI4LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjgyOTpcXHRpZiAoIXNjdHBfYXV0aF9jaHVua192ZXJpZnkobmV0LCBjaHVuaywgbmV3X2Fzb2MpKSB7XFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtODMwLVxcdFxcdHNjdHBfYXNzb2NpYXRpb25fZnJlZShuZXdfYXNvYyk7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0xODgyPXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2EoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xOTA2LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjE5MDc6XFx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIG5ld19hc29jKSlcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0xOTA4LVxcdFxcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0RJU0NBUkQ7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0yMDA1PXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2IoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMDI2LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIwMjc6XFx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIG5ld19hc29jKSlcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMDI4LVxcdFxcdHJldHVybiBTQ1RQX0RJU1BPU0lUSU9OX0RJU0NBUkQ7XFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz0yMTEyPXN0YXRpYyBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19kdXBjb29rX2QoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMTI5LVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIxMzA6XFx0aWYgKCFzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KG5ldCwgY2h1bmssIGFzb2MpKVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIxMzEtXFx0XFx0cmV0dXJuIFNDVFBfRElTUE9TSVRJT05fRElTQ0FSRDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDg6MDU6NTguNDQzNTUwMDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU1MjM4MjU4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBTQ1RQIEF1dGhlbnRpY2F0aW9uIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgc2N0cF9zZl9hdXRoZW50aWNhdGVgIGdldHMgaW52b2tlZCBieSBib3RoIGBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5YCBhbmQgYHNjdHBfc2ZfZWF0X2F1dGhgLCBidXQgdGhlIHJlYWwgd29ya2hvcnNlIGZvciBBVVRIIGNodW5rIHByb2Nlc3Npbmcgc2VlbXMgdG8gYmUgYHNjdHBfc2ZfZWF0X2F1dGhgLiBOb3csIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIGlzIGNydWNpYWwgYXMgd2VsbCwgZ2V0dGluZyBjYWxsZWQgZnJvbSBib3RoIGBzY3RwX3BhY2tldF9wYWNrYCAqYW5kKiBgc2N0cF9zZl9hdXRoZW50aWNhdGVgLiBUaGlzIGdpdmVzIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBmdW5jdGlvbiBjYWxscyBhbmQgdGhlIGRhdGEgZmxvdy5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgY3J1Y2lhbCBjb25maWcgaXMgYElQX1NDVFBgLCB3aGljaCBpcyBhcyBleHBlY3RlZC4gYElQX1NDVFBgIGRlcGVuZHMgb24gYElORVRgLCB3aGljaCBpcyBwcmFjdGljYWxseSBhIGdpdmVuLiBUaGVyZWZvcmUsIGBJUF9TQ1RQYCBpcyBzdWZmaWNpZW50IGZvciBlbmFibGVtZW50LlxuXG5Ob3csIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJIG5lZWQgdG8gY29uZmlybSB0aGVzZSBjcml0aWNhbCBmdW5jdGlvbnMgYXJlIGV4dGVybmFsbHkgdmlzaWJsZSwgdGhhdCB0aGV5J3JlIG5vdCBkZWNsYXJlZCBzdGF0aWMuIExldCdzIHNlZS4uLiB5ZXAsIGBzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNgIGlzIG5vbi1zdGF0aWMsIGp1c3QgbGlrZSBJIGV4cGVjdC4gU2ltaWxhcmx5LCBib3RoIGBzY3RwX3BhY2tldF90cmFuc21pdGAgYW5kIGBzY3RwX3NmX2VhdF9hdXRoYCBhcmUgbm9uLXN0YXRpYyBhcyB3ZWxsLiBUaGF0IGNvbmZpcm1zIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcHJvcGVybHkgZXhwb3NlZCBhbmQgY2FuIGJlIGNhbGxlZCBmcm9tIG90aGVyIG1vZHVsZXMgb3IgbGF5ZXJzLlxuXG5BbHJpZ2h0LCB0aGF0IGNvdmVycyBldmVyeXRoaW5nLiBUaW1lIHRvIHNldC1yZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTQ4LCJPdXRwdXRUb2tlbnMiOjE2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwODowNjowNC45OTU5MzU1NDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY5NzU3MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX2F1dGhfY2FsY3VsYXRlX2htYWNcIixcbiAgICBcInNjdHBfcGFja2V0X3RyYW5zbWl0XCIsXG4gICAgXCJzY3RwX3NmX2VhdF9hdXRoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgU0NUUCBhdXRoZW50aWNhdGlvbiBjb2RlIHRvIGhhbmRsZSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyBkdXJpbmcgSE1BQyBjYWxjdWxhdGlvbi4gSXQgY2hhbmdlcyBgc2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjYCB0byByZXR1cm4gYW4gZXJyb3IgY29kZSBhbmQgdXBkYXRlcyBpdHMgY2FsbGVycyAoYHNjdHBfcGFja2V0X3BhY2tgIGFuZCBgc2N0cF9zZl9hdXRoZW50aWNhdGVgKSB0byBoYW5kbGUgdGhlIGVycm9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgU0NUUCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHByb3BlciBlcnJvciBoYW5kbGluZyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9hdXRoX2NhbGN1bGF0ZV9obWFjXCIsXG4gICAgXCJzY3RwX3BhY2tldF90cmFuc21pdFwiLFxuICAgIFwic2N0cF9zZl9lYXRfYXV0aFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgYXV0aGVudGljYXRpb24gY29kZSB0byBoYW5kbGUgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMgZHVyaW5nIEhNQUMgY2FsY3VsYXRpb24uIEl0IGNoYW5nZXMgYHNjdHBfYXV0aF9jYWxjdWxhdGVfaG1hY2AgdG8gcmV0dXJuIGFuIGVycm9yIGNvZGUgYW5kIHVwZGF0ZXMgaXRzIGNhbGxlcnMgKGBzY3RwX3BhY2tldF9wYWNrYCBhbmQgYHNjdHBfc2ZfYXV0aGVudGljYXRlYCkgdG8gaGFuZGxlIHRoZSBlcnJvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFNDVFAgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzIG9yIGNyYXNoZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfmxp4[1] Phase: Succeeded StartedAt: 2026-08-07 08:06:16 +0000 UTC FinishedAt: 2026-08-07 08:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 08:06:16 +0000 UTC FinishedAt: 2026-08-07 08:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2] Phase: Succeeded StartedAt: 2026-08-07 08:06:16 +0000 UTC FinishedAt: 2026-08-07 11:51:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 08:06:16 +0000 UTC FinishedAt: 2026-08-07 11:51:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 08:06:16 +0000 UTC FinishedAt: 2026-08-07 08:06:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 08:06:16 +0000 UTC FinishedAt: 2026-08-07 08:06:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfmxp4/series-workflowfmxp4-convert-artifact-452277300/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 08:06:26 +0000 UTC FinishedAt: 2026-08-07 08:25:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 08:06:26 +0000 UTC FinishedAt: 2026-08-07 08:25:18 +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:*c0aa3b6b-ba19-434f-939d-a1003847f601,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-workflowfmxp4/series-workflowfmxp4-convert-artifact-452277300/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": "7e26019a-1d5a-4fd3-88e7-180c3a9e0e31", "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-workflowfmxp4/series-workflowfmxp4-build-action-2002315826/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 08:06:26 +0000 UTC FinishedAt: 2026-08-07 08:25:08 +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:*c0aa3b6b-ba19-434f-939d-a1003847f601,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-workflowfmxp4/series-workflowfmxp4-convert-artifact-452277300/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": "7e26019a-1d5a-4fd3-88e7-180c3a9e0e31", "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-workflowfmxp4/series-workflowfmxp4-build-action-2002315826/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 08:25:18 +0000 UTC FinishedAt: 2026-08-07 08:25:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 08:25:18 +0000 UTC FinishedAt: 2026-08-07 08:25:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 08:25:18 +0000 UTC FinishedAt: 2026-08-07 08:25:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 08:25:18 +0000 UTC FinishedAt: 2026-08-07 08:25:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfmxp4/series-workflowfmxp4-convert-artifact-2080535027/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 08:25:28 +0000 UTC FinishedAt: 2026-08-07 08:27:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 08:25:28 +0000 UTC FinishedAt: 2026-08-07 08:27:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7e26019a-1d5a-4fd3-88e7-180c3a9e0e31,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-workflowfmxp4/series-workflowfmxp4-build-action-2002315826/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-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 08:27:27 +0000 UTC FinishedAt: 2026-08-07 08:27:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 08:27:27 +0000 UTC FinishedAt: 2026-08-07 08:27:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 08:27:27 +0000 UTC FinishedAt: 2026-08-07 08:46:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 08:27:27 +0000 UTC FinishedAt: 2026-08-07 08:46:17 +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:*c0aa3b6b-ba19-434f-939d-a1003847f601,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-workflowfmxp4/series-workflowfmxp4-convert-artifact-2080535027/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": "e69e3cad-2451-4891-a797-14d53116f42c", "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-workflowfmxp4/series-workflowfmxp4-build-action-3777571239/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 08:27:27 +0000 UTC FinishedAt: 2026-08-07 08:46:07 +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:*c0aa3b6b-ba19-434f-939d-a1003847f601,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-workflowfmxp4/series-workflowfmxp4-convert-artifact-2080535027/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": "e69e3cad-2451-4891-a797-14d53116f42c", "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-workflowfmxp4/series-workflowfmxp4-build-action-3777571239/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 08:46:17 +0000 UTC FinishedAt: 2026-08-07 08:46:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 08:46:17 +0000 UTC FinishedAt: 2026-08-07 08:46:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 08:46:17 +0000 UTC FinishedAt: 2026-08-07 08:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 08:46:17 +0000 UTC FinishedAt: 2026-08-07 08:48:11 +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:*e69e3cad-2451-4891-a797-14d53116f42c,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-workflowfmxp4/series-workflowfmxp4-build-action-3777571239/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-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 08:48:21 +0000 UTC FinishedAt: 2026-08-07 11:51:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 08:48:21 +0000 UTC FinishedAt: 2026-08-07 11:51:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"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:*7e26019a-1d5a-4fd3-88e7-180c3a9e0e31,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e69e3cad-2451-4891-a797-14d53116f42c,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-workflowfmxp4/series-workflowfmxp4-build-action-2002315826/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-workflowfmxp4/series-workflowfmxp4-build-action-3777571239/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 08:48:21 +0000 UTC FinishedAt: 2026-08-07 08:48:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 08:48:21 +0000 UTC FinishedAt: 2026-08-07 08:48:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"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-workflowfmxp4/series-workflowfmxp4-convert-artifact-567247084/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 08:48:21 +0000 UTC FinishedAt: 2026-08-07 08:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 08:48:21 +0000 UTC FinishedAt: 2026-08-07 08:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 08:48:21 +0000 UTC FinishedAt: 2026-08-07 08:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 08:48:31 +0000 UTC FinishedAt: 2026-08-07 11:51:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfmxp4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_auth_calculate_hmac","sctp_packet_transmit","sctp_sf_eat_auth"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"7303b63f-2169-473c-bb74-2e4b07b1ea16","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 08:48:31 +0000 UTC FinishedAt: 2026-08-07 11:50:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7e26019a-1d5a-4fd3-88e7-180c3a9e0e31,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e69e3cad-2451-4891-a797-14d53116f42c,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-workflowfmxp4/series-workflowfmxp4-build-action-2002315826/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-workflowfmxp4/series-workflowfmxp4-build-action-3777571239/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-workflowfmxp4/series-workflowfmxp4-convert-artifact-567247084/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,}