Name: series-workflow728jk Phase: Running StartedAt: 2026-06-27 08:46:59 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[0] Phase: Succeeded StartedAt: 2026-06-27 08:46:59 +0000 UTC FinishedAt: 2026-06-27 08:59:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[0].run-triage Phase: Succeeded StartedAt: 2026-06-27 08:46:59 +0000 UTC FinishedAt: 2026-06-27 08:59:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "795f1b1a91ae13ebc012a364075e42f486a1cafe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "795f1b1a91ae13ebc012a364075e42f486a1cafe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "933d06a2-080f-487d-b106-845b1dac0862" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_del_link_station", "ieee80211_add_link_station", "ieee80211_assoc_success", "ieee80211_ml_reconf_work", "ieee80211_mgd_assoc_ml_reconf", "ieee80211_process_ml_reconf_resp" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI3IDA4OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb24mIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2FkZF9saW5rX3N0YXRpb24mIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3MmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX21sX3JlY29uZl93b3JrJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9tZ2RfYXNzb2NfbWxfcmVjb25mJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBzdGFfcmVtb3ZlX2xpbmtgIGluIG1hYzgwMjExIHRvIGRlZmVyIGZyZWVpbmcgb2YgYHN0YV9pbmZvX2ZyZWVfbGlua2AgdXNpbmcgYGNhbGxfcmN1YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbi4gSXQgaXMgcmVhY2hhYmxlIHZpYSBtYWM4MDIxMV9od3NpbSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ4ZjgxYzI1MWNjNWI0MWM0YWMwYzAwYzFkMDljNWY3NTYwOGVjM2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwODo1ODozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uYyBiL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jXG5pbmRleCA0YzMxZWY4ODE3Y2UwNy4uNmQ1ODU3MWEzNjRkMTQgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmNcbkBAIC0zNTUsNiAmIzQzOzM1NSwxNSBAQCBzdGF0aWMgdm9pZCBzdGFfaW5mb19mcmVlX2xpbmsoc3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhKVxuIFx0ZnJlZV9wZXJjcHUobGlua19zdGEtXHUwMDNlcGNwdV9yeF9zdGF0cyk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBzdGFfbGlua19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc3RhX2xpbmtfYWxsb2MgKmFsbG9jID1cbiYjNDM7XHRcdGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3Qgc3RhX2xpbmtfYWxsb2MsIHJjdV9oZWFkKTtcbiYjNDM7XG4mIzQzO1x0c3RhX2luZm9fZnJlZV9saW5rKFx1MDAyNmFsbG9jLVx1MDAzZWluZm8pO1xuJiM0MztcdGtmcmVlKGFsbG9jKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBzdGFfYWNjdW11bGF0ZV9yZW1vdmVkX2xpbmtfc3RhdHMoc3RydWN0IHN0YV9pbmZvICpzdGEsIGludCBsaW5rX2lkKVxuIHtcbiBcdHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSA9IHdpcGh5X2RlcmVmZXJlbmNlKHN0YS1cdTAwM2Vsb2NhbC1cdTAwM2Vody53aXBoeSxcbkBAIC00MzksMTAgJiM0Mzs0NDgsOCBAQCBzdGF0aWMgdm9pZCBzdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkLFxuIFxuIFx0UkNVX0lOSVRfUE9JTlRFUihzdGEtXHUwMDNlbGlua1tsaW5rX2lkXSwgTlVMTCk7XG4gXHRSQ1VfSU5JVF9QT0lOVEVSKHN0YS1cdTAwM2VzdGEubGlua1tsaW5rX2lkXSwgTlVMTCk7XG4tXHRpZiAoYWxsb2MpIHtcbi1cdFx0c3RhX2luZm9fZnJlZV9saW5rKFx1MDAyNmFsbG9jLVx1MDAzZWluZm8pO1xuLVx0XHRrZnJlZV9yY3UoYWxsb2MsIHJjdV9oZWFkKTtcbi1cdH1cbiYjNDM7XHRpZiAoYWxsb2MpXG4mIzQzO1x0XHRjYWxsX3JjdShcdTAwMjZhbGxvYy1cdTAwM2VyY3VfaGVhZCwgc3RhX2xpbmtfZnJlZV9yY3UpO1xuIFxuIFx0aWVlZTgwMjExX3N0YV9yZWNhbGNfYWdncmVnYXRlcyhcdTAwMjZzdGEtXHUwMDNlc3RhKTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDg6NTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfZGVsX2xpbmtfc3RhdGlvbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYWRkX2xpbmtfc3RhdGlvbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWxfcmVjb25mX3dvcmsmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX21nZF9hc3NvY19tbF9yZWNvbmYmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0YV9yZW1vdmVfbGlua2AgaW4gbWFjODAyMTEgdG8gZGVmZXIgZnJlZWluZyBvZiBgc3RhX2luZm9fZnJlZV9saW5rYCB1c2luZyBgY2FsbF9yY3VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9uLiBJdCBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkOGY4MWMyNTFjYzViNDFjNGFjMGMwMGMxZDA5YzVmNzU2MDhlYzNmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjcgMDg6NTg6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uYyBiL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jCmluZGV4IDRjMzFlZjg4MTdjZTA3Li42ZDU4NTcxYTM2NGQxNCAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMKQEAgLTM1NSw2ICYjNDM7MzU1LDE1IEBAIHN0YXRpYyB2b2lkIHN0YV9pbmZvX2ZyZWVfbGluayhzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEpCiAJZnJlZV9wZXJjcHUobGlua19zdGEtJmd0O3BjcHVfcnhfc3RhdHMpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgc3RhX2xpbmtfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKQomIzQzO3sKJiM0MzsJc3RydWN0IHN0YV9saW5rX2FsbG9jICphbGxvYyA9CiYjNDM7CQljb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHN0YV9saW5rX2FsbG9jLCByY3VfaGVhZCk7CiYjNDM7CiYjNDM7CXN0YV9pbmZvX2ZyZWVfbGluaygmYW1wO2FsbG9jLSZndDtpbmZvKTsKJiM0MzsJa2ZyZWUoYWxsb2MpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHN0YV9hY2N1bXVsYXRlX3JlbW92ZWRfbGlua19zdGF0cyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IGxpbmtfaWQpCiB7CiAJc3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhID0gd2lwaHlfZGVyZWZlcmVuY2Uoc3RhLSZndDtsb2NhbC0mZ3Q7aHcud2lwaHksCkBAIC00MzksMTAgJiM0Mzs0NDgsOCBAQCBzdGF0aWMgdm9pZCBzdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkLAogCiAJUkNVX0lOSVRfUE9JTlRFUihzdGEtJmd0O2xpbmtbbGlua19pZF0sIE5VTEwpOwogCVJDVV9JTklUX1BPSU5URVIoc3RhLSZndDtzdGEubGlua1tsaW5rX2lkXSwgTlVMTCk7Ci0JaWYgKGFsbG9jKSB7Ci0JCXN0YV9pbmZvX2ZyZWVfbGluaygmYW1wO2FsbG9jLSZndDtpbmZvKTsKLQkJa2ZyZWVfcmN1KGFsbG9jLCByY3VfaGVhZCk7Ci0JfQomIzQzOwlpZiAoYWxsb2MpCiYjNDM7CQljYWxsX3JjdSgmYW1wO2FsbG9jLSZndDtyY3VfaGVhZCwgc3RhX2xpbmtfZnJlZV9yY3UpOwogCiAJaWVlZTgwMjExX3N0YV9yZWNhbGNfYWdncmVnYXRlcygmYW1wO3N0YS0mZ3Q7c3RhKTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hYzgwMjExIFNUQSBSZW1vdmFsIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L21hYzgwMjExL3N0YV9pbmZvLmNgLiBUaGUgY29yZSBjaGFuZ2UgaXMgaW4gaG93IGBzdGFfcmVtb3ZlX2xpbmtgIGhhbmRsZXMgZGVhbGxvY2F0aW9uLiBJdCYjMzk7cyBtb3ZpbmcgZnJvbSBhIHN5bmNocm9ub3VzIGBrZnJlZV9yY3VgIHdpdGggYW4gaW1tZWRpYXRlIGBzdGFfaW5mb19mcmVlX2xpbmtgIHRvIGEgYGNhbGxfcmN1YCBhcHByb2FjaC4KCkkgc2VlIHRoZSBvbGQgY29kZSBzbmlwcGV0OgoKYGBgYwoJaWYgKGFsbG9jKSB7CgkJc3RhX2luZm9fZnJlZV9saW5rKCZhbXA7YWxsb2MtJmd0O2luZm8pOwoJCWtmcmVlX3JjdShhbGxvYywgcmN1X2hlYWQpOwoJfQpgYGAKCkFuZCB0aGUgbmV3IGNvZGU6CgpgYGBjCglpZiAoYWxsb2MpCgkJY2FsbF9yY3UoJmFtcDthbGxvYy0mZ3Q7cmN1X2hlYWQsIHN0YV9saW5rX2ZyZWVfcmN1KTsKYGBgCgpFc3NlbnRpYWxseSwgaW5zdGVhZCBvZiBpbW1lZGlhdGVseSBmcmVlaW5nIHRoZSBgc3RhX2xpbmtfYWxsb2NgIHN0cnVjdCwgd2UmIzM5O3JlIG5vdyBkZWZlcnJpbmcgaXQgdG8gYW4gUkNVIGNhbGxiYWNrLCBgc3RhX2xpbmtfZnJlZV9yY3VgLiBUaGlzIGNhbGxiYWNrIHRoZW4gY2FsbHMgYHN0YV9pbmZvX2ZyZWVfbGlua2AgYW5kIHRoZW4gYGtmcmVlYC4KClRoZSBjcnVjaWFsIHBhcnQgaGVyZSBpcyB0aGUgcmF0aW9uYWxlOiBgc3RhX2luZm9fZnJlZV9saW5rYCBkb2VzIGltcG9ydGFudCBjbGVhbnVwIOKAkyBwZXJjcHUgc3RhdHMsIGFuZCBvdGhlciBvcGVyYXRpb25zLCB0aGF0IG1heSBiZSBzdWJqZWN0IHRvIFJDVSByZWFkLXNpZGUgYWNjZXNzZXMuIFByZXZpb3VzbHksIGl0IHdhcyBiZWluZyBjYWxsZWQgKmJlZm9yZSogdGhlIFJDVSBncmFjZSBwZXJpb2QsIGFuZCB0aGF0IGNvdWxkIGludHJvZHVjZSBhIHN1YnRsZSByYWNlIGNvbmRpdGlvbi4gQnkgZGVmZXJyaW5nIGl0IHRvIHRoZSBSQ1UgY2FsbGJhY2ssIHdlIGd1YXJhbnRlZSB0aGF0IGFueSByZWFkZXJzIHN0aWxsIHJlZmVyZW5jaW5nIHRoZSBkYXRhIHN0cnVjdHVyZSBoYXZlIGNvbXBsZXRlZCB0aGVpciBjcml0aWNhbCBzZWN0aW9ucyBiZWZvcmUgd2UgZnJlZSBpdC4gVGhpcyBtYWtlcyBhIGxvdCBvZiBzZW5zZS4gSXQgcmVzb2x2ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWUgd2hpY2ggaXMgb2J2aW91c2x5IGltcG9ydGFudCBpbiB0aGUga2VybmVsIGNvbnRleHQuCgpJIHdpbGwgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBkZXRhaWxzIGluIGBuZXQvbWFjODAyMTEvc3RhX2luZm8uY2AganVzdCB0byBtYWtlIHN1cmUgdGhlIGltcGxlbWVudGF0aW9uIGlzIHNvbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA4OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YV9yZW1vdmVfbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9zdGFfaW5mby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTM2Nz1zdGF0aWMgdm9pZCBzdGFfYWNjdW11bGF0ZV9yZW1vdmVkX2xpbmtfc3RhdHMoc3RydWN0IHN0YV9pbmZvICpzdGEsIGludCBsaW5rX2lkKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTQyMi1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjQyMzpzdGF0aWMgdm9pZCBzdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkLFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDI0LVx0XHRcdCAgICBib29sIHVuaGFzaClcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz00Njg9dm9pZCBzdGFfaW5mb19mcmVlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00NzgtXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo0Nzk6XHRcdHN0YV9yZW1vdmVfbGluayhzdGEsIGksIGZhbHNlKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTQ4MC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0zMzYxPXZvaWQgaWVlZTgwMjExX3N0YV9mcmVlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMzNjYtXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozMzY3Olx0c3RhX3JlbW92ZV9saW5rKHN0YSwgbGlua19pZCwgZmFsc2UpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzM2OC19XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzM3MD1pbnQgaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zMzk5LVx0LyogRW5zdXJlIHRoZSB2YWx1ZXMgYXJlIHVwZGF0ZWQgZm9yIHRoZSBkcml2ZXIsXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNDAwOlx0ICogcmVkb25lIGJ5IHN0YV9yZW1vdmVfbGluayBvbiBmYWlsdXJlLlxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzQwMS1cdCAqL1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM0MDctXHRcdHN0YS1cdTAwM2VzdGEudmFsaWRfbGlua3MgPSBvbGRfbGlua3M7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNDA4Olx0XHRzdGFfcmVtb3ZlX2xpbmsoc3RhLCBsaW5rX2lkLCBmYWxzZSk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDA5LVx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM0MTctXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNDE4OnZvaWQgaWVlZTgwMjExX3N0YV9yZW1vdmVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDE5LXtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDMwLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzQzMTpcdHN0YV9yZW1vdmVfbGluayhzdGEsIGxpbmtfaWQsIHRydWUpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzQzMi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgdG91Y2hpbmcgYHN0YV9yZW1vdmVfbGlua2AsIGFuZCB0aGF0IGZ1bmN0aW9uIGdldHMgY2FsbGVkIGZyb20gc2V2ZXJhbCBvdGhlciBjcml0aWNhbCBhcmVhczogYHN0YV9pbmZvX2ZyZWVgLCBgaWVlZTgwMjExX3N0YV9mcmVlX2xpbmtgLCBgaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rYCwgYW5kLCBvZiBjb3Vyc2UsIGBpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rYC4gVGhhdCYjMzk7cyBhIHByZXR0eSB3aWRlIG5ldCwgd2hpY2ggc3VnZ2VzdHMgaXQgY291bGQgaW1wYWN0IGEgZ29vZCBjaHVuayBvZiB0aGUgU1RBIG1hbmFnZW1lbnQgY29kZS4KClRoZSBmYWN0IHRoYXQgYG1hYzgwMjExX2h3c2ltYCBpcyBsaXN0ZWQgYXMgYSByZWFjaGFibGUgcGF0aCBpcyBnb29kIOKAkyB0aGF0IG1lYW5zIEkgY2FuIHByb2JhYmx5IHRlc3QgdGhpcyBvdXQgd2l0aG91dCBuZWVkaW5nIGFueSBzcGVjaWFsIGhhcmR3YXJlLiBUaW1lIHRvIHNwaW4gdXAgYSBxdWljayB0ZXN0IGVudmlyb25tZW50IQoKSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnLCB0aG91Z2guIE5vIHN1cnByaXNlcyBoZXJlLCBgTUFDODAyMTFgIGlzIHRoZSBjb25maWcgdG8gZW5hYmxlLiBCdXQgbGV0JiMzOTtzIHZlcmlmeSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlcXVpcmVkLCBvciBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCB0aGF0IG1pZ2h0IGFmZmVjdCB0aGUgcGF0Y2guIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZ290Y2hhcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWctMjItXHRib29sXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxubmV0L21hYzgwMjExL0tjb25maWctNDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXHRzdHJpbmdcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFwmIzM0O1NvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1Rcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNzgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xubmV0L21hYzgwMjExL0tjb25maWctODAtXHRib29sIFwmIzM0O0VuYWJsZSBMRUQgdHJpZ2dlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cdGJvb2wgXCYjMzQ7VHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTExLVx0Ym9vbCBcJiMzNDtTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTU1LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIEhUIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgT0NCIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTg3LVx0Ym9vbCBcJiMzNDtWZXJib3NlIElCU1MgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTk4LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjIzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBURExTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVx0aW50IFwmIzM0O1N0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcJiMzNDsgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMDcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgTUFDODAyMTFgIENvbmZpZ3VyYXRpb24gYW5kIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgYSBtb2RpZmljYXRpb24gdG8gYHN0YV9yZW1vdmVfbGlua2Agd2l0aGluIHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24uIFJpZ2h0LCBsZXQmIzM5O3MgZmlndXJlIG91dCB0aGUgaW1wbGljYXRpb25zIGhlcmUuIE15IGZpcnN0IHRob3VnaHQgaXMsIHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIHJlYWwgZm9jdXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGZsb3cuCgpTaW5jZSBgc3RhX3JlbW92ZV9saW5rYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgSSBzaG91bGQgemVybyBpbiBvbiBpdHMgY2FsbGVycy4gQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgdGhhdCB3b3VsZCBiZSwgcHJlc3VtYWJseSwgYHN0YV9pbmZvX2ZyZWVgLiBIbW0sIGl0JiMzOTtzIG5vdCBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0IGhhcyBzb21lIG90aGVyIHVzZS4gSXMgaXQgYmVpbmcgY2FsbGVkIGJ5IHNvbWV0aGluZyBsaWtlIGBpZWVlODAyMTFfc3RhX2ZyZWVfbGlua2Agb3Igc29tZXRoaW5nIHNpbWlsYXI/IFBlcmhhcHMuIFdhaXQsIGl0IHNlZW1zIGBzdGFfaW5mb19mcmVlYCBpcyBhY3R1YWxseSBleHBvcnRlZC4gU28gaXQgaXMgbm90IGxvY2FsIHRvIHRoZSBmaWxlLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgZ2V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgbmV0L21hYzgwMjExL3N0YV9pbmZvLmNgIHNvdXJjZSBjb2RlLCBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdGFfaW5mb19mcmVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3N0YV9pbmZvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTg3PXN0YXRpYyB2b2lkIGNsZWFudXBfc2luZ2xlX3N0YShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xOTItXHRfX2NsZWFudXBfc2luZ2xlX3N0YShzdGEpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTkzOlx0c3RhX2luZm9fZnJlZShsb2NhbCwgc3RhKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE5NC19XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzMyPXN0cnVjdCBzdGFfaW5mbyAqc3RhX2luZm9fZ2V0X2J5X2lkeChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNTItXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNTM6c3RhdGljIHZvaWQgc3RhX2luZm9fZnJlZV9saW5rKHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSlcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM1NC17XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzU4PXN0YXRpYyB2b2lkIHN0YV9saW5rX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNjItXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNjM6XHRzdGFfaW5mb19mcmVlX2xpbmsoXHUwMDI2YWxsb2MtXHUwMDNlaW5mbyk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNjQtXHRrZnJlZShhbGxvYyk7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9NDIzPXN0YXRpYyB2b2lkIHN0YV9yZW1vdmVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQsXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDU3LS8qKlxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6NDU4OiAqIHN0YV9pbmZvX2ZyZWUgLSBmcmVlIFNUQVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDU5LSAqXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDY3LSAqL1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6NDY4OnZvaWQgc3RhX2luZm9fZnJlZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHN0YV9pbmZvICpzdGEpXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00Njkte1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTUxMC1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjUxMTpcdHN0YV9pbmZvX2ZyZWVfbGluayhcdTAwMjZzdGEtXHUwMDNlZGVmbGluayk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy01MTItXHRrZnJlZShzdGEpO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTYxNz1fX3N0YV9pbmZvX2FsbG9jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTc3OC1mcmVlOlxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6Nzc5Olx0c3RhX2luZm9fZnJlZV9saW5rKFx1MDAyNnN0YS1cdTAwM2VkZWZsaW5rKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTc4MC0jaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMDE5PWludCBzdGFfaW5mb19pbnNlcnRfcmN1KHN0cnVjdCBzdGFfaW5mbyAqc3RhKSBfX2FjcXVpcmVzKFJDVSlcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMDI4LVx0aWYgKGVycikge1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTAyOTpcdFx0c3RhX2luZm9fZnJlZShsb2NhbCwgc3RhKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEwMzAtXHRcdHJjdV9yZWFkX2xvY2soKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjU5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBzdGFfaW5mb19mcmVlYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mIGBzdGFfaW5mb19mcmVlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIGl0cyB1c2FnZS4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgc3RhX2luZm9fZnJlZWAgaXMgdHJpZ2dlcmVkIGZyb20gdHdvIGtleSBsb2NhdGlvbnM6IGBjbGVhbnVwX3NpbmdsZV9zdGFgIGFuZCBgc3RhX2luZm9faW5zZXJ0X3JjdWAuIFRoaXMgdGVsbHMgbWUgc29tZXRoaW5nIGFib3V0IHdoZW4gYW5kIHdoZXJlIHN0YXRpb24gaW5mb3JtYXRpb24gaXMgYmVpbmcgbWFuYWdlZCBhbmQgZnJlZWQgd2l0aGluIHRoZSBzeXN0ZW0uIEJ1dCB0aGUgcGxvdCB0aGlja2Vucy4uLgoKSSBhbHNvIHNlZSB0aGF0IGEgc2V0IG9mIG90aGVyIGZ1bmN0aW9ucywgbmFtZWx5IGBpZWVlODAyMTFfc3RhX2ZyZWVfbGlua2AsIGBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmtgLCBhbmQgYGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmtgLCBhcmUgYWxzbyBjYWxsZXJzIG9mIGBzdGFfcmVtb3ZlX2xpbmtgLiBUaGlzIHN1Z2dlc3RzIHRoZXJlJiMzOTtzIGEgbW9yZSBudWFuY2VkIGludGVyYWN0aW9uIHdpdGggdGhlIGxpbmsgbWFuYWdlbWVudCBsb2dpYy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb25uZWN0aW9uLCBlc3BlY2lhbGx5IGhvdyBsaW5rcyByZWxhdGUgdG8gdGhlIHN0YXRpb24gaW5mb3JtYXRpb24gdGhhdCYjMzk7cyB1bHRpbWF0ZWx5IGJlaW5nIGZyZWVkLgoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmtgIGlzIGV2ZW4gZXhwb3J0ZWQsIGFzIHRoaXMgd291bGQgYWZmZWN0IG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQuIEl0JiMzOTtzIGEgcXVpY2sgdGVzdCB0byBzZWUgaWYgaXQmIzM5O3MgdmlzaWJsZSBpbiBvdGhlciBtb2R1bGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9NTY2OT1pZWVlODAyMTFfZGVsX2xpbmtfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01Njg3LVxubmV0L21hYzgwMjExL2NmZy5jOjU2ODg6XHRpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rKHN0YSwgcGFyYW1zLVx1MDAzZWxpbmtfaWQpO1xubmV0L21hYzgwMjExL2NmZy5jLTU2ODktXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz02NDU0PXN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19zdWNjZXNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNjU5MC1cdFx0XHR2YWxpZF9saW5rcyBcdTAwMjY9IH5CSVQobGlua19pZCk7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjY1OTE6XHRcdFx0aWVlZTgwMjExX3N0YV9yZW1vdmVfbGluayhzdGEsIGxpbmtfaWQpO1xubmV0L21hYzgwMjExL21sbWUuYy02NTkyLVx0XHRcdGNvbnRpbnVlO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NzA4Mz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxfcmVjb25mX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcxMzItXHRcdFx0XHQgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTKVxubmV0L21hYzgwMjExL21sbWUuYzo3MTMzOlx0XHRcdGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmsoc3RhLCBsaW5rX2lkKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzEzNC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwOTAxPWludCBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMDk3LVxubmV0L21hYzgwMjExL21sbWUuYzoxMTA5ODpcdFx0XHRpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rKHN0YSwgbGlua19pZCk7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMDk5LVx0XHR9XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzM3MD1pbnQgaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDE3LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzQxODp2b2lkIGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzQxOS17XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9OTkxPWludCBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjk5Mjp2b2lkIGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTk5My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkzOQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIE5ldHdvcmsgRGlzY29ubmVjdGlvbiBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIG5ldHdvcmsgZHJpdmVyIGNvZGUsIGFuZCBJIHNlZSBgaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb25gIGNhbGxlZCBmcm9tIGBjZmcuY2AuIFJpZ2h0LCB0aGF0JiMzOTtzIGEgY2ZnODAyMTEgb3BlcmF0aW9uLCBzbyB0aGF0IG1ha2VzIHNlbnNlIGFzIGEgcG90ZW50aWFsIHBvaW50IGZvciBzdGF0aW9uIGxpbmsgZGVsZXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBleHBsb3JlIHRoaXMgZnVuY3Rpb24gYXMgYSBwb3RlbnRpYWwgcG9pbnQgb2YgaW50ZXJlc3QuCgpCZXlvbmQgdGhhdCwgSSYjMzk7bSB0aGlua2luZywgd2hlcmUgZWxzZSBtaWdodCBhIHN0YXRpb24gYXNzb2NpYXRpb24gYmUgZHJvcHBlZD8gSSYjMzk7bGwgYWRkIGBpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc2AsIGBpZWVlODAyMTFfbWxfcmVjb25mX3dvcmtgLCBhbmQgYGllZWU4MDIxMV9tZ2RfYXNzb2NfbWxfcmVjb25mYCB0byBteSByYWRhci4gVGhlc2UgYXJlIGFsbCByZWxhdGVkIHRvIGFzc29jaWF0aW9uIGFuZCByZS1jb25maWd1cmF0aW9uLCBzbyB0aGV5IHNob3VsZCBiZSBleGNlbGxlbnQgdGFyZ2V0cy4KCkxldCYjMzk7cyBiZWdpbiBieSBzZWVpbmcgcHJlY2lzZWx5IHdoYXQgYGllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uYCBpcyBkb2luZyBpbnRlcm5hbGx5LiBOZWVkIHRvIGNoZWNrIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyByb2xlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfZGVsX2xpbmtfc3RhdGlvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NmZy5jPTU2Njg9c3RhdGljIGludFxubmV0L21hYzgwMjExL2NmZy5jOjU2Njk6aWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9tYWM4MDIxMS9jZmcuYy01NjcwLVx0XHRcdCAgIHN0cnVjdCBsaW5rX3N0YXRpb25fZGVsX3BhcmFtZXRlcnMgKnBhcmFtcylcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTc2Mz1jb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIG1hYzgwMjExX2NvbmZpZ19vcHMgPSB7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTU4NzItXHQubW9kX2xpbmtfc3RhdGlvbiA9IGllZWU4MDIxMV9tb2RfbGlua19zdGF0aW9uLFxubmV0L21hYzgwMjExL2NmZy5jOjU4NzM6XHQuZGVsX2xpbmtfc3RhdGlvbiA9IGllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uLFxubmV0L21hYzgwMjExL2NmZy5jLTU4NzQtXHQuc2V0X2h3X3RpbWVzdGFtcCA9IGllZWU4MDIxMV9zZXRfaHdfdGltZXN0YW1wLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjA1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyA4MDIuMTEgTGluayBNYW5hZ2VtZW50KioKCk9rYXksIGxldCYjMzk7cyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMgYXJlYSBvZiB0aGUgODAyLjExIGNvZGUgYmFzZS4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGxpbmsgbWFuYWdlbWVudCBwcm9jZWR1cmVzLiBSaWdodCBub3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHN0YXRpb25zIGFyZSBhc3NvY2lhdGVkLCByZWNvbmZpZ3VyZWQsIGFuZCB1bHRpbWF0ZWx5LCBkZS1saW5rZWQuIFRoZXJlZm9yZSwgbXkga2V5IGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBhcmU6IGBpZWVlODAyMTFfZGVsX2xpbmtfc3RhdGlvbmAsIGBpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc2AsIGBpZWVlODAyMTFfbWxfcmVjb25mX3dvcmtgLCBgaWVlZTgwMjExX21nZF9hc3NvY19tbF9yZWNvbmZgLCBgaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rYCwgYW5kIGBpZWVlODAyMTFfc3RhX2ZyZWVfbGlua2AuIFVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGludGVyYWN0IGlzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi4gVG8gc3RhcnQsIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHRoZSBjYWxsZXJzIG9mIGBpZWVlODAyMTFfc3RhX2ZyZWVfbGlua2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSB3aWxsIGJlZ2luIG15IGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9zdGFfZnJlZV9saW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9NTYwNj1pZWVlODAyMTFfYWRkX2xpbmtfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01NjMxLVx0aWYgKHJldCkge1xubmV0L21hYzgwMjExL2NmZy5jOjU2MzI6XHRcdGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0YSwgcGFyYW1zLVx1MDAzZWxpbmtfaWQpO1xubmV0L21hYzgwMjExL2NmZy5jLTU2MzMtXHRcdHJldHVybiByZXQ7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzMyNj1pbnQgaWVlZTgwMjExX3N0YV9hbGxvY2F0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zMzYwLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzM2MTp2b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMzNjIte1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTk4OT1pbnQgaWVlZTgwMjExX3N0YV9hbGxvY2F0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo5OTA6dm9pZCBpZWVlODAyMTFfc3RhX2ZyZWVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtOTkxLWludCBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0MzMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgODAyLjExIExpbmsgQWN0aXZhdGlvbioqCgpBbHJpZ2h0LCBiYXNlZCBvbiB0aGUgY29udGV4dCBJJiMzOTttIHNlZWluZywgYGllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uYCBzZWVtcyBsaWtlIGFub3RoZXIgcHJvbWlzaW5nIGZ1bmN0aW9uIHRvIGludmVzdGlnYXRlLiBJdCBmZWVscyBsaWtlIGEga2V5IHBpZWNlIGluIHRoaXMgcHV6emxlLCBzbyBJJiMzOTttIGdvaW5nIHRvIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBhcmVhcyBJJiMzOTttIGxvb2tpbmcgYXQuCgpOb3csIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gTXkgbmV4dCBtb3ZlIGlzIHRvIGNoZWNrIHRoZSBjYWxsZXJzIG9mIGBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmtgIGFuZCBtYXAgb3V0IHRoZSBjb250cm9sIGZsb3cgdG8gc2VlIGhvdyBldmVyeXRoaW5nIGlzIGNvbm5lY3RlZC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIGJyb2FkZXIgaW50ZXJhY3Rpb25zIGF0IHBsYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NmZy5jPTU2MDY9aWVlZTgwMjExX2FkZF9saW5rX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTY0Mi1cbm5ldC9tYWM4MDIxMS9jZmcuYzo1NjQzOlx0LyogaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rIGZyZWVzIHRoZSBsaW5rIHVwb24gZmFpbHVyZSAqL1xubmV0L21hYzgwMjExL2NmZy5jOjU2NDQ6XHRyZXR1cm4gaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rKHN0YSwgcGFyYW1zLVx1MDAzZWxpbmtfaWQpO1xubmV0L21hYzgwMjExL2NmZy5jLTU2NDUtfVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjQ1ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTY1OTUtXHRcdGlmIChsaW5rX2lkICE9IGFzc29jX2RhdGEtXHUwMDNlYXNzb2NfbGlua19pZCkge1xubmV0L21hYzgwMjExL21sbWUuYzo2NTk2Olx0XHRcdGVyciA9IGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdGEsIGxpbmtfaWQpO1xubmV0L21hYzgwMjExL21sbWUuYy02NTk3LVx0XHRcdGlmIChlcnIpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0xMDQ0MD12b2lkIGllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA2MjgtXHRcdGllZWU4MDIxMV9zdGFfaW5pdF9uc3MobGlua19zdGEpO1xubmV0L21hYzgwMjExL21sbWUuYzoxMDYyOTpcdFx0aWYgKGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdGEsIGxpbmtfaWQpKVxubmV0L21hYzgwMjExL21sbWUuYy0xMDYzMC1cdFx0XHRnb3RvIGRpc2Nvbm5lY3Q7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzM2MT12b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zMzY5LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzM3MDppbnQgaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMzNzEte1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTk5MD12b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo5OTE6aW50IGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtOTkyLXZvaWQgaWVlZTgwMjExX3N0YV9yZW1vdmVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ5OAoJCQkJCQkJb3V0cHV0OiAyMTQKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgaWRlbnRpZmllZCBhIHByb21pc2luZyBwYXRjaCwgdGFyZ2V0aW5nIHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24uIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiB0aGlzIHBhdGNoOyBsZXQmIzM5O3Mgc2VlLCB0aGF0IHdvdWxkIGJlOiBgaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb25gLCBgaWVlZTgwMjExX2FkZF9saW5rX3N0YXRpb25gLCBgaWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3NgLCBgaWVlZTgwMjExX21sX3JlY29uZl93b3JrYCwgYGllZWU4MDIxMV9tZ2RfYXNzb2NfbWxfcmVjb25mYCwgYW5kIGBpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcGAuIFRob3NlIHNlZW0gbGlrZSB0aGUgbWFpbiBwb2ludHMgb2YgaW50ZXJhY3Rpb24uCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGBNQUM4MDIxMWAgY29uZmlnIGlzIHN1ZmZpY2llbnQgb3IgaWYgSSBzaG91bGQgY2hlY2sgZm9yIG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMuIE5vLCBgTUFDODAyMTFgIHNob3VsZCBiZSBlbm91Z2guIEdyZWF0LgoKTm93LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBsb2cgdGhlc2UgZmluZGluZ3MuIFRpbWUgdG8gc3RhcnQgY3JhZnRpbmcgc29tZSBmdXp6IGNhc2VzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfZGVsX2xpbmtfc3RhdGlvbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYWRkX2xpbmtfc3RhdGlvbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWxfcmVjb25mX3dvcmsmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX21nZF9hc3NvY19tbF9yZWNvbmYmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0YV9yZW1vdmVfbGlua2AgaW4gbWFjODAyMTEgdG8gZGVmZXIgZnJlZWluZyBvZiBgc3RhX2luZm9fZnJlZV9saW5rYCB1c2luZyBgY2FsbF9yY3VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9uLiBJdCBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hc3NvY19zdWNjZXNzJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9tbF9yZWNvbmZfd29yayYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgc3RhX3JlbW92ZV9saW5rYCBpbiBtYWM4MDIxMSB0byBkZWZlciBmcmVlaW5nIG9mIGBzdGFfaW5mb19mcmVlX2xpbmtgIHVzaW5nIGBjYWxsX3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24uIEl0IGlzIHJlYWNoYWJsZSB2aWEgbWFjODAyMTFfaHdzaW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODozOS4zMTQ5NTc2OTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzgyNjI1OTE3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uXCIsXG4gICAgXCJpZWVlODAyMTFfYWRkX2xpbmtfc3RhdGlvblwiLFxuICAgIFwiaWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3NcIixcbiAgICBcImllZWU4MDIxMV9tbF9yZWNvbmZfd29ya1wiLFxuICAgIFwiaWVlZTgwMjExX21nZF9hc3NvY19tbF9yZWNvbmZcIixcbiAgICBcImllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0YV9yZW1vdmVfbGlua2AgaW4gbWFjODAyMTEgdG8gZGVmZXIgZnJlZWluZyBvZiBgc3RhX2luZm9fZnJlZV9saW5rYCB1c2luZyBgY2FsbF9yY3VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9uLiBJdCBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODozOS4zMTQ5NjU1MDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NzYxOTEzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ4ZjgxYzI1MWNjNWI0MWM0YWMwYzAwYzFkMDljNWY3NTYwOGVjM2ZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdW4gMjcgMDg6NTg6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMgYi9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xcbmluZGV4IDRjMzFlZjg4MTdjZTA3Li42ZDU4NTcxYTM2NGQxNCAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xcbisrKyBiL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jXFxuQEAgLTM1NSw2ICszNTUsMTUgQEAgc3RhdGljIHZvaWQgc3RhX2luZm9fZnJlZV9saW5rKHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSlcXG4gXFx0ZnJlZV9wZXJjcHUobGlua19zdGEtXFx1MDAzZXBjcHVfcnhfc3RhdHMpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBzdGFfbGlua19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuK3tcXG4rXFx0c3RydWN0IHN0YV9saW5rX2FsbG9jICphbGxvYyA9XFxuK1xcdFxcdGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3Qgc3RhX2xpbmtfYWxsb2MsIHJjdV9oZWFkKTtcXG4rXFxuK1xcdHN0YV9pbmZvX2ZyZWVfbGluayhcXHUwMDI2YWxsb2MtXFx1MDAzZWluZm8pO1xcbitcXHRrZnJlZShhbGxvYyk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHN0YV9hY2N1bXVsYXRlX3JlbW92ZWRfbGlua19zdGF0cyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IGxpbmtfaWQpXFxuIHtcXG4gXFx0c3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhID0gd2lwaHlfZGVyZWZlcmVuY2Uoc3RhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlaHcud2lwaHksXFxuQEAgLTQzOSwxMCArNDQ4LDggQEAgc3RhdGljIHZvaWQgc3RhX3JlbW92ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCxcXG4gXFxuIFxcdFJDVV9JTklUX1BPSU5URVIoc3RhLVxcdTAwM2VsaW5rW2xpbmtfaWRdLCBOVUxMKTtcXG4gXFx0UkNVX0lOSVRfUE9JTlRFUihzdGEtXFx1MDAzZXN0YS5saW5rW2xpbmtfaWRdLCBOVUxMKTtcXG4tXFx0aWYgKGFsbG9jKSB7XFxuLVxcdFxcdHN0YV9pbmZvX2ZyZWVfbGluayhcXHUwMDI2YWxsb2MtXFx1MDAzZWluZm8pO1xcbi1cXHRcXHRrZnJlZV9yY3UoYWxsb2MsIHJjdV9oZWFkKTtcXG4tXFx0fVxcbitcXHRpZiAoYWxsb2MpXFxuK1xcdFxcdGNhbGxfcmN1KFxcdTAwMjZhbGxvYy1cXHUwMDNlcmN1X2hlYWQsIHN0YV9saW5rX2ZyZWVfcmN1KTtcXG4gXFxuIFxcdGllZWU4MDIxMV9zdGFfcmVjYWxjX2FnZ3JlZ2F0ZXMoXFx1MDAyNnN0YS1cXHUwMDNlc3RhKTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODozOS43MDMyODMwMjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDM3OTIwOTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb25cIixcbiAgICBcImllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uXCIsXG4gICAgXCJpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc1wiLFxuICAgIFwiaWVlZTgwMjExX21sX3JlY29uZl93b3JrXCIsXG4gICAgXCJpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZlwiLFxuICAgIFwiaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3RhX3JlbW92ZV9saW5rYCBpbiBtYWM4MDIxMSB0byBkZWZlciBmcmVlaW5nIG9mIGBzdGFfaW5mb19mcmVlX2xpbmtgIHVzaW5nIGBjYWxsX3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24uIEl0IGlzIHJlYWNoYWJsZSB2aWEgbWFjODAyMTFfaHdzaW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDhmODFjMjUxY2M1YjQxYzRhYzBjMDBjMWQwOWM1Zjc1NjA4ZWMzZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDA4OjU4OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMgYi9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xuaW5kZXggNGMzMWVmODgxN2NlMDcuLjZkNTg1NzFhMzY0ZDE0IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmNcbisrKyBiL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jXG5AQCAtMzU1LDYgKzM1NSwxNSBAQCBzdGF0aWMgdm9pZCBzdGFfaW5mb19mcmVlX2xpbmsoc3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhKVxuIFx0ZnJlZV9wZXJjcHUobGlua19zdGEtXHUwMDNlcGNwdV9yeF9zdGF0cyk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHN0YV9saW5rX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbit7XG4rXHRzdHJ1Y3Qgc3RhX2xpbmtfYWxsb2MgKmFsbG9jID1cbitcdFx0Y29udGFpbmVyX29mKGhlYWQsIHN0cnVjdCBzdGFfbGlua19hbGxvYywgcmN1X2hlYWQpO1xuK1xuK1x0c3RhX2luZm9fZnJlZV9saW5rKFx1MDAyNmFsbG9jLVx1MDAzZWluZm8pO1xuK1x0a2ZyZWUoYWxsb2MpO1xuK31cbitcbiBzdGF0aWMgdm9pZCBzdGFfYWNjdW11bGF0ZV9yZW1vdmVkX2xpbmtfc3RhdHMoc3RydWN0IHN0YV9pbmZvICpzdGEsIGludCBsaW5rX2lkKVxuIHtcbiBcdHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSA9IHdpcGh5X2RlcmVmZXJlbmNlKHN0YS1cdTAwM2Vsb2NhbC1cdTAwM2Vody53aXBoeSxcbkBAIC00MzksMTAgKzQ0OCw4IEBAIHN0YXRpYyB2b2lkIHN0YV9yZW1vdmVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQsXG4gXG4gXHRSQ1VfSU5JVF9QT0lOVEVSKHN0YS1cdTAwM2VsaW5rW2xpbmtfaWRdLCBOVUxMKTtcbiBcdFJDVV9JTklUX1BPSU5URVIoc3RhLVx1MDAzZXN0YS5saW5rW2xpbmtfaWRdLCBOVUxMKTtcbi1cdGlmIChhbGxvYykge1xuLVx0XHRzdGFfaW5mb19mcmVlX2xpbmsoXHUwMDI2YWxsb2MtXHUwMDNlaW5mbyk7XG4tXHRcdGtmcmVlX3JjdShhbGxvYywgcmN1X2hlYWQpO1xuLVx0fVxuK1x0aWYgKGFsbG9jKVxuK1x0XHRjYWxsX3JjdShcdTAwMjZhbGxvYy1cdTAwM2VyY3VfaGVhZCwgc3RhX2xpbmtfZnJlZV9yY3UpO1xuIFxuIFx0aWVlZTgwMjExX3N0YV9yZWNhbGNfYWdncmVnYXRlcyhcdTAwMjZzdGEtXHUwMDNlc3RhKTtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODozOS43MDMyODU5NjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTcwMTYyNTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFjODAyMTEgU1RBIFJlbW92YWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L21hYzgwMjExL3N0YV9pbmZvLmNgLiBUaGUgY29yZSBjaGFuZ2UgaXMgaW4gaG93IGBzdGFfcmVtb3ZlX2xpbmtgIGhhbmRsZXMgZGVhbGxvY2F0aW9uLiBJdCdzIG1vdmluZyBmcm9tIGEgc3luY2hyb25vdXMgYGtmcmVlX3JjdWAgd2l0aCBhbiBpbW1lZGlhdGUgYHN0YV9pbmZvX2ZyZWVfbGlua2AgdG8gYSBgY2FsbF9yY3VgIGFwcHJvYWNoLlxuXG5JIHNlZSB0aGUgb2xkIGNvZGUgc25pcHBldDpcblxuYGBgY1xuXHRpZiAoYWxsb2MpIHtcblx0XHRzdGFfaW5mb19mcmVlX2xpbmsoXHUwMDI2YWxsb2MtXHUwMDNlaW5mbyk7XG5cdFx0a2ZyZWVfcmN1KGFsbG9jLCByY3VfaGVhZCk7XG5cdH1cbmBgYFxuXG5BbmQgdGhlIG5ldyBjb2RlOlxuXG5gYGBjXG5cdGlmIChhbGxvYylcblx0XHRjYWxsX3JjdShcdTAwMjZhbGxvYy1cdTAwM2VyY3VfaGVhZCwgc3RhX2xpbmtfZnJlZV9yY3UpO1xuYGBgXG5cbkVzc2VudGlhbGx5LCBpbnN0ZWFkIG9mIGltbWVkaWF0ZWx5IGZyZWVpbmcgdGhlIGBzdGFfbGlua19hbGxvY2Agc3RydWN0LCB3ZSdyZSBub3cgZGVmZXJyaW5nIGl0IHRvIGFuIFJDVSBjYWxsYmFjaywgYHN0YV9saW5rX2ZyZWVfcmN1YC4gVGhpcyBjYWxsYmFjayB0aGVuIGNhbGxzIGBzdGFfaW5mb19mcmVlX2xpbmtgIGFuZCB0aGVuIGBrZnJlZWAuXG5cblRoZSBjcnVjaWFsIHBhcnQgaGVyZSBpcyB0aGUgcmF0aW9uYWxlOiBgc3RhX2luZm9fZnJlZV9saW5rYCBkb2VzIGltcG9ydGFudCBjbGVhbnVwIOKAkyBwZXJjcHUgc3RhdHMsIGFuZCBvdGhlciBvcGVyYXRpb25zLCB0aGF0IG1heSBiZSBzdWJqZWN0IHRvIFJDVSByZWFkLXNpZGUgYWNjZXNzZXMuIFByZXZpb3VzbHksIGl0IHdhcyBiZWluZyBjYWxsZWQgKmJlZm9yZSogdGhlIFJDVSBncmFjZSBwZXJpb2QsIGFuZCB0aGF0IGNvdWxkIGludHJvZHVjZSBhIHN1YnRsZSByYWNlIGNvbmRpdGlvbi4gQnkgZGVmZXJyaW5nIGl0IHRvIHRoZSBSQ1UgY2FsbGJhY2ssIHdlIGd1YXJhbnRlZSB0aGF0IGFueSByZWFkZXJzIHN0aWxsIHJlZmVyZW5jaW5nIHRoZSBkYXRhIHN0cnVjdHVyZSBoYXZlIGNvbXBsZXRlZCB0aGVpciBjcml0aWNhbCBzZWN0aW9ucyBiZWZvcmUgd2UgZnJlZSBpdC4gVGhpcyBtYWtlcyBhIGxvdCBvZiBzZW5zZS4gSXQgcmVzb2x2ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWUgd2hpY2ggaXMgb2J2aW91c2x5IGltcG9ydGFudCBpbiB0aGUga2VybmVsIGNvbnRleHQuXG5cbkkgd2lsbCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGRldGFpbHMgaW4gYG5ldC9tYWM4MDIxMS9zdGFfaW5mby5jYCBqdXN0IHRvIG1ha2Ugc3VyZSB0aGUgaW1wbGVtZW50YXRpb24gaXMgc29saWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODo0Ni4yNzM0NTI5OTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE0MjI4NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YV9yZW1vdmVfbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvc3RhX2luZm8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvc3RhX2luZm8uYz0zNjc9c3RhdGljIHZvaWQgc3RhX2FjY3VtdWxhdGVfcmVtb3ZlZF9saW5rX3N0YXRzKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCBpbnQgbGlua19pZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTQyMi1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo0MjM6c3RhdGljIHZvaWQgc3RhX3JlbW92ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCxcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00MjQtXFx0XFx0XFx0ICAgIGJvb2wgdW5oYXNoKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9NDY4PXZvaWQgc3RhX2luZm9fZnJlZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00NzgtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6NDc5OlxcdFxcdHN0YV9yZW1vdmVfbGluayhzdGEsIGksIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00ODAtXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzM2MT12b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMzNjYtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzM2NzpcXHRzdGFfcmVtb3ZlX2xpbmsoc3RhLCBsaW5rX2lkLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzM2OC19XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0zMzcwPWludCBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzM5OS1cXHQvKiBFbnN1cmUgdGhlIHZhbHVlcyBhcmUgdXBkYXRlZCBmb3IgdGhlIGRyaXZlcixcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNDAwOlxcdCAqIHJlZG9uZSBieSBzdGFfcmVtb3ZlX2xpbmsgb24gZmFpbHVyZS5cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDAxLVxcdCAqL1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzQwNy1cXHRcXHRzdGEtXFx1MDAzZXN0YS52YWxpZF9saW5rcyA9IG9sZF9saW5rcztcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNDA4OlxcdFxcdHN0YV9yZW1vdmVfbGluayhzdGEsIGxpbmtfaWQsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDA5LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDE3LVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjM0MTg6dm9pZCBpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDE5LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM0MzAtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzQzMTpcXHRzdGFfcmVtb3ZlX2xpbmsoc3RhLCBsaW5rX2lkLCB0cnVlKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDMyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDg6NTg6NDYuNTg3NzA5MTYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3NjUwMzQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBgc3RhX3JlbW92ZV9saW5rYCwgYW5kIHRoYXQgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZnJvbSBzZXZlcmFsIG90aGVyIGNyaXRpY2FsIGFyZWFzOiBgc3RhX2luZm9fZnJlZWAsIGBpZWVlODAyMTFfc3RhX2ZyZWVfbGlua2AsIGBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmtgLCBhbmQsIG9mIGNvdXJzZSwgYGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmtgLiBUaGF0J3MgYSBwcmV0dHkgd2lkZSBuZXQsIHdoaWNoIHN1Z2dlc3RzIGl0IGNvdWxkIGltcGFjdCBhIGdvb2QgY2h1bmsgb2YgdGhlIFNUQSBtYW5hZ2VtZW50IGNvZGUuXG5cblRoZSBmYWN0IHRoYXQgYG1hYzgwMjExX2h3c2ltYCBpcyBsaXN0ZWQgYXMgYSByZWFjaGFibGUgcGF0aCBpcyBnb29kIOKAkyB0aGF0IG1lYW5zIEkgY2FuIHByb2JhYmx5IHRlc3QgdGhpcyBvdXQgd2l0aG91dCBuZWVkaW5nIGFueSBzcGVjaWFsIGhhcmR3YXJlLiBUaW1lIHRvIHNwaW4gdXAgYSBxdWljayB0ZXN0IGVudmlyb25tZW50IVxuXG5JIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcsIHRob3VnaC4gTm8gc3VycHJpc2VzIGhlcmUsIGBNQUM4MDIxMWAgaXMgdGhlIGNvbmZpZyB0byBlbmFibGUuIEJ1dCBsZXQncyB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZXF1aXJlZCwgb3IgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCwgdGhhdCBtaWdodCBhZmZlY3QgdGhlIHBhdGNoLiBJJ2xsIHRha2UgYSBsb29rIGF0IGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZ290Y2hhcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODo1MC4yNjQyMTU2MTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxMzgwOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDg6NTg6NTAuMzMzMzYxOTg2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyNDQ2MTgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBNQUM4MDIxMWAgQ29uZmlndXJhdGlvbiBhbmQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgYSBtb2RpZmljYXRpb24gdG8gYHN0YV9yZW1vdmVfbGlua2Agd2l0aGluIHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24uIFJpZ2h0LCBsZXQncyBmaWd1cmUgb3V0IHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gTXkgZmlyc3QgdGhvdWdodCBpcywgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUgcmVhbCBmb2N1cz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZmxvdy5cblxuU2luY2UgYHN0YV9yZW1vdmVfbGlua2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIEkgc2hvdWxkIHplcm8gaW4gb24gaXRzIGNhbGxlcnMuIEFscmlnaHQsIGxldCdzIHNlZSwgdGhhdCB3b3VsZCBiZSwgcHJlc3VtYWJseSwgYHN0YV9pbmZvX2ZyZWVgLiBIbW0sIGl0J3Mgbm90IHN0YXRpYywgd2hpY2ggbWVhbnMgaXQgaGFzIHNvbWUgb3RoZXIgdXNlLiBJcyBpdCBiZWluZyBjYWxsZWQgYnkgc29tZXRoaW5nIGxpa2UgYGllZWU4MDIxMV9zdGFfZnJlZV9saW5rYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gUGVyaGFwcy4gV2FpdCwgaXQgc2VlbXMgYHN0YV9pbmZvX2ZyZWVgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBTbyBpdCBpcyBub3QgbG9jYWwgdG8gdGhlIGZpbGUuIExldCdzIGRpZyBkZWVwZXIgYW5kIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9tYWM4MDIxMS9zdGFfaW5mby5jYCBzb3VyY2UgY29kZSwgbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMDcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDg6NTg6NTQuMzU3ODI5MTQzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDU2NjAyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGFfaW5mb19mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTE4Nz1zdGF0aWMgdm9pZCBjbGVhbnVwX3NpbmdsZV9zdGEoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xOTItXFx0X19jbGVhbnVwX3NpbmdsZV9zdGEoc3RhKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxOTM6XFx0c3RhX2luZm9fZnJlZShsb2NhbCwgc3RhKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xOTQtfVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzMyPXN0cnVjdCBzdGFfaW5mbyAqc3RhX2luZm9fZ2V0X2J5X2lkeChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM1Mi1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNTM6c3RhdGljIHZvaWQgc3RhX2luZm9fZnJlZV9saW5rKHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSlcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNTQte1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzU4PXN0YXRpYyB2b2lkIHN0YV9saW5rX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM2Mi1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNjM6XFx0c3RhX2luZm9fZnJlZV9saW5rKFxcdTAwMjZhbGxvYy1cXHUwMDNlaW5mbyk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzY0LVxcdGtmcmVlKGFsbG9jKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTQyMz1zdGF0aWMgdm9pZCBzdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkLFxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDU3LS8qKlxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjQ1ODogKiBzdGFfaW5mb19mcmVlIC0gZnJlZSBTVEFcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00NTktICpcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTQ2Ny0gKi9cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo0Njg6dm9pZCBzdGFfaW5mb19mcmVlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00Njkte1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNTEwLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjUxMTpcXHRzdGFfaW5mb19mcmVlX2xpbmsoXFx1MDAyNnN0YS1cXHUwMDNlZGVmbGluayk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNTEyLVxcdGtmcmVlKHN0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz02MTc9X19zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTc3OC1mcmVlOlxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjc3OTpcXHRzdGFfaW5mb19mcmVlX2xpbmsoXFx1MDAyNnN0YS1cXHUwMDNlZGVmbGluayk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNzgwLSNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTAxOT1pbnQgc3RhX2luZm9faW5zZXJ0X3JjdShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSkgX19hY3F1aXJlcyhSQ1UpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMDI4LVxcdGlmIChlcnIpIHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxMDI5OlxcdFxcdHN0YV9pbmZvX2ZyZWUobG9jYWwsIHN0YSk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTAzMC1cXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA4OjU4OjU0LjQ4MjQwMjk4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NzQxNjExNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYHN0YV9pbmZvX2ZyZWVgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxpZmVjeWNsZSBvZiBgc3RhX2luZm9fZnJlZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0cmFjZSBpdHMgdXNhZ2UuIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgc3RhX2luZm9fZnJlZWAgaXMgdHJpZ2dlcmVkIGZyb20gdHdvIGtleSBsb2NhdGlvbnM6IGBjbGVhbnVwX3NpbmdsZV9zdGFgIGFuZCBgc3RhX2luZm9faW5zZXJ0X3JjdWAuIFRoaXMgdGVsbHMgbWUgc29tZXRoaW5nIGFib3V0IHdoZW4gYW5kIHdoZXJlIHN0YXRpb24gaW5mb3JtYXRpb24gaXMgYmVpbmcgbWFuYWdlZCBhbmQgZnJlZWQgd2l0aGluIHRoZSBzeXN0ZW0uIEJ1dCB0aGUgcGxvdCB0aGlja2Vucy4uLlxuXG5JIGFsc28gc2VlIHRoYXQgYSBzZXQgb2Ygb3RoZXIgZnVuY3Rpb25zLCBuYW1lbHkgYGllZWU4MDIxMV9zdGFfZnJlZV9saW5rYCwgYGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGlua2AsIGFuZCBgaWVlZTgwMjExX3N0YV9yZW1vdmVfbGlua2AsIGFyZSBhbHNvIGNhbGxlcnMgb2YgYHN0YV9yZW1vdmVfbGlua2AuIFRoaXMgc3VnZ2VzdHMgdGhlcmUncyBhIG1vcmUgbnVhbmNlZCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBsaW5rIG1hbmFnZW1lbnQgbG9naWMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29ubmVjdGlvbiwgZXNwZWNpYWxseSBob3cgbGlua3MgcmVsYXRlIHRvIHRoZSBzdGF0aW9uIGluZm9ybWF0aW9uIHRoYXQncyB1bHRpbWF0ZWx5IGJlaW5nIGZyZWVkLlxuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rYCBpcyBldmVuIGV4cG9ydGVkLCBhcyB0aGlzIHdvdWxkIGFmZmVjdCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCdzIGJlaW5nIHVzZWQuIEl0J3MgYSBxdWljayB0ZXN0IHRvIHNlZSBpZiBpdCdzIHZpc2libGUgaW4gb3RoZXIgbW9kdWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY1OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODo1OS40NTY1NjcwMjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzI1MTUzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTU2Njk9aWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01Njg3LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzo1Njg4OlxcdGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmsoc3RhLCBwYXJhbXMtXFx1MDAzZWxpbmtfaWQpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy01Njg5LVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz02NDU0PXN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19zdWNjZXNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy02NTkwLVxcdFxcdFxcdHZhbGlkX2xpbmtzIFxcdTAwMjY9IH5CSVQobGlua19pZCk7XFxubmV0L21hYzgwMjExL21sbWUuYzo2NTkxOlxcdFxcdFxcdGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmsoc3RhLCBsaW5rX2lkKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTY1OTItXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTcwODM9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sX3JlY29uZl93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcxMzItXFx0XFx0XFx0XFx0IElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUylcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcxMzM6XFx0XFx0XFx0aWVlZTgwMjExX3N0YV9yZW1vdmVfbGluayhzdGEsIGxpbmtfaWQpO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzEzNC1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwOTAxPWludCBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTEwOTctXFxubmV0L21hYzgwMjExL21sbWUuYzoxMTA5ODpcXHRcXHRcXHRpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rKHN0YSwgbGlua19pZCk7XFxubmV0L21hYzgwMjExL21sbWUuYy0xMTA5OS1cXHRcXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0zMzcwPWludCBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzQxNy1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNDE4OnZvaWQgaWVlZTgwMjExX3N0YV9yZW1vdmVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzQxOS17XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD05OTE9aW50IGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjk5Mjp2b2lkIGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC05OTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA4OjU4OjU5LjY3OTgyNzIyNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjY5ODg4ODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgTmV0d29yayBEaXNjb25uZWN0aW9uIFBvaW50cyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIG5ldHdvcmsgZHJpdmVyIGNvZGUsIGFuZCBJIHNlZSBgaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb25gIGNhbGxlZCBmcm9tIGBjZmcuY2AuIFJpZ2h0LCB0aGF0J3MgYSBjZmc4MDIxMSBvcGVyYXRpb24sIHNvIHRoYXQgbWFrZXMgc2Vuc2UgYXMgYSBwb3RlbnRpYWwgcG9pbnQgZm9yIHN0YXRpb24gbGluayBkZWxldGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4cGxvcmUgdGhpcyBmdW5jdGlvbiBhcyBhIHBvdGVudGlhbCBwb2ludCBvZiBpbnRlcmVzdC5cblxuQmV5b25kIHRoYXQsIEknbSB0aGlua2luZywgd2hlcmUgZWxzZSBtaWdodCBhIHN0YXRpb24gYXNzb2NpYXRpb24gYmUgZHJvcHBlZD8gSSdsbCBhZGQgYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCwgYGllZWU4MDIxMV9tbF9yZWNvbmZfd29ya2AsIGFuZCBgaWVlZTgwMjExX21nZF9hc3NvY19tbF9yZWNvbmZgIHRvIG15IHJhZGFyLiBUaGVzZSBhcmUgYWxsIHJlbGF0ZWQgdG8gYXNzb2NpYXRpb24gYW5kIHJlLWNvbmZpZ3VyYXRpb24sIHNvIHRoZXkgc2hvdWxkIGJlIGV4Y2VsbGVudCB0YXJnZXRzLlxuXG5MZXQncyBiZWdpbiBieSBzZWVpbmcgcHJlY2lzZWx5IHdoYXQgYGllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uYCBpcyBkb2luZyBpbnRlcm5hbGx5LiBOZWVkIHRvIGNoZWNrIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyByb2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTM5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA4OjU5OjAzLjk0OTcxODk4OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxMDM4MDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9NTY2OD1zdGF0aWMgaW50XFxubmV0L21hYzgwMjExL2NmZy5jOjU2Njk6aWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTY3MC1cXHRcXHRcXHQgICBzdHJ1Y3QgbGlua19zdGF0aW9uX2RlbF9wYXJhbWV0ZXJzICpwYXJhbXMpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTc2Mz1jb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIG1hYzgwMjExX2NvbmZpZ19vcHMgPSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTg3Mi1cXHQubW9kX2xpbmtfc3RhdGlvbiA9IGllZWU4MDIxMV9tb2RfbGlua19zdGF0aW9uLFxcbm5ldC9tYWM4MDIxMS9jZmcuYzo1ODczOlxcdC5kZWxfbGlua19zdGF0aW9uID0gaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb24sXFxubmV0L21hYzgwMjExL2NmZy5jLTU4NzQtXFx0LnNldF9od190aW1lc3RhbXAgPSBpZWVlODAyMTFfc2V0X2h3X3RpbWVzdGFtcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDg6NTk6MDQuMDE4ODUyNjgyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODkwNzQ1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIDgwMi4xMSBMaW5rIE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBsZXQncyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMgYXJlYSBvZiB0aGUgODAyLjExIGNvZGUgYmFzZS4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGxpbmsgbWFuYWdlbWVudCBwcm9jZWR1cmVzLiBSaWdodCBub3csIEknbSB0aGlua2luZyBhYm91dCBob3cgc3RhdGlvbnMgYXJlIGFzc29jaWF0ZWQsIHJlY29uZmlndXJlZCwgYW5kIHVsdGltYXRlbHksIGRlLWxpbmtlZC4gVGhlcmVmb3JlLCBteSBrZXkgZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZTogYGllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uYCwgYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCwgYGllZWU4MDIxMV9tbF9yZWNvbmZfd29ya2AsIGBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZmAsIGBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmtgLCBhbmQgYGllZWU4MDIxMV9zdGFfZnJlZV9saW5rYC4gVW5kZXJzdGFuZGluZyBob3cgdGhlc2UgaW50ZXJhY3QgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uLiBUbyBzdGFydCwgSSdsbCB0YWtlIGEgbG9vayBhdCB0aGUgY2FsbGVycyBvZiBgaWVlZTgwMjExX3N0YV9mcmVlX2xpbmtgLiBUaGF0J3Mgd2hlcmUgSSB3aWxsIGJlZ2luIG15IGRpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2MDUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDg6NTk6MDcuNzA3OTI5ODQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMxMDUzMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX3N0YV9mcmVlX2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9NTYwNj1pZWVlODAyMTFfYWRkX2xpbmtfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTU2MzEtXFx0aWYgKHJldCkge1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NjMyOlxcdFxcdGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0YSwgcGFyYW1zLVxcdTAwM2VsaW5rX2lkKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTYzMy1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzMyNj1pbnQgaWVlZTgwMjExX3N0YV9hbGxvY2F0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMzNjAtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzM2MTp2b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zMzYyLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTk4OT1pbnQgaWVlZTgwMjExX3N0YV9hbGxvY2F0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6OTkwOnZvaWQgaWVlZTgwMjExX3N0YV9mcmVlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC05OTEtaW50IGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1OTowNy44MjEwNDIzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjM3NTY1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSA4MDIuMTEgTGluayBBY3RpdmF0aW9uKipcblxuQWxyaWdodCwgYmFzZWQgb24gdGhlIGNvbnRleHQgSSdtIHNlZWluZywgYGllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uYCBzZWVtcyBsaWtlIGFub3RoZXIgcHJvbWlzaW5nIGZ1bmN0aW9uIHRvIGludmVzdGlnYXRlLiBJdCBmZWVscyBsaWtlIGEga2V5IHBpZWNlIGluIHRoaXMgcHV6emxlLCBzbyBJJ20gZ29pbmcgdG8gYWRkIGl0IHRvIHRoZSBsaXN0IG9mIGFyZWFzIEknbSBsb29raW5nIGF0LlxuXG5Ob3csIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBNeSBuZXh0IG1vdmUgaXMgdG8gY2hlY2sgdGhlIGNhbGxlcnMgb2YgYGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGlua2AgYW5kIG1hcCBvdXQgdGhlIGNvbnRyb2wgZmxvdyB0byBzZWUgaG93IGV2ZXJ5dGhpbmcgaXMgY29ubmVjdGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzZW5zZSBvZiB0aGUgYnJvYWRlciBpbnRlcmFjdGlvbnMgYXQgcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MzMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1OToxMS44NDQ4MDI2OTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNTY1NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz01NjA2PWllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTY0Mi1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTY0MzpcXHQvKiBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmsgZnJlZXMgdGhlIGxpbmsgdXBvbiBmYWlsdXJlICovXFxubmV0L21hYzgwMjExL2NmZy5jOjU2NDQ6XFx0cmV0dXJuIGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdGEsIHBhcmFtcy1cXHUwMDNlbGlua19pZCk7XFxubmV0L21hYzgwMjExL2NmZy5jLTU2NDUtfVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz02NDU0PXN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19zdWNjZXNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy02NTk1LVxcdFxcdGlmIChsaW5rX2lkICE9IGFzc29jX2RhdGEtXFx1MDAzZWFzc29jX2xpbmtfaWQpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjY1OTY6XFx0XFx0XFx0ZXJyID0gaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rKHN0YSwgbGlua19pZCk7XFxubmV0L21hYzgwMjExL21sbWUuYy02NTk3LVxcdFxcdFxcdGlmIChlcnIpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwNDQwPXZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwNjI4LVxcdFxcdGllZWU4MDIxMV9zdGFfaW5pdF9uc3MobGlua19zdGEpO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTA2Mjk6XFx0XFx0aWYgKGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdGEsIGxpbmtfaWQpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA2MzAtXFx0XFx0XFx0Z290byBkaXNjb25uZWN0O1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzM2MT12b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMzNjktXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzM3MDppbnQgaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zMzcxLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTk5MD12b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6OTkxOmludCBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC05OTItdm9pZCBpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA4OjU5OjExLjkwNjM3NzI1MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTQ4NTkxNDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBpZGVudGlmaWVkIGEgcHJvbWlzaW5nIHBhdGNoLCB0YXJnZXRpbmcgdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbi4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGZ1enppbmcuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoaXMgcGF0Y2g7IGxldCdzIHNlZSwgdGhhdCB3b3VsZCBiZTogYGllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uYCwgYGllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uYCwgYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCwgYGllZWU4MDIxMV9tbF9yZWNvbmZfd29ya2AsIGBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZmAsIGFuZCBgaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3BgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIG1haW4gcG9pbnRzIG9mIGludGVyYWN0aW9uLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGBNQUM4MDIxMWAgY29uZmlnIGlzIHN1ZmZpY2llbnQgb3IgaWYgSSBzaG91bGQgY2hlY2sgZm9yIG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMuIE5vLCBgTUFDODAyMTFgIHNob3VsZCBiZSBlbm91Z2guIEdyZWF0LlxuXG5Ob3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgbG9nIHRoZXNlIGZpbmRpbmdzLiBUaW1lIHRvIHN0YXJ0IGNyYWZ0aW5nIHNvbWUgZnV6eiBjYXNlcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTE0OTgsIk91dHB1dFRva2VucyI6MjE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA4OjU5OjE3LjA1NDk3MjE3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYyMjYwMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb25cIixcbiAgICBcImllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uXCIsXG4gICAgXCJpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc1wiLFxuICAgIFwiaWVlZTgwMjExX21sX3JlY29uZl93b3JrXCIsXG4gICAgXCJpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZlwiLFxuICAgIFwiaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3RhX3JlbW92ZV9saW5rYCBpbiBtYWM4MDIxMSB0byBkZWZlciBmcmVlaW5nIG9mIGBzdGFfaW5mb19mcmVlX2xpbmtgIHVzaW5nIGBjYWxsX3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24uIEl0IGlzIHJlYWNoYWJsZSB2aWEgbWFjODAyMTFfaHdzaW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfZGVsX2xpbmtfc3RhdGlvblwiLFxuICAgIFwiaWVlZTgwMjExX2FkZF9saW5rX3N0YXRpb25cIixcbiAgICBcImllZWU4MDIxMV9hc3NvY19zdWNjZXNzXCIsXG4gICAgXCJpZWVlODAyMTFfbWxfcmVjb25mX3dvcmtcIixcbiAgICBcImllZWU4MDIxMV9tZ2RfYXNzb2NfbWxfcmVjb25mXCIsXG4gICAgXCJpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBzdGFfcmVtb3ZlX2xpbmtgIGluIG1hYzgwMjExIHRvIGRlZmVyIGZyZWVpbmcgb2YgYHN0YV9pbmZvX2ZyZWVfbGlua2AgdXNpbmcgYGNhbGxfcmN1YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbi4gSXQgaXMgcmVhY2hhYmxlIHZpYSBtYWM4MDIxMV9od3NpbSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow728jk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-27 08:46:59 +0000 UTC FinishedAt: 2026-06-27 08:59:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "795f1b1a91ae13ebc012a364075e42f486a1cafe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "795f1b1a91ae13ebc012a364075e42f486a1cafe", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "933d06a2-080f-487d-b106-845b1dac0862" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_del_link_station", "ieee80211_add_link_station", "ieee80211_assoc_success", "ieee80211_ml_reconf_work", "ieee80211_mgd_assoc_ml_reconf", "ieee80211_process_ml_reconf_resp" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI3IDA4OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb24mIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2FkZF9saW5rX3N0YXRpb24mIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3MmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX21sX3JlY29uZl93b3JrJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9tZ2RfYXNzb2NfbWxfcmVjb25mJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBzdGFfcmVtb3ZlX2xpbmtgIGluIG1hYzgwMjExIHRvIGRlZmVyIGZyZWVpbmcgb2YgYHN0YV9pbmZvX2ZyZWVfbGlua2AgdXNpbmcgYGNhbGxfcmN1YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbi4gSXQgaXMgcmVhY2hhYmxlIHZpYSBtYWM4MDIxMV9od3NpbSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ4ZjgxYzI1MWNjNWI0MWM0YWMwYzAwYzFkMDljNWY3NTYwOGVjM2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwODo1ODozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uYyBiL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jXG5pbmRleCA0YzMxZWY4ODE3Y2UwNy4uNmQ1ODU3MWEzNjRkMTQgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmNcbkBAIC0zNTUsNiAmIzQzOzM1NSwxNSBAQCBzdGF0aWMgdm9pZCBzdGFfaW5mb19mcmVlX2xpbmsoc3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhKVxuIFx0ZnJlZV9wZXJjcHUobGlua19zdGEtXHUwMDNlcGNwdV9yeF9zdGF0cyk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBzdGFfbGlua19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgc3RhX2xpbmtfYWxsb2MgKmFsbG9jID1cbiYjNDM7XHRcdGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3Qgc3RhX2xpbmtfYWxsb2MsIHJjdV9oZWFkKTtcbiYjNDM7XG4mIzQzO1x0c3RhX2luZm9fZnJlZV9saW5rKFx1MDAyNmFsbG9jLVx1MDAzZWluZm8pO1xuJiM0MztcdGtmcmVlKGFsbG9jKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBzdGFfYWNjdW11bGF0ZV9yZW1vdmVkX2xpbmtfc3RhdHMoc3RydWN0IHN0YV9pbmZvICpzdGEsIGludCBsaW5rX2lkKVxuIHtcbiBcdHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSA9IHdpcGh5X2RlcmVmZXJlbmNlKHN0YS1cdTAwM2Vsb2NhbC1cdTAwM2Vody53aXBoeSxcbkBAIC00MzksMTAgJiM0Mzs0NDgsOCBAQCBzdGF0aWMgdm9pZCBzdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkLFxuIFxuIFx0UkNVX0lOSVRfUE9JTlRFUihzdGEtXHUwMDNlbGlua1tsaW5rX2lkXSwgTlVMTCk7XG4gXHRSQ1VfSU5JVF9QT0lOVEVSKHN0YS1cdTAwM2VzdGEubGlua1tsaW5rX2lkXSwgTlVMTCk7XG4tXHRpZiAoYWxsb2MpIHtcbi1cdFx0c3RhX2luZm9fZnJlZV9saW5rKFx1MDAyNmFsbG9jLVx1MDAzZWluZm8pO1xuLVx0XHRrZnJlZV9yY3UoYWxsb2MsIHJjdV9oZWFkKTtcbi1cdH1cbiYjNDM7XHRpZiAoYWxsb2MpXG4mIzQzO1x0XHRjYWxsX3JjdShcdTAwMjZhbGxvYy1cdTAwM2VyY3VfaGVhZCwgc3RhX2xpbmtfZnJlZV9yY3UpO1xuIFxuIFx0aWVlZTgwMjExX3N0YV9yZWNhbGNfYWdncmVnYXRlcyhcdTAwMjZzdGEtXHUwMDNlc3RhKTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDg6NTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfZGVsX2xpbmtfc3RhdGlvbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYWRkX2xpbmtfc3RhdGlvbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWxfcmVjb25mX3dvcmsmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX21nZF9hc3NvY19tbF9yZWNvbmYmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0YV9yZW1vdmVfbGlua2AgaW4gbWFjODAyMTEgdG8gZGVmZXIgZnJlZWluZyBvZiBgc3RhX2luZm9fZnJlZV9saW5rYCB1c2luZyBgY2FsbF9yY3VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9uLiBJdCBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkOGY4MWMyNTFjYzViNDFjNGFjMGMwMGMxZDA5YzVmNzU2MDhlYzNmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjcgMDg6NTg6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uYyBiL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jCmluZGV4IDRjMzFlZjg4MTdjZTA3Li42ZDU4NTcxYTM2NGQxNCAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMKQEAgLTM1NSw2ICYjNDM7MzU1LDE1IEBAIHN0YXRpYyB2b2lkIHN0YV9pbmZvX2ZyZWVfbGluayhzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEpCiAJZnJlZV9wZXJjcHUobGlua19zdGEtJmd0O3BjcHVfcnhfc3RhdHMpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgc3RhX2xpbmtfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKQomIzQzO3sKJiM0MzsJc3RydWN0IHN0YV9saW5rX2FsbG9jICphbGxvYyA9CiYjNDM7CQljb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHN0YV9saW5rX2FsbG9jLCByY3VfaGVhZCk7CiYjNDM7CiYjNDM7CXN0YV9pbmZvX2ZyZWVfbGluaygmYW1wO2FsbG9jLSZndDtpbmZvKTsKJiM0MzsJa2ZyZWUoYWxsb2MpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIHN0YV9hY2N1bXVsYXRlX3JlbW92ZWRfbGlua19zdGF0cyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IGxpbmtfaWQpCiB7CiAJc3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhID0gd2lwaHlfZGVyZWZlcmVuY2Uoc3RhLSZndDtsb2NhbC0mZ3Q7aHcud2lwaHksCkBAIC00MzksMTAgJiM0Mzs0NDgsOCBAQCBzdGF0aWMgdm9pZCBzdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkLAogCiAJUkNVX0lOSVRfUE9JTlRFUihzdGEtJmd0O2xpbmtbbGlua19pZF0sIE5VTEwpOwogCVJDVV9JTklUX1BPSU5URVIoc3RhLSZndDtzdGEubGlua1tsaW5rX2lkXSwgTlVMTCk7Ci0JaWYgKGFsbG9jKSB7Ci0JCXN0YV9pbmZvX2ZyZWVfbGluaygmYW1wO2FsbG9jLSZndDtpbmZvKTsKLQkJa2ZyZWVfcmN1KGFsbG9jLCByY3VfaGVhZCk7Ci0JfQomIzQzOwlpZiAoYWxsb2MpCiYjNDM7CQljYWxsX3JjdSgmYW1wO2FsbG9jLSZndDtyY3VfaGVhZCwgc3RhX2xpbmtfZnJlZV9yY3UpOwogCiAJaWVlZTgwMjExX3N0YV9yZWNhbGNfYWdncmVnYXRlcygmYW1wO3N0YS0mZ3Q7c3RhKTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExOQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hYzgwMjExIFNUQSBSZW1vdmFsIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L21hYzgwMjExL3N0YV9pbmZvLmNgLiBUaGUgY29yZSBjaGFuZ2UgaXMgaW4gaG93IGBzdGFfcmVtb3ZlX2xpbmtgIGhhbmRsZXMgZGVhbGxvY2F0aW9uLiBJdCYjMzk7cyBtb3ZpbmcgZnJvbSBhIHN5bmNocm9ub3VzIGBrZnJlZV9yY3VgIHdpdGggYW4gaW1tZWRpYXRlIGBzdGFfaW5mb19mcmVlX2xpbmtgIHRvIGEgYGNhbGxfcmN1YCBhcHByb2FjaC4KCkkgc2VlIHRoZSBvbGQgY29kZSBzbmlwcGV0OgoKYGBgYwoJaWYgKGFsbG9jKSB7CgkJc3RhX2luZm9fZnJlZV9saW5rKCZhbXA7YWxsb2MtJmd0O2luZm8pOwoJCWtmcmVlX3JjdShhbGxvYywgcmN1X2hlYWQpOwoJfQpgYGAKCkFuZCB0aGUgbmV3IGNvZGU6CgpgYGBjCglpZiAoYWxsb2MpCgkJY2FsbF9yY3UoJmFtcDthbGxvYy0mZ3Q7cmN1X2hlYWQsIHN0YV9saW5rX2ZyZWVfcmN1KTsKYGBgCgpFc3NlbnRpYWxseSwgaW5zdGVhZCBvZiBpbW1lZGlhdGVseSBmcmVlaW5nIHRoZSBgc3RhX2xpbmtfYWxsb2NgIHN0cnVjdCwgd2UmIzM5O3JlIG5vdyBkZWZlcnJpbmcgaXQgdG8gYW4gUkNVIGNhbGxiYWNrLCBgc3RhX2xpbmtfZnJlZV9yY3VgLiBUaGlzIGNhbGxiYWNrIHRoZW4gY2FsbHMgYHN0YV9pbmZvX2ZyZWVfbGlua2AgYW5kIHRoZW4gYGtmcmVlYC4KClRoZSBjcnVjaWFsIHBhcnQgaGVyZSBpcyB0aGUgcmF0aW9uYWxlOiBgc3RhX2luZm9fZnJlZV9saW5rYCBkb2VzIGltcG9ydGFudCBjbGVhbnVwIOKAkyBwZXJjcHUgc3RhdHMsIGFuZCBvdGhlciBvcGVyYXRpb25zLCB0aGF0IG1heSBiZSBzdWJqZWN0IHRvIFJDVSByZWFkLXNpZGUgYWNjZXNzZXMuIFByZXZpb3VzbHksIGl0IHdhcyBiZWluZyBjYWxsZWQgKmJlZm9yZSogdGhlIFJDVSBncmFjZSBwZXJpb2QsIGFuZCB0aGF0IGNvdWxkIGludHJvZHVjZSBhIHN1YnRsZSByYWNlIGNvbmRpdGlvbi4gQnkgZGVmZXJyaW5nIGl0IHRvIHRoZSBSQ1UgY2FsbGJhY2ssIHdlIGd1YXJhbnRlZSB0aGF0IGFueSByZWFkZXJzIHN0aWxsIHJlZmVyZW5jaW5nIHRoZSBkYXRhIHN0cnVjdHVyZSBoYXZlIGNvbXBsZXRlZCB0aGVpciBjcml0aWNhbCBzZWN0aW9ucyBiZWZvcmUgd2UgZnJlZSBpdC4gVGhpcyBtYWtlcyBhIGxvdCBvZiBzZW5zZS4gSXQgcmVzb2x2ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWUgd2hpY2ggaXMgb2J2aW91c2x5IGltcG9ydGFudCBpbiB0aGUga2VybmVsIGNvbnRleHQuCgpJIHdpbGwgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBkZXRhaWxzIGluIGBuZXQvbWFjODAyMTEvc3RhX2luZm8uY2AganVzdCB0byBtYWtlIHN1cmUgdGhlIGltcGxlbWVudGF0aW9uIGlzIHNvbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA4OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YV9yZW1vdmVfbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9zdGFfaW5mby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTM2Nz1zdGF0aWMgdm9pZCBzdGFfYWNjdW11bGF0ZV9yZW1vdmVkX2xpbmtfc3RhdHMoc3RydWN0IHN0YV9pbmZvICpzdGEsIGludCBsaW5rX2lkKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTQyMi1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjQyMzpzdGF0aWMgdm9pZCBzdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkLFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDI0LVx0XHRcdCAgICBib29sIHVuaGFzaClcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz00Njg9dm9pZCBzdGFfaW5mb19mcmVlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00NzgtXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo0Nzk6XHRcdHN0YV9yZW1vdmVfbGluayhzdGEsIGksIGZhbHNlKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTQ4MC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0zMzYxPXZvaWQgaWVlZTgwMjExX3N0YV9mcmVlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKVxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMzNjYtXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozMzY3Olx0c3RhX3JlbW92ZV9saW5rKHN0YSwgbGlua19pZCwgZmFsc2UpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzM2OC19XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzM3MD1pbnQgaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zMzk5LVx0LyogRW5zdXJlIHRoZSB2YWx1ZXMgYXJlIHVwZGF0ZWQgZm9yIHRoZSBkcml2ZXIsXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNDAwOlx0ICogcmVkb25lIGJ5IHN0YV9yZW1vdmVfbGluayBvbiBmYWlsdXJlLlxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzQwMS1cdCAqL1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM0MDctXHRcdHN0YS1cdTAwM2VzdGEudmFsaWRfbGlua3MgPSBvbGRfbGlua3M7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNDA4Olx0XHRzdGFfcmVtb3ZlX2xpbmsoc3RhLCBsaW5rX2lkLCBmYWxzZSk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDA5LVx0XHRyZXR1cm4gcmV0O1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM0MTctXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNDE4OnZvaWQgaWVlZTgwMjExX3N0YV9yZW1vdmVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDE5LXtcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDMwLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzQzMTpcdHN0YV9yZW1vdmVfbGluayhzdGEsIGxpbmtfaWQsIHRydWUpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzQzMi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcxNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgdG91Y2hpbmcgYHN0YV9yZW1vdmVfbGlua2AsIGFuZCB0aGF0IGZ1bmN0aW9uIGdldHMgY2FsbGVkIGZyb20gc2V2ZXJhbCBvdGhlciBjcml0aWNhbCBhcmVhczogYHN0YV9pbmZvX2ZyZWVgLCBgaWVlZTgwMjExX3N0YV9mcmVlX2xpbmtgLCBgaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rYCwgYW5kLCBvZiBjb3Vyc2UsIGBpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rYC4gVGhhdCYjMzk7cyBhIHByZXR0eSB3aWRlIG5ldCwgd2hpY2ggc3VnZ2VzdHMgaXQgY291bGQgaW1wYWN0IGEgZ29vZCBjaHVuayBvZiB0aGUgU1RBIG1hbmFnZW1lbnQgY29kZS4KClRoZSBmYWN0IHRoYXQgYG1hYzgwMjExX2h3c2ltYCBpcyBsaXN0ZWQgYXMgYSByZWFjaGFibGUgcGF0aCBpcyBnb29kIOKAkyB0aGF0IG1lYW5zIEkgY2FuIHByb2JhYmx5IHRlc3QgdGhpcyBvdXQgd2l0aG91dCBuZWVkaW5nIGFueSBzcGVjaWFsIGhhcmR3YXJlLiBUaW1lIHRvIHNwaW4gdXAgYSBxdWljayB0ZXN0IGVudmlyb25tZW50IQoKSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnLCB0aG91Z2guIE5vIHN1cnByaXNlcyBoZXJlLCBgTUFDODAyMTFgIGlzIHRoZSBjb25maWcgdG8gZW5hYmxlLiBCdXQgbGV0JiMzOTtzIHZlcmlmeSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlcXVpcmVkLCBvciBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCB0aGF0IG1pZ2h0IGFmZmVjdCB0aGUgcGF0Y2guIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZ290Y2hhcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWctMjItXHRib29sXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxubmV0L21hYzgwMjExL0tjb25maWctNDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXHRzdHJpbmdcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFwmIzM0O1NvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1Rcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNzgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xubmV0L21hYzgwMjExL0tjb25maWctODAtXHRib29sIFwmIzM0O0VuYWJsZSBMRUQgdHJpZ2dlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cdGJvb2wgXCYjMzQ7VHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTExLVx0Ym9vbCBcJiMzNDtTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTU1LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIEhUIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgT0NCIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTg3LVx0Ym9vbCBcJiMzNDtWZXJib3NlIElCU1MgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTk4LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjIzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBURExTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVx0aW50IFwmIzM0O1N0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcJiMzNDsgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA4OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMDcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgTUFDODAyMTFgIENvbmZpZ3VyYXRpb24gYW5kIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgYSBtb2RpZmljYXRpb24gdG8gYHN0YV9yZW1vdmVfbGlua2Agd2l0aGluIHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24uIFJpZ2h0LCBsZXQmIzM5O3MgZmlndXJlIG91dCB0aGUgaW1wbGljYXRpb25zIGhlcmUuIE15IGZpcnN0IHRob3VnaHQgaXMsIHdoaWNoIGZ1bmN0aW9ucyBhcmUgdGhlIHJlYWwgZm9jdXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGZsb3cuCgpTaW5jZSBgc3RhX3JlbW92ZV9saW5rYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgSSBzaG91bGQgemVybyBpbiBvbiBpdHMgY2FsbGVycy4gQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgdGhhdCB3b3VsZCBiZSwgcHJlc3VtYWJseSwgYHN0YV9pbmZvX2ZyZWVgLiBIbW0sIGl0JiMzOTtzIG5vdCBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0IGhhcyBzb21lIG90aGVyIHVzZS4gSXMgaXQgYmVpbmcgY2FsbGVkIGJ5IHNvbWV0aGluZyBsaWtlIGBpZWVlODAyMTFfc3RhX2ZyZWVfbGlua2Agb3Igc29tZXRoaW5nIHNpbWlsYXI/IFBlcmhhcHMuIFdhaXQsIGl0IHNlZW1zIGBzdGFfaW5mb19mcmVlYCBpcyBhY3R1YWxseSBleHBvcnRlZC4gU28gaXQgaXMgbm90IGxvY2FsIHRvIHRoZSBmaWxlLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgZ2V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgbmV0L21hYzgwMjExL3N0YV9pbmZvLmNgIHNvdXJjZSBjb2RlLCBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdGFfaW5mb19mcmVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3N0YV9pbmZvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTg3PXN0YXRpYyB2b2lkIGNsZWFudXBfc2luZ2xlX3N0YShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xOTItXHRfX2NsZWFudXBfc2luZ2xlX3N0YShzdGEpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTkzOlx0c3RhX2luZm9fZnJlZShsb2NhbCwgc3RhKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTE5NC19XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzMyPXN0cnVjdCBzdGFfaW5mbyAqc3RhX2luZm9fZ2V0X2J5X2lkeChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNTItXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNTM6c3RhdGljIHZvaWQgc3RhX2luZm9fZnJlZV9saW5rKHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSlcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM1NC17XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzU4PXN0YXRpYyB2b2lkIHN0YV9saW5rX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNjItXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNjM6XHRzdGFfaW5mb19mcmVlX2xpbmsoXHUwMDI2YWxsb2MtXHUwMDNlaW5mbyk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNjQtXHRrZnJlZShhbGxvYyk7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9NDIzPXN0YXRpYyB2b2lkIHN0YV9yZW1vdmVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQsXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDU3LS8qKlxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6NDU4OiAqIHN0YV9pbmZvX2ZyZWUgLSBmcmVlIFNUQVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDU5LSAqXG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDY3LSAqL1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6NDY4OnZvaWQgc3RhX2luZm9fZnJlZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHN0YV9pbmZvICpzdGEpXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00Njkte1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTUxMC1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjUxMTpcdHN0YV9pbmZvX2ZyZWVfbGluayhcdTAwMjZzdGEtXHUwMDNlZGVmbGluayk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy01MTItXHRrZnJlZShzdGEpO1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTYxNz1fX3N0YV9pbmZvX2FsbG9jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTc3OC1mcmVlOlxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6Nzc5Olx0c3RhX2luZm9fZnJlZV9saW5rKFx1MDAyNnN0YS1cdTAwM2VkZWZsaW5rKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTc4MC0jaWZkZWYgQ09ORklHX01BQzgwMjExX01FU0hcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0xMDE5PWludCBzdGFfaW5mb19pbnNlcnRfcmN1KHN0cnVjdCBzdGFfaW5mbyAqc3RhKSBfX2FjcXVpcmVzKFJDVSlcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMDI4LVx0aWYgKGVycikge1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MTAyOTpcdFx0c3RhX2luZm9fZnJlZShsb2NhbCwgc3RhKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTEwMzAtXHRcdHJjdV9yZWFkX2xvY2soKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjU5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBzdGFfaW5mb19mcmVlYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIG9mIGBzdGFfaW5mb19mcmVlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyYWNlIGl0cyB1c2FnZS4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgc3RhX2luZm9fZnJlZWAgaXMgdHJpZ2dlcmVkIGZyb20gdHdvIGtleSBsb2NhdGlvbnM6IGBjbGVhbnVwX3NpbmdsZV9zdGFgIGFuZCBgc3RhX2luZm9faW5zZXJ0X3JjdWAuIFRoaXMgdGVsbHMgbWUgc29tZXRoaW5nIGFib3V0IHdoZW4gYW5kIHdoZXJlIHN0YXRpb24gaW5mb3JtYXRpb24gaXMgYmVpbmcgbWFuYWdlZCBhbmQgZnJlZWQgd2l0aGluIHRoZSBzeXN0ZW0uIEJ1dCB0aGUgcGxvdCB0aGlja2Vucy4uLgoKSSBhbHNvIHNlZSB0aGF0IGEgc2V0IG9mIG90aGVyIGZ1bmN0aW9ucywgbmFtZWx5IGBpZWVlODAyMTFfc3RhX2ZyZWVfbGlua2AsIGBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmtgLCBhbmQgYGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmtgLCBhcmUgYWxzbyBjYWxsZXJzIG9mIGBzdGFfcmVtb3ZlX2xpbmtgLiBUaGlzIHN1Z2dlc3RzIHRoZXJlJiMzOTtzIGEgbW9yZSBudWFuY2VkIGludGVyYWN0aW9uIHdpdGggdGhlIGxpbmsgbWFuYWdlbWVudCBsb2dpYy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb25uZWN0aW9uLCBlc3BlY2lhbGx5IGhvdyBsaW5rcyByZWxhdGUgdG8gdGhlIHN0YXRpb24gaW5mb3JtYXRpb24gdGhhdCYjMzk7cyB1bHRpbWF0ZWx5IGJlaW5nIGZyZWVkLgoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmtgIGlzIGV2ZW4gZXhwb3J0ZWQsIGFzIHRoaXMgd291bGQgYWZmZWN0IG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQuIEl0JiMzOTtzIGEgcXVpY2sgdGVzdCB0byBzZWUgaWYgaXQmIzM5O3MgdmlzaWJsZSBpbiBvdGhlciBtb2R1bGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9NTY2OT1pZWVlODAyMTFfZGVsX2xpbmtfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01Njg3LVxubmV0L21hYzgwMjExL2NmZy5jOjU2ODg6XHRpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rKHN0YSwgcGFyYW1zLVx1MDAzZWxpbmtfaWQpO1xubmV0L21hYzgwMjExL2NmZy5jLTU2ODktXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz02NDU0PXN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19zdWNjZXNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNjU5MC1cdFx0XHR2YWxpZF9saW5rcyBcdTAwMjY9IH5CSVQobGlua19pZCk7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjY1OTE6XHRcdFx0aWVlZTgwMjExX3N0YV9yZW1vdmVfbGluayhzdGEsIGxpbmtfaWQpO1xubmV0L21hYzgwMjExL21sbWUuYy02NTkyLVx0XHRcdGNvbnRpbnVlO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NzA4Mz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxfcmVjb25mX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcxMzItXHRcdFx0XHQgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTKVxubmV0L21hYzgwMjExL21sbWUuYzo3MTMzOlx0XHRcdGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmsoc3RhLCBsaW5rX2lkKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzEzNC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwOTAxPWludCBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMDk3LVxubmV0L21hYzgwMjExL21sbWUuYzoxMTA5ODpcdFx0XHRpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rKHN0YSwgbGlua19pZCk7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMDk5LVx0XHR9XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzM3MD1pbnQgaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDE3LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzQxODp2b2lkIGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzQxOS17XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg9OTkxPWludCBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjk5Mjp2b2lkIGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKTtcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oLTk5My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDg6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkzOQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUG90ZW50aWFsIE5ldHdvcmsgRGlzY29ubmVjdGlvbiBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIG5ldHdvcmsgZHJpdmVyIGNvZGUsIGFuZCBJIHNlZSBgaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb25gIGNhbGxlZCBmcm9tIGBjZmcuY2AuIFJpZ2h0LCB0aGF0JiMzOTtzIGEgY2ZnODAyMTEgb3BlcmF0aW9uLCBzbyB0aGF0IG1ha2VzIHNlbnNlIGFzIGEgcG90ZW50aWFsIHBvaW50IGZvciBzdGF0aW9uIGxpbmsgZGVsZXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBleHBsb3JlIHRoaXMgZnVuY3Rpb24gYXMgYSBwb3RlbnRpYWwgcG9pbnQgb2YgaW50ZXJlc3QuCgpCZXlvbmQgdGhhdCwgSSYjMzk7bSB0aGlua2luZywgd2hlcmUgZWxzZSBtaWdodCBhIHN0YXRpb24gYXNzb2NpYXRpb24gYmUgZHJvcHBlZD8gSSYjMzk7bGwgYWRkIGBpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc2AsIGBpZWVlODAyMTFfbWxfcmVjb25mX3dvcmtgLCBhbmQgYGllZWU4MDIxMV9tZ2RfYXNzb2NfbWxfcmVjb25mYCB0byBteSByYWRhci4gVGhlc2UgYXJlIGFsbCByZWxhdGVkIHRvIGFzc29jaWF0aW9uIGFuZCByZS1jb25maWd1cmF0aW9uLCBzbyB0aGV5IHNob3VsZCBiZSBleGNlbGxlbnQgdGFyZ2V0cy4KCkxldCYjMzk7cyBiZWdpbiBieSBzZWVpbmcgcHJlY2lzZWx5IHdoYXQgYGllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uYCBpcyBkb2luZyBpbnRlcm5hbGx5LiBOZWVkIHRvIGNoZWNrIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyByb2xlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfZGVsX2xpbmtfc3RhdGlvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NmZy5jPTU2Njg9c3RhdGljIGludFxubmV0L21hYzgwMjExL2NmZy5jOjU2Njk6aWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9tYWM4MDIxMS9jZmcuYy01NjcwLVx0XHRcdCAgIHN0cnVjdCBsaW5rX3N0YXRpb25fZGVsX3BhcmFtZXRlcnMgKnBhcmFtcylcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTc2Mz1jb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIG1hYzgwMjExX2NvbmZpZ19vcHMgPSB7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTU4NzItXHQubW9kX2xpbmtfc3RhdGlvbiA9IGllZWU4MDIxMV9tb2RfbGlua19zdGF0aW9uLFxubmV0L21hYzgwMjExL2NmZy5jOjU4NzM6XHQuZGVsX2xpbmtfc3RhdGlvbiA9IGllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uLFxubmV0L21hYzgwMjExL2NmZy5jLTU4NzQtXHQuc2V0X2h3X3RpbWVzdGFtcCA9IGllZWU4MDIxMV9zZXRfaHdfdGltZXN0YW1wLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjA1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyA4MDIuMTEgTGluayBNYW5hZ2VtZW50KioKCk9rYXksIGxldCYjMzk7cyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMgYXJlYSBvZiB0aGUgODAyLjExIGNvZGUgYmFzZS4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGxpbmsgbWFuYWdlbWVudCBwcm9jZWR1cmVzLiBSaWdodCBub3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHN0YXRpb25zIGFyZSBhc3NvY2lhdGVkLCByZWNvbmZpZ3VyZWQsIGFuZCB1bHRpbWF0ZWx5LCBkZS1saW5rZWQuIFRoZXJlZm9yZSwgbXkga2V5IGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBhcmU6IGBpZWVlODAyMTFfZGVsX2xpbmtfc3RhdGlvbmAsIGBpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc2AsIGBpZWVlODAyMTFfbWxfcmVjb25mX3dvcmtgLCBgaWVlZTgwMjExX21nZF9hc3NvY19tbF9yZWNvbmZgLCBgaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rYCwgYW5kIGBpZWVlODAyMTFfc3RhX2ZyZWVfbGlua2AuIFVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIGludGVyYWN0IGlzIGdvaW5nIHRvIGJlIGNydWNpYWwgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbi4gVG8gc3RhcnQsIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHRoZSBjYWxsZXJzIG9mIGBpZWVlODAyMTFfc3RhX2ZyZWVfbGlua2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSB3aWxsIGJlZ2luIG15IGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9zdGFfZnJlZV9saW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9NTYwNj1pZWVlODAyMTFfYWRkX2xpbmtfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01NjMxLVx0aWYgKHJldCkge1xubmV0L21hYzgwMjExL2NmZy5jOjU2MzI6XHRcdGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0YSwgcGFyYW1zLVx1MDAzZWxpbmtfaWQpO1xubmV0L21hYzgwMjExL2NmZy5jLTU2MzMtXHRcdHJldHVybiByZXQ7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzMyNj1pbnQgaWVlZTgwMjExX3N0YV9hbGxvY2F0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zMzYwLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzM2MTp2b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMzNjIte1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTk4OT1pbnQgaWVlZTgwMjExX3N0YV9hbGxvY2F0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo5OTA6dm9pZCBpZWVlODAyMTFfc3RhX2ZyZWVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtOTkxLWludCBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDg6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0MzMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgODAyLjExIExpbmsgQWN0aXZhdGlvbioqCgpBbHJpZ2h0LCBiYXNlZCBvbiB0aGUgY29udGV4dCBJJiMzOTttIHNlZWluZywgYGllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uYCBzZWVtcyBsaWtlIGFub3RoZXIgcHJvbWlzaW5nIGZ1bmN0aW9uIHRvIGludmVzdGlnYXRlLiBJdCBmZWVscyBsaWtlIGEga2V5IHBpZWNlIGluIHRoaXMgcHV6emxlLCBzbyBJJiMzOTttIGdvaW5nIHRvIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBhcmVhcyBJJiMzOTttIGxvb2tpbmcgYXQuCgpOb3csIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gTXkgbmV4dCBtb3ZlIGlzIHRvIGNoZWNrIHRoZSBjYWxsZXJzIG9mIGBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmtgIGFuZCBtYXAgb3V0IHRoZSBjb250cm9sIGZsb3cgdG8gc2VlIGhvdyBldmVyeXRoaW5nIGlzIGNvbm5lY3RlZC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIGJyb2FkZXIgaW50ZXJhY3Rpb25zIGF0IHBsYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA4OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NmZy5jPTU2MDY9aWVlZTgwMjExX2FkZF9saW5rX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTY0Mi1cbm5ldC9tYWM4MDIxMS9jZmcuYzo1NjQzOlx0LyogaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rIGZyZWVzIHRoZSBsaW5rIHVwb24gZmFpbHVyZSAqL1xubmV0L21hYzgwMjExL2NmZy5jOjU2NDQ6XHRyZXR1cm4gaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rKHN0YSwgcGFyYW1zLVx1MDAzZWxpbmtfaWQpO1xubmV0L21hYzgwMjExL2NmZy5jLTU2NDUtfVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjQ1ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTY1OTUtXHRcdGlmIChsaW5rX2lkICE9IGFzc29jX2RhdGEtXHUwMDNlYXNzb2NfbGlua19pZCkge1xubmV0L21hYzgwMjExL21sbWUuYzo2NTk2Olx0XHRcdGVyciA9IGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdGEsIGxpbmtfaWQpO1xubmV0L21hYzgwMjExL21sbWUuYy02NTk3LVx0XHRcdGlmIChlcnIpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0xMDQ0MD12b2lkIGllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA2MjgtXHRcdGllZWU4MDIxMV9zdGFfaW5pdF9uc3MobGlua19zdGEpO1xubmV0L21hYzgwMjExL21sbWUuYzoxMDYyOTpcdFx0aWYgKGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdGEsIGxpbmtfaWQpKVxubmV0L21hYzgwMjExL21sbWUuYy0xMDYzMC1cdFx0XHRnb3RvIGRpc2Nvbm5lY3Q7XG4tLVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzM2MT12b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcbi0tXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zMzY5LVxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzM3MDppbnQgaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMzNzEte1xuLS1cbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTk5MD12b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCk7XG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaDo5OTE6aW50IGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xubmV0L21hYzgwMjExL3N0YV9pbmZvLmgtOTkyLXZvaWQgaWVlZTgwMjExX3N0YV9yZW1vdmVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ5OAoJCQkJCQkJb3V0cHV0OiAyMTQKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7dmUgaWRlbnRpZmllZCBhIHByb21pc2luZyBwYXRjaCwgdGFyZ2V0aW5nIHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24uIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiB0aGlzIHBhdGNoOyBsZXQmIzM5O3Mgc2VlLCB0aGF0IHdvdWxkIGJlOiBgaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb25gLCBgaWVlZTgwMjExX2FkZF9saW5rX3N0YXRpb25gLCBgaWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3NgLCBgaWVlZTgwMjExX21sX3JlY29uZl93b3JrYCwgYGllZWU4MDIxMV9tZ2RfYXNzb2NfbWxfcmVjb25mYCwgYW5kIGBpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcGAuIFRob3NlIHNlZW0gbGlrZSB0aGUgbWFpbiBwb2ludHMgb2YgaW50ZXJhY3Rpb24uCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGBNQUM4MDIxMWAgY29uZmlnIGlzIHN1ZmZpY2llbnQgb3IgaWYgSSBzaG91bGQgY2hlY2sgZm9yIG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMuIE5vLCBgTUFDODAyMTFgIHNob3VsZCBiZSBlbm91Z2guIEdyZWF0LgoKTm93LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBsb2cgdGhlc2UgZmluZGluZ3MuIFRpbWUgdG8gc3RhcnQgY3JhZnRpbmcgc29tZSBmdXp6IGNhc2VzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfZGVsX2xpbmtfc3RhdGlvbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYWRkX2xpbmtfc3RhdGlvbiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWxfcmVjb25mX3dvcmsmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX21nZF9hc3NvY19tbF9yZWNvbmYmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0YV9yZW1vdmVfbGlua2AgaW4gbWFjODAyMTEgdG8gZGVmZXIgZnJlZWluZyBvZiBgc3RhX2luZm9fZnJlZV9saW5rYCB1c2luZyBgY2FsbF9yY3VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9uLiBJdCBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hc3NvY19zdWNjZXNzJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9tbF9yZWNvbmZfd29yayYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgc3RhX3JlbW92ZV9saW5rYCBpbiBtYWM4MDIxMSB0byBkZWZlciBmcmVlaW5nIG9mIGBzdGFfaW5mb19mcmVlX2xpbmtgIHVzaW5nIGBjYWxsX3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24uIEl0IGlzIHJlYWNoYWJsZSB2aWEgbWFjODAyMTFfaHdzaW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODozOS4zMTQ5NTc2OTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzgyNjI1OTE3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uXCIsXG4gICAgXCJpZWVlODAyMTFfYWRkX2xpbmtfc3RhdGlvblwiLFxuICAgIFwiaWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3NcIixcbiAgICBcImllZWU4MDIxMV9tbF9yZWNvbmZfd29ya1wiLFxuICAgIFwiaWVlZTgwMjExX21nZF9hc3NvY19tbF9yZWNvbmZcIixcbiAgICBcImllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0YV9yZW1vdmVfbGlua2AgaW4gbWFjODAyMTEgdG8gZGVmZXIgZnJlZWluZyBvZiBgc3RhX2luZm9fZnJlZV9saW5rYCB1c2luZyBgY2FsbF9yY3VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9uLiBJdCBpcyByZWFjaGFibGUgdmlhIG1hYzgwMjExX2h3c2ltIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODozOS4zMTQ5NjU1MDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NzYxOTEzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ4ZjgxYzI1MWNjNWI0MWM0YWMwYzAwYzFkMDljNWY3NTYwOGVjM2ZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdW4gMjcgMDg6NTg6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMgYi9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xcbmluZGV4IDRjMzFlZjg4MTdjZTA3Li42ZDU4NTcxYTM2NGQxNCAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xcbisrKyBiL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jXFxuQEAgLTM1NSw2ICszNTUsMTUgQEAgc3RhdGljIHZvaWQgc3RhX2luZm9fZnJlZV9saW5rKHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSlcXG4gXFx0ZnJlZV9wZXJjcHUobGlua19zdGEtXFx1MDAzZXBjcHVfcnhfc3RhdHMpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBzdGFfbGlua19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuK3tcXG4rXFx0c3RydWN0IHN0YV9saW5rX2FsbG9jICphbGxvYyA9XFxuK1xcdFxcdGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3Qgc3RhX2xpbmtfYWxsb2MsIHJjdV9oZWFkKTtcXG4rXFxuK1xcdHN0YV9pbmZvX2ZyZWVfbGluayhcXHUwMDI2YWxsb2MtXFx1MDAzZWluZm8pO1xcbitcXHRrZnJlZShhbGxvYyk7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIHN0YV9hY2N1bXVsYXRlX3JlbW92ZWRfbGlua19zdGF0cyhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgaW50IGxpbmtfaWQpXFxuIHtcXG4gXFx0c3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhID0gd2lwaHlfZGVyZWZlcmVuY2Uoc3RhLVxcdTAwM2Vsb2NhbC1cXHUwMDNlaHcud2lwaHksXFxuQEAgLTQzOSwxMCArNDQ4LDggQEAgc3RhdGljIHZvaWQgc3RhX3JlbW92ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCxcXG4gXFxuIFxcdFJDVV9JTklUX1BPSU5URVIoc3RhLVxcdTAwM2VsaW5rW2xpbmtfaWRdLCBOVUxMKTtcXG4gXFx0UkNVX0lOSVRfUE9JTlRFUihzdGEtXFx1MDAzZXN0YS5saW5rW2xpbmtfaWRdLCBOVUxMKTtcXG4tXFx0aWYgKGFsbG9jKSB7XFxuLVxcdFxcdHN0YV9pbmZvX2ZyZWVfbGluayhcXHUwMDI2YWxsb2MtXFx1MDAzZWluZm8pO1xcbi1cXHRcXHRrZnJlZV9yY3UoYWxsb2MsIHJjdV9oZWFkKTtcXG4tXFx0fVxcbitcXHRpZiAoYWxsb2MpXFxuK1xcdFxcdGNhbGxfcmN1KFxcdTAwMjZhbGxvYy1cXHUwMDNlcmN1X2hlYWQsIHN0YV9saW5rX2ZyZWVfcmN1KTtcXG4gXFxuIFxcdGllZWU4MDIxMV9zdGFfcmVjYWxjX2FnZ3JlZ2F0ZXMoXFx1MDAyNnN0YS1cXHUwMDNlc3RhKTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODozOS43MDMyODMwMjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDM3OTIwOTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb25cIixcbiAgICBcImllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uXCIsXG4gICAgXCJpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc1wiLFxuICAgIFwiaWVlZTgwMjExX21sX3JlY29uZl93b3JrXCIsXG4gICAgXCJpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZlwiLFxuICAgIFwiaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3RhX3JlbW92ZV9saW5rYCBpbiBtYWM4MDIxMSB0byBkZWZlciBmcmVlaW5nIG9mIGBzdGFfaW5mb19mcmVlX2xpbmtgIHVzaW5nIGBjYWxsX3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24uIEl0IGlzIHJlYWNoYWJsZSB2aWEgbWFjODAyMTFfaHdzaW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDhmODFjMjUxY2M1YjQxYzRhYzBjMDBjMWQwOWM1Zjc1NjA4ZWMzZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDA4OjU4OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMgYi9uZXQvbWFjODAyMTEvc3RhX2luZm8uY1xuaW5kZXggNGMzMWVmODgxN2NlMDcuLjZkNTg1NzFhMzY0ZDE0IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmNcbisrKyBiL25ldC9tYWM4MDIxMS9zdGFfaW5mby5jXG5AQCAtMzU1LDYgKzM1NSwxNSBAQCBzdGF0aWMgdm9pZCBzdGFfaW5mb19mcmVlX2xpbmsoc3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhKVxuIFx0ZnJlZV9wZXJjcHUobGlua19zdGEtXHUwMDNlcGNwdV9yeF9zdGF0cyk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHN0YV9saW5rX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbit7XG4rXHRzdHJ1Y3Qgc3RhX2xpbmtfYWxsb2MgKmFsbG9jID1cbitcdFx0Y29udGFpbmVyX29mKGhlYWQsIHN0cnVjdCBzdGFfbGlua19hbGxvYywgcmN1X2hlYWQpO1xuK1xuK1x0c3RhX2luZm9fZnJlZV9saW5rKFx1MDAyNmFsbG9jLVx1MDAzZWluZm8pO1xuK1x0a2ZyZWUoYWxsb2MpO1xuK31cbitcbiBzdGF0aWMgdm9pZCBzdGFfYWNjdW11bGF0ZV9yZW1vdmVkX2xpbmtfc3RhdHMoc3RydWN0IHN0YV9pbmZvICpzdGEsIGludCBsaW5rX2lkKVxuIHtcbiBcdHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSA9IHdpcGh5X2RlcmVmZXJlbmNlKHN0YS1cdTAwM2Vsb2NhbC1cdTAwM2Vody53aXBoeSxcbkBAIC00MzksMTAgKzQ0OCw4IEBAIHN0YXRpYyB2b2lkIHN0YV9yZW1vdmVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQsXG4gXG4gXHRSQ1VfSU5JVF9QT0lOVEVSKHN0YS1cdTAwM2VsaW5rW2xpbmtfaWRdLCBOVUxMKTtcbiBcdFJDVV9JTklUX1BPSU5URVIoc3RhLVx1MDAzZXN0YS5saW5rW2xpbmtfaWRdLCBOVUxMKTtcbi1cdGlmIChhbGxvYykge1xuLVx0XHRzdGFfaW5mb19mcmVlX2xpbmsoXHUwMDI2YWxsb2MtXHUwMDNlaW5mbyk7XG4tXHRcdGtmcmVlX3JjdShhbGxvYywgcmN1X2hlYWQpO1xuLVx0fVxuK1x0aWYgKGFsbG9jKVxuK1x0XHRjYWxsX3JjdShcdTAwMjZhbGxvYy1cdTAwM2VyY3VfaGVhZCwgc3RhX2xpbmtfZnJlZV9yY3UpO1xuIFxuIFx0aWVlZTgwMjExX3N0YV9yZWNhbGNfYWdncmVnYXRlcyhcdTAwMjZzdGEtXHUwMDNlc3RhKTtcbiB9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODozOS43MDMyODU5NjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTcwMTYyNTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFjODAyMTEgU1RBIFJlbW92YWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L21hYzgwMjExL3N0YV9pbmZvLmNgLiBUaGUgY29yZSBjaGFuZ2UgaXMgaW4gaG93IGBzdGFfcmVtb3ZlX2xpbmtgIGhhbmRsZXMgZGVhbGxvY2F0aW9uLiBJdCdzIG1vdmluZyBmcm9tIGEgc3luY2hyb25vdXMgYGtmcmVlX3JjdWAgd2l0aCBhbiBpbW1lZGlhdGUgYHN0YV9pbmZvX2ZyZWVfbGlua2AgdG8gYSBgY2FsbF9yY3VgIGFwcHJvYWNoLlxuXG5JIHNlZSB0aGUgb2xkIGNvZGUgc25pcHBldDpcblxuYGBgY1xuXHRpZiAoYWxsb2MpIHtcblx0XHRzdGFfaW5mb19mcmVlX2xpbmsoXHUwMDI2YWxsb2MtXHUwMDNlaW5mbyk7XG5cdFx0a2ZyZWVfcmN1KGFsbG9jLCByY3VfaGVhZCk7XG5cdH1cbmBgYFxuXG5BbmQgdGhlIG5ldyBjb2RlOlxuXG5gYGBjXG5cdGlmIChhbGxvYylcblx0XHRjYWxsX3JjdShcdTAwMjZhbGxvYy1cdTAwM2VyY3VfaGVhZCwgc3RhX2xpbmtfZnJlZV9yY3UpO1xuYGBgXG5cbkVzc2VudGlhbGx5LCBpbnN0ZWFkIG9mIGltbWVkaWF0ZWx5IGZyZWVpbmcgdGhlIGBzdGFfbGlua19hbGxvY2Agc3RydWN0LCB3ZSdyZSBub3cgZGVmZXJyaW5nIGl0IHRvIGFuIFJDVSBjYWxsYmFjaywgYHN0YV9saW5rX2ZyZWVfcmN1YC4gVGhpcyBjYWxsYmFjayB0aGVuIGNhbGxzIGBzdGFfaW5mb19mcmVlX2xpbmtgIGFuZCB0aGVuIGBrZnJlZWAuXG5cblRoZSBjcnVjaWFsIHBhcnQgaGVyZSBpcyB0aGUgcmF0aW9uYWxlOiBgc3RhX2luZm9fZnJlZV9saW5rYCBkb2VzIGltcG9ydGFudCBjbGVhbnVwIOKAkyBwZXJjcHUgc3RhdHMsIGFuZCBvdGhlciBvcGVyYXRpb25zLCB0aGF0IG1heSBiZSBzdWJqZWN0IHRvIFJDVSByZWFkLXNpZGUgYWNjZXNzZXMuIFByZXZpb3VzbHksIGl0IHdhcyBiZWluZyBjYWxsZWQgKmJlZm9yZSogdGhlIFJDVSBncmFjZSBwZXJpb2QsIGFuZCB0aGF0IGNvdWxkIGludHJvZHVjZSBhIHN1YnRsZSByYWNlIGNvbmRpdGlvbi4gQnkgZGVmZXJyaW5nIGl0IHRvIHRoZSBSQ1UgY2FsbGJhY2ssIHdlIGd1YXJhbnRlZSB0aGF0IGFueSByZWFkZXJzIHN0aWxsIHJlZmVyZW5jaW5nIHRoZSBkYXRhIHN0cnVjdHVyZSBoYXZlIGNvbXBsZXRlZCB0aGVpciBjcml0aWNhbCBzZWN0aW9ucyBiZWZvcmUgd2UgZnJlZSBpdC4gVGhpcyBtYWtlcyBhIGxvdCBvZiBzZW5zZS4gSXQgcmVzb2x2ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWUgd2hpY2ggaXMgb2J2aW91c2x5IGltcG9ydGFudCBpbiB0aGUga2VybmVsIGNvbnRleHQuXG5cbkkgd2lsbCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGRldGFpbHMgaW4gYG5ldC9tYWM4MDIxMS9zdGFfaW5mby5jYCBqdXN0IHRvIG1ha2Ugc3VyZSB0aGUgaW1wbGVtZW50YXRpb24gaXMgc29saWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODo0Ni4yNzM0NTI5OTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE0MjI4NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YV9yZW1vdmVfbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvc3RhX2luZm8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvc3RhX2luZm8uYz0zNjc9c3RhdGljIHZvaWQgc3RhX2FjY3VtdWxhdGVfcmVtb3ZlZF9saW5rX3N0YXRzKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCBpbnQgbGlua19pZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTQyMi1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo0MjM6c3RhdGljIHZvaWQgc3RhX3JlbW92ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCxcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00MjQtXFx0XFx0XFx0ICAgIGJvb2wgdW5oYXNoKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9NDY4PXZvaWQgc3RhX2luZm9fZnJlZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00NzgtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6NDc5OlxcdFxcdHN0YV9yZW1vdmVfbGluayhzdGEsIGksIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00ODAtXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzM2MT12b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMzNjYtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzM2NzpcXHRzdGFfcmVtb3ZlX2xpbmsoc3RhLCBsaW5rX2lkLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzM2OC19XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0zMzcwPWludCBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzM5OS1cXHQvKiBFbnN1cmUgdGhlIHZhbHVlcyBhcmUgdXBkYXRlZCBmb3IgdGhlIGRyaXZlcixcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNDAwOlxcdCAqIHJlZG9uZSBieSBzdGFfcmVtb3ZlX2xpbmsgb24gZmFpbHVyZS5cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDAxLVxcdCAqL1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzQwNy1cXHRcXHRzdGEtXFx1MDAzZXN0YS52YWxpZF9saW5rcyA9IG9sZF9saW5rcztcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNDA4OlxcdFxcdHN0YV9yZW1vdmVfbGluayhzdGEsIGxpbmtfaWQsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDA5LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDE3LVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjM0MTg6dm9pZCBpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDE5LXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM0MzAtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzQzMTpcXHRzdGFfcmVtb3ZlX2xpbmsoc3RhLCBsaW5rX2lkLCB0cnVlKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNDMyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDg6NTg6NDYuNTg3NzA5MTYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY3NjUwMzQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBzZWVtcyB0byBiZSB0b3VjaGluZyBgc3RhX3JlbW92ZV9saW5rYCwgYW5kIHRoYXQgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZnJvbSBzZXZlcmFsIG90aGVyIGNyaXRpY2FsIGFyZWFzOiBgc3RhX2luZm9fZnJlZWAsIGBpZWVlODAyMTFfc3RhX2ZyZWVfbGlua2AsIGBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmtgLCBhbmQsIG9mIGNvdXJzZSwgYGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmtgLiBUaGF0J3MgYSBwcmV0dHkgd2lkZSBuZXQsIHdoaWNoIHN1Z2dlc3RzIGl0IGNvdWxkIGltcGFjdCBhIGdvb2QgY2h1bmsgb2YgdGhlIFNUQSBtYW5hZ2VtZW50IGNvZGUuXG5cblRoZSBmYWN0IHRoYXQgYG1hYzgwMjExX2h3c2ltYCBpcyBsaXN0ZWQgYXMgYSByZWFjaGFibGUgcGF0aCBpcyBnb29kIOKAkyB0aGF0IG1lYW5zIEkgY2FuIHByb2JhYmx5IHRlc3QgdGhpcyBvdXQgd2l0aG91dCBuZWVkaW5nIGFueSBzcGVjaWFsIGhhcmR3YXJlLiBUaW1lIHRvIHNwaW4gdXAgYSBxdWljayB0ZXN0IGVudmlyb25tZW50IVxuXG5JIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcsIHRob3VnaC4gTm8gc3VycHJpc2VzIGhlcmUsIGBNQUM4MDIxMWAgaXMgdGhlIGNvbmZpZyB0byBlbmFibGUuIEJ1dCBsZXQncyB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZXF1aXJlZCwgb3IgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCwgdGhhdCBtaWdodCBhZmZlY3QgdGhlIHBhdGNoLiBJJ2xsIHRha2UgYSBsb29rIGF0IGBuZXQvbWFjODAyMTEvS2NvbmZpZ2AgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZ290Y2hhcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcxNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODo1MC4yNjQyMTU2MTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxMzgwOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXFxubmV0L21hYzgwMjExL0tjb25maWctMjItXFx0Ym9vbFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNDAtXFxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXFx0c3RyaW5nXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFxcXCJTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNzgtXFxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cXHRib29sIFxcXCJFbmFibGUgTEVEIHRyaWdnZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctODctXFxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cXHRib29sIFxcXCJFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXFxubmV0L21hYzgwMjExL0tjb25maWctOTgtXFx0Ym9vbCBcXFwiVHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXFx0Ym9vbCBcXFwiU2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXFxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVxcdGJvb2wgXFxcIkRvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTU1LVxcdGJvb2wgXFxcIlZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cXHRib29sIFxcXCJWZXJib3NlIEhUIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cXHRib29sIFxcXCJWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTg3LVxcdGJvb2wgXFxcIlZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cXHRib29sIFxcXCJWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjIzLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjM2LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjgyLVxcdGJvb2wgXFxcIlZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXFxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cXHRib29sIFxcXCJFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cXHRpbnQgXFxcIlN0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcXFwiIGlmIE1BQzgwMjExX0RFQlVHX01FTlVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDg6NTg6NTAuMzMzMzYxOTg2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyNDQ2MTgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBNQUM4MDIxMWAgQ29uZmlndXJhdGlvbiBhbmQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgYSBtb2RpZmljYXRpb24gdG8gYHN0YV9yZW1vdmVfbGlua2Agd2l0aGluIHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24uIFJpZ2h0LCBsZXQncyBmaWd1cmUgb3V0IHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gTXkgZmlyc3QgdGhvdWdodCBpcywgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUgcmVhbCBmb2N1cz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZmxvdy5cblxuU2luY2UgYHN0YV9yZW1vdmVfbGlua2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIEkgc2hvdWxkIHplcm8gaW4gb24gaXRzIGNhbGxlcnMuIEFscmlnaHQsIGxldCdzIHNlZSwgdGhhdCB3b3VsZCBiZSwgcHJlc3VtYWJseSwgYHN0YV9pbmZvX2ZyZWVgLiBIbW0sIGl0J3Mgbm90IHN0YXRpYywgd2hpY2ggbWVhbnMgaXQgaGFzIHNvbWUgb3RoZXIgdXNlLiBJcyBpdCBiZWluZyBjYWxsZWQgYnkgc29tZXRoaW5nIGxpa2UgYGllZWU4MDIxMV9zdGFfZnJlZV9saW5rYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gUGVyaGFwcy4gV2FpdCwgaXQgc2VlbXMgYHN0YV9pbmZvX2ZyZWVgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBTbyBpdCBpcyBub3QgbG9jYWwgdG8gdGhlIGZpbGUuIExldCdzIGRpZyBkZWVwZXIgYW5kIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9tYWM4MDIxMS9zdGFfaW5mby5jYCBzb3VyY2UgY29kZSwgbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMDcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDg6NTg6NTQuMzU3ODI5MTQzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDU2NjAyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGFfaW5mb19mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTE4Nz1zdGF0aWMgdm9pZCBjbGVhbnVwX3NpbmdsZV9zdGEoc3RydWN0IHN0YV9pbmZvICpzdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xOTItXFx0X19jbGVhbnVwX3NpbmdsZV9zdGEoc3RhKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxOTM6XFx0c3RhX2luZm9fZnJlZShsb2NhbCwgc3RhKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xOTQtfVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzMyPXN0cnVjdCBzdGFfaW5mbyAqc3RhX2luZm9fZ2V0X2J5X2lkeChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM1Mi1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNTM6c3RhdGljIHZvaWQgc3RhX2luZm9fZnJlZV9saW5rKHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSlcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zNTQte1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzU4PXN0YXRpYyB2b2lkIHN0YV9saW5rX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTM2Mi1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNjM6XFx0c3RhX2luZm9fZnJlZV9saW5rKFxcdTAwMjZhbGxvYy1cXHUwMDNlaW5mbyk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzY0LVxcdGtmcmVlKGFsbG9jKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jPTQyMz1zdGF0aWMgdm9pZCBzdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkLFxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNDU3LS8qKlxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjQ1ODogKiBzdGFfaW5mb19mcmVlIC0gZnJlZSBTVEFcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00NTktICpcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTQ2Ny0gKi9cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzo0Njg6dm9pZCBzdGFfaW5mb19mcmVlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy00Njkte1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNTEwLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjUxMTpcXHRzdGFfaW5mb19mcmVlX2xpbmsoXFx1MDAyNnN0YS1cXHUwMDNlZGVmbGluayk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNTEyLVxcdGtmcmVlKHN0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz02MTc9X19zdGFfaW5mb19hbGxvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTc3OC1mcmVlOlxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jOjc3OTpcXHRzdGFfaW5mb19mcmVlX2xpbmsoXFx1MDAyNnN0YS1cXHUwMDNlZGVmbGluayk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtNzgwLSNpZmRlZiBDT05GSUdfTUFDODAyMTFfTUVTSFxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MTAxOT1pbnQgc3RhX2luZm9faW5zZXJ0X3JjdShzdHJ1Y3Qgc3RhX2luZm8gKnN0YSkgX19hY3F1aXJlcyhSQ1UpXFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0xMDI4LVxcdGlmIChlcnIpIHtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzoxMDI5OlxcdFxcdHN0YV9pbmZvX2ZyZWUobG9jYWwsIHN0YSk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMTAzMC1cXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA4OjU4OjU0LjQ4MjQwMjk4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NzQxNjExNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYHN0YV9pbmZvX2ZyZWVgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxpZmVjeWNsZSBvZiBgc3RhX2luZm9fZnJlZWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0cmFjZSBpdHMgdXNhZ2UuIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgc3RhX2luZm9fZnJlZWAgaXMgdHJpZ2dlcmVkIGZyb20gdHdvIGtleSBsb2NhdGlvbnM6IGBjbGVhbnVwX3NpbmdsZV9zdGFgIGFuZCBgc3RhX2luZm9faW5zZXJ0X3JjdWAuIFRoaXMgdGVsbHMgbWUgc29tZXRoaW5nIGFib3V0IHdoZW4gYW5kIHdoZXJlIHN0YXRpb24gaW5mb3JtYXRpb24gaXMgYmVpbmcgbWFuYWdlZCBhbmQgZnJlZWQgd2l0aGluIHRoZSBzeXN0ZW0uIEJ1dCB0aGUgcGxvdCB0aGlja2Vucy4uLlxuXG5JIGFsc28gc2VlIHRoYXQgYSBzZXQgb2Ygb3RoZXIgZnVuY3Rpb25zLCBuYW1lbHkgYGllZWU4MDIxMV9zdGFfZnJlZV9saW5rYCwgYGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGlua2AsIGFuZCBgaWVlZTgwMjExX3N0YV9yZW1vdmVfbGlua2AsIGFyZSBhbHNvIGNhbGxlcnMgb2YgYHN0YV9yZW1vdmVfbGlua2AuIFRoaXMgc3VnZ2VzdHMgdGhlcmUncyBhIG1vcmUgbnVhbmNlZCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBsaW5rIG1hbmFnZW1lbnQgbG9naWMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY29ubmVjdGlvbiwgZXNwZWNpYWxseSBob3cgbGlua3MgcmVsYXRlIHRvIHRoZSBzdGF0aW9uIGluZm9ybWF0aW9uIHRoYXQncyB1bHRpbWF0ZWx5IGJlaW5nIGZyZWVkLlxuXG5UbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rYCBpcyBldmVuIGV4cG9ydGVkLCBhcyB0aGlzIHdvdWxkIGFmZmVjdCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBpdCdzIGJlaW5nIHVzZWQuIEl0J3MgYSBxdWljayB0ZXN0IHRvIHNlZSBpZiBpdCdzIHZpc2libGUgaW4gb3RoZXIgbW9kdWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY1OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1ODo1OS40NTY1NjcwMjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzI1MTUzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTU2Njk9aWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy01Njg3LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzo1Njg4OlxcdGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmsoc3RhLCBwYXJhbXMtXFx1MDAzZWxpbmtfaWQpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy01Njg5LVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz02NDU0PXN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19zdWNjZXNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy02NTkwLVxcdFxcdFxcdHZhbGlkX2xpbmtzIFxcdTAwMjY9IH5CSVQobGlua19pZCk7XFxubmV0L21hYzgwMjExL21sbWUuYzo2NTkxOlxcdFxcdFxcdGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmsoc3RhLCBsaW5rX2lkKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTY1OTItXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTcwODM9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sX3JlY29uZl93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcxMzItXFx0XFx0XFx0XFx0IElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUylcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcxMzM6XFx0XFx0XFx0aWVlZTgwMjExX3N0YV9yZW1vdmVfbGluayhzdGEsIGxpbmtfaWQpO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzEzNC1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwOTAxPWludCBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTEwOTctXFxubmV0L21hYzgwMjExL21sbWUuYzoxMTA5ODpcXHRcXHRcXHRpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rKHN0YSwgbGlua19pZCk7XFxubmV0L21hYzgwMjExL21sbWUuYy0xMTA5OS1cXHRcXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYz0zMzcwPWludCBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKVxcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzQxNy1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYzozNDE4OnZvaWQgaWVlZTgwMjExX3N0YV9yZW1vdmVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmMtMzQxOS17XFxuLS1cXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaD05OTE9aW50IGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oOjk5Mjp2b2lkIGllZWU4MDIxMV9zdGFfcmVtb3ZlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC05OTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA4OjU4OjU5LjY3OTgyNzIyNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjY5ODg4ODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgTmV0d29yayBEaXNjb25uZWN0aW9uIFBvaW50cyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIG5ldHdvcmsgZHJpdmVyIGNvZGUsIGFuZCBJIHNlZSBgaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb25gIGNhbGxlZCBmcm9tIGBjZmcuY2AuIFJpZ2h0LCB0aGF0J3MgYSBjZmc4MDIxMSBvcGVyYXRpb24sIHNvIHRoYXQgbWFrZXMgc2Vuc2UgYXMgYSBwb3RlbnRpYWwgcG9pbnQgZm9yIHN0YXRpb24gbGluayBkZWxldGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4cGxvcmUgdGhpcyBmdW5jdGlvbiBhcyBhIHBvdGVudGlhbCBwb2ludCBvZiBpbnRlcmVzdC5cblxuQmV5b25kIHRoYXQsIEknbSB0aGlua2luZywgd2hlcmUgZWxzZSBtaWdodCBhIHN0YXRpb24gYXNzb2NpYXRpb24gYmUgZHJvcHBlZD8gSSdsbCBhZGQgYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCwgYGllZWU4MDIxMV9tbF9yZWNvbmZfd29ya2AsIGFuZCBgaWVlZTgwMjExX21nZF9hc3NvY19tbF9yZWNvbmZgIHRvIG15IHJhZGFyLiBUaGVzZSBhcmUgYWxsIHJlbGF0ZWQgdG8gYXNzb2NpYXRpb24gYW5kIHJlLWNvbmZpZ3VyYXRpb24sIHNvIHRoZXkgc2hvdWxkIGJlIGV4Y2VsbGVudCB0YXJnZXRzLlxuXG5MZXQncyBiZWdpbiBieSBzZWVpbmcgcHJlY2lzZWx5IHdoYXQgYGllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uYCBpcyBkb2luZyBpbnRlcm5hbGx5LiBOZWVkIHRvIGNoZWNrIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgaW50ZXJhY3Rpb24gd2l0aCBvdGhlciBjb21wb25lbnRzLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyByb2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTM5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA4OjU5OjAzLjk0OTcxODk4OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjkxMDM4MDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9NTY2OD1zdGF0aWMgaW50XFxubmV0L21hYzgwMjExL2NmZy5jOjU2Njk6aWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTY3MC1cXHRcXHRcXHQgICBzdHJ1Y3QgbGlua19zdGF0aW9uX2RlbF9wYXJhbWV0ZXJzICpwYXJhbXMpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTc2Mz1jb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIG1hYzgwMjExX2NvbmZpZ19vcHMgPSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTg3Mi1cXHQubW9kX2xpbmtfc3RhdGlvbiA9IGllZWU4MDIxMV9tb2RfbGlua19zdGF0aW9uLFxcbm5ldC9tYWM4MDIxMS9jZmcuYzo1ODczOlxcdC5kZWxfbGlua19zdGF0aW9uID0gaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb24sXFxubmV0L21hYzgwMjExL2NmZy5jLTU4NzQtXFx0LnNldF9od190aW1lc3RhbXAgPSBpZWVlODAyMTFfc2V0X2h3X3RpbWVzdGFtcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDg6NTk6MDQuMDE4ODUyNjgyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODkwNzQ1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIDgwMi4xMSBMaW5rIE1hbmFnZW1lbnQqKlxuXG5Pa2F5LCBsZXQncyB6ZXJvIGluIG9uIGEgc3BlY2lmaWMgYXJlYSBvZiB0aGUgODAyLjExIGNvZGUgYmFzZS4gTXkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIGxpbmsgbWFuYWdlbWVudCBwcm9jZWR1cmVzLiBSaWdodCBub3csIEknbSB0aGlua2luZyBhYm91dCBob3cgc3RhdGlvbnMgYXJlIGFzc29jaWF0ZWQsIHJlY29uZmlndXJlZCwgYW5kIHVsdGltYXRlbHksIGRlLWxpbmtlZC4gVGhlcmVmb3JlLCBteSBrZXkgZnVuY3Rpb25zIG9mIGludGVyZXN0IGFyZTogYGllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uYCwgYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCwgYGllZWU4MDIxMV9tbF9yZWNvbmZfd29ya2AsIGBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZmAsIGBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmtgLCBhbmQgYGllZWU4MDIxMV9zdGFfZnJlZV9saW5rYC4gVW5kZXJzdGFuZGluZyBob3cgdGhlc2UgaW50ZXJhY3QgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uLiBUbyBzdGFydCwgSSdsbCB0YWtlIGEgbG9vayBhdCB0aGUgY2FsbGVycyBvZiBgaWVlZTgwMjExX3N0YV9mcmVlX2xpbmtgLiBUaGF0J3Mgd2hlcmUgSSB3aWxsIGJlZ2luIG15IGRpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2MDUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDg6NTk6MDcuNzA3OTI5ODQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMxMDUzMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX3N0YV9mcmVlX2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2ZnLmM9NTYwNj1pZWVlODAyMTFfYWRkX2xpbmtfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTU2MzEtXFx0aWYgKHJldCkge1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo1NjMyOlxcdFxcdGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0YSwgcGFyYW1zLVxcdTAwM2VsaW5rX2lkKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTYzMy1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzMyNj1pbnQgaWVlZTgwMjExX3N0YV9hbGxvY2F0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMzNjAtXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzM2MTp2b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zMzYyLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTk4OT1pbnQgaWVlZTgwMjExX3N0YV9hbGxvY2F0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6OTkwOnZvaWQgaWVlZTgwMjExX3N0YV9mcmVlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC05OTEtaW50IGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdHJ1Y3Qgc3RhX2luZm8gKnN0YSwgdW5zaWduZWQgaW50IGxpbmtfaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1OTowNy44MjEwNDIzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjM3NTY1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSA4MDIuMTEgTGluayBBY3RpdmF0aW9uKipcblxuQWxyaWdodCwgYmFzZWQgb24gdGhlIGNvbnRleHQgSSdtIHNlZWluZywgYGllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uYCBzZWVtcyBsaWtlIGFub3RoZXIgcHJvbWlzaW5nIGZ1bmN0aW9uIHRvIGludmVzdGlnYXRlLiBJdCBmZWVscyBsaWtlIGEga2V5IHBpZWNlIGluIHRoaXMgcHV6emxlLCBzbyBJJ20gZ29pbmcgdG8gYWRkIGl0IHRvIHRoZSBsaXN0IG9mIGFyZWFzIEknbSBsb29raW5nIGF0LlxuXG5Ob3csIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHN1cnJvdW5kaW5nIGxvZ2ljLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBNeSBuZXh0IG1vdmUgaXMgdG8gY2hlY2sgdGhlIGNhbGxlcnMgb2YgYGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGlua2AgYW5kIG1hcCBvdXQgdGhlIGNvbnRyb2wgZmxvdyB0byBzZWUgaG93IGV2ZXJ5dGhpbmcgaXMgY29ubmVjdGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzZW5zZSBvZiB0aGUgYnJvYWRlciBpbnRlcmFjdGlvbnMgYXQgcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MzMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwODo1OToxMS44NDQ4MDI2OTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNTY1NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz01NjA2PWllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTY0Mi1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6NTY0MzpcXHQvKiBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmsgZnJlZXMgdGhlIGxpbmsgdXBvbiBmYWlsdXJlICovXFxubmV0L21hYzgwMjExL2NmZy5jOjU2NDQ6XFx0cmV0dXJuIGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdGEsIHBhcmFtcy1cXHUwMDNlbGlua19pZCk7XFxubmV0L21hYzgwMjExL2NmZy5jLTU2NDUtfVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz02NDU0PXN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19zdWNjZXNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy02NTk1LVxcdFxcdGlmIChsaW5rX2lkICE9IGFzc29jX2RhdGEtXFx1MDAzZWFzc29jX2xpbmtfaWQpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjY1OTY6XFx0XFx0XFx0ZXJyID0gaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rKHN0YSwgbGlua19pZCk7XFxubmV0L21hYzgwMjExL21sbWUuYy02NTk3LVxcdFxcdFxcdGlmIChlcnIpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwNDQwPXZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwNjI4LVxcdFxcdGllZWU4MDIxMV9zdGFfaW5pdF9uc3MobGlua19zdGEpO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTA2Mjk6XFx0XFx0aWYgKGllZWU4MDIxMV9zdGFfYWN0aXZhdGVfbGluayhzdGEsIGxpbmtfaWQpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA2MzAtXFx0XFx0XFx0Z290byBkaXNjb25uZWN0O1xcbi0tXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM9MzM2MT12b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5jLTMzNjktXFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmM6MzM3MDppbnQgaWVlZTgwMjExX3N0YV9hY3RpdmF0ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZClcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uYy0zMzcxLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oPTk5MD12b2lkIGllZWU4MDIxMV9zdGFfZnJlZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCk7XFxubmV0L21hYzgwMjExL3N0YV9pbmZvLmg6OTkxOmludCBpZWVlODAyMTFfc3RhX2FjdGl2YXRlX2xpbmsoc3RydWN0IHN0YV9pbmZvICpzdGEsIHVuc2lnbmVkIGludCBsaW5rX2lkKTtcXG5uZXQvbWFjODAyMTEvc3RhX2luZm8uaC05OTItdm9pZCBpZWVlODAyMTFfc3RhX3JlbW92ZV9saW5rKHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1bnNpZ25lZCBpbnQgbGlua19pZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA4OjU5OjExLjkwNjM3NzI1MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTQ4NTkxNDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBpZGVudGlmaWVkIGEgcHJvbWlzaW5nIHBhdGNoLCB0YXJnZXRpbmcgdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbi4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGZ1enppbmcuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoaXMgcGF0Y2g7IGxldCdzIHNlZSwgdGhhdCB3b3VsZCBiZTogYGllZWU4MDIxMV9kZWxfbGlua19zdGF0aW9uYCwgYGllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uYCwgYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCwgYGllZWU4MDIxMV9tbF9yZWNvbmZfd29ya2AsIGBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZmAsIGFuZCBgaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3BgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIG1haW4gcG9pbnRzIG9mIGludGVyYWN0aW9uLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGBNQUM4MDIxMWAgY29uZmlnIGlzIHN1ZmZpY2llbnQgb3IgaWYgSSBzaG91bGQgY2hlY2sgZm9yIG90aGVyIGNvbmZpZyBkZXBlbmRlbmNpZXMuIE5vLCBgTUFDODAyMTFgIHNob3VsZCBiZSBlbm91Z2guIEdyZWF0LlxuXG5Ob3csIGxldCdzIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgbG9nIHRoZXNlIGZpbmRpbmdzLiBUaW1lIHRvIHN0YXJ0IGNyYWZ0aW5nIHNvbWUgZnV6eiBjYXNlcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTE0OTgsIk91dHB1dFRva2VucyI6MjE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA4OjU5OjE3LjA1NDk3MjE3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYyMjYwMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2RlbF9saW5rX3N0YXRpb25cIixcbiAgICBcImllZWU4MDIxMV9hZGRfbGlua19zdGF0aW9uXCIsXG4gICAgXCJpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc1wiLFxuICAgIFwiaWVlZTgwMjExX21sX3JlY29uZl93b3JrXCIsXG4gICAgXCJpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZlwiLFxuICAgIFwiaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3RhX3JlbW92ZV9saW5rYCBpbiBtYWM4MDIxMSB0byBkZWZlciBmcmVlaW5nIG9mIGBzdGFfaW5mb19mcmVlX2xpbmtgIHVzaW5nIGBjYWxsX3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmFjZSBjb25kaXRpb24uIEl0IGlzIHJlYWNoYWJsZSB2aWEgbWFjODAyMTFfaHdzaW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfZGVsX2xpbmtfc3RhdGlvblwiLFxuICAgIFwiaWVlZTgwMjExX2FkZF9saW5rX3N0YXRpb25cIixcbiAgICBcImllZWU4MDIxMV9hc3NvY19zdWNjZXNzXCIsXG4gICAgXCJpZWVlODAyMTFfbWxfcmVjb25mX3dvcmtcIixcbiAgICBcImllZWU4MDIxMV9tZ2RfYXNzb2NfbWxfcmVjb25mXCIsXG4gICAgXCJpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBzdGFfcmVtb3ZlX2xpbmtgIGluIG1hYzgwMjExIHRvIGRlZmVyIGZyZWVpbmcgb2YgYHN0YV9pbmZvX2ZyZWVfbGlua2AgdXNpbmcgYGNhbGxfcmN1YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbi4gSXQgaXMgcmVhY2hhYmxlIHZpYSBtYWM4MDIxMV9od3NpbSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow728jk[1] Phase: Succeeded StartedAt: 2026-06-27 08:59:28 +0000 UTC FinishedAt: 2026-06-27 08:59:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-27 08:59:28 +0000 UTC FinishedAt: 2026-06-27 08:59:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2] Phase: Running StartedAt: 2026-06-27 08:59:28 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-06-27 08:59:28 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-27 08:59:28 +0000 UTC FinishedAt: 2026-06-27 08:59:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-27 08:59:28 +0000 UTC FinishedAt: 2026-06-27 08:59:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow728jk/series-workflow728jk-convert-artifact-433971895/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-27 08:59:51 +0000 UTC FinishedAt: 2026-06-27 09:24:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-27 08:59:51 +0000 UTC FinishedAt: 2026-06-27 09:24:30 +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:*bb2dbc53-9227-46ad-8c0f-20f15a173e45,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-workflow728jk/series-workflow728jk-convert-artifact-433971895/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": "1e6c63ba-79fb-47a4-b288-0594b9a99089", "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-workflow728jk/series-workflow728jk-build-action-1124286989/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-27 08:59:51 +0000 UTC FinishedAt: 2026-06-27 09:24:20 +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:*bb2dbc53-9227-46ad-8c0f-20f15a173e45,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-workflow728jk/series-workflow728jk-convert-artifact-433971895/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": "1e6c63ba-79fb-47a4-b288-0594b9a99089", "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-workflow728jk/series-workflow728jk-build-action-1124286989/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-27 09:24:30 +0000 UTC FinishedAt: 2026-06-27 09:24:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-27 09:24:30 +0000 UTC FinishedAt: 2026-06-27 09:24:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-27 09:24:30 +0000 UTC FinishedAt: 2026-06-27 09:24:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-27 09:24:30 +0000 UTC FinishedAt: 2026-06-27 09:24:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow728jk/series-workflow728jk-convert-artifact-2174136806/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-27 09:24:51 +0000 UTC FinishedAt: 2026-06-27 09:27:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-27 09:24:51 +0000 UTC FinishedAt: 2026-06-27 09:27:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1e6c63ba-79fb-47a4-b288-0594b9a99089,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-workflow728jk/series-workflow728jk-build-action-1124286989/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-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-27 09:27:28 +0000 UTC FinishedAt: 2026-06-27 09:27:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-27 09:27:28 +0000 UTC FinishedAt: 2026-06-27 09:27:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-27 09:27:28 +0000 UTC FinishedAt: 2026-06-27 09:49:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-27 09:27:28 +0000 UTC FinishedAt: 2026-06-27 09:49:06 +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:*bb2dbc53-9227-46ad-8c0f-20f15a173e45,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-workflow728jk/series-workflow728jk-convert-artifact-2174136806/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": "3be015d3-96f3-4118-a677-cac71a6a9749", "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-workflow728jk/series-workflow728jk-build-action-1919903658/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-27 09:27:28 +0000 UTC FinishedAt: 2026-06-27 09:48:45 +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:*bb2dbc53-9227-46ad-8c0f-20f15a173e45,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-workflow728jk/series-workflow728jk-convert-artifact-2174136806/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": "3be015d3-96f3-4118-a677-cac71a6a9749", "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-workflow728jk/series-workflow728jk-build-action-1919903658/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-27 09:49:06 +0000 UTC FinishedAt: 2026-06-27 09:49:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-27 09:49:06 +0000 UTC FinishedAt: 2026-06-27 09:49:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-27 09:49:06 +0000 UTC FinishedAt: 2026-06-27 09:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-27 09:49:06 +0000 UTC FinishedAt: 2026-06-27 09:50:44 +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:*3be015d3-96f3-4118-a677-cac71a6a9749,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-workflow728jk/series-workflow728jk-build-action-1919903658/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-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Running StartedAt: 2026-06-27 09:50:54 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Running StartedAt: 2026-06-27 09:50:54 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"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:*1e6c63ba-79fb-47a4-b288-0594b9a99089,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3be015d3-96f3-4118-a677-cac71a6a9749,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-workflow728jk/series-workflow728jk-build-action-1124286989/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-workflow728jk/series-workflow728jk-build-action-1919903658/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-27 09:50:54 +0000 UTC FinishedAt: 2026-06-27 09:51:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-27 09:50:54 +0000 UTC FinishedAt: 2026-06-27 09:51:48 +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":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"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-workflow728jk/series-workflow728jk-convert-artifact-2941147947/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-27 09:50:54 +0000 UTC FinishedAt: 2026-06-27 09:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-27 09:50:54 +0000 UTC FinishedAt: 2026-06-27 09:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-27 09:50:54 +0000 UTC FinishedAt: 2026-06-27 09:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Running StartedAt: 2026-06-27 09:51:55 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow728jk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_del_link_station","ieee80211_add_link_station","ieee80211_assoc_success","ieee80211_ml_reconf_work","ieee80211_mgd_assoc_ml_reconf","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"795f1b1a91ae13ebc012a364075e42f486a1cafe","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"933d06a2-080f-487d-b106-845b1dac0862","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Running StartedAt: 2026-06-27 09:51:55 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1e6c63ba-79fb-47a4-b288-0594b9a99089,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3be015d3-96f3-4118-a677-cac71a6a9749,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-workflow728jk/series-workflow728jk-build-action-1124286989/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-workflow728jk/series-workflow728jk-build-action-1919903658/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-workflow728jk/series-workflow728jk-convert-artifact-2941147947/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil