Name: series-workflow2kwxk Phase: Succeeded StartedAt: 2026-07-27 13:31:48 +0000 UTC FinishedAt: 2026-07-27 18:41:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[0] Phase: Succeeded StartedAt: 2026-07-27 13:31:48 +0000 UTC FinishedAt: 2026-07-27 14:08:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 13:31:48 +0000 UTC FinishedAt: 2026-07-27 14:08:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPP" ], "series_id": "890b06ba-7657-4da5-b432-2cd4b2bab7a0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ppp_ioctl", "ppp_register_net_channel", "ppp_unregister_channel" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwcF9pb2N0bCYjMzQ7LAogICAgJiMzNDtwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWwmIzM0OywKICAgICYjMzQ7cHBwX3VucmVnaXN0ZXJfY2hhbm5lbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIHJ3X3NlbWFwaG9yZSB3aXRoIGEgbXV0ZXggaW4gdGhlIFBQUCBjaGFubmVsIHN0cnVjdHVyZSwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgbG9ja2luZyBkdXJpbmcgUFBQIGlvY3RscyBhbmQgY2hhbm5lbCByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24uIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBpb2N0bCBoYW5kbGVyIGFuZCB0aGUgY2hhbm5lbCByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24gZnVuY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjA3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzhkNGUzNmIwN2Y0MTk2OWRiZjlhZTdlNWNhZDVlMmVmYjdlZDMyZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDE0OjA3OjIyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmNcbmluZGV4IGNhY2M0YzNhMzdkMmNkLi4wOGJiODk3NjU0ODdmYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuY1xuQEAgLTM5LDcgJiM0MzszOSw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3RjcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3J3c2VtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zdGRkZWYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuQEAgLTE3Niw3ICYjNDM7MTc1LDcgQEAgc3RydWN0IGNoYW5uZWwge1xuIFx0c3RydWN0IHBwcF9maWxlXHRmaWxlO1x0XHQvKiBzdHVmZiBmb3IgcmVhZC93cml0ZS9wb2xsICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XHRcdC8qIGxpbmsgaW4gYWxsL25ld19jaGFubmVscyBsaXN0ICovXG4gXHRzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW47XHQvKiBwdWJsaWMgY2hhbm5lbCBkYXRhIHN0cnVjdHVyZSAqL1xuLVx0c3RydWN0IHJ3X3NlbWFwaG9yZSBjaGFuX3NlbTtcdC8qIHByb3RlY3RzIGBjaGFuJiMzOTsgZHVyaW5nIGNoYW4gaW9jdGwgKi9cbiYjNDM7XHRzdHJ1Y3QgbXV0ZXggY2hhbl9zZW07XHRcdC8qIHByb3RlY3RzIGBjaGFuJiMzOTsgZHVyaW5nIGNoYW4gaW9jdGwgKi9cbiBcdHNwaW5sb2NrX3RcdGRvd25sO1x0XHQvKiBwcm90ZWN0cyBgY2hhbiYjMzk7LCBmaWxlLnhxIGRlcXVldWUgKi9cbiBcdHN0cnVjdCBwcHAgX19yY3UgKnBwcDtcdFx0LyogcHBwIHVuaXQgd2UmIzM5O3JlIGNvbm5lY3RlZCB0byAqL1xuIFx0c3RydWN0IG5ldFx0KmNoYW5fbmV0O1x0LyogdGhlIG5ldCBjaGFubmVsIGJlbG9uZ3MgdG8gKi9cbkBAIC03ODgsMTIgJiM0Mzs3ODcsMTIgQEAgc3RhdGljIGxvbmcgcHBwX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0ZGVmYXVsdDpcbi1cdFx0XHRkb3duX3JlYWQoXHUwMDI2cGNoLVx1MDAzZWNoYW5fc2VtKTtcbiYjNDM7XHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZwY2gtXHUwMDNlY2hhbl9zZW0pO1xuIFx0XHRcdGNoYW4gPSBwY2gtXHUwMDNlY2hhbjtcbiBcdFx0XHRlcnIgPSAtRU5PVFRZO1xuIFx0XHRcdGlmIChjaGFuIFx1MDAyNlx1MDAyNiBjaGFuLVx1MDAzZW9wcy1cdTAwM2Vpb2N0bClcbiBcdFx0XHRcdGVyciA9IGNoYW4tXHUwMDNlb3BzLVx1MDAzZWlvY3RsKGNoYW4sIGNtZCwgYXJnKTtcbi1cdFx0XHR1cF9yZWFkKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4mIzQzO1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwY2gtXHUwMDNlY2hhbl9zZW0pO1xuIFx0XHR9XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuQEAgLTI5MjIsNyAmIzQzOzI5MjEsNyBAQCBpbnQgcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHBwcF9jaGFubmVsICpjaGFuKVxuICNpZmRlZiBDT05GSUdfUFBQX01VTFRJTElOS1xuIFx0cGNoLVx1MDAzZWxhc3RzZXEgPSAtMTtcbiAjZW5kaWYgLyogQ09ORklHX1BQUF9NVUxUSUxJTksgKi9cbi1cdGluaXRfcndzZW0oXHUwMDI2cGNoLVx1MDAzZWNoYW5fc2VtKTtcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZwY2gtXHUwMDNlZG93bmwpO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cGNoLVx1MDAzZXVwbCk7XG4gXG5AQCAtMzAwNSwxMSAmIzQzOzMwMDQsMTEgQEAgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4pXG4gXHQgKiB0aGUgY2hhbm5lbCYjMzk7cyBzdGFydF94bWl0IG9yIGlvY3RsIHJvdXRpbmUgYmVmb3JlIHdlIHByb2NlZWQuXG4gXHQgKi9cbiBcdHBwcF9kaXNjb25uZWN0X2NoYW5uZWwocGNoKTtcbi1cdGRvd25fd3JpdGUoXHUwMDI2cGNoLVx1MDAzZWNoYW5fc2VtKTtcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2cGNoLVx1MDAzZWRvd25sKTtcbiBcdHBjaC1cdTAwM2VjaGFuID0gTlVMTDtcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnBjaC1cdTAwM2Vkb3dubCk7XG4tXHR1cF93cml0ZShcdTAwMjZwY2gtXHUwMDNlY2hhbl9zZW0pO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwY2gtXHUwMDNlY2hhbl9zZW0pO1xuIFxuIFx0cG4gPSBwcHBfcGVybmV0KHBjaC1cdTAwM2VjaGFuX25ldCk7XG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2cG4tXHUwMDNlYWxsX2NoYW5uZWxzX2xvY2spO1xuQEAgLTM2MDAsNiAmIzQzOzM1OTksNyBAQCBzdGF0aWMgdm9pZCBwcHBfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBjaGFubmVsICpwY2gpXG4gXHRcdHByX2VycihcJiMzNDtwcHA6IGRlc3Ryb3lpbmcgdW5kZWFkIGNoYW5uZWwgJXAgIVxcblwmIzM0OywgcGNoKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuJiM0MztcdG11dGV4X2Rlc3Ryb3koXHUwMDI2cGNoLVx1MDAzZWNoYW5fc2VtKTtcbiBcdGNhbGxfcmN1KFx1MDAyNnBjaC1cdTAwM2VyY3UsIHBwcF9yZWxlYXNlX2NoYW5uZWxfZnJlZSk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjA3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQUFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwcHBfaW9jdGwmIzM0OywKICAgICYjMzQ7cHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsJiMzNDssCiAgICAmIzM0O3BwcF91bnJlZ2lzdGVyX2NoYW5uZWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYSByd19zZW1hcGhvcmUgd2l0aCBhIG11dGV4IGluIHRoZSBQUFAgY2hhbm5lbCBzdHJ1Y3R1cmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIGxvY2tpbmcgZHVyaW5nIFBQUCBpb2N0bHMgYW5kIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW9jdGwgaGFuZGxlciBhbmQgdGhlIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM4ZDRlMzZiMDdmNDE5NjlkYmY5YWU3ZTVjYWQ1ZTJlZmI3ZWQzMmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyNyAxNDowNzoyMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMKaW5kZXggY2FjYzRjM2EzN2QyY2QuLjA4YmI4OTc2NTQ4N2ZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYwpAQCAtMzksNyAmIzQzOzM5LDYgQEAKICNpbmNsdWRlICZsdDtsaW51eC9pcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3RjcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NwaW5sb2NrLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7bGludXgvcndzZW0uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zdGRkZWYuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tdXRleC5oJmd0OwpAQCAtMTc2LDcgJiM0MzsxNzUsNyBAQCBzdHJ1Y3QgY2hhbm5lbCB7CiAJc3RydWN0IHBwcF9maWxlCWZpbGU7CQkvKiBzdHVmZiBmb3IgcmVhZC93cml0ZS9wb2xsICovCiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwkJLyogbGluayBpbiBhbGwvbmV3X2NoYW5uZWxzIGxpc3QgKi8KIAlzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW47CS8qIHB1YmxpYyBjaGFubmVsIGRhdGEgc3RydWN0dXJlICovCi0Jc3RydWN0IHJ3X3NlbWFwaG9yZSBjaGFuX3NlbTsJLyogcHJvdGVjdHMgYGNoYW4mIzM5OyBkdXJpbmcgY2hhbiBpb2N0bCAqLwomIzQzOwlzdHJ1Y3QgbXV0ZXggY2hhbl9zZW07CQkvKiBwcm90ZWN0cyBgY2hhbiYjMzk7IGR1cmluZyBjaGFuIGlvY3RsICovCiAJc3BpbmxvY2tfdAlkb3dubDsJCS8qIHByb3RlY3RzIGBjaGFuJiMzOTssIGZpbGUueHEgZGVxdWV1ZSAqLwogCXN0cnVjdCBwcHAgX19yY3UgKnBwcDsJCS8qIHBwcCB1bml0IHdlJiMzOTtyZSBjb25uZWN0ZWQgdG8gKi8KIAlzdHJ1Y3QgbmV0CSpjaGFuX25ldDsJLyogdGhlIG5ldCBjaGFubmVsIGJlbG9uZ3MgdG8gKi8KQEAgLTc4OCwxMiAmIzQzOzc4NywxMiBAQCBzdGF0aWMgbG9uZyBwcHBfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKLQkJCWRvd25fcmVhZCgmYW1wO3BjaC0mZ3Q7Y2hhbl9zZW0pOwomIzQzOwkJCW11dGV4X2xvY2soJmFtcDtwY2gtJmd0O2NoYW5fc2VtKTsKIAkJCWNoYW4gPSBwY2gtJmd0O2NoYW47CiAJCQllcnIgPSAtRU5PVFRZOwogCQkJaWYgKGNoYW4gJmFtcDsmYW1wOyBjaGFuLSZndDtvcHMtJmd0O2lvY3RsKQogCQkJCWVyciA9IGNoYW4tJmd0O29wcy0mZ3Q7aW9jdGwoY2hhbiwgY21kLCBhcmcpOwotCQkJdXBfcmVhZCgmYW1wO3BjaC0mZ3Q7Y2hhbl9zZW0pOwomIzQzOwkJCW11dGV4X3VubG9jaygmYW1wO3BjaC0mZ3Q7Y2hhbl9zZW0pOwogCQl9CiAJCWdvdG8gb3V0OwogCX0KQEAgLTI5MjIsNyAmIzQzOzI5MjEsNyBAQCBpbnQgcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHBwcF9jaGFubmVsICpjaGFuKQogI2lmZGVmIENPTkZJR19QUFBfTVVMVElMSU5LCiAJcGNoLSZndDtsYXN0c2VxID0gLTE7CiAjZW5kaWYgLyogQ09ORklHX1BQUF9NVUxUSUxJTksgKi8KLQlpbml0X3J3c2VtKCZhbXA7cGNoLSZndDtjaGFuX3NlbSk7CiYjNDM7CW11dGV4X2luaXQoJmFtcDtwY2gtJmd0O2NoYW5fc2VtKTsKIAlzcGluX2xvY2tfaW5pdCgmYW1wO3BjaC0mZ3Q7ZG93bmwpOwogCXNwaW5fbG9ja19pbml0KCZhbXA7cGNoLSZndDt1cGwpOwogCkBAIC0zMDA1LDExICYjNDM7MzAwNCwxMSBAQCBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbikKIAkgKiB0aGUgY2hhbm5lbCYjMzk7cyBzdGFydF94bWl0IG9yIGlvY3RsIHJvdXRpbmUgYmVmb3JlIHdlIHByb2NlZWQuCiAJICovCiAJcHBwX2Rpc2Nvbm5lY3RfY2hhbm5lbChwY2gpOwotCWRvd25fd3JpdGUoJmFtcDtwY2gtJmd0O2NoYW5fc2VtKTsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BjaC0mZ3Q7Y2hhbl9zZW0pOwogCXNwaW5fbG9ja19iaCgmYW1wO3BjaC0mZ3Q7ZG93bmwpOwogCXBjaC0mZ3Q7Y2hhbiA9IE5VTEw7CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtwY2gtJmd0O2Rvd25sKTsKLQl1cF93cml0ZSgmYW1wO3BjaC0mZ3Q7Y2hhbl9zZW0pOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwY2gtJmd0O2NoYW5fc2VtKTsKIAogCXBuID0gcHBwX3Blcm5ldChwY2gtJmd0O2NoYW5fbmV0KTsKIAlzcGluX2xvY2tfYmgoJmFtcDtwbi0mZ3Q7YWxsX2NoYW5uZWxzX2xvY2spOwpAQCAtMzYwMCw2ICYjNDM7MzU5OSw3IEBAIHN0YXRpYyB2b2lkIHBwcF9yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGNoYW5uZWwgKnBjaCkKIAkJcHJfZXJyKCYjMzQ7cHBwOiBkZXN0cm95aW5nIHVuZGVhZCBjaGFubmVsICVwICFcbiYjMzQ7LCBwY2gpOwogCQlyZXR1cm47CiAJfQomIzQzOwltdXRleF9kZXN0cm95KCZhbXA7cGNoLSZndDtjaGFuX3NlbSk7CiAJY2FsbF9yY3UoJmFtcDtwY2gtJmd0O3JjdSwgcHBwX3JlbGVhc2VfY2hhbm5lbF9mcmVlKTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzgyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIExvY2tpbmcgTWVjaGFuaXNtIENoYW5nZSBpbiB0aGUgUFBQIEdlbmVyaWMgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIGxvY2tpbmcgbWVjaGFuaXNtIHdpdGhpbiB0aGUgUFBQIGdlbmVyaWMgZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3ZlIHN3YXBwZWQgYHN0cnVjdCByd19zZW1hcGhvcmUgY2hhbl9zZW1gIGZvciBgc3RydWN0IG11dGV4IGNoYW5fc2VtYCB3aXRoaW4gdGhlIGBzdHJ1Y3QgY2hhbm5lbGAgZGVmaW5pdGlvbiBpbiBgZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmNgLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBBIHJlYWQtd3JpdGUgc2VtYXBob3JlIG9mZmVycyBkaWZmZXJlbnQgY29uY3VycmVuY3kgY2hhcmFjdGVyaXN0aWNzIHRoYW4gYSBtdXRleCwgc28gdGhpcyBzaGlmdCBoYXMgaW1wbGljYXRpb25zIGZvciBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGNvbmN1cnJlbnQgYWNjZXNzIHRvIGNoYW5uZWwgcmVzb3VyY2VzLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBpbXBhY3RlZCBhcmUgYHBwcF9pb2N0bGAsIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAsIGFuZCBgcHBwX3JlbGVhc2VfY2hhbm5lbGAuIFRoZXNlIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBhbmQgbWFuYWdlbWVudCBmdW5jdGlvbnMgZm9yIFBQUCBjaGFubmVscy4gSXQmIzM5O3MgY3JpdGljYWwgdG8gYW5hbHl6ZSBob3cgdGhlIGxvY2tpbmcgYmVoYXZpb3Igd2l0aGluIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGJlIGFmZmVjdGVkLiBXaGF0IHdlcmUgdGhlIG9yaWdpbmFsIHJlYWQvd3JpdGUgYWNjZXNzIHBhdHRlcm5zPyBBcmUgdGhlcmUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGdhaW5zIG9yIHJlZ3Jlc3Npb25zPyBBbmQsIGNydWNpYWxseSwgYXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGludHJvZHVjZWQgb3IgZWxpbWluYXRlZCBieSB0aGlzIG1vZGlmaWNhdGlvbj8KClRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYHBwcF9nZW5lcmljLmNgLCBzbyBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiB0aGVyZS4gQmVmb3JlIGRpdmluZyBkZWVwIGludG8gdGhlIGNvZGUsIEkgd2FudCB0byBjb25maXJtIHRoYXQgdGhpcyBjaGFuZ2UgaXMgcHJvcGVybHkgY29uZmlndXJlZC4gQSBsb29rIGF0IHRoZSBhc3NvY2lhdGVkIGNvbmZpZyBvcHRpb25zIGlzIG5leHQgb24gbXkgbGlzdCB0byBjb25maXJtIHRoaXMgaXMgYW4gZW5hYmxlZCBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHBwX2dlbmVyaWMubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9wcHAvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUFBQKSAmIzQzOz0gcHBwX2dlbmVyaWMub1xuZHJpdmVycy9uZXQvcHBwL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1BQUF9BU1lOQykgJiM0Mzs9IHBwcF9hc3luYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMwNAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBQUCBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25zKioKCk9rYXksIHNvIHRoZSBjb25maWcgb3B0aW9uIEkmIzM5O20gbG9va2luZyBhdCBoZXJlIGlzIGBDT05GSUdfUFBQYC4gUmlnaHQsIHRoYXQgaGVscHMgbmFycm93IHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gTm93LCBJJiMzOTt2ZSBnb3QgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0aGF0IHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgcGxheWVycyBpbiB0aGlzIGFyZWE6IGBwcHBfaW9jdGxgLCBgcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsYCwgYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgLCBhbmQgYHBwcF9yZWxlYXNlX2NoYW5uZWxgLiBMZXQmIzM5O3MgYnJlYWsgdGhlc2UgZG93biBhbmQgc2VlIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4KCkZpcnN0LCBgcHBwX2lvY3RsYC4uLiB0aGF0JiMzOTtzIHRoZSBpb2N0bCBoYW5kbGVyIGZvciBQUFAuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgaW9jdGxzLCB0aGF0JiMzOTtzIHBvdGVudGlhbGx5IGEgdmVyeSByaWNoIHRhcmdldC4gSXQgbGlrZWx5IGhhbmRsZXMgYSByYW5nZSBvZiBjb25maWd1cmF0aW9uIGFuZCBjb250cm9sIG9wZXJhdGlvbnMuIE1pZ2h0IGJlIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uCgpUaGVuIHdlJiMzOTt2ZSBnb3QgYHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbGAgYW5kIGBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsYC4gVGhlc2UgYXJlIGV4cG9ydGVkIHN5bWJvbHMsIHdoaWNoIG1lYW5zIHRoZXkmIzM5O3JlIHVzZWQgYnkgb3RoZXIgUFBQIG1vZHVsZXMuIFRoaW5rIGBwcHBfYXN5bmNgLCBgcHBwb2VgLCBgcHBwX3N5bmN0dHlgLCBldGMuIFRoYXQmIzM5O3MgYSBrZXkgcG9pbnQuIEV4dGVybmFsIGRlcGVuZGVuY2llcy4uLiBJIG5lZWQgdG8gY29uc2lkZXIgaG93IGNoYW5nZXMgaGVyZSBtaWdodCByaXBwbGUgb3V0d2FyZHMuCgpGaW5hbGx5LCBgcHBwX3JlbGVhc2VfY2hhbm5lbGAgYXBwZWFycyB0byBiZSBhbiBpbnRlcm5hbCBmdW5jdGlvbi4gRG9lc24mIzM5O3QgbWVhbiBpdCYjMzk7cyB1bmltcG9ydGFudCwgYnV0IGl0JiMzOTtzIGxpa2VseSBtb3JlIGNvbmZpbmVkIGluIHNjb3BlLiBJJiMzOTtsbCBzdGlsbCBuZWVkIHRvIGxvb2sgYXQgaXQsIGJ1dCBteSBwcmltYXJ5IGZvY3VzIGZvciB0aGlzIGludmVzdGlnYXRpb24gaXMgb24gZXh0ZXJuYWwgaW1wYWN0cy4KClNvLCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBgcHBwX2lvY3RsYC4gSSBuZWVkIHRvIGNoZWNrIGl0cyBzaWduYXR1cmUuIElzIGl0IHN0YXRpYz8gSXMgaXQgaW5saW5lPyBVbmRlcnN0YW5kaW5nIGl0cyBzY29wZSB3aWxsIGJlIGltcG9ydGFudCBmb3IgbXkgbmV4dCBzdGVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcHBfaW9jdGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYz02Nzk9c3RhdGljIGludCBwcHBfdW5icmlkZ2VfY2hhbm5lbHMoc3RydWN0IGNoYW5uZWwgKnBjaClcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy03MTItXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzo3MTM6c3RhdGljIGxvbmcgcHBwX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTcxNC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM9OTgzPXN0YXRpYyBsb25nIHBwcF9jb21wYXRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTEwMzktXHRpZiAoZXJyID09IC1FTk9JT0NUTENNRClcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jOjEwNDA6XHRcdGVyciA9IHBwcF9pb2N0bChmaWxlLCBjbWQsICh1bnNpZ25lZCBsb25nKWNvbXBhdF9wdHIoYXJnKSk7XG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0xMDQxLVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jPTExMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHBwX2RldmljZV9mb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTExMTUtXHQucG9sbFx0XHQ9IHBwcF9wb2xsLFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM6MTExNjpcdC51bmxvY2tlZF9pb2N0bFx0PSBwcHBfaW9jdGwsXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0xMTE3LSNpZmRlZiBDT05GSUdfQ09NUEFUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE5MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgUFBQIERldmljZSBEcml2ZXIgU3RydWN0dXJlKioKCkhtbSwgc28gYHBwcF9pb2N0bGAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIEludGVyZXN0aW5nLCBidXQgaXQmIzM5O3MgdXNlZCBhcyB0aGUgYHVubG9ja2VkX2lvY3RsYCBoYW5kbGVyIHdpdGhpbiBgcHBwX2RldmljZV9mb3BzYC4gVGhhdCBtYWtlcyBzZW5zZSAtIGl0IGtlZXBzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGNsZWFuLiBJJiMzOTttIG5vdGluZyB0aGUgbGlua2FnZSBwb2ludCwgYnV0IGl0JiMzOTtzIHRoZSBgdW5sb2NrZWRgIGFzcGVjdCB0aGF0JiMzOTtzIGtleSBoZXJlLiBJdCBpbXBsaWVzIGEgY2VydGFpbiB0aHJlYWRpbmcgbW9kZWwgb3IgcG90ZW50aWFsIGZvciBjb25jdXJyZW5jeSB0aGF0IG5lZWRzIGNhcmVmdWwgY29uc2lkZXJhdGlvbi4KCldhaXQgYSBzZWNvbmTigKYgYHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbGAgaXMgKmV4cG9ydGVkKj8gVGhhdCYjMzk7cyBhIGRpZmZlcmVudCBiZWFzdC4gSWYgaXQmIzM5O3MgZXhwb3J0ZWQsIHRoYXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBpbnRlbmRlZCBmb3IgZXh0ZXJuYWwgbW9kdWxlcyB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGludGVyZmFjZSB2ZXJ5IGNhcmVmdWxseS4gV2hhdCBraW5kIG9mIG5ldCBjaGFubmVscyBhcmUgdGhleSByZWdpc3RlcmluZz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgbG9ja2luZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBpZiBleHRlcm5hbCBtb2R1bGVzIGFyZSBob29raW5nIGluPyBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIG9uIHRoYXQgZnVuY3Rpb24gYW5kIGl0cyB1c2FnZSBwcmV0dHkgc29vbi4gVGhhdCYjMzk7cyBwcm9iYWJseSB0aGUgbW9zdCBpbXBvcnRhbnQgYXNwZWN0IG9mIHRoYXQgZHJpdmVyIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYz0yODk5PWludCBwcHBfcmVnaXN0ZXJfY2hhbm5lbChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4pXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTAwLXtcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jOjI5MDE6XHRyZXR1cm4gcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsKGN1cnJlbnQtXHUwMDNlbnNwcm94eS1cdTAwM2VuZXRfbnMsIGNoYW4pO1xuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMjkwMi19XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMjkwNC0vKiBDcmVhdGUgYSBuZXcsIHVuYXR0YWNoZWQgcHBwIGNoYW5uZWwgZm9yIHNwZWNpZmllZCBuZXQuICovXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzoyOTA1OmludCBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4pXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTA2LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYz0zNjU2PW1vZHVsZV9leGl0KHBwcF9jbGVhbnVwKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTM2NTctXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzozNjU4OkVYUE9SVF9TWU1CT0wocHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTM2NTktRVhQT1JUX1NZTUJPTChwcHBfcmVnaXN0ZXJfY2hhbm5lbCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgyMQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkNvbmNlcm5pbmcgYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgIEV4cG9ydGluZyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsYCBpcyBhbHNvIGV4cG9ydGVkLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhbmQgaXQgaW1tZWRpYXRlbHkgcHJvbXB0cyBhIGZldyBjb25zaWRlcmF0aW9ucy4gV2UmIzM5O3JlIGNsZWFybHkgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24gdGhhdCYjMzk7cyBpbnRlbmRlZCBmb3IgbW9yZSBnZW5lcmFsIHVzZSB0aGFuIGluaXRpYWxseSBhcHBhcmVudC4gVGhlIGltcGxpY2F0aW9ucyBhcmU6CgoqICAgKipQb3RlbnRpYWwgZm9yIGV4dGVybmFsIHVzZToqKiBJZiBpdCYjMzk7cyBleHBvcnRlZCwgdGhlcmUmIzM5O3MgYSBkZWZpbml0ZSBpbnRlbnQgZm9yIG90aGVyIG1vZHVsZXMgb3IgZXZlbiB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0byBjYWxsIHRoaXMgZnVuY3Rpb24uIFdoYXQgYXJlIHRoZSB1c2UtY2FzZXMgdGhlIG9yaWdpbmFsIGRldmVsb3BlcnMgaGFkIGluIG1pbmQgZm9yIGV4dGVybmFsIGNvbnN1bXB0aW9uPwoqICAgKipBUEkgc3RhYmlsaXR5OioqIEV4cG9ydGluZyBhIGZ1bmN0aW9uIGNyZWF0ZXMgYSBjb21taXRtZW50IHRvIGEgZGVncmVlIG9mIEFQSSBzdGFiaWxpdHkuIFdlJiMzOTtsbCBuZWVkIHRvIGNhcmVmdWxseSBjb25zaWRlciBhbnkgZnV0dXJlIG1vZGlmaWNhdGlvbnMgdG8gYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgIHRvIGVuc3VyZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFuZCBhdm9pZCBicmVha2luZyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuCiogICAqKkRvY3VtZW50YXRpb246KiogVGhpcyBhYnNvbHV0ZWx5IG5lZWRzIHRob3JvdWdoIGRvY3VtZW50YXRpb24uIFRoZSBleGlzdGluZyBpbnRlcm5hbCBjb21tZW50cyBhbmQgcG9zc2libHkgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uIHdpbGwgbmVlZCB0byBoYXZlIGEgc2VjdGlvbiBhZGRlZCB0byBpdCBvciBhbiB1cGRhdGUuIFdlIG5lZWQgdG8gY2xlYXJseSBleHBsYWluIHRoZSBleHBlY3RlZCBwYXJhbWV0ZXJzLCBzaWRlIGVmZmVjdHMsIHByZWNvbmRpdGlvbnMsIGFuZCB0aGUgY29uc2VxdWVuY2VzIG9mIG1pc3VzZS4KKiAgICoqU2VjdXJpdHk6KiogQW55IHB1YmxpY2x5IGF2YWlsYWJsZSBmdW5jdGlvbiBpcyBhIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9yLiBBIHNlY3VyaXR5IGF1ZGl0IGlzIGEgbXVzdC4gSWYgdGhlcmUgYXJlIGFueSB2dWxuZXJhYmlsaXRpZXMsIHRoZXkgY291bGQgbm93IGJlIGV4cGxvaXRlZCBmcm9tIG91dHNpZGUgdGhlIGtlcm5lbCBjb3JlLgoqICAgKipUZXN0aW5nOioqIFdlJiMzOTtsbCBuZWVkIHRvIHdyaXRlIHVuaXQgdGVzdHMgZm9yIGFueSBuZXcgaW50ZW5kZWQgdXNlLiBQbHVzLCBzaW5jZSBpdHMgcHVibGljLCB0aGUgdGVzdHMgbmVlZCB0byBiZSByb2J1c3Qgd2l0aCBjb25zaWRlcmF0aW9uIGZvciB3aGF0IG90aGVycyBtaWdodCBkbyB3aXRoIGl0LgoqICAgKipEZXNpZ24gQ29uc2lkZXJhdGlvbjoqKiBUaGlzIGltcGxpZXMgYSBjZXJ0YWluIGxldmVsIG9mIGRlc2lnbiBwaGlsb3NvcGh5IGZvciB0aGUgb3ZlcmFsbCBQUFAgYXJjaGl0ZWN0dXJlLiBXaHkgd2FzIGl0IGNvbnNpZGVyZWQgYXBwcm9wcmlhdGUgdG8gcHJvdmlkZSBhbiBleHRlcm5hbGx5IHVzYWJsZSB1bnJlZ2lzdHJhdGlvbiBmdW5jdGlvbj8gSXMgdGhpcyBhIGNvcmUgZmVhdHVyZSB0aGF04oCZcyBwYXJ0IG9mIHRoZSBnZW5lcmFsIFBQUCBkZXNpZ24gb3IgaXMgaXQgYSBzcGVjaWZpYyB1c2UtY2FzZSB3aXRoIGEgcG90ZW50aWFsbHkgbmFycm93IHNjb3BlPwoqICAgKipEZXBlbmRlbmNpZXM6KiogV2UmIzM5O2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgYW55IGRlcGVuZGVuY2llcyB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGhhdmUgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgb3IgaW50ZXJuYWwgUFBQIGRhdGEgc3RydWN0dXJlcy4gSWYgY2hhbmdlcyBhcmUgbWFkZSB0byB0aGVzZSByZWxhdGVkIGFyZWFzLCB3aWxsIHRoZXkgcHJvcGFnYXRlIHRvIHRoaXMgZnVuY3Rpb24sIGNhdXNpbmcgbW9yZSBoZWFkYWNoZXM/CgpJbiBzaG9ydCwganVzdCBzZWVpbmcgYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgIGV4cG9ydGVkIHJlcXVpcmVzIGEgdGhvcm91Z2ggcmUtZXZhbHVhdGlvbiBvZiBpdHMgcm9sZSBhbmQgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgc3lzdGVtLiBJdOKAmXMgbm8gbG9uZ2VyIGp1c3QgYW4gaW50ZXJuYWwgZGV0YWlsOyBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCBhbmQgd2UgbmVlZCB0byB0cmVhdCBpdCBhcyBzdWNoLiBUaGlzIHJlcXVpcmVzIGFuIGltbWVkaWF0ZSBjaGVja2xpc3Qgb2YgdXBkYXRlcyB0byBoYW5kbGUgdGhlIHB1YmxpYyBleHBvc3VyZSBvZiB0aGUgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BwcF91bnJlZ2lzdGVyX2NoYW5uZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYz0yOTkxPXZvaWRcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jOjI5OTI6cHBwX3VucmVnaXN0ZXJfY2hhbm5lbChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4pXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTkzLXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYz0zNjU5PUVYUE9SVF9TWU1CT0wocHBwX3JlZ2lzdGVyX2NoYW5uZWwpO1xuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM6MzY2MDpFWFBPUlRfU1lNQk9MKHBwcF91bnJlZ2lzdGVyX2NoYW5uZWwpO1xuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMzY2MS1FWFBPUlRfU1lNQk9MKHBwcF9jaGFubmVsX2luZGV4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzMwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBQUCBDaGFubmVsIExvY2tpbmcgTWVjaGFuaXNtKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIG91dCBhIGByd19zZW1hcGhvcmVgIHdpdGggYSBtdXRleCB3aXRoaW4gdGhlIGBzdHJ1Y3QgY2hhbm5lbGAgZGF0YSBzdHJ1Y3R1cmUuIFRoYXQmIzM5O3MgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGl0IHNwZWNpZmljYWxseSBpbXBhY3RzIHRoZSBQUFAgY2hhbm5lbCBpb2N0bHMgYW5kIHRoZSByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24gcHJvY2Vzc2VzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byBjb25jZW50cmF0ZSBvbiwgb2J2aW91c2x5LCBhcmUgYHBwcF9pb2N0bGAsIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLCBhbmQgYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgLiBgcHBwX2lvY3RsYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0IGFjdHMgYXMgdGhlIGlvY3RsIGhhbmRsZXIsIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgcG9pbnQgdG8gZXhhbWluZS4gVGhlIG90aGVyIHR3bywgZGVhbGluZyB3aXRoIHJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RyYXRpb24sIGFyZSBhbHNvIGltcG9ydGFudCB0YXJnZXRzLgoKTm93LCBiZWZvcmUgSSBkaXZlIGRlZXAgaW50byB0aGUgY29kZSwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gT2J2aW91c2x5LCBgQ09ORklHX1BQUGAgaXMgdGhlIG1haW4gb25lLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCB0aGlzIGNoYW5nZSBtaWdodCBpbnRyb2R1Y2Ugb3IgaW1wYWN0PyBJIHNob3VsZCBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BwcC9LY29uZmlnYCBmaWxlIHRvIGJlIHN1cmUuIFRoaXMgd2lsbCBoZWxwIG1lIGJlIGNvbXByZWhlbnNpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQUFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6Njpjb25maWcgUFBQXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIChwb2ludC10by1wb2ludCBwcm90b2NvbCkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTM1PWlmIFBQUFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMzYtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzozNzpjb25maWcgUFBQX0JTRENPTVBcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIEJTRC1Db21wcmVzcyBjb21wcmVzc2lvblwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTU0LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6NTU6Y29uZmlnIFBQUF9ERUZMQVRFXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy01Ni1cdHRyaXN0YXRlIFwmIzM0O1BQUCBEZWZsYXRlIGNvbXByZXNzaW9uXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNjgtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzo2OTpjb25maWcgUFBQX0ZJTFRFUlxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNzAtXHRib29sIFwmIzM0O1BQUCBmaWx0ZXJpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy04MC1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjgxOmNvbmZpZyBQUFBfTVBQRVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctODItXHR0cmlzdGF0ZSBcJiMzNDtQUFAgTVBQRSBjb21wcmVzc2lvbiAoZW5jcnlwdGlvbilcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy05MS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjkyOmNvbmZpZyBQUFBfTVVMVElMSU5LXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy05My1cdGJvb2wgXCYjMzQ7UFBQIG11bHRpbGluayBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTAzLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTA0OmNvbmZpZyBQUFBPQVRNXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMDUtXHR0cmlzdGF0ZSBcJiMzNDtQUFAgb3ZlciBBVE1cJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMTItXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxMTM6Y29uZmlnIFBQUE9YXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMTQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE1LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTE2OmNvbmZpZyBQUFBPRVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE3LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgRXRoZXJuZXRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xMjc9Y2hvaWNlXG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTM4LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTM5OmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNfMVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQwLVx0Ym9vbCBcJiMzNDsxIGJpdCAoMiBidWNrZXRzKVwmIzM0O1xuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQxLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTQyOmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNfMlxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQzLVx0Ym9vbCBcJiMzNDsyIGJpdHMgKDQgYnVja2V0cylcJiMzNDtcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0NC1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0NTpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzRcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0Ni1cdGJvb2wgXCYjMzQ7NCBiaXRzICgxNiBidWNrZXRzKVwmIzM0O1xuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ3LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTQ4OmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNfOFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ5LVx0Ym9vbCBcJiMzNDs4IGJpdHMgKDI1NiBidWNrZXRzKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE1MT1lbmRjaG9pY2VcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE1Mi1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE1Mzpjb25maWcgUFBQT0VfSEFTSF9CSVRTXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTQtXHRpbnRcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNjE9Y29uZmlnIFBQVFBcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNzItXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNzM6Y29uZmlnIFBQUE9MMlRQXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNzQtXHR0cmlzdGF0ZSBcJiMzNDtQUFAgb3ZlciBMMlRQXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTgxPWlmIFRUWVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTgyLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTgzOmNvbmZpZyBQUFBfQVNZTkNcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE4NC1cdHRyaXN0YXRlIFwmIzM0O1BQUCBzdXBwb3J0IGZvciBhc3luYyBzZXJpYWwgcG9ydHNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xOTUtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxOTY6Y29uZmlnIFBQUF9TWU5DX1RUWVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTk3LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIHN1cHBvcnQgZm9yIHN5bmMgdHR5IHBvcnRzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMTUKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFBQUCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFBQUCBjb25maWd1cmF0aW9uLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYFBQUGAgaXMgc3VmZmljaWVudCBmb3Igbm93LiBJIG5lZWQgdG8gemVybyBpbiBvbiBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gdGFyZ2V0LiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGBwcHBfaW9jdGxgLCBgcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsYCwgYW5kIGBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsYC4gV2FpdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHVzaW5nIHRoZSBiZXN0IElPQ1RMIGZ1bmN0aW9uLiBgcHBwX2lvY3RsYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gU2hvdWxkIEkgYmUgdXNpbmcgYHBwcF91bmxvY2tlZF9pb2N0bGAgaW5zdGVhZCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGdpdmVuIHRoZSBgc3RhdGljYCBkZWNsYXJhdGlvbj8gSSBuZWVkIHRvIGNoZWNrLgoKQWxyaWdodCwgSSYjMzk7dmUgY29uZmlybWVkIHRoZSBmdW5jdGlvbiBuYW1lIGlzIGRlZmluaXRlbHkgYHBwcF9pb2N0bGAuIFRpbWUgdG8gc2VlIGlmIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBhcmUgaW4gcGxheSBoZXJlLiBPa2F5LCBgcHBwX3JlbGVhc2VfY2hhbm5lbGAgaXMgYWxzbyBtb2RpZmllZCwgYnV0IGl0JiMzOTtzIGFsc28gc3RhdGljLCBzbyBJIGNhbiBwcm9iYWJseSBpZ25vcmUgaXQgZm9yIHRoZSBtb21lbnQuIFJpZ2h0LCBzbyBgcHBwX2lvY3RsYCBpcyBzdGF0aWMuLi4gYnV0IGl0ICppcyogYXNzaWduZWQgdG8gYHBwcF9kZXZpY2VfZm9wcy51bmxvY2tlZF9pb2N0bGAgc28gbm8gaW5saW5pbmcuIFRoYXQmIzM5O3MgZ29vZC4KClNvLCBJJiMzOTtsbCBzdGljayB3aXRoIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAsIGFuZCBgcHBwX2lvY3RsYCBhcyBteSBwcmltYXJ5IHRhcmdldCBzeW1ib2xzLiBUaGF0IGBwcHBfaW9jdGxgIGZ1bmN0aW9uICppcyogdGhlIElPQ1RMIGhhbmRsZXIsIHdoaWNoIGlzIGltcG9ydGFudC4gQnV0IHNpbmNlIGl0JiMzOTtzIGRlY2xhcmVkIHN0YXRpYywgaXMgaXQgdHJ1bHkgYSBkaXN0aW5jdCBzeW1ib2w/IFllcywgaXQgaXMgdXNlZCBmb3IgdGhlIGRldmljZSYjMzk7cyBmaWxlIG9wZXJhdGlvbnMsIHNvIGl0IGNhbiYjMzk7dCBiZSBpbmxpbmVkLiBJdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHdobyBjYWxscyBgcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsYC4gSXQmIzM5O3MgdXNlZCBieSBzZXZlcmFsIG1vZHVsZXMsIGluY2x1ZGluZyBgcHBwX2FzeW5jYCwgYHBwcF9zeW5jdHR5YCwgYW5kIGBwcHBvZWAgZXRjLiBTbywgZnV6emluZyB0aGVzZSBlbnRyeSBwb2ludHMgbG9va3MgbGlrZSBhIHNvbGlkIHN0cmF0ZWd5LgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgYHBwcF9pb2N0bGAgaXMgdGhlIG9ubHkgSU9DVEwgaGFuZGxlciBmb3IgYC9kZXYvcHBwYC4gWWVzLCB0aGF0JiMzOTtzIGNvcnJlY3QuCgpPa2F5LCBJIHRoaW5rIEkgaGF2ZSBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGF0dGFjayBzdXJmYWNlIGhlcmUuIEkmIzM5O2xsIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwcF9pb2N0bCYjMzQ7LAogICAgJiMzNDtwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWwmIzM0OywKICAgICYjMzQ7cHBwX3VucmVnaXN0ZXJfY2hhbm5lbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIHJ3X3NlbWFwaG9yZSB3aXRoIGEgbXV0ZXggaW4gdGhlIFBQUCBjaGFubmVsIHN0cnVjdHVyZSwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgbG9ja2luZyBkdXJpbmcgUFBQIGlvY3RscyBhbmQgY2hhbm5lbCByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24uIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBpb2N0bCBoYW5kbGVyIGFuZCB0aGUgY2hhbm5lbCByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24gZnVuY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQUFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwcHBfaW9jdGwmIzM0OywKICAgICYjMzQ7cHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsJiMzNDssCiAgICAmIzM0O3BwcF91bnJlZ2lzdGVyX2NoYW5uZWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYSByd19zZW1hcGhvcmUgd2l0aCBhIG11dGV4IGluIHRoZSBQUFAgY2hhbm5lbCBzdHJ1Y3R1cmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIGxvY2tpbmcgZHVyaW5nIFBQUCBpb2N0bHMgYW5kIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW9jdGwgaGFuZGxlciBhbmQgdGhlIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjA3OjIzLjc1NDE3ODQyMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMTgwNTkxODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBQUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBwcF9pb2N0bFwiLFxuICAgIFwicHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsXCIsXG4gICAgXCJwcHBfdW5yZWdpc3Rlcl9jaGFubmVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSByd19zZW1hcGhvcmUgd2l0aCBhIG11dGV4IGluIHRoZSBQUFAgY2hhbm5lbCBzdHJ1Y3R1cmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIGxvY2tpbmcgZHVyaW5nIFBQUCBpb2N0bHMgYW5kIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW9jdGwgaGFuZGxlciBhbmQgdGhlIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MDc6MjMuNzU0MTg4NDcyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQxMDI3NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjOGQ0ZTM2YjA3ZjQxOTY5ZGJmOWFlN2U1Y2FkNWUyZWZiN2VkMzJlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDI3IDE0OjA3OjIyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmNcXG5pbmRleCBjYWNjNGMzYTM3ZDJjZC4uMDhiYjg5NzY1NDg3ZmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmNcXG4rKysgYi9kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuY1xcbkBAIC0zOSw3ICszOSw2IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdGNwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9jay5oXFx1MDAzZVxcbi0jaW5jbHVkZSBcXHUwMDNjbGludXgvcndzZW0uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3N0ZGRlZi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbkBAIC0xNzYsNyArMTc1LDcgQEAgc3RydWN0IGNoYW5uZWwge1xcbiBcXHRzdHJ1Y3QgcHBwX2ZpbGVcXHRmaWxlO1xcdFxcdC8qIHN0dWZmIGZvciByZWFkL3dyaXRlL3BvbGwgKi9cXG4gXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcdFxcdC8qIGxpbmsgaW4gYWxsL25ld19jaGFubmVscyBsaXN0ICovXFxuIFxcdHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbjtcXHQvKiBwdWJsaWMgY2hhbm5lbCBkYXRhIHN0cnVjdHVyZSAqL1xcbi1cXHRzdHJ1Y3Qgcndfc2VtYXBob3JlIGNoYW5fc2VtO1xcdC8qIHByb3RlY3RzIGBjaGFuJyBkdXJpbmcgY2hhbiBpb2N0bCAqL1xcbitcXHRzdHJ1Y3QgbXV0ZXggY2hhbl9zZW07XFx0XFx0LyogcHJvdGVjdHMgYGNoYW4nIGR1cmluZyBjaGFuIGlvY3RsICovXFxuIFxcdHNwaW5sb2NrX3RcXHRkb3dubDtcXHRcXHQvKiBwcm90ZWN0cyBgY2hhbicsIGZpbGUueHEgZGVxdWV1ZSAqL1xcbiBcXHRzdHJ1Y3QgcHBwIF9fcmN1ICpwcHA7XFx0XFx0LyogcHBwIHVuaXQgd2UncmUgY29ubmVjdGVkIHRvICovXFxuIFxcdHN0cnVjdCBuZXRcXHQqY2hhbl9uZXQ7XFx0LyogdGhlIG5ldCBjaGFubmVsIGJlbG9uZ3MgdG8gKi9cXG5AQCAtNzg4LDEyICs3ODcsMTIgQEAgc3RhdGljIGxvbmcgcHBwX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRcXHRkZWZhdWx0Olxcbi1cXHRcXHRcXHRkb3duX3JlYWQoXFx1MDAyNnBjaC1cXHUwMDNlY2hhbl9zZW0pO1xcbitcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwY2gtXFx1MDAzZWNoYW5fc2VtKTtcXG4gXFx0XFx0XFx0Y2hhbiA9IHBjaC1cXHUwMDNlY2hhbjtcXG4gXFx0XFx0XFx0ZXJyID0gLUVOT1RUWTtcXG4gXFx0XFx0XFx0aWYgKGNoYW4gXFx1MDAyNlxcdTAwMjYgY2hhbi1cXHUwMDNlb3BzLVxcdTAwM2Vpb2N0bClcXG4gXFx0XFx0XFx0XFx0ZXJyID0gY2hhbi1cXHUwMDNlb3BzLVxcdTAwM2Vpb2N0bChjaGFuLCBjbWQsIGFyZyk7XFxuLVxcdFxcdFxcdHVwX3JlYWQoXFx1MDAyNnBjaC1cXHUwMDNlY2hhbl9zZW0pO1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBjaC1cXHUwMDNlY2hhbl9zZW0pO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXHR9XFxuQEAgLTI5MjIsNyArMjkyMSw3IEBAIGludCBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4pXFxuICNpZmRlZiBDT05GSUdfUFBQX01VTFRJTElOS1xcbiBcXHRwY2gtXFx1MDAzZWxhc3RzZXEgPSAtMTtcXG4gI2VuZGlmIC8qIENPTkZJR19QUFBfTVVMVElMSU5LICovXFxuLVxcdGluaXRfcndzZW0oXFx1MDAyNnBjaC1cXHUwMDNlY2hhbl9zZW0pO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZwY2gtXFx1MDAzZWNoYW5fc2VtKTtcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNnBjaC1cXHUwMDNlZG93bmwpO1xcbiBcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2cGNoLVxcdTAwM2V1cGwpO1xcbiBcXG5AQCAtMzAwNSwxMSArMzAwNCwxMSBAQCBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbilcXG4gXFx0ICogdGhlIGNoYW5uZWwncyBzdGFydF94bWl0IG9yIGlvY3RsIHJvdXRpbmUgYmVmb3JlIHdlIHByb2NlZWQuXFxuIFxcdCAqL1xcbiBcXHRwcHBfZGlzY29ubmVjdF9jaGFubmVsKHBjaCk7XFxuLVxcdGRvd25fd3JpdGUoXFx1MDAyNnBjaC1cXHUwMDNlY2hhbl9zZW0pO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwY2gtXFx1MDAzZWNoYW5fc2VtKTtcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwY2gtXFx1MDAzZWRvd25sKTtcXG4gXFx0cGNoLVxcdTAwM2VjaGFuID0gTlVMTDtcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnBjaC1cXHUwMDNlZG93bmwpO1xcbi1cXHR1cF93cml0ZShcXHUwMDI2cGNoLVxcdTAwM2VjaGFuX3NlbSk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cGNoLVxcdTAwM2VjaGFuX3NlbSk7XFxuIFxcbiBcXHRwbiA9IHBwcF9wZXJuZXQocGNoLVxcdTAwM2VjaGFuX25ldCk7XFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cG4tXFx1MDAzZWFsbF9jaGFubmVsc19sb2NrKTtcXG5AQCAtMzYwMCw2ICszNTk5LDcgQEAgc3RhdGljIHZvaWQgcHBwX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgY2hhbm5lbCAqcGNoKVxcbiBcXHRcXHRwcl9lcnIoXFxcInBwcDogZGVzdHJveWluZyB1bmRlYWQgY2hhbm5lbCAlcCAhXFxcXG5cXFwiLCBwY2gpO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4rXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2cGNoLVxcdTAwM2VjaGFuX3NlbSk7XFxuIFxcdGNhbGxfcmN1KFxcdTAwMjZwY2gtXFx1MDAzZXJjdSwgcHBwX3JlbGVhc2VfY2hhbm5lbF9mcmVlKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MDc6MjQuMzE5MDE4NTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMDYxNTc0MTI0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHBfaW9jdGxcIixcbiAgICBcInBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbFwiLFxuICAgIFwicHBwX3VucmVnaXN0ZXJfY2hhbm5lbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgcndfc2VtYXBob3JlIHdpdGggYSBtdXRleCBpbiB0aGUgUFBQIGNoYW5uZWwgc3RydWN0dXJlLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBsb2NraW5nIGR1cmluZyBQUFAgaW9jdGxzIGFuZCBjaGFubmVsIHJlZ2lzdHJhdGlvbi91bnJlZ2lzdHJhdGlvbi4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGlvY3RsIGhhbmRsZXIgYW5kIHRoZSBjaGFubmVsIHJlZ2lzdHJhdGlvbi91bnJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM4ZDRlMzZiMDdmNDE5NjlkYmY5YWU3ZTVjYWQ1ZTJlZmI3ZWQzMmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNDowNzoyMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmNcbmluZGV4IGNhY2M0YzNhMzdkMmNkLi4wOGJiODk3NjU0ODdmYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jXG4rKysgYi9kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuY1xuQEAgLTM5LDcgKzM5LDYgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdGNwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zcGlubG9jay5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvcndzZW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0ZGRlZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG5AQCAtMTc2LDcgKzE3NSw3IEBAIHN0cnVjdCBjaGFubmVsIHtcbiBcdHN0cnVjdCBwcHBfZmlsZVx0ZmlsZTtcdFx0Lyogc3R1ZmYgZm9yIHJlYWQvd3JpdGUvcG9sbCAqL1xuIFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1x0XHQvKiBsaW5rIGluIGFsbC9uZXdfY2hhbm5lbHMgbGlzdCAqL1xuIFx0c3RydWN0IHBwcF9jaGFubmVsICpjaGFuO1x0LyogcHVibGljIGNoYW5uZWwgZGF0YSBzdHJ1Y3R1cmUgKi9cbi1cdHN0cnVjdCByd19zZW1hcGhvcmUgY2hhbl9zZW07XHQvKiBwcm90ZWN0cyBgY2hhbicgZHVyaW5nIGNoYW4gaW9jdGwgKi9cbitcdHN0cnVjdCBtdXRleCBjaGFuX3NlbTtcdFx0LyogcHJvdGVjdHMgYGNoYW4nIGR1cmluZyBjaGFuIGlvY3RsICovXG4gXHRzcGlubG9ja190XHRkb3dubDtcdFx0LyogcHJvdGVjdHMgYGNoYW4nLCBmaWxlLnhxIGRlcXVldWUgKi9cbiBcdHN0cnVjdCBwcHAgX19yY3UgKnBwcDtcdFx0LyogcHBwIHVuaXQgd2UncmUgY29ubmVjdGVkIHRvICovXG4gXHRzdHJ1Y3QgbmV0XHQqY2hhbl9uZXQ7XHQvKiB0aGUgbmV0IGNoYW5uZWwgYmVsb25ncyB0byAqL1xuQEAgLTc4OCwxMiArNzg3LDEyIEBAIHN0YXRpYyBsb25nIHBwcF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdGRlZmF1bHQ6XG4tXHRcdFx0ZG93bl9yZWFkKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4rXHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZwY2gtXHUwMDNlY2hhbl9zZW0pO1xuIFx0XHRcdGNoYW4gPSBwY2gtXHUwMDNlY2hhbjtcbiBcdFx0XHRlcnIgPSAtRU5PVFRZO1xuIFx0XHRcdGlmIChjaGFuIFx1MDAyNlx1MDAyNiBjaGFuLVx1MDAzZW9wcy1cdTAwM2Vpb2N0bClcbiBcdFx0XHRcdGVyciA9IGNoYW4tXHUwMDNlb3BzLVx1MDAzZWlvY3RsKGNoYW4sIGNtZCwgYXJnKTtcbi1cdFx0XHR1cF9yZWFkKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4rXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXHRcdH1cbiBcdFx0Z290byBvdXQ7XG4gXHR9XG5AQCAtMjkyMiw3ICsyOTIxLDcgQEAgaW50IHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbilcbiAjaWZkZWYgQ09ORklHX1BQUF9NVUxUSUxJTktcbiBcdHBjaC1cdTAwM2VsYXN0c2VxID0gLTE7XG4gI2VuZGlmIC8qIENPTkZJR19QUFBfTVVMVElMSU5LICovXG4tXHRpbml0X3J3c2VtKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4rXHRtdXRleF9pbml0KFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZwY2gtXHUwMDNlZG93bmwpO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cGNoLVx1MDAzZXVwbCk7XG4gXG5AQCAtMzAwNSwxMSArMzAwNCwxMSBAQCBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbilcbiBcdCAqIHRoZSBjaGFubmVsJ3Mgc3RhcnRfeG1pdCBvciBpb2N0bCByb3V0aW5lIGJlZm9yZSB3ZSBwcm9jZWVkLlxuIFx0ICovXG4gXHRwcHBfZGlzY29ubmVjdF9jaGFubmVsKHBjaCk7XG4tXHRkb3duX3dyaXRlKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4rXHRtdXRleF9sb2NrKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2cGNoLVx1MDAzZWRvd25sKTtcbiBcdHBjaC1cdTAwM2VjaGFuID0gTlVMTDtcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnBjaC1cdTAwM2Vkb3dubCk7XG4tXHR1cF93cml0ZShcdTAwMjZwY2gtXHUwMDNlY2hhbl9zZW0pO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXG4gXHRwbiA9IHBwcF9wZXJuZXQocGNoLVx1MDAzZWNoYW5fbmV0KTtcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZwbi1cdTAwM2VhbGxfY2hhbm5lbHNfbG9jayk7XG5AQCAtMzYwMCw2ICszNTk5LDcgQEAgc3RhdGljIHZvaWQgcHBwX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgY2hhbm5lbCAqcGNoKVxuIFx0XHRwcl9lcnIoXCJwcHA6IGRlc3Ryb3lpbmcgdW5kZWFkIGNoYW5uZWwgJXAgIVxcblwiLCBwY2gpO1xuIFx0XHRyZXR1cm47XG4gXHR9XG4rXHRtdXRleF9kZXN0cm95KFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXHRjYWxsX3JjdShcdTAwMjZwY2gtXHUwMDNlcmN1LCBwcHBfcmVsZWFzZV9jaGFubmVsX2ZyZWUpO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjA3OjI0LjMxOTAyMDA4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzOTMwNDI1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBMb2NraW5nIE1lY2hhbmlzbSBDaGFuZ2UgaW4gdGhlIFBQUCBHZW5lcmljIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgbG9ja2luZyBtZWNoYW5pc20gd2l0aGluIHRoZSBQUFAgZ2VuZXJpYyBkcml2ZXIuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBzd2FwcGVkIGBzdHJ1Y3Qgcndfc2VtYXBob3JlIGNoYW5fc2VtYCBmb3IgYHN0cnVjdCBtdXRleCBjaGFuX3NlbWAgd2l0aGluIHRoZSBgc3RydWN0IGNoYW5uZWxgIGRlZmluaXRpb24gaW4gYGRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jYC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4gQSByZWFkLXdyaXRlIHNlbWFwaG9yZSBvZmZlcnMgZGlmZmVyZW50IGNvbmN1cnJlbmN5IGNoYXJhY3RlcmlzdGljcyB0aGFuIGEgbXV0ZXgsIHNvIHRoaXMgc2hpZnQgaGFzIGltcGxpY2F0aW9ucyBmb3IgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBjb25jdXJyZW50IGFjY2VzcyB0byBjaGFubmVsIHJlc291cmNlcy5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBpbXBhY3RlZCBhcmUgYHBwcF9pb2N0bGAsIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAsIGFuZCBgcHBwX3JlbGVhc2VfY2hhbm5lbGAuIFRoZXNlIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBhbmQgbWFuYWdlbWVudCBmdW5jdGlvbnMgZm9yIFBQUCBjaGFubmVscy4gSXQncyBjcml0aWNhbCB0byBhbmFseXplIGhvdyB0aGUgbG9ja2luZyBiZWhhdmlvciB3aXRoaW4gdGhlc2UgZnVuY3Rpb25zIHdpbGwgYmUgYWZmZWN0ZWQuIFdoYXQgd2VyZSB0aGUgb3JpZ2luYWwgcmVhZC93cml0ZSBhY2Nlc3MgcGF0dGVybnM/IEFyZSB0aGVyZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgZ2FpbnMgb3IgcmVncmVzc2lvbnM/IEFuZCwgY3J1Y2lhbGx5LCBhcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW50cm9kdWNlZCBvciBlbGltaW5hdGVkIGJ5IHRoaXMgbW9kaWZpY2F0aW9uP1xuXG5UaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGBwcHBfZ2VuZXJpYy5jYCwgc28gSSdsbCBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiB0aGVyZS4gQmVmb3JlIGRpdmluZyBkZWVwIGludG8gdGhlIGNvZGUsIEkgd2FudCB0byBjb25maXJtIHRoYXQgdGhpcyBjaGFuZ2UgaXMgcHJvcGVybHkgY29uZmlndXJlZC4gQSBsb29rIGF0IHRoZSBhc3NvY2lhdGVkIGNvbmZpZyBvcHRpb25zIGlzIG5leHQgb24gbXkgbGlzdCB0byBjb25maXJtIHRoaXMgaXMgYW4gZW5hYmxlZCBvcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDowNzoyOC40NTgzMjY2ODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQzMjI2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHBwX2dlbmVyaWMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L3BwcC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19QUFApICs9IHBwcF9nZW5lcmljLm9cXG5kcml2ZXJzL25ldC9wcHAvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfUFBQX0FTWU5DKSArPSBwcHBfYXN5bmMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDowNzoyOC41MjI2NjAxMDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTAxMjM0OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUFBQIENvbmZpZ3VyYXRpb24gYW5kIEtleSBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlnIG9wdGlvbiBJJ20gbG9va2luZyBhdCBoZXJlIGlzIGBDT05GSUdfUFBQYC4gUmlnaHQsIHRoYXQgaGVscHMgbmFycm93IHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gTm93LCBJJ3ZlIGdvdCBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRoYXQgc2VlbSB0byBiZSB0aGUgcHJpbWFyeSBwbGF5ZXJzIGluIHRoaXMgYXJlYTogYHBwcF9pb2N0bGAsIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAsIGFuZCBgcHBwX3JlbGVhc2VfY2hhbm5lbGAuIExldCdzIGJyZWFrIHRoZXNlIGRvd24gYW5kIHNlZSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC5cblxuRmlyc3QsIGBwcHBfaW9jdGxgLi4uIHRoYXQncyB0aGUgaW9jdGwgaGFuZGxlciBmb3IgUFBQLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIGlvY3RscywgdGhhdCdzIHBvdGVudGlhbGx5IGEgdmVyeSByaWNoIHRhcmdldC4gSXQgbGlrZWx5IGhhbmRsZXMgYSByYW5nZSBvZiBjb25maWd1cmF0aW9uIGFuZCBjb250cm9sIG9wZXJhdGlvbnMuIE1pZ2h0IGJlIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uXG5cblRoZW4gd2UndmUgZ290IGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgIGFuZCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAuIFRoZXNlIGFyZSBleHBvcnRlZCBzeW1ib2xzLCB3aGljaCBtZWFucyB0aGV5J3JlIHVzZWQgYnkgb3RoZXIgUFBQIG1vZHVsZXMuIFRoaW5rIGBwcHBfYXN5bmNgLCBgcHBwb2VgLCBgcHBwX3N5bmN0dHlgLCBldGMuIFRoYXQncyBhIGtleSBwb2ludC4gRXh0ZXJuYWwgZGVwZW5kZW5jaWVzLi4uIEkgbmVlZCB0byBjb25zaWRlciBob3cgY2hhbmdlcyBoZXJlIG1pZ2h0IHJpcHBsZSBvdXR3YXJkcy5cblxuRmluYWxseSwgYHBwcF9yZWxlYXNlX2NoYW5uZWxgIGFwcGVhcnMgdG8gYmUgYW4gaW50ZXJuYWwgZnVuY3Rpb24uIERvZXNuJ3QgbWVhbiBpdCdzIHVuaW1wb3J0YW50LCBidXQgaXQncyBsaWtlbHkgbW9yZSBjb25maW5lZCBpbiBzY29wZS4gSSdsbCBzdGlsbCBuZWVkIHRvIGxvb2sgYXQgaXQsIGJ1dCBteSBwcmltYXJ5IGZvY3VzIGZvciB0aGlzIGludmVzdGlnYXRpb24gaXMgb24gZXh0ZXJuYWwgaW1wYWN0cy5cblxuU28sIGxldCdzIHN0YXJ0IHdpdGggYHBwcF9pb2N0bGAuIEkgbmVlZCB0byBjaGVjayBpdHMgc2lnbmF0dXJlLiBJcyBpdCBzdGF0aWM/IElzIGl0IGlubGluZT8gVW5kZXJzdGFuZGluZyBpdHMgc2NvcGUgd2lsbCBiZSBpbXBvcnRhbnQgZm9yIG15IG5leHQgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MDc6MzMuNDIzODk3Mzk3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNzE2NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBwcF9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYz02Nzk9c3RhdGljIGludCBwcHBfdW5icmlkZ2VfY2hhbm5lbHMoc3RydWN0IGNoYW5uZWwgKnBjaClcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTcxMi1cXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzo3MTM6c3RhdGljIGxvbmcgcHBwX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy03MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM9OTgzPXN0YXRpYyBsb25nIHBwcF9jb21wYXRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMTAzOS1cXHRpZiAoZXJyID09IC1FTk9JT0NUTENNRClcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzoxMDQwOlxcdFxcdGVyciA9IHBwcF9pb2N0bChmaWxlLCBjbWQsICh1bnNpZ25lZCBsb25nKWNvbXBhdF9wdHIoYXJnKSk7XFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMTA0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jPTExMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHBwX2RldmljZV9mb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMTExNS1cXHQucG9sbFxcdFxcdD0gcHBwX3BvbGwsXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM6MTExNjpcXHQudW5sb2NrZWRfaW9jdGxcXHQ9IHBwcF9pb2N0bCxcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0xMTE3LSNpZmRlZiBDT05GSUdfQ09NUEFUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjA3OjMzLjQ5NDYyMzU5NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTE5NzYzNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgUFBQIERldmljZSBEcml2ZXIgU3RydWN0dXJlKipcblxuSG1tLCBzbyBgcHBwX2lvY3RsYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSW50ZXJlc3RpbmcsIGJ1dCBpdCdzIHVzZWQgYXMgdGhlIGB1bmxvY2tlZF9pb2N0bGAgaGFuZGxlciB3aXRoaW4gYHBwcF9kZXZpY2VfZm9wc2AuIFRoYXQgbWFrZXMgc2Vuc2UgLSBpdCBrZWVwcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBjbGVhbi4gSSdtIG5vdGluZyB0aGUgbGlua2FnZSBwb2ludCwgYnV0IGl0J3MgdGhlIGB1bmxvY2tlZGAgYXNwZWN0IHRoYXQncyBrZXkgaGVyZS4gSXQgaW1wbGllcyBhIGNlcnRhaW4gdGhyZWFkaW5nIG1vZGVsIG9yIHBvdGVudGlhbCBmb3IgY29uY3VycmVuY3kgdGhhdCBuZWVkcyBjYXJlZnVsIGNvbnNpZGVyYXRpb24uXG5cbldhaXQgYSBzZWNvbmTigKYgYHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbGAgaXMgKmV4cG9ydGVkKj8gVGhhdCdzIGEgZGlmZmVyZW50IGJlYXN0LiBJZiBpdCdzIGV4cG9ydGVkLCB0aGF0J3MgYWxtb3N0IGNlcnRhaW5seSBpbnRlbmRlZCBmb3IgZXh0ZXJuYWwgbW9kdWxlcyB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGludGVyZmFjZSB2ZXJ5IGNhcmVmdWxseS4gV2hhdCBraW5kIG9mIG5ldCBjaGFubmVscyBhcmUgdGhleSByZWdpc3RlcmluZz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgbG9ja2luZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBpZiBleHRlcm5hbCBtb2R1bGVzIGFyZSBob29raW5nIGluPyBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGRvY3VtZW50YXRpb24gb24gdGhhdCBmdW5jdGlvbiBhbmQgaXRzIHVzYWdlIHByZXR0eSBzb29uLiBUaGF0J3MgcHJvYmFibHkgdGhlIG1vc3QgaW1wb3J0YW50IGFzcGVjdCBvZiB0aGF0IGRyaXZlciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxOTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDowNzozNy40MDY2MDIzMjNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjczMTI0ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jPTI4OTk9aW50IHBwcF9yZWdpc3Rlcl9jaGFubmVsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbilcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTAwLXtcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzoyOTAxOlxcdHJldHVybiBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWwoY3VycmVudC1cXHUwMDNlbnNwcm94eS1cXHUwMDNlbmV0X25zLCBjaGFuKTtcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTAyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTI5MDQtLyogQ3JlYXRlIGEgbmV3LCB1bmF0dGFjaGVkIHBwcCBjaGFubmVsIGZvciBzcGVjaWZpZWQgbmV0LiAqL1xcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jOjI5MDU6aW50IHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbilcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jPTM2NTY9bW9kdWxlX2V4aXQocHBwX2NsZWFudXApO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTM2NTctXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM6MzY1ODpFWFBPUlRfU1lNQk9MKHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMzY1OS1FWFBPUlRfU1lNQk9MKHBwcF9yZWdpc3Rlcl9jaGFubmVsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MDc6MzcuNDczOTIwMDgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAwNDM1MDc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqQ29uY2VybmluZyBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAgRXhwb3J0aW5nKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAgaXMgYWxzbyBleHBvcnRlZC4gVGhpcyBpcyBpbnRlcmVzdGluZywgYW5kIGl0IGltbWVkaWF0ZWx5IHByb21wdHMgYSBmZXcgY29uc2lkZXJhdGlvbnMuIFdlJ3JlIGNsZWFybHkgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24gdGhhdCdzIGludGVuZGVkIGZvciBtb3JlIGdlbmVyYWwgdXNlIHRoYW4gaW5pdGlhbGx5IGFwcGFyZW50LiBUaGUgaW1wbGljYXRpb25zIGFyZTpcblxuKiAgICoqUG90ZW50aWFsIGZvciBleHRlcm5hbCB1c2U6KiogSWYgaXQncyBleHBvcnRlZCwgdGhlcmUncyBhIGRlZmluaXRlIGludGVudCBmb3Igb3RoZXIgbW9kdWxlcyBvciBldmVuIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4gV2hhdCBhcmUgdGhlIHVzZS1jYXNlcyB0aGUgb3JpZ2luYWwgZGV2ZWxvcGVycyBoYWQgaW4gbWluZCBmb3IgZXh0ZXJuYWwgY29uc3VtcHRpb24/XG4qICAgKipBUEkgc3RhYmlsaXR5OioqIEV4cG9ydGluZyBhIGZ1bmN0aW9uIGNyZWF0ZXMgYSBjb21taXRtZW50IHRvIGEgZGVncmVlIG9mIEFQSSBzdGFiaWxpdHkuIFdlJ2xsIG5lZWQgdG8gY2FyZWZ1bGx5IGNvbnNpZGVyIGFueSBmdXR1cmUgbW9kaWZpY2F0aW9ucyB0byBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAgdG8gZW5zdXJlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYW5kIGF2b2lkIGJyZWFraW5nIGV4dGVybmFsIGRlcGVuZGVuY2llcy5cbiogICAqKkRvY3VtZW50YXRpb246KiogVGhpcyBhYnNvbHV0ZWx5IG5lZWRzIHRob3JvdWdoIGRvY3VtZW50YXRpb24uIFRoZSBleGlzdGluZyBpbnRlcm5hbCBjb21tZW50cyBhbmQgcG9zc2libHkgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uIHdpbGwgbmVlZCB0byBoYXZlIGEgc2VjdGlvbiBhZGRlZCB0byBpdCBvciBhbiB1cGRhdGUuIFdlIG5lZWQgdG8gY2xlYXJseSBleHBsYWluIHRoZSBleHBlY3RlZCBwYXJhbWV0ZXJzLCBzaWRlIGVmZmVjdHMsIHByZWNvbmRpdGlvbnMsIGFuZCB0aGUgY29uc2VxdWVuY2VzIG9mIG1pc3VzZS5cbiogICAqKlNlY3VyaXR5OioqIEFueSBwdWJsaWNseSBhdmFpbGFibGUgZnVuY3Rpb24gaXMgYSBwb3RlbnRpYWwgYXR0YWNrIHZlY3Rvci4gQSBzZWN1cml0eSBhdWRpdCBpcyBhIG11c3QuIElmIHRoZXJlIGFyZSBhbnkgdnVsbmVyYWJpbGl0aWVzLCB0aGV5IGNvdWxkIG5vdyBiZSBleHBsb2l0ZWQgZnJvbSBvdXRzaWRlIHRoZSBrZXJuZWwgY29yZS5cbiogICAqKlRlc3Rpbmc6KiogV2UnbGwgbmVlZCB0byB3cml0ZSB1bml0IHRlc3RzIGZvciBhbnkgbmV3IGludGVuZGVkIHVzZS4gUGx1cywgc2luY2UgaXRzIHB1YmxpYywgdGhlIHRlc3RzIG5lZWQgdG8gYmUgcm9idXN0IHdpdGggY29uc2lkZXJhdGlvbiBmb3Igd2hhdCBvdGhlcnMgbWlnaHQgZG8gd2l0aCBpdC5cbiogICAqKkRlc2lnbiBDb25zaWRlcmF0aW9uOioqIFRoaXMgaW1wbGllcyBhIGNlcnRhaW4gbGV2ZWwgb2YgZGVzaWduIHBoaWxvc29waHkgZm9yIHRoZSBvdmVyYWxsIFBQUCBhcmNoaXRlY3R1cmUuIFdoeSB3YXMgaXQgY29uc2lkZXJlZCBhcHByb3ByaWF0ZSB0byBwcm92aWRlIGFuIGV4dGVybmFsbHkgdXNhYmxlIHVucmVnaXN0cmF0aW9uIGZ1bmN0aW9uPyBJcyB0aGlzIGEgY29yZSBmZWF0dXJlIHRoYXTigJlzIHBhcnQgb2YgdGhlIGdlbmVyYWwgUFBQIGRlc2lnbiBvciBpcyBpdCBhIHNwZWNpZmljIHVzZS1jYXNlIHdpdGggYSBwb3RlbnRpYWxseSBuYXJyb3cgc2NvcGU/XG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2UnbGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBhbnkgZGVwZW5kZW5jaWVzIHRoaXMgZnVuY3Rpb24gbWlnaHQgaGF2ZSBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBpbnRlcm5hbCBQUFAgZGF0YSBzdHJ1Y3R1cmVzLiBJZiBjaGFuZ2VzIGFyZSBtYWRlIHRvIHRoZXNlIHJlbGF0ZWQgYXJlYXMsIHdpbGwgdGhleSBwcm9wYWdhdGUgdG8gdGhpcyBmdW5jdGlvbiwgY2F1c2luZyBtb3JlIGhlYWRhY2hlcz9cblxuSW4gc2hvcnQsIGp1c3Qgc2VlaW5nIGBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsYCBleHBvcnRlZCByZXF1aXJlcyBhIHRob3JvdWdoIHJlLWV2YWx1YXRpb24gb2YgaXRzIHJvbGUgYW5kIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIHN5c3RlbS4gSXTigJlzIG5vIGxvbmdlciBqdXN0IGFuIGludGVybmFsIGRldGFpbDsgaXQncyBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCBhbmQgd2UgbmVlZCB0byB0cmVhdCBpdCBhcyBzdWNoLiBUaGlzIHJlcXVpcmVzIGFuIGltbWVkaWF0ZSBjaGVja2xpc3Qgb2YgdXBkYXRlcyB0byBoYW5kbGUgdGhlIHB1YmxpYyBleHBvc3VyZSBvZiB0aGUgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MjEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDowNzo0Mi40NzgyNzI2ODVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTExNDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBwcF91bnJlZ2lzdGVyX2NoYW5uZWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM9Mjk5MT12b2lkXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM6Mjk5MjpwcHBfdW5yZWdpc3Rlcl9jaGFubmVsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbilcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jPTM2NTk9RVhQT1JUX1NZTUJPTChwcHBfcmVnaXN0ZXJfY2hhbm5lbCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM6MzY2MDpFWFBPUlRfU1lNQk9MKHBwcF91bnJlZ2lzdGVyX2NoYW5uZWwpO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTM2NjEtRVhQT1JUX1NZTUJPTChwcHBfY2hhbm5lbF9pbmRleCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjA3OjQyLjU0Mjc5NTA5NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTUwOTk3ODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUFBQIENoYW5uZWwgTG9ja2luZyBNZWNoYW5pc20qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyBvdXQgYSBgcndfc2VtYXBob3JlYCB3aXRoIGEgbXV0ZXggd2l0aGluIHRoZSBgc3RydWN0IGNoYW5uZWxgIGRhdGEgc3RydWN0dXJlLiBUaGF0J3MgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGl0IHNwZWNpZmljYWxseSBpbXBhY3RzIHRoZSBQUFAgY2hhbm5lbCBpb2N0bHMgYW5kIHRoZSByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24gcHJvY2Vzc2VzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIGNvbmNlbnRyYXRlIG9uLCBvYnZpb3VzbHksIGFyZSBgcHBwX2lvY3RsYCwgYHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbGAsIGFuZCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAuIGBwcHBfaW9jdGxgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQgYWN0cyBhcyB0aGUgaW9jdGwgaGFuZGxlciwgc28gaXQncyBhIGNyaXRpY2FsIHBvaW50IHRvIGV4YW1pbmUuIFRoZSBvdGhlciB0d28sIGRlYWxpbmcgd2l0aCByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uLCBhcmUgYWxzbyBpbXBvcnRhbnQgdGFyZ2V0cy5cblxuTm93LCBiZWZvcmUgSSBkaXZlIGRlZXAgaW50byB0aGUgY29kZSwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gT2J2aW91c2x5LCBgQ09ORklHX1BQUGAgaXMgdGhlIG1haW4gb25lLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCB0aGlzIGNoYW5nZSBtaWdodCBpbnRyb2R1Y2Ugb3IgaW1wYWN0PyBJIHNob3VsZCBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BwcC9LY29uZmlnYCBmaWxlIHRvIGJlIHN1cmUuIFRoaXMgd2lsbCBoZWxwIG1lIGJlIGNvbXByZWhlbnNpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MzMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MDc6NDcuMDkzNzk1MjU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzU1MTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFBQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6Njpjb25maWcgUFBQXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiUFBQIChwb2ludC10by1wb2ludCBwcm90b2NvbCkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTM1PWlmIFBQUFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjM3OmNvbmZpZyBQUFBfQlNEQ09NUFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJQUFAgQlNELUNvbXByZXNzIGNvbXByZXNzaW9uXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNTQtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6NTU6Y29uZmlnIFBQUF9ERUZMQVRFXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNTYtXFx0dHJpc3RhdGUgXFxcIlBQUCBEZWZsYXRlIGNvbXByZXNzaW9uXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNjgtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6Njk6Y29uZmlnIFBQUF9GSUxURVJcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy03MC1cXHRib29sIFxcXCJQUFAgZmlsdGVyaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctODAtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6ODE6Y29uZmlnIFBQUF9NUFBFXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctODItXFx0dHJpc3RhdGUgXFxcIlBQUCBNUFBFIGNvbXByZXNzaW9uIChlbmNyeXB0aW9uKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTkxLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjkyOmNvbmZpZyBQUFBfTVVMVElMSU5LXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctOTMtXFx0Ym9vbCBcXFwiUFBQIG11bHRpbGluayBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTAzLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEwNDpjb25maWcgUFBQT0FUTVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEwNS1cXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgQVRNXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTEyLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjExMzpjb25maWcgUFBQT1hcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMTQtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMTUtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTE2OmNvbmZpZyBQUFBPRVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExNy1cXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgRXRoZXJuZXRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xMjc9Y2hvaWNlXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMzgtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTM5OmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNfMVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0MC1cXHRib29sIFxcXCIxIGJpdCAoMiBidWNrZXRzKVxcXCJcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDEtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTQyOmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNfMlxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0My1cXHRib29sIFxcXCIyIGJpdHMgKDQgYnVja2V0cylcXFwiXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ0LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0NTpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzRcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDYtXFx0Ym9vbCBcXFwiNCBiaXRzICgxNiBidWNrZXRzKVxcXCJcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDctXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTQ4OmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNfOFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0OS1cXHRib29sIFxcXCI4IGJpdHMgKDI1NiBidWNrZXRzKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE1MT1lbmRjaG9pY2VcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTItXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTUzOmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTQtXFx0aW50XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNjE9Y29uZmlnIFBQVFBcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE3Mi1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNzM6Y29uZmlnIFBQUE9MMlRQXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTc0LVxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBMMlRQXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTgxPWlmIFRUWVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE4Mi1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxODM6Y29uZmlnIFBQUF9BU1lOQ1xcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE4NC1cXHR0cmlzdGF0ZSBcXFwiUFBQIHN1cHBvcnQgZm9yIGFzeW5jIHNlcmlhbCBwb3J0c1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE5NS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxOTY6Y29uZmlnIFBQUF9TWU5DX1RUWVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE5Ny1cXHR0cmlzdGF0ZSBcXFwiUFBQIHN1cHBvcnQgZm9yIHN5bmMgdHR5IHBvcnRzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDowNzo0Ny4xNjEzNTMzODZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY3MzYwNjI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBQUFAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUFBQIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgUFBQYCBpcyBzdWZmaWNpZW50IGZvciBub3cuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHNwZWNpZmljIGZ1bmN0aW9ucyB0byB0YXJnZXQuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gYHBwcF9pb2N0bGAsIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLCBhbmQgYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgLiBXYWl0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB1c2luZyB0aGUgYmVzdCBJT0NUTCBmdW5jdGlvbi4gYHBwcF9pb2N0bGAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFNob3VsZCBJIGJlIHVzaW5nIGBwcHBfdW5sb2NrZWRfaW9jdGxgIGluc3RlYWQsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBnaXZlbiB0aGUgYHN0YXRpY2AgZGVjbGFyYXRpb24/IEkgbmVlZCB0byBjaGVjay5cblxuQWxyaWdodCwgSSd2ZSBjb25maXJtZWQgdGhlIGZ1bmN0aW9uIG5hbWUgaXMgZGVmaW5pdGVseSBgcHBwX2lvY3RsYC4gVGltZSB0byBzZWUgaWYgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGFyZSBpbiBwbGF5IGhlcmUuIE9rYXksIGBwcHBfcmVsZWFzZV9jaGFubmVsYCBpcyBhbHNvIG1vZGlmaWVkLCBidXQgaXQncyBhbHNvIHN0YXRpYywgc28gSSBjYW4gcHJvYmFibHkgaWdub3JlIGl0IGZvciB0aGUgbW9tZW50LiBSaWdodCwgc28gYHBwcF9pb2N0bGAgaXMgc3RhdGljLi4uIGJ1dCBpdCAqaXMqIGFzc2lnbmVkIHRvIGBwcHBfZGV2aWNlX2ZvcHMudW5sb2NrZWRfaW9jdGxgIHNvIG5vIGlubGluaW5nLiBUaGF0J3MgZ29vZC5cblxuU28sIEknbGwgc3RpY2sgd2l0aCBgcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsYCwgYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgLCBhbmQgYHBwcF9pb2N0bGAgYXMgbXkgcHJpbWFyeSB0YXJnZXQgc3ltYm9scy4gVGhhdCBgcHBwX2lvY3RsYCBmdW5jdGlvbiAqaXMqIHRoZSBJT0NUTCBoYW5kbGVyLCB3aGljaCBpcyBpbXBvcnRhbnQuIEJ1dCBzaW5jZSBpdCdzIGRlY2xhcmVkIHN0YXRpYywgaXMgaXQgdHJ1bHkgYSBkaXN0aW5jdCBzeW1ib2w/IFllcywgaXQgaXMgdXNlZCBmb3IgdGhlIGRldmljZSdzIGZpbGUgb3BlcmF0aW9ucywgc28gaXQgY2FuJ3QgYmUgaW5saW5lZC4gSXQgd2lsbCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgd2hvIGNhbGxzIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLiBJdCdzIHVzZWQgYnkgc2V2ZXJhbCBtb2R1bGVzLCBpbmNsdWRpbmcgYHBwcF9hc3luY2AsIGBwcHBfc3luY3R0eWAsIGFuZCBgcHBwb2VgIGV0Yy4gU28sIGZ1enppbmcgdGhlc2UgZW50cnkgcG9pbnRzIGxvb2tzIGxpa2UgYSBzb2xpZCBzdHJhdGVneS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgYHBwcF9pb2N0bGAgaXMgdGhlIG9ubHkgSU9DVEwgaGFuZGxlciBmb3IgYC9kZXYvcHBwYC4gWWVzLCB0aGF0J3MgY29ycmVjdC5cblxuT2theSwgSSB0aGluayBJIGhhdmUgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBhdHRhY2sgc3VyZmFjZSBoZXJlLiBJJ2xsIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAxNSwiT3V0cHV0VG9rZW5zIjoxMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MDc6NTQuODM0OTYyMDc0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk3OTM1NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBQUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBwcF9pb2N0bFwiLFxuICAgIFwicHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsXCIsXG4gICAgXCJwcHBfdW5yZWdpc3Rlcl9jaGFubmVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSByd19zZW1hcGhvcmUgd2l0aCBhIG11dGV4IGluIHRoZSBQUFAgY2hhbm5lbCBzdHJ1Y3R1cmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIGxvY2tpbmcgZHVyaW5nIFBQUCBpb2N0bHMgYW5kIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW9jdGwgaGFuZGxlciBhbmQgdGhlIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHBfaW9jdGxcIixcbiAgICBcInBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbFwiLFxuICAgIFwicHBwX3VucmVnaXN0ZXJfY2hhbm5lbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgcndfc2VtYXBob3JlIHdpdGggYSBtdXRleCBpbiB0aGUgUFBQIGNoYW5uZWwgc3RydWN0dXJlLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBsb2NraW5nIGR1cmluZyBQUFAgaW9jdGxzIGFuZCBjaGFubmVsIHJlZ2lzdHJhdGlvbi91bnJlZ2lzdHJhdGlvbi4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGlvY3RsIGhhbmRsZXIgYW5kIHRoZSBjaGFubmVsIHJlZ2lzdHJhdGlvbi91bnJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2kwxk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 13:31:48 +0000 UTC FinishedAt: 2026-07-27 14:07:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PPP" ], "series_id": "890b06ba-7657-4da5-b432-2cd4b2bab7a0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ppp_ioctl", "ppp_register_net_channel", "ppp_unregister_channel" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwcF9pb2N0bCYjMzQ7LAogICAgJiMzNDtwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWwmIzM0OywKICAgICYjMzQ7cHBwX3VucmVnaXN0ZXJfY2hhbm5lbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIHJ3X3NlbWFwaG9yZSB3aXRoIGEgbXV0ZXggaW4gdGhlIFBQUCBjaGFubmVsIHN0cnVjdHVyZSwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgbG9ja2luZyBkdXJpbmcgUFBQIGlvY3RscyBhbmQgY2hhbm5lbCByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24uIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBpb2N0bCBoYW5kbGVyIGFuZCB0aGUgY2hhbm5lbCByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24gZnVuY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjA3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzhkNGUzNmIwN2Y0MTk2OWRiZjlhZTdlNWNhZDVlMmVmYjdlZDMyZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDE0OjA3OjIyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmNcbmluZGV4IGNhY2M0YzNhMzdkMmNkLi4wOGJiODk3NjU0ODdmYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuY1xuQEAgLTM5LDcgJiM0MzszOSw2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3RjcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3J3c2VtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zdGRkZWYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuQEAgLTE3Niw3ICYjNDM7MTc1LDcgQEAgc3RydWN0IGNoYW5uZWwge1xuIFx0c3RydWN0IHBwcF9maWxlXHRmaWxlO1x0XHQvKiBzdHVmZiBmb3IgcmVhZC93cml0ZS9wb2xsICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XHRcdC8qIGxpbmsgaW4gYWxsL25ld19jaGFubmVscyBsaXN0ICovXG4gXHRzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW47XHQvKiBwdWJsaWMgY2hhbm5lbCBkYXRhIHN0cnVjdHVyZSAqL1xuLVx0c3RydWN0IHJ3X3NlbWFwaG9yZSBjaGFuX3NlbTtcdC8qIHByb3RlY3RzIGBjaGFuJiMzOTsgZHVyaW5nIGNoYW4gaW9jdGwgKi9cbiYjNDM7XHRzdHJ1Y3QgbXV0ZXggY2hhbl9zZW07XHRcdC8qIHByb3RlY3RzIGBjaGFuJiMzOTsgZHVyaW5nIGNoYW4gaW9jdGwgKi9cbiBcdHNwaW5sb2NrX3RcdGRvd25sO1x0XHQvKiBwcm90ZWN0cyBgY2hhbiYjMzk7LCBmaWxlLnhxIGRlcXVldWUgKi9cbiBcdHN0cnVjdCBwcHAgX19yY3UgKnBwcDtcdFx0LyogcHBwIHVuaXQgd2UmIzM5O3JlIGNvbm5lY3RlZCB0byAqL1xuIFx0c3RydWN0IG5ldFx0KmNoYW5fbmV0O1x0LyogdGhlIG5ldCBjaGFubmVsIGJlbG9uZ3MgdG8gKi9cbkBAIC03ODgsMTIgJiM0Mzs3ODcsMTIgQEAgc3RhdGljIGxvbmcgcHBwX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0ZGVmYXVsdDpcbi1cdFx0XHRkb3duX3JlYWQoXHUwMDI2cGNoLVx1MDAzZWNoYW5fc2VtKTtcbiYjNDM7XHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZwY2gtXHUwMDNlY2hhbl9zZW0pO1xuIFx0XHRcdGNoYW4gPSBwY2gtXHUwMDNlY2hhbjtcbiBcdFx0XHRlcnIgPSAtRU5PVFRZO1xuIFx0XHRcdGlmIChjaGFuIFx1MDAyNlx1MDAyNiBjaGFuLVx1MDAzZW9wcy1cdTAwM2Vpb2N0bClcbiBcdFx0XHRcdGVyciA9IGNoYW4tXHUwMDNlb3BzLVx1MDAzZWlvY3RsKGNoYW4sIGNtZCwgYXJnKTtcbi1cdFx0XHR1cF9yZWFkKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4mIzQzO1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwY2gtXHUwMDNlY2hhbl9zZW0pO1xuIFx0XHR9XG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuQEAgLTI5MjIsNyAmIzQzOzI5MjEsNyBAQCBpbnQgcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHBwcF9jaGFubmVsICpjaGFuKVxuICNpZmRlZiBDT05GSUdfUFBQX01VTFRJTElOS1xuIFx0cGNoLVx1MDAzZWxhc3RzZXEgPSAtMTtcbiAjZW5kaWYgLyogQ09ORklHX1BQUF9NVUxUSUxJTksgKi9cbi1cdGluaXRfcndzZW0oXHUwMDI2cGNoLVx1MDAzZWNoYW5fc2VtKTtcbiYjNDM7XHRtdXRleF9pbml0KFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZwY2gtXHUwMDNlZG93bmwpO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cGNoLVx1MDAzZXVwbCk7XG4gXG5AQCAtMzAwNSwxMSAmIzQzOzMwMDQsMTEgQEAgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4pXG4gXHQgKiB0aGUgY2hhbm5lbCYjMzk7cyBzdGFydF94bWl0IG9yIGlvY3RsIHJvdXRpbmUgYmVmb3JlIHdlIHByb2NlZWQuXG4gXHQgKi9cbiBcdHBwcF9kaXNjb25uZWN0X2NoYW5uZWwocGNoKTtcbi1cdGRvd25fd3JpdGUoXHUwMDI2cGNoLVx1MDAzZWNoYW5fc2VtKTtcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2cGNoLVx1MDAzZWRvd25sKTtcbiBcdHBjaC1cdTAwM2VjaGFuID0gTlVMTDtcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnBjaC1cdTAwM2Vkb3dubCk7XG4tXHR1cF93cml0ZShcdTAwMjZwY2gtXHUwMDNlY2hhbl9zZW0pO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwY2gtXHUwMDNlY2hhbl9zZW0pO1xuIFxuIFx0cG4gPSBwcHBfcGVybmV0KHBjaC1cdTAwM2VjaGFuX25ldCk7XG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2cG4tXHUwMDNlYWxsX2NoYW5uZWxzX2xvY2spO1xuQEAgLTM2MDAsNiAmIzQzOzM1OTksNyBAQCBzdGF0aWMgdm9pZCBwcHBfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBjaGFubmVsICpwY2gpXG4gXHRcdHByX2VycihcJiMzNDtwcHA6IGRlc3Ryb3lpbmcgdW5kZWFkIGNoYW5uZWwgJXAgIVxcblwmIzM0OywgcGNoKTtcbiBcdFx0cmV0dXJuO1xuIFx0fVxuJiM0MztcdG11dGV4X2Rlc3Ryb3koXHUwMDI2cGNoLVx1MDAzZWNoYW5fc2VtKTtcbiBcdGNhbGxfcmN1KFx1MDAyNnBjaC1cdTAwM2VyY3UsIHBwcF9yZWxlYXNlX2NoYW5uZWxfZnJlZSk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjA3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQUFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwcHBfaW9jdGwmIzM0OywKICAgICYjMzQ7cHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsJiMzNDssCiAgICAmIzM0O3BwcF91bnJlZ2lzdGVyX2NoYW5uZWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYSByd19zZW1hcGhvcmUgd2l0aCBhIG11dGV4IGluIHRoZSBQUFAgY2hhbm5lbCBzdHJ1Y3R1cmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIGxvY2tpbmcgZHVyaW5nIFBQUCBpb2N0bHMgYW5kIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW9jdGwgaGFuZGxlciBhbmQgdGhlIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM4ZDRlMzZiMDdmNDE5NjlkYmY5YWU3ZTVjYWQ1ZTJlZmI3ZWQzMmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyNyAxNDowNzoyMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMKaW5kZXggY2FjYzRjM2EzN2QyY2QuLjA4YmI4OTc2NTQ4N2ZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYwpAQCAtMzksNyAmIzQzOzM5LDYgQEAKICNpbmNsdWRlICZsdDtsaW51eC9pcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3RjcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NwaW5sb2NrLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7bGludXgvcndzZW0uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zdGRkZWYuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9kZXZpY2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tdXRleC5oJmd0OwpAQCAtMTc2LDcgJiM0MzsxNzUsNyBAQCBzdHJ1Y3QgY2hhbm5lbCB7CiAJc3RydWN0IHBwcF9maWxlCWZpbGU7CQkvKiBzdHVmZiBmb3IgcmVhZC93cml0ZS9wb2xsICovCiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwkJLyogbGluayBpbiBhbGwvbmV3X2NoYW5uZWxzIGxpc3QgKi8KIAlzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW47CS8qIHB1YmxpYyBjaGFubmVsIGRhdGEgc3RydWN0dXJlICovCi0Jc3RydWN0IHJ3X3NlbWFwaG9yZSBjaGFuX3NlbTsJLyogcHJvdGVjdHMgYGNoYW4mIzM5OyBkdXJpbmcgY2hhbiBpb2N0bCAqLwomIzQzOwlzdHJ1Y3QgbXV0ZXggY2hhbl9zZW07CQkvKiBwcm90ZWN0cyBgY2hhbiYjMzk7IGR1cmluZyBjaGFuIGlvY3RsICovCiAJc3BpbmxvY2tfdAlkb3dubDsJCS8qIHByb3RlY3RzIGBjaGFuJiMzOTssIGZpbGUueHEgZGVxdWV1ZSAqLwogCXN0cnVjdCBwcHAgX19yY3UgKnBwcDsJCS8qIHBwcCB1bml0IHdlJiMzOTtyZSBjb25uZWN0ZWQgdG8gKi8KIAlzdHJ1Y3QgbmV0CSpjaGFuX25ldDsJLyogdGhlIG5ldCBjaGFubmVsIGJlbG9uZ3MgdG8gKi8KQEAgLTc4OCwxMiAmIzQzOzc4NywxMiBAQCBzdGF0aWMgbG9uZyBwcHBfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKLQkJCWRvd25fcmVhZCgmYW1wO3BjaC0mZ3Q7Y2hhbl9zZW0pOwomIzQzOwkJCW11dGV4X2xvY2soJmFtcDtwY2gtJmd0O2NoYW5fc2VtKTsKIAkJCWNoYW4gPSBwY2gtJmd0O2NoYW47CiAJCQllcnIgPSAtRU5PVFRZOwogCQkJaWYgKGNoYW4gJmFtcDsmYW1wOyBjaGFuLSZndDtvcHMtJmd0O2lvY3RsKQogCQkJCWVyciA9IGNoYW4tJmd0O29wcy0mZ3Q7aW9jdGwoY2hhbiwgY21kLCBhcmcpOwotCQkJdXBfcmVhZCgmYW1wO3BjaC0mZ3Q7Y2hhbl9zZW0pOwomIzQzOwkJCW11dGV4X3VubG9jaygmYW1wO3BjaC0mZ3Q7Y2hhbl9zZW0pOwogCQl9CiAJCWdvdG8gb3V0OwogCX0KQEAgLTI5MjIsNyAmIzQzOzI5MjEsNyBAQCBpbnQgcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHBwcF9jaGFubmVsICpjaGFuKQogI2lmZGVmIENPTkZJR19QUFBfTVVMVElMSU5LCiAJcGNoLSZndDtsYXN0c2VxID0gLTE7CiAjZW5kaWYgLyogQ09ORklHX1BQUF9NVUxUSUxJTksgKi8KLQlpbml0X3J3c2VtKCZhbXA7cGNoLSZndDtjaGFuX3NlbSk7CiYjNDM7CW11dGV4X2luaXQoJmFtcDtwY2gtJmd0O2NoYW5fc2VtKTsKIAlzcGluX2xvY2tfaW5pdCgmYW1wO3BjaC0mZ3Q7ZG93bmwpOwogCXNwaW5fbG9ja19pbml0KCZhbXA7cGNoLSZndDt1cGwpOwogCkBAIC0zMDA1LDExICYjNDM7MzAwNCwxMSBAQCBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbikKIAkgKiB0aGUgY2hhbm5lbCYjMzk7cyBzdGFydF94bWl0IG9yIGlvY3RsIHJvdXRpbmUgYmVmb3JlIHdlIHByb2NlZWQuCiAJICovCiAJcHBwX2Rpc2Nvbm5lY3RfY2hhbm5lbChwY2gpOwotCWRvd25fd3JpdGUoJmFtcDtwY2gtJmd0O2NoYW5fc2VtKTsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO3BjaC0mZ3Q7Y2hhbl9zZW0pOwogCXNwaW5fbG9ja19iaCgmYW1wO3BjaC0mZ3Q7ZG93bmwpOwogCXBjaC0mZ3Q7Y2hhbiA9IE5VTEw7CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtwY2gtJmd0O2Rvd25sKTsKLQl1cF93cml0ZSgmYW1wO3BjaC0mZ3Q7Y2hhbl9zZW0pOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtwY2gtJmd0O2NoYW5fc2VtKTsKIAogCXBuID0gcHBwX3Blcm5ldChwY2gtJmd0O2NoYW5fbmV0KTsKIAlzcGluX2xvY2tfYmgoJmFtcDtwbi0mZ3Q7YWxsX2NoYW5uZWxzX2xvY2spOwpAQCAtMzYwMCw2ICYjNDM7MzU5OSw3IEBAIHN0YXRpYyB2b2lkIHBwcF9yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGNoYW5uZWwgKnBjaCkKIAkJcHJfZXJyKCYjMzQ7cHBwOiBkZXN0cm95aW5nIHVuZGVhZCBjaGFubmVsICVwICFcbiYjMzQ7LCBwY2gpOwogCQlyZXR1cm47CiAJfQomIzQzOwltdXRleF9kZXN0cm95KCZhbXA7cGNoLSZndDtjaGFuX3NlbSk7CiAJY2FsbF9yY3UoJmFtcDtwY2gtJmd0O3JjdSwgcHBwX3JlbGVhc2VfY2hhbm5lbF9mcmVlKTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzgyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIExvY2tpbmcgTWVjaGFuaXNtIENoYW5nZSBpbiB0aGUgUFBQIEdlbmVyaWMgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIGxvY2tpbmcgbWVjaGFuaXNtIHdpdGhpbiB0aGUgUFBQIGdlbmVyaWMgZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3ZlIHN3YXBwZWQgYHN0cnVjdCByd19zZW1hcGhvcmUgY2hhbl9zZW1gIGZvciBgc3RydWN0IG11dGV4IGNoYW5fc2VtYCB3aXRoaW4gdGhlIGBzdHJ1Y3QgY2hhbm5lbGAgZGVmaW5pdGlvbiBpbiBgZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmNgLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBBIHJlYWQtd3JpdGUgc2VtYXBob3JlIG9mZmVycyBkaWZmZXJlbnQgY29uY3VycmVuY3kgY2hhcmFjdGVyaXN0aWNzIHRoYW4gYSBtdXRleCwgc28gdGhpcyBzaGlmdCBoYXMgaW1wbGljYXRpb25zIGZvciBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGNvbmN1cnJlbnQgYWNjZXNzIHRvIGNoYW5uZWwgcmVzb3VyY2VzLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBpbXBhY3RlZCBhcmUgYHBwcF9pb2N0bGAsIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAsIGFuZCBgcHBwX3JlbGVhc2VfY2hhbm5lbGAuIFRoZXNlIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBhbmQgbWFuYWdlbWVudCBmdW5jdGlvbnMgZm9yIFBQUCBjaGFubmVscy4gSXQmIzM5O3MgY3JpdGljYWwgdG8gYW5hbHl6ZSBob3cgdGhlIGxvY2tpbmcgYmVoYXZpb3Igd2l0aGluIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGJlIGFmZmVjdGVkLiBXaGF0IHdlcmUgdGhlIG9yaWdpbmFsIHJlYWQvd3JpdGUgYWNjZXNzIHBhdHRlcm5zPyBBcmUgdGhlcmUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGdhaW5zIG9yIHJlZ3Jlc3Npb25zPyBBbmQsIGNydWNpYWxseSwgYXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGludHJvZHVjZWQgb3IgZWxpbWluYXRlZCBieSB0aGlzIG1vZGlmaWNhdGlvbj8KClRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYHBwcF9nZW5lcmljLmNgLCBzbyBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiB0aGVyZS4gQmVmb3JlIGRpdmluZyBkZWVwIGludG8gdGhlIGNvZGUsIEkgd2FudCB0byBjb25maXJtIHRoYXQgdGhpcyBjaGFuZ2UgaXMgcHJvcGVybHkgY29uZmlndXJlZC4gQSBsb29rIGF0IHRoZSBhc3NvY2lhdGVkIGNvbmZpZyBvcHRpb25zIGlzIG5leHQgb24gbXkgbGlzdCB0byBjb25maXJtIHRoaXMgaXMgYW4gZW5hYmxlZCBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHBwX2dlbmVyaWMubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BwcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcHBwL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9wcHAvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUFBQKSAmIzQzOz0gcHBwX2dlbmVyaWMub1xuZHJpdmVycy9uZXQvcHBwL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1BQUF9BU1lOQykgJiM0Mzs9IHBwcF9hc3luYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMwNAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBQUCBDb25maWd1cmF0aW9uIGFuZCBLZXkgRnVuY3Rpb25zKioKCk9rYXksIHNvIHRoZSBjb25maWcgb3B0aW9uIEkmIzM5O20gbG9va2luZyBhdCBoZXJlIGlzIGBDT05GSUdfUFBQYC4gUmlnaHQsIHRoYXQgaGVscHMgbmFycm93IHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gTm93LCBJJiMzOTt2ZSBnb3QgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0aGF0IHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgcGxheWVycyBpbiB0aGlzIGFyZWE6IGBwcHBfaW9jdGxgLCBgcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsYCwgYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgLCBhbmQgYHBwcF9yZWxlYXNlX2NoYW5uZWxgLiBMZXQmIzM5O3MgYnJlYWsgdGhlc2UgZG93biBhbmQgc2VlIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4KCkZpcnN0LCBgcHBwX2lvY3RsYC4uLiB0aGF0JiMzOTtzIHRoZSBpb2N0bCBoYW5kbGVyIGZvciBQUFAuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgaW9jdGxzLCB0aGF0JiMzOTtzIHBvdGVudGlhbGx5IGEgdmVyeSByaWNoIHRhcmdldC4gSXQgbGlrZWx5IGhhbmRsZXMgYSByYW5nZSBvZiBjb25maWd1cmF0aW9uIGFuZCBjb250cm9sIG9wZXJhdGlvbnMuIE1pZ2h0IGJlIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uCgpUaGVuIHdlJiMzOTt2ZSBnb3QgYHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbGAgYW5kIGBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsYC4gVGhlc2UgYXJlIGV4cG9ydGVkIHN5bWJvbHMsIHdoaWNoIG1lYW5zIHRoZXkmIzM5O3JlIHVzZWQgYnkgb3RoZXIgUFBQIG1vZHVsZXMuIFRoaW5rIGBwcHBfYXN5bmNgLCBgcHBwb2VgLCBgcHBwX3N5bmN0dHlgLCBldGMuIFRoYXQmIzM5O3MgYSBrZXkgcG9pbnQuIEV4dGVybmFsIGRlcGVuZGVuY2llcy4uLiBJIG5lZWQgdG8gY29uc2lkZXIgaG93IGNoYW5nZXMgaGVyZSBtaWdodCByaXBwbGUgb3V0d2FyZHMuCgpGaW5hbGx5LCBgcHBwX3JlbGVhc2VfY2hhbm5lbGAgYXBwZWFycyB0byBiZSBhbiBpbnRlcm5hbCBmdW5jdGlvbi4gRG9lc24mIzM5O3QgbWVhbiBpdCYjMzk7cyB1bmltcG9ydGFudCwgYnV0IGl0JiMzOTtzIGxpa2VseSBtb3JlIGNvbmZpbmVkIGluIHNjb3BlLiBJJiMzOTtsbCBzdGlsbCBuZWVkIHRvIGxvb2sgYXQgaXQsIGJ1dCBteSBwcmltYXJ5IGZvY3VzIGZvciB0aGlzIGludmVzdGlnYXRpb24gaXMgb24gZXh0ZXJuYWwgaW1wYWN0cy4KClNvLCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBgcHBwX2lvY3RsYC4gSSBuZWVkIHRvIGNoZWNrIGl0cyBzaWduYXR1cmUuIElzIGl0IHN0YXRpYz8gSXMgaXQgaW5saW5lPyBVbmRlcnN0YW5kaW5nIGl0cyBzY29wZSB3aWxsIGJlIGltcG9ydGFudCBmb3IgbXkgbmV4dCBzdGVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcHBfaW9jdGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYz02Nzk9c3RhdGljIGludCBwcHBfdW5icmlkZ2VfY2hhbm5lbHMoc3RydWN0IGNoYW5uZWwgKnBjaClcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy03MTItXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzo3MTM6c3RhdGljIGxvbmcgcHBwX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTcxNC17XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM9OTgzPXN0YXRpYyBsb25nIHBwcF9jb21wYXRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTEwMzktXHRpZiAoZXJyID09IC1FTk9JT0NUTENNRClcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jOjEwNDA6XHRcdGVyciA9IHBwcF9pb2N0bChmaWxlLCBjbWQsICh1bnNpZ25lZCBsb25nKWNvbXBhdF9wdHIoYXJnKSk7XG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0xMDQxLVxuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jPTExMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHBwX2RldmljZV9mb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTExMTUtXHQucG9sbFx0XHQ9IHBwcF9wb2xsLFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM6MTExNjpcdC51bmxvY2tlZF9pb2N0bFx0PSBwcHBfaW9jdGwsXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0xMTE3LSNpZmRlZiBDT05GSUdfQ09NUEFUXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE5MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgUFBQIERldmljZSBEcml2ZXIgU3RydWN0dXJlKioKCkhtbSwgc28gYHBwcF9pb2N0bGAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIEludGVyZXN0aW5nLCBidXQgaXQmIzM5O3MgdXNlZCBhcyB0aGUgYHVubG9ja2VkX2lvY3RsYCBoYW5kbGVyIHdpdGhpbiBgcHBwX2RldmljZV9mb3BzYC4gVGhhdCBtYWtlcyBzZW5zZSAtIGl0IGtlZXBzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGNsZWFuLiBJJiMzOTttIG5vdGluZyB0aGUgbGlua2FnZSBwb2ludCwgYnV0IGl0JiMzOTtzIHRoZSBgdW5sb2NrZWRgIGFzcGVjdCB0aGF0JiMzOTtzIGtleSBoZXJlLiBJdCBpbXBsaWVzIGEgY2VydGFpbiB0aHJlYWRpbmcgbW9kZWwgb3IgcG90ZW50aWFsIGZvciBjb25jdXJyZW5jeSB0aGF0IG5lZWRzIGNhcmVmdWwgY29uc2lkZXJhdGlvbi4KCldhaXQgYSBzZWNvbmTigKYgYHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbGAgaXMgKmV4cG9ydGVkKj8gVGhhdCYjMzk7cyBhIGRpZmZlcmVudCBiZWFzdC4gSWYgaXQmIzM5O3MgZXhwb3J0ZWQsIHRoYXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBpbnRlbmRlZCBmb3IgZXh0ZXJuYWwgbW9kdWxlcyB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGludGVyZmFjZSB2ZXJ5IGNhcmVmdWxseS4gV2hhdCBraW5kIG9mIG5ldCBjaGFubmVscyBhcmUgdGhleSByZWdpc3RlcmluZz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgbG9ja2luZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBpZiBleHRlcm5hbCBtb2R1bGVzIGFyZSBob29raW5nIGluPyBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIG9uIHRoYXQgZnVuY3Rpb24gYW5kIGl0cyB1c2FnZSBwcmV0dHkgc29vbi4gVGhhdCYjMzk7cyBwcm9iYWJseSB0aGUgbW9zdCBpbXBvcnRhbnQgYXNwZWN0IG9mIHRoYXQgZHJpdmVyIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNDowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYz0yODk5PWludCBwcHBfcmVnaXN0ZXJfY2hhbm5lbChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4pXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTAwLXtcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jOjI5MDE6XHRyZXR1cm4gcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsKGN1cnJlbnQtXHUwMDNlbnNwcm94eS1cdTAwM2VuZXRfbnMsIGNoYW4pO1xuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMjkwMi19XG4tLVxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMjkwNC0vKiBDcmVhdGUgYSBuZXcsIHVuYXR0YWNoZWQgcHBwIGNoYW5uZWwgZm9yIHNwZWNpZmllZCBuZXQuICovXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzoyOTA1OmludCBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4pXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTA2LXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYz0zNjU2PW1vZHVsZV9leGl0KHBwcF9jbGVhbnVwKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTM2NTctXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzozNjU4OkVYUE9SVF9TWU1CT0wocHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsKTtcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTM2NTktRVhQT1JUX1NZTUJPTChwcHBfcmVnaXN0ZXJfY2hhbm5lbCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgyMQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkNvbmNlcm5pbmcgYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgIEV4cG9ydGluZyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsYCBpcyBhbHNvIGV4cG9ydGVkLiBUaGlzIGlzIGludGVyZXN0aW5nLCBhbmQgaXQgaW1tZWRpYXRlbHkgcHJvbXB0cyBhIGZldyBjb25zaWRlcmF0aW9ucy4gV2UmIzM5O3JlIGNsZWFybHkgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24gdGhhdCYjMzk7cyBpbnRlbmRlZCBmb3IgbW9yZSBnZW5lcmFsIHVzZSB0aGFuIGluaXRpYWxseSBhcHBhcmVudC4gVGhlIGltcGxpY2F0aW9ucyBhcmU6CgoqICAgKipQb3RlbnRpYWwgZm9yIGV4dGVybmFsIHVzZToqKiBJZiBpdCYjMzk7cyBleHBvcnRlZCwgdGhlcmUmIzM5O3MgYSBkZWZpbml0ZSBpbnRlbnQgZm9yIG90aGVyIG1vZHVsZXMgb3IgZXZlbiB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0byBjYWxsIHRoaXMgZnVuY3Rpb24uIFdoYXQgYXJlIHRoZSB1c2UtY2FzZXMgdGhlIG9yaWdpbmFsIGRldmVsb3BlcnMgaGFkIGluIG1pbmQgZm9yIGV4dGVybmFsIGNvbnN1bXB0aW9uPwoqICAgKipBUEkgc3RhYmlsaXR5OioqIEV4cG9ydGluZyBhIGZ1bmN0aW9uIGNyZWF0ZXMgYSBjb21taXRtZW50IHRvIGEgZGVncmVlIG9mIEFQSSBzdGFiaWxpdHkuIFdlJiMzOTtsbCBuZWVkIHRvIGNhcmVmdWxseSBjb25zaWRlciBhbnkgZnV0dXJlIG1vZGlmaWNhdGlvbnMgdG8gYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgIHRvIGVuc3VyZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFuZCBhdm9pZCBicmVha2luZyBleHRlcm5hbCBkZXBlbmRlbmNpZXMuCiogICAqKkRvY3VtZW50YXRpb246KiogVGhpcyBhYnNvbHV0ZWx5IG5lZWRzIHRob3JvdWdoIGRvY3VtZW50YXRpb24uIFRoZSBleGlzdGluZyBpbnRlcm5hbCBjb21tZW50cyBhbmQgcG9zc2libHkgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uIHdpbGwgbmVlZCB0byBoYXZlIGEgc2VjdGlvbiBhZGRlZCB0byBpdCBvciBhbiB1cGRhdGUuIFdlIG5lZWQgdG8gY2xlYXJseSBleHBsYWluIHRoZSBleHBlY3RlZCBwYXJhbWV0ZXJzLCBzaWRlIGVmZmVjdHMsIHByZWNvbmRpdGlvbnMsIGFuZCB0aGUgY29uc2VxdWVuY2VzIG9mIG1pc3VzZS4KKiAgICoqU2VjdXJpdHk6KiogQW55IHB1YmxpY2x5IGF2YWlsYWJsZSBmdW5jdGlvbiBpcyBhIHBvdGVudGlhbCBhdHRhY2sgdmVjdG9yLiBBIHNlY3VyaXR5IGF1ZGl0IGlzIGEgbXVzdC4gSWYgdGhlcmUgYXJlIGFueSB2dWxuZXJhYmlsaXRpZXMsIHRoZXkgY291bGQgbm93IGJlIGV4cGxvaXRlZCBmcm9tIG91dHNpZGUgdGhlIGtlcm5lbCBjb3JlLgoqICAgKipUZXN0aW5nOioqIFdlJiMzOTtsbCBuZWVkIHRvIHdyaXRlIHVuaXQgdGVzdHMgZm9yIGFueSBuZXcgaW50ZW5kZWQgdXNlLiBQbHVzLCBzaW5jZSBpdHMgcHVibGljLCB0aGUgdGVzdHMgbmVlZCB0byBiZSByb2J1c3Qgd2l0aCBjb25zaWRlcmF0aW9uIGZvciB3aGF0IG90aGVycyBtaWdodCBkbyB3aXRoIGl0LgoqICAgKipEZXNpZ24gQ29uc2lkZXJhdGlvbjoqKiBUaGlzIGltcGxpZXMgYSBjZXJ0YWluIGxldmVsIG9mIGRlc2lnbiBwaGlsb3NvcGh5IGZvciB0aGUgb3ZlcmFsbCBQUFAgYXJjaGl0ZWN0dXJlLiBXaHkgd2FzIGl0IGNvbnNpZGVyZWQgYXBwcm9wcmlhdGUgdG8gcHJvdmlkZSBhbiBleHRlcm5hbGx5IHVzYWJsZSB1bnJlZ2lzdHJhdGlvbiBmdW5jdGlvbj8gSXMgdGhpcyBhIGNvcmUgZmVhdHVyZSB0aGF04oCZcyBwYXJ0IG9mIHRoZSBnZW5lcmFsIFBQUCBkZXNpZ24gb3IgaXMgaXQgYSBzcGVjaWZpYyB1c2UtY2FzZSB3aXRoIGEgcG90ZW50aWFsbHkgbmFycm93IHNjb3BlPwoqICAgKipEZXBlbmRlbmNpZXM6KiogV2UmIzM5O2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgYW55IGRlcGVuZGVuY2llcyB0aGlzIGZ1bmN0aW9uIG1pZ2h0IGhhdmUgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgb3IgaW50ZXJuYWwgUFBQIGRhdGEgc3RydWN0dXJlcy4gSWYgY2hhbmdlcyBhcmUgbWFkZSB0byB0aGVzZSByZWxhdGVkIGFyZWFzLCB3aWxsIHRoZXkgcHJvcGFnYXRlIHRvIHRoaXMgZnVuY3Rpb24sIGNhdXNpbmcgbW9yZSBoZWFkYWNoZXM/CgpJbiBzaG9ydCwganVzdCBzZWVpbmcgYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgIGV4cG9ydGVkIHJlcXVpcmVzIGEgdGhvcm91Z2ggcmUtZXZhbHVhdGlvbiBvZiBpdHMgcm9sZSBhbmQgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgc3lzdGVtLiBJdOKAmXMgbm8gbG9uZ2VyIGp1c3QgYW4gaW50ZXJuYWwgZGV0YWlsOyBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCBhbmQgd2UgbmVlZCB0byB0cmVhdCBpdCBhcyBzdWNoLiBUaGlzIHJlcXVpcmVzIGFuIGltbWVkaWF0ZSBjaGVja2xpc3Qgb2YgdXBkYXRlcyB0byBoYW5kbGUgdGhlIHB1YmxpYyBleHBvc3VyZSBvZiB0aGUgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BwcF91bnJlZ2lzdGVyX2NoYW5uZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYz0yOTkxPXZvaWRcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jOjI5OTI6cHBwX3VucmVnaXN0ZXJfY2hhbm5lbChzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4pXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTkzLXtcbi0tXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYz0zNjU5PUVYUE9SVF9TWU1CT0wocHBwX3JlZ2lzdGVyX2NoYW5uZWwpO1xuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM6MzY2MDpFWFBPUlRfU1lNQk9MKHBwcF91bnJlZ2lzdGVyX2NoYW5uZWwpO1xuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMzY2MS1FWFBPUlRfU1lNQk9MKHBwcF9jaGFubmVsX2luZGV4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUzMwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBQUCBDaGFubmVsIExvY2tpbmcgTWVjaGFuaXNtKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIG91dCBhIGByd19zZW1hcGhvcmVgIHdpdGggYSBtdXRleCB3aXRoaW4gdGhlIGBzdHJ1Y3QgY2hhbm5lbGAgZGF0YSBzdHJ1Y3R1cmUuIFRoYXQmIzM5O3MgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGl0IHNwZWNpZmljYWxseSBpbXBhY3RzIHRoZSBQUFAgY2hhbm5lbCBpb2N0bHMgYW5kIHRoZSByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24gcHJvY2Vzc2VzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byBjb25jZW50cmF0ZSBvbiwgb2J2aW91c2x5LCBhcmUgYHBwcF9pb2N0bGAsIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLCBhbmQgYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgLiBgcHBwX2lvY3RsYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IGl0IGFjdHMgYXMgdGhlIGlvY3RsIGhhbmRsZXIsIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgcG9pbnQgdG8gZXhhbWluZS4gVGhlIG90aGVyIHR3bywgZGVhbGluZyB3aXRoIHJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RyYXRpb24sIGFyZSBhbHNvIGltcG9ydGFudCB0YXJnZXRzLgoKTm93LCBiZWZvcmUgSSBkaXZlIGRlZXAgaW50byB0aGUgY29kZSwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gT2J2aW91c2x5LCBgQ09ORklHX1BQUGAgaXMgdGhlIG1haW4gb25lLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCB0aGlzIGNoYW5nZSBtaWdodCBpbnRyb2R1Y2Ugb3IgaW1wYWN0PyBJIHNob3VsZCBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BwcC9LY29uZmlnYCBmaWxlIHRvIGJlIHN1cmUuIFRoaXMgd2lsbCBoZWxwIG1lIGJlIGNvbXByZWhlbnNpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQUFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9wcHAvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6Njpjb25maWcgUFBQXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIChwb2ludC10by1wb2ludCBwcm90b2NvbCkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTM1PWlmIFBQUFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMzYtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzozNzpjb25maWcgUFBQX0JTRENPTVBcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIEJTRC1Db21wcmVzcyBjb21wcmVzc2lvblwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTU0LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6NTU6Y29uZmlnIFBQUF9ERUZMQVRFXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy01Ni1cdHRyaXN0YXRlIFwmIzM0O1BQUCBEZWZsYXRlIGNvbXByZXNzaW9uXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNjgtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzo2OTpjb25maWcgUFBQX0ZJTFRFUlxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNzAtXHRib29sIFwmIzM0O1BQUCBmaWx0ZXJpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy04MC1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjgxOmNvbmZpZyBQUFBfTVBQRVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctODItXHR0cmlzdGF0ZSBcJiMzNDtQUFAgTVBQRSBjb21wcmVzc2lvbiAoZW5jcnlwdGlvbilcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy05MS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjkyOmNvbmZpZyBQUFBfTVVMVElMSU5LXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy05My1cdGJvb2wgXCYjMzQ7UFBQIG11bHRpbGluayBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTAzLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTA0OmNvbmZpZyBQUFBPQVRNXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMDUtXHR0cmlzdGF0ZSBcJiMzNDtQUFAgb3ZlciBBVE1cJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMTItXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxMTM6Y29uZmlnIFBQUE9YXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMTQtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE1LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTE2OmNvbmZpZyBQUFBPRVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTE3LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIG92ZXIgRXRoZXJuZXRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xMjc9Y2hvaWNlXG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTM4LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTM5OmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNfMVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQwLVx0Ym9vbCBcJiMzNDsxIGJpdCAoMiBidWNrZXRzKVwmIzM0O1xuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQxLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTQyOmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNfMlxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQzLVx0Ym9vbCBcJiMzNDsyIGJpdHMgKDQgYnVja2V0cylcJiMzNDtcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0NC1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0NTpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzRcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0Ni1cdGJvb2wgXCYjMzQ7NCBiaXRzICgxNiBidWNrZXRzKVwmIzM0O1xuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ3LVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTQ4OmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNfOFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ5LVx0Ym9vbCBcJiMzNDs4IGJpdHMgKDI1NiBidWNrZXRzKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE1MT1lbmRjaG9pY2VcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE1Mi1cbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE1Mzpjb25maWcgUFBQT0VfSEFTSF9CSVRTXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTQtXHRpbnRcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNjE9Y29uZmlnIFBQVFBcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNzItXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNzM6Y29uZmlnIFBQUE9MMlRQXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNzQtXHR0cmlzdGF0ZSBcJiMzNDtQUFAgb3ZlciBMMlRQXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTgxPWlmIFRUWVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTgyLVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTgzOmNvbmZpZyBQUFBfQVNZTkNcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE4NC1cdHRyaXN0YXRlIFwmIzM0O1BQUCBzdXBwb3J0IGZvciBhc3luYyBzZXJpYWwgcG9ydHNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xOTUtXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxOTY6Y29uZmlnIFBQUF9TWU5DX1RUWVxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTk3LVx0dHJpc3RhdGUgXCYjMzQ7UFBQIHN1cHBvcnQgZm9yIHN5bmMgdHR5IHBvcnRzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE0OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMTUKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFBQUCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFBQUCBjb25maWd1cmF0aW9uLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYFBQUGAgaXMgc3VmZmljaWVudCBmb3Igbm93LiBJIG5lZWQgdG8gemVybyBpbiBvbiBzcGVjaWZpYyBmdW5jdGlvbnMgdG8gdGFyZ2V0LiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGBwcHBfaW9jdGxgLCBgcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsYCwgYW5kIGBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsYC4gV2FpdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHVzaW5nIHRoZSBiZXN0IElPQ1RMIGZ1bmN0aW9uLiBgcHBwX2lvY3RsYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gU2hvdWxkIEkgYmUgdXNpbmcgYHBwcF91bmxvY2tlZF9pb2N0bGAgaW5zdGVhZCwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGdpdmVuIHRoZSBgc3RhdGljYCBkZWNsYXJhdGlvbj8gSSBuZWVkIHRvIGNoZWNrLgoKQWxyaWdodCwgSSYjMzk7dmUgY29uZmlybWVkIHRoZSBmdW5jdGlvbiBuYW1lIGlzIGRlZmluaXRlbHkgYHBwcF9pb2N0bGAuIFRpbWUgdG8gc2VlIGlmIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBhcmUgaW4gcGxheSBoZXJlLiBPa2F5LCBgcHBwX3JlbGVhc2VfY2hhbm5lbGAgaXMgYWxzbyBtb2RpZmllZCwgYnV0IGl0JiMzOTtzIGFsc28gc3RhdGljLCBzbyBJIGNhbiBwcm9iYWJseSBpZ25vcmUgaXQgZm9yIHRoZSBtb21lbnQuIFJpZ2h0LCBzbyBgcHBwX2lvY3RsYCBpcyBzdGF0aWMuLi4gYnV0IGl0ICppcyogYXNzaWduZWQgdG8gYHBwcF9kZXZpY2VfZm9wcy51bmxvY2tlZF9pb2N0bGAgc28gbm8gaW5saW5pbmcuIFRoYXQmIzM5O3MgZ29vZC4KClNvLCBJJiMzOTtsbCBzdGljayB3aXRoIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAsIGFuZCBgcHBwX2lvY3RsYCBhcyBteSBwcmltYXJ5IHRhcmdldCBzeW1ib2xzLiBUaGF0IGBwcHBfaW9jdGxgIGZ1bmN0aW9uICppcyogdGhlIElPQ1RMIGhhbmRsZXIsIHdoaWNoIGlzIGltcG9ydGFudC4gQnV0IHNpbmNlIGl0JiMzOTtzIGRlY2xhcmVkIHN0YXRpYywgaXMgaXQgdHJ1bHkgYSBkaXN0aW5jdCBzeW1ib2w/IFllcywgaXQgaXMgdXNlZCBmb3IgdGhlIGRldmljZSYjMzk7cyBmaWxlIG9wZXJhdGlvbnMsIHNvIGl0IGNhbiYjMzk7dCBiZSBpbmxpbmVkLiBJdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHdobyBjYWxscyBgcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsYC4gSXQmIzM5O3MgdXNlZCBieSBzZXZlcmFsIG1vZHVsZXMsIGluY2x1ZGluZyBgcHBwX2FzeW5jYCwgYHBwcF9zeW5jdHR5YCwgYW5kIGBwcHBvZWAgZXRjLiBTbywgZnV6emluZyB0aGVzZSBlbnRyeSBwb2ludHMgbG9va3MgbGlrZSBhIHNvbGlkIHN0cmF0ZWd5LgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgYHBwcF9pb2N0bGAgaXMgdGhlIG9ubHkgSU9DVEwgaGFuZGxlciBmb3IgYC9kZXYvcHBwYC4gWWVzLCB0aGF0JiMzOTtzIGNvcnJlY3QuCgpPa2F5LCBJIHRoaW5rIEkgaGF2ZSBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGF0dGFjayBzdXJmYWNlIGhlcmUuIEkmIzM5O2xsIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTQ6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BQUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BwcF9pb2N0bCYjMzQ7LAogICAgJiMzNDtwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWwmIzM0OywKICAgICYjMzQ7cHBwX3VucmVnaXN0ZXJfY2hhbm5lbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIHJ3X3NlbWFwaG9yZSB3aXRoIGEgbXV0ZXggaW4gdGhlIFBQUCBjaGFubmVsIHN0cnVjdHVyZSwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgbG9ja2luZyBkdXJpbmcgUFBQIGlvY3RscyBhbmQgY2hhbm5lbCByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24uIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBpb2N0bCBoYW5kbGVyIGFuZCB0aGUgY2hhbm5lbCByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24gZnVuY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQUFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwcHBfaW9jdGwmIzM0OywKICAgICYjMzQ7cHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsJiMzNDssCiAgICAmIzM0O3BwcF91bnJlZ2lzdGVyX2NoYW5uZWwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYSByd19zZW1hcGhvcmUgd2l0aCBhIG11dGV4IGluIHRoZSBQUFAgY2hhbm5lbCBzdHJ1Y3R1cmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIGxvY2tpbmcgZHVyaW5nIFBQUCBpb2N0bHMgYW5kIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW9jdGwgaGFuZGxlciBhbmQgdGhlIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjA3OjIzLjc1NDE3ODQyMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxMTgwNTkxODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBQUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBwcF9pb2N0bFwiLFxuICAgIFwicHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsXCIsXG4gICAgXCJwcHBfdW5yZWdpc3Rlcl9jaGFubmVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSByd19zZW1hcGhvcmUgd2l0aCBhIG11dGV4IGluIHRoZSBQUFAgY2hhbm5lbCBzdHJ1Y3R1cmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIGxvY2tpbmcgZHVyaW5nIFBQUCBpb2N0bHMgYW5kIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW9jdGwgaGFuZGxlciBhbmQgdGhlIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MDc6MjMuNzU0MTg4NDcyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQxMDI3NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjOGQ0ZTM2YjA3ZjQxOTY5ZGJmOWFlN2U1Y2FkNWUyZWZiN2VkMzJlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDI3IDE0OjA3OjIyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmNcXG5pbmRleCBjYWNjNGMzYTM3ZDJjZC4uMDhiYjg5NzY1NDg3ZmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmNcXG4rKysgYi9kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuY1xcbkBAIC0zOSw3ICszOSw2IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdGNwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9jay5oXFx1MDAzZVxcbi0jaW5jbHVkZSBcXHUwMDNjbGludXgvcndzZW0uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3N0ZGRlZi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbkBAIC0xNzYsNyArMTc1LDcgQEAgc3RydWN0IGNoYW5uZWwge1xcbiBcXHRzdHJ1Y3QgcHBwX2ZpbGVcXHRmaWxlO1xcdFxcdC8qIHN0dWZmIGZvciByZWFkL3dyaXRlL3BvbGwgKi9cXG4gXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcdFxcdC8qIGxpbmsgaW4gYWxsL25ld19jaGFubmVscyBsaXN0ICovXFxuIFxcdHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbjtcXHQvKiBwdWJsaWMgY2hhbm5lbCBkYXRhIHN0cnVjdHVyZSAqL1xcbi1cXHRzdHJ1Y3Qgcndfc2VtYXBob3JlIGNoYW5fc2VtO1xcdC8qIHByb3RlY3RzIGBjaGFuJyBkdXJpbmcgY2hhbiBpb2N0bCAqL1xcbitcXHRzdHJ1Y3QgbXV0ZXggY2hhbl9zZW07XFx0XFx0LyogcHJvdGVjdHMgYGNoYW4nIGR1cmluZyBjaGFuIGlvY3RsICovXFxuIFxcdHNwaW5sb2NrX3RcXHRkb3dubDtcXHRcXHQvKiBwcm90ZWN0cyBgY2hhbicsIGZpbGUueHEgZGVxdWV1ZSAqL1xcbiBcXHRzdHJ1Y3QgcHBwIF9fcmN1ICpwcHA7XFx0XFx0LyogcHBwIHVuaXQgd2UncmUgY29ubmVjdGVkIHRvICovXFxuIFxcdHN0cnVjdCBuZXRcXHQqY2hhbl9uZXQ7XFx0LyogdGhlIG5ldCBjaGFubmVsIGJlbG9uZ3MgdG8gKi9cXG5AQCAtNzg4LDEyICs3ODcsMTIgQEAgc3RhdGljIGxvbmcgcHBwX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRcXHRkZWZhdWx0Olxcbi1cXHRcXHRcXHRkb3duX3JlYWQoXFx1MDAyNnBjaC1cXHUwMDNlY2hhbl9zZW0pO1xcbitcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwY2gtXFx1MDAzZWNoYW5fc2VtKTtcXG4gXFx0XFx0XFx0Y2hhbiA9IHBjaC1cXHUwMDNlY2hhbjtcXG4gXFx0XFx0XFx0ZXJyID0gLUVOT1RUWTtcXG4gXFx0XFx0XFx0aWYgKGNoYW4gXFx1MDAyNlxcdTAwMjYgY2hhbi1cXHUwMDNlb3BzLVxcdTAwM2Vpb2N0bClcXG4gXFx0XFx0XFx0XFx0ZXJyID0gY2hhbi1cXHUwMDNlb3BzLVxcdTAwM2Vpb2N0bChjaGFuLCBjbWQsIGFyZyk7XFxuLVxcdFxcdFxcdHVwX3JlYWQoXFx1MDAyNnBjaC1cXHUwMDNlY2hhbl9zZW0pO1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBjaC1cXHUwMDNlY2hhbl9zZW0pO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXHR9XFxuQEAgLTI5MjIsNyArMjkyMSw3IEBAIGludCBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgcHBwX2NoYW5uZWwgKmNoYW4pXFxuICNpZmRlZiBDT05GSUdfUFBQX01VTFRJTElOS1xcbiBcXHRwY2gtXFx1MDAzZWxhc3RzZXEgPSAtMTtcXG4gI2VuZGlmIC8qIENPTkZJR19QUFBfTVVMVElMSU5LICovXFxuLVxcdGluaXRfcndzZW0oXFx1MDAyNnBjaC1cXHUwMDNlY2hhbl9zZW0pO1xcbitcXHRtdXRleF9pbml0KFxcdTAwMjZwY2gtXFx1MDAzZWNoYW5fc2VtKTtcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNnBjaC1cXHUwMDNlZG93bmwpO1xcbiBcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2cGNoLVxcdTAwM2V1cGwpO1xcbiBcXG5AQCAtMzAwNSwxMSArMzAwNCwxMSBAQCBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbilcXG4gXFx0ICogdGhlIGNoYW5uZWwncyBzdGFydF94bWl0IG9yIGlvY3RsIHJvdXRpbmUgYmVmb3JlIHdlIHByb2NlZWQuXFxuIFxcdCAqL1xcbiBcXHRwcHBfZGlzY29ubmVjdF9jaGFubmVsKHBjaCk7XFxuLVxcdGRvd25fd3JpdGUoXFx1MDAyNnBjaC1cXHUwMDNlY2hhbl9zZW0pO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwY2gtXFx1MDAzZWNoYW5fc2VtKTtcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwY2gtXFx1MDAzZWRvd25sKTtcXG4gXFx0cGNoLVxcdTAwM2VjaGFuID0gTlVMTDtcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnBjaC1cXHUwMDNlZG93bmwpO1xcbi1cXHR1cF93cml0ZShcXHUwMDI2cGNoLVxcdTAwM2VjaGFuX3NlbSk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2cGNoLVxcdTAwM2VjaGFuX3NlbSk7XFxuIFxcbiBcXHRwbiA9IHBwcF9wZXJuZXQocGNoLVxcdTAwM2VjaGFuX25ldCk7XFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2cG4tXFx1MDAzZWFsbF9jaGFubmVsc19sb2NrKTtcXG5AQCAtMzYwMCw2ICszNTk5LDcgQEAgc3RhdGljIHZvaWQgcHBwX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgY2hhbm5lbCAqcGNoKVxcbiBcXHRcXHRwcl9lcnIoXFxcInBwcDogZGVzdHJveWluZyB1bmRlYWQgY2hhbm5lbCAlcCAhXFxcXG5cXFwiLCBwY2gpO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4rXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2cGNoLVxcdTAwM2VjaGFuX3NlbSk7XFxuIFxcdGNhbGxfcmN1KFxcdTAwMjZwY2gtXFx1MDAzZXJjdSwgcHBwX3JlbGVhc2VfY2hhbm5lbF9mcmVlKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MDc6MjQuMzE5MDE4NTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMDYxNTc0MTI0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHBfaW9jdGxcIixcbiAgICBcInBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbFwiLFxuICAgIFwicHBwX3VucmVnaXN0ZXJfY2hhbm5lbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgcndfc2VtYXBob3JlIHdpdGggYSBtdXRleCBpbiB0aGUgUFBQIGNoYW5uZWwgc3RydWN0dXJlLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBsb2NraW5nIGR1cmluZyBQUFAgaW9jdGxzIGFuZCBjaGFubmVsIHJlZ2lzdHJhdGlvbi91bnJlZ2lzdHJhdGlvbi4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGlvY3RsIGhhbmRsZXIgYW5kIHRoZSBjaGFubmVsIHJlZ2lzdHJhdGlvbi91bnJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM4ZDRlMzZiMDdmNDE5NjlkYmY5YWU3ZTVjYWQ1ZTJlZmI3ZWQzMmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNDowNzoyMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmNcbmluZGV4IGNhY2M0YzNhMzdkMmNkLi4wOGJiODk3NjU0ODdmYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jXG4rKysgYi9kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuY1xuQEAgLTM5LDcgKzM5LDYgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdGNwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zcGlubG9jay5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjbGludXgvcndzZW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0ZGRlZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG5AQCAtMTc2LDcgKzE3NSw3IEBAIHN0cnVjdCBjaGFubmVsIHtcbiBcdHN0cnVjdCBwcHBfZmlsZVx0ZmlsZTtcdFx0Lyogc3R1ZmYgZm9yIHJlYWQvd3JpdGUvcG9sbCAqL1xuIFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1x0XHQvKiBsaW5rIGluIGFsbC9uZXdfY2hhbm5lbHMgbGlzdCAqL1xuIFx0c3RydWN0IHBwcF9jaGFubmVsICpjaGFuO1x0LyogcHVibGljIGNoYW5uZWwgZGF0YSBzdHJ1Y3R1cmUgKi9cbi1cdHN0cnVjdCByd19zZW1hcGhvcmUgY2hhbl9zZW07XHQvKiBwcm90ZWN0cyBgY2hhbicgZHVyaW5nIGNoYW4gaW9jdGwgKi9cbitcdHN0cnVjdCBtdXRleCBjaGFuX3NlbTtcdFx0LyogcHJvdGVjdHMgYGNoYW4nIGR1cmluZyBjaGFuIGlvY3RsICovXG4gXHRzcGlubG9ja190XHRkb3dubDtcdFx0LyogcHJvdGVjdHMgYGNoYW4nLCBmaWxlLnhxIGRlcXVldWUgKi9cbiBcdHN0cnVjdCBwcHAgX19yY3UgKnBwcDtcdFx0LyogcHBwIHVuaXQgd2UncmUgY29ubmVjdGVkIHRvICovXG4gXHRzdHJ1Y3QgbmV0XHQqY2hhbl9uZXQ7XHQvKiB0aGUgbmV0IGNoYW5uZWwgYmVsb25ncyB0byAqL1xuQEAgLTc4OCwxMiArNzg3LDEyIEBAIHN0YXRpYyBsb25nIHBwcF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdGRlZmF1bHQ6XG4tXHRcdFx0ZG93bl9yZWFkKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4rXHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZwY2gtXHUwMDNlY2hhbl9zZW0pO1xuIFx0XHRcdGNoYW4gPSBwY2gtXHUwMDNlY2hhbjtcbiBcdFx0XHRlcnIgPSAtRU5PVFRZO1xuIFx0XHRcdGlmIChjaGFuIFx1MDAyNlx1MDAyNiBjaGFuLVx1MDAzZW9wcy1cdTAwM2Vpb2N0bClcbiBcdFx0XHRcdGVyciA9IGNoYW4tXHUwMDNlb3BzLVx1MDAzZWlvY3RsKGNoYW4sIGNtZCwgYXJnKTtcbi1cdFx0XHR1cF9yZWFkKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4rXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXHRcdH1cbiBcdFx0Z290byBvdXQ7XG4gXHR9XG5AQCAtMjkyMiw3ICsyOTIxLDcgQEAgaW50IHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbilcbiAjaWZkZWYgQ09ORklHX1BQUF9NVUxUSUxJTktcbiBcdHBjaC1cdTAwM2VsYXN0c2VxID0gLTE7XG4gI2VuZGlmIC8qIENPTkZJR19QUFBfTVVMVElMSU5LICovXG4tXHRpbml0X3J3c2VtKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4rXHRtdXRleF9pbml0KFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZwY2gtXHUwMDNlZG93bmwpO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cGNoLVx1MDAzZXVwbCk7XG4gXG5AQCAtMzAwNSwxMSArMzAwNCwxMSBAQCBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbilcbiBcdCAqIHRoZSBjaGFubmVsJ3Mgc3RhcnRfeG1pdCBvciBpb2N0bCByb3V0aW5lIGJlZm9yZSB3ZSBwcm9jZWVkLlxuIFx0ICovXG4gXHRwcHBfZGlzY29ubmVjdF9jaGFubmVsKHBjaCk7XG4tXHRkb3duX3dyaXRlKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4rXHRtdXRleF9sb2NrKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXHRzcGluX2xvY2tfYmgoXHUwMDI2cGNoLVx1MDAzZWRvd25sKTtcbiBcdHBjaC1cdTAwM2VjaGFuID0gTlVMTDtcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnBjaC1cdTAwM2Vkb3dubCk7XG4tXHR1cF93cml0ZShcdTAwMjZwY2gtXHUwMDNlY2hhbl9zZW0pO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXG4gXHRwbiA9IHBwcF9wZXJuZXQocGNoLVx1MDAzZWNoYW5fbmV0KTtcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZwbi1cdTAwM2VhbGxfY2hhbm5lbHNfbG9jayk7XG5AQCAtMzYwMCw2ICszNTk5LDcgQEAgc3RhdGljIHZvaWQgcHBwX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgY2hhbm5lbCAqcGNoKVxuIFx0XHRwcl9lcnIoXCJwcHA6IGRlc3Ryb3lpbmcgdW5kZWFkIGNoYW5uZWwgJXAgIVxcblwiLCBwY2gpO1xuIFx0XHRyZXR1cm47XG4gXHR9XG4rXHRtdXRleF9kZXN0cm95KFx1MDAyNnBjaC1cdTAwM2VjaGFuX3NlbSk7XG4gXHRjYWxsX3JjdShcdTAwMjZwY2gtXHUwMDNlcmN1LCBwcHBfcmVsZWFzZV9jaGFubmVsX2ZyZWUpO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjA3OjI0LjMxOTAyMDA4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzOTMwNDI1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBMb2NraW5nIE1lY2hhbmlzbSBDaGFuZ2UgaW4gdGhlIFBQUCBHZW5lcmljIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgbG9ja2luZyBtZWNoYW5pc20gd2l0aGluIHRoZSBQUFAgZ2VuZXJpYyBkcml2ZXIuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBzd2FwcGVkIGBzdHJ1Y3Qgcndfc2VtYXBob3JlIGNoYW5fc2VtYCBmb3IgYHN0cnVjdCBtdXRleCBjaGFuX3NlbWAgd2l0aGluIHRoZSBgc3RydWN0IGNoYW5uZWxgIGRlZmluaXRpb24gaW4gYGRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jYC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4gQSByZWFkLXdyaXRlIHNlbWFwaG9yZSBvZmZlcnMgZGlmZmVyZW50IGNvbmN1cnJlbmN5IGNoYXJhY3RlcmlzdGljcyB0aGFuIGEgbXV0ZXgsIHNvIHRoaXMgc2hpZnQgaGFzIGltcGxpY2F0aW9ucyBmb3IgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBjb25jdXJyZW50IGFjY2VzcyB0byBjaGFubmVsIHJlc291cmNlcy5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBpbXBhY3RlZCBhcmUgYHBwcF9pb2N0bGAsIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAsIGFuZCBgcHBwX3JlbGVhc2VfY2hhbm5lbGAuIFRoZXNlIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBhbmQgbWFuYWdlbWVudCBmdW5jdGlvbnMgZm9yIFBQUCBjaGFubmVscy4gSXQncyBjcml0aWNhbCB0byBhbmFseXplIGhvdyB0aGUgbG9ja2luZyBiZWhhdmlvciB3aXRoaW4gdGhlc2UgZnVuY3Rpb25zIHdpbGwgYmUgYWZmZWN0ZWQuIFdoYXQgd2VyZSB0aGUgb3JpZ2luYWwgcmVhZC93cml0ZSBhY2Nlc3MgcGF0dGVybnM/IEFyZSB0aGVyZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgZ2FpbnMgb3IgcmVncmVzc2lvbnM/IEFuZCwgY3J1Y2lhbGx5LCBhcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW50cm9kdWNlZCBvciBlbGltaW5hdGVkIGJ5IHRoaXMgbW9kaWZpY2F0aW9uP1xuXG5UaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGBwcHBfZ2VuZXJpYy5jYCwgc28gSSdsbCBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiB0aGVyZS4gQmVmb3JlIGRpdmluZyBkZWVwIGludG8gdGhlIGNvZGUsIEkgd2FudCB0byBjb25maXJtIHRoYXQgdGhpcyBjaGFuZ2UgaXMgcHJvcGVybHkgY29uZmlndXJlZC4gQSBsb29rIGF0IHRoZSBhc3NvY2lhdGVkIGNvbmZpZyBvcHRpb25zIGlzIG5leHQgb24gbXkgbGlzdCB0byBjb25maXJtIHRoaXMgaXMgYW4gZW5hYmxlZCBvcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDowNzoyOC40NTgzMjY2ODJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQzMjI2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHBwX2dlbmVyaWMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L3BwcC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19QUFApICs9IHBwcF9nZW5lcmljLm9cXG5kcml2ZXJzL25ldC9wcHAvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfUFBQX0FTWU5DKSArPSBwcHBfYXN5bmMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDowNzoyOC41MjI2NjAxMDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTAxMjM0OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUFBQIENvbmZpZ3VyYXRpb24gYW5kIEtleSBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlnIG9wdGlvbiBJJ20gbG9va2luZyBhdCBoZXJlIGlzIGBDT05GSUdfUFBQYC4gUmlnaHQsIHRoYXQgaGVscHMgbmFycm93IHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gTm93LCBJJ3ZlIGdvdCBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRoYXQgc2VlbSB0byBiZSB0aGUgcHJpbWFyeSBwbGF5ZXJzIGluIHRoaXMgYXJlYTogYHBwcF9pb2N0bGAsIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAsIGFuZCBgcHBwX3JlbGVhc2VfY2hhbm5lbGAuIExldCdzIGJyZWFrIHRoZXNlIGRvd24gYW5kIHNlZSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC5cblxuRmlyc3QsIGBwcHBfaW9jdGxgLi4uIHRoYXQncyB0aGUgaW9jdGwgaGFuZGxlciBmb3IgUFBQLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIGlvY3RscywgdGhhdCdzIHBvdGVudGlhbGx5IGEgdmVyeSByaWNoIHRhcmdldC4gSXQgbGlrZWx5IGhhbmRsZXMgYSByYW5nZSBvZiBjb25maWd1cmF0aW9uIGFuZCBjb250cm9sIG9wZXJhdGlvbnMuIE1pZ2h0IGJlIGEgZ29vZCBzeW1ib2wgdG8gZm9jdXMgb24uXG5cblRoZW4gd2UndmUgZ290IGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgIGFuZCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAuIFRoZXNlIGFyZSBleHBvcnRlZCBzeW1ib2xzLCB3aGljaCBtZWFucyB0aGV5J3JlIHVzZWQgYnkgb3RoZXIgUFBQIG1vZHVsZXMuIFRoaW5rIGBwcHBfYXN5bmNgLCBgcHBwb2VgLCBgcHBwX3N5bmN0dHlgLCBldGMuIFRoYXQncyBhIGtleSBwb2ludC4gRXh0ZXJuYWwgZGVwZW5kZW5jaWVzLi4uIEkgbmVlZCB0byBjb25zaWRlciBob3cgY2hhbmdlcyBoZXJlIG1pZ2h0IHJpcHBsZSBvdXR3YXJkcy5cblxuRmluYWxseSwgYHBwcF9yZWxlYXNlX2NoYW5uZWxgIGFwcGVhcnMgdG8gYmUgYW4gaW50ZXJuYWwgZnVuY3Rpb24uIERvZXNuJ3QgbWVhbiBpdCdzIHVuaW1wb3J0YW50LCBidXQgaXQncyBsaWtlbHkgbW9yZSBjb25maW5lZCBpbiBzY29wZS4gSSdsbCBzdGlsbCBuZWVkIHRvIGxvb2sgYXQgaXQsIGJ1dCBteSBwcmltYXJ5IGZvY3VzIGZvciB0aGlzIGludmVzdGlnYXRpb24gaXMgb24gZXh0ZXJuYWwgaW1wYWN0cy5cblxuU28sIGxldCdzIHN0YXJ0IHdpdGggYHBwcF9pb2N0bGAuIEkgbmVlZCB0byBjaGVjayBpdHMgc2lnbmF0dXJlLiBJcyBpdCBzdGF0aWM/IElzIGl0IGlubGluZT8gVW5kZXJzdGFuZGluZyBpdHMgc2NvcGUgd2lsbCBiZSBpbXBvcnRhbnQgZm9yIG15IG5leHQgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMDQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MDc6MzMuNDIzODk3Mzk3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNzE2NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBwcF9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYz02Nzk9c3RhdGljIGludCBwcHBfdW5icmlkZ2VfY2hhbm5lbHMoc3RydWN0IGNoYW5uZWwgKnBjaClcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTcxMi1cXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzo3MTM6c3RhdGljIGxvbmcgcHBwX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy03MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM9OTgzPXN0YXRpYyBsb25nIHBwcF9jb21wYXRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMTAzOS1cXHRpZiAoZXJyID09IC1FTk9JT0NUTENNRClcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzoxMDQwOlxcdFxcdGVyciA9IHBwcF9pb2N0bChmaWxlLCBjbWQsICh1bnNpZ25lZCBsb25nKWNvbXBhdF9wdHIoYXJnKSk7XFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMTA0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jPTExMTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHBwX2RldmljZV9mb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMTExNS1cXHQucG9sbFxcdFxcdD0gcHBwX3BvbGwsXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM6MTExNjpcXHQudW5sb2NrZWRfaW9jdGxcXHQ9IHBwcF9pb2N0bCxcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0xMTE3LSNpZmRlZiBDT05GSUdfQ09NUEFUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjA3OjMzLjQ5NDYyMzU5NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTE5NzYzNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgUFBQIERldmljZSBEcml2ZXIgU3RydWN0dXJlKipcblxuSG1tLCBzbyBgcHBwX2lvY3RsYCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSW50ZXJlc3RpbmcsIGJ1dCBpdCdzIHVzZWQgYXMgdGhlIGB1bmxvY2tlZF9pb2N0bGAgaGFuZGxlciB3aXRoaW4gYHBwcF9kZXZpY2VfZm9wc2AuIFRoYXQgbWFrZXMgc2Vuc2UgLSBpdCBrZWVwcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBjbGVhbi4gSSdtIG5vdGluZyB0aGUgbGlua2FnZSBwb2ludCwgYnV0IGl0J3MgdGhlIGB1bmxvY2tlZGAgYXNwZWN0IHRoYXQncyBrZXkgaGVyZS4gSXQgaW1wbGllcyBhIGNlcnRhaW4gdGhyZWFkaW5nIG1vZGVsIG9yIHBvdGVudGlhbCBmb3IgY29uY3VycmVuY3kgdGhhdCBuZWVkcyBjYXJlZnVsIGNvbnNpZGVyYXRpb24uXG5cbldhaXQgYSBzZWNvbmTigKYgYHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbGAgaXMgKmV4cG9ydGVkKj8gVGhhdCdzIGEgZGlmZmVyZW50IGJlYXN0LiBJZiBpdCdzIGV4cG9ydGVkLCB0aGF0J3MgYWxtb3N0IGNlcnRhaW5seSBpbnRlbmRlZCBmb3IgZXh0ZXJuYWwgbW9kdWxlcyB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGludGVyZmFjZSB2ZXJ5IGNhcmVmdWxseS4gV2hhdCBraW5kIG9mIG5ldCBjaGFubmVscyBhcmUgdGhleSByZWdpc3RlcmluZz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgbG9ja2luZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBpZiBleHRlcm5hbCBtb2R1bGVzIGFyZSBob29raW5nIGluPyBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGRvY3VtZW50YXRpb24gb24gdGhhdCBmdW5jdGlvbiBhbmQgaXRzIHVzYWdlIHByZXR0eSBzb29uLiBUaGF0J3MgcHJvYmFibHkgdGhlIG1vc3QgaW1wb3J0YW50IGFzcGVjdCBvZiB0aGF0IGRyaXZlciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxOTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDowNzozNy40MDY2MDIzMjNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjczMTI0ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jPTI4OTk9aW50IHBwcF9yZWdpc3Rlcl9jaGFubmVsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbilcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTAwLXtcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYzoyOTAxOlxcdHJldHVybiBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWwoY3VycmVudC1cXHUwMDNlbnNwcm94eS1cXHUwMDNlbmV0X25zLCBjaGFuKTtcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTAyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTI5MDQtLyogQ3JlYXRlIGEgbmV3LCB1bmF0dGFjaGVkIHBwcCBjaGFubmVsIGZvciBzcGVjaWZpZWQgbmV0LiAqL1xcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jOjI5MDU6aW50IHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbilcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTA2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jPTM2NTY9bW9kdWxlX2V4aXQocHBwX2NsZWFudXApO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTM2NTctXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM6MzY1ODpFWFBPUlRfU1lNQk9MKHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMtMzY1OS1FWFBPUlRfU1lNQk9MKHBwcF9yZWdpc3Rlcl9jaGFubmVsKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MDc6MzcuNDczOTIwMDgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAwNDM1MDc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqQ29uY2VybmluZyBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAgRXhwb3J0aW5nKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAgaXMgYWxzbyBleHBvcnRlZC4gVGhpcyBpcyBpbnRlcmVzdGluZywgYW5kIGl0IGltbWVkaWF0ZWx5IHByb21wdHMgYSBmZXcgY29uc2lkZXJhdGlvbnMuIFdlJ3JlIGNsZWFybHkgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24gdGhhdCdzIGludGVuZGVkIGZvciBtb3JlIGdlbmVyYWwgdXNlIHRoYW4gaW5pdGlhbGx5IGFwcGFyZW50LiBUaGUgaW1wbGljYXRpb25zIGFyZTpcblxuKiAgICoqUG90ZW50aWFsIGZvciBleHRlcm5hbCB1c2U6KiogSWYgaXQncyBleHBvcnRlZCwgdGhlcmUncyBhIGRlZmluaXRlIGludGVudCBmb3Igb3RoZXIgbW9kdWxlcyBvciBldmVuIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4gV2hhdCBhcmUgdGhlIHVzZS1jYXNlcyB0aGUgb3JpZ2luYWwgZGV2ZWxvcGVycyBoYWQgaW4gbWluZCBmb3IgZXh0ZXJuYWwgY29uc3VtcHRpb24/XG4qICAgKipBUEkgc3RhYmlsaXR5OioqIEV4cG9ydGluZyBhIGZ1bmN0aW9uIGNyZWF0ZXMgYSBjb21taXRtZW50IHRvIGEgZGVncmVlIG9mIEFQSSBzdGFiaWxpdHkuIFdlJ2xsIG5lZWQgdG8gY2FyZWZ1bGx5IGNvbnNpZGVyIGFueSBmdXR1cmUgbW9kaWZpY2F0aW9ucyB0byBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAgdG8gZW5zdXJlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYW5kIGF2b2lkIGJyZWFraW5nIGV4dGVybmFsIGRlcGVuZGVuY2llcy5cbiogICAqKkRvY3VtZW50YXRpb246KiogVGhpcyBhYnNvbHV0ZWx5IG5lZWRzIHRob3JvdWdoIGRvY3VtZW50YXRpb24uIFRoZSBleGlzdGluZyBpbnRlcm5hbCBjb21tZW50cyBhbmQgcG9zc2libHkgdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uIHdpbGwgbmVlZCB0byBoYXZlIGEgc2VjdGlvbiBhZGRlZCB0byBpdCBvciBhbiB1cGRhdGUuIFdlIG5lZWQgdG8gY2xlYXJseSBleHBsYWluIHRoZSBleHBlY3RlZCBwYXJhbWV0ZXJzLCBzaWRlIGVmZmVjdHMsIHByZWNvbmRpdGlvbnMsIGFuZCB0aGUgY29uc2VxdWVuY2VzIG9mIG1pc3VzZS5cbiogICAqKlNlY3VyaXR5OioqIEFueSBwdWJsaWNseSBhdmFpbGFibGUgZnVuY3Rpb24gaXMgYSBwb3RlbnRpYWwgYXR0YWNrIHZlY3Rvci4gQSBzZWN1cml0eSBhdWRpdCBpcyBhIG11c3QuIElmIHRoZXJlIGFyZSBhbnkgdnVsbmVyYWJpbGl0aWVzLCB0aGV5IGNvdWxkIG5vdyBiZSBleHBsb2l0ZWQgZnJvbSBvdXRzaWRlIHRoZSBrZXJuZWwgY29yZS5cbiogICAqKlRlc3Rpbmc6KiogV2UnbGwgbmVlZCB0byB3cml0ZSB1bml0IHRlc3RzIGZvciBhbnkgbmV3IGludGVuZGVkIHVzZS4gUGx1cywgc2luY2UgaXRzIHB1YmxpYywgdGhlIHRlc3RzIG5lZWQgdG8gYmUgcm9idXN0IHdpdGggY29uc2lkZXJhdGlvbiBmb3Igd2hhdCBvdGhlcnMgbWlnaHQgZG8gd2l0aCBpdC5cbiogICAqKkRlc2lnbiBDb25zaWRlcmF0aW9uOioqIFRoaXMgaW1wbGllcyBhIGNlcnRhaW4gbGV2ZWwgb2YgZGVzaWduIHBoaWxvc29waHkgZm9yIHRoZSBvdmVyYWxsIFBQUCBhcmNoaXRlY3R1cmUuIFdoeSB3YXMgaXQgY29uc2lkZXJlZCBhcHByb3ByaWF0ZSB0byBwcm92aWRlIGFuIGV4dGVybmFsbHkgdXNhYmxlIHVucmVnaXN0cmF0aW9uIGZ1bmN0aW9uPyBJcyB0aGlzIGEgY29yZSBmZWF0dXJlIHRoYXTigJlzIHBhcnQgb2YgdGhlIGdlbmVyYWwgUFBQIGRlc2lnbiBvciBpcyBpdCBhIHNwZWNpZmljIHVzZS1jYXNlIHdpdGggYSBwb3RlbnRpYWxseSBuYXJyb3cgc2NvcGU/XG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2UnbGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSBhbnkgZGVwZW5kZW5jaWVzIHRoaXMgZnVuY3Rpb24gbWlnaHQgaGF2ZSBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBpbnRlcm5hbCBQUFAgZGF0YSBzdHJ1Y3R1cmVzLiBJZiBjaGFuZ2VzIGFyZSBtYWRlIHRvIHRoZXNlIHJlbGF0ZWQgYXJlYXMsIHdpbGwgdGhleSBwcm9wYWdhdGUgdG8gdGhpcyBmdW5jdGlvbiwgY2F1c2luZyBtb3JlIGhlYWRhY2hlcz9cblxuSW4gc2hvcnQsIGp1c3Qgc2VlaW5nIGBwcHBfdW5yZWdpc3Rlcl9jaGFubmVsYCBleHBvcnRlZCByZXF1aXJlcyBhIHRob3JvdWdoIHJlLWV2YWx1YXRpb24gb2YgaXRzIHJvbGUgYW5kIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIHN5c3RlbS4gSXTigJlzIG5vIGxvbmdlciBqdXN0IGFuIGludGVybmFsIGRldGFpbDsgaXQncyBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCBhbmQgd2UgbmVlZCB0byB0cmVhdCBpdCBhcyBzdWNoLiBUaGlzIHJlcXVpcmVzIGFuIGltbWVkaWF0ZSBjaGVja2xpc3Qgb2YgdXBkYXRlcyB0byBoYW5kbGUgdGhlIHB1YmxpYyBleHBvc3VyZSBvZiB0aGUgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MjEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDowNzo0Mi40NzgyNzI2ODVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTExNDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBwcF91bnJlZ2lzdGVyX2NoYW5uZWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM9Mjk5MT12b2lkXFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM6Mjk5MjpwcHBfdW5yZWdpc3Rlcl9jaGFubmVsKHN0cnVjdCBwcHBfY2hhbm5lbCAqY2hhbilcXG5kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYy0yOTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jPTM2NTk9RVhQT1JUX1NZTUJPTChwcHBfcmVnaXN0ZXJfY2hhbm5lbCk7XFxuZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmM6MzY2MDpFWFBPUlRfU1lNQk9MKHBwcF91bnJlZ2lzdGVyX2NoYW5uZWwpO1xcbmRyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jLTM2NjEtRVhQT1JUX1NZTUJPTChwcHBfY2hhbm5lbF9pbmRleCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE0OjA3OjQyLjU0Mjc5NTA5NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTUwOTk3ODMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUFBQIENoYW5uZWwgTG9ja2luZyBNZWNoYW5pc20qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyBvdXQgYSBgcndfc2VtYXBob3JlYCB3aXRoIGEgbXV0ZXggd2l0aGluIHRoZSBgc3RydWN0IGNoYW5uZWxgIGRhdGEgc3RydWN0dXJlLiBUaGF0J3MgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGl0IHNwZWNpZmljYWxseSBpbXBhY3RzIHRoZSBQUFAgY2hhbm5lbCBpb2N0bHMgYW5kIHRoZSByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24gcHJvY2Vzc2VzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIGNvbmNlbnRyYXRlIG9uLCBvYnZpb3VzbHksIGFyZSBgcHBwX2lvY3RsYCwgYHBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbGAsIGFuZCBgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbGAuIGBwcHBfaW9jdGxgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgaXQgYWN0cyBhcyB0aGUgaW9jdGwgaGFuZGxlciwgc28gaXQncyBhIGNyaXRpY2FsIHBvaW50IHRvIGV4YW1pbmUuIFRoZSBvdGhlciB0d28sIGRlYWxpbmcgd2l0aCByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uLCBhcmUgYWxzbyBpbXBvcnRhbnQgdGFyZ2V0cy5cblxuTm93LCBiZWZvcmUgSSBkaXZlIGRlZXAgaW50byB0aGUgY29kZSwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gT2J2aW91c2x5LCBgQ09ORklHX1BQUGAgaXMgdGhlIG1haW4gb25lLCBidXQgYXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCB0aGlzIGNoYW5nZSBtaWdodCBpbnRyb2R1Y2Ugb3IgaW1wYWN0PyBJIHNob3VsZCBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BwcC9LY29uZmlnYCBmaWxlIHRvIGJlIHN1cmUuIFRoaXMgd2lsbCBoZWxwIG1lIGJlIGNvbXByZWhlbnNpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MzMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MDc6NDcuMDkzNzk1MjU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzU1MTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUFBQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6Njpjb25maWcgUFBQXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiUFBQIChwb2ludC10by1wb2ludCBwcm90b2NvbCkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTM1PWlmIFBQUFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjM3OmNvbmZpZyBQUFBfQlNEQ09NUFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTM4LVxcdHRyaXN0YXRlIFxcXCJQUFAgQlNELUNvbXByZXNzIGNvbXByZXNzaW9uXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNTQtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6NTU6Y29uZmlnIFBQUF9ERUZMQVRFXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNTYtXFx0dHJpc3RhdGUgXFxcIlBQUCBEZWZsYXRlIGNvbXByZXNzaW9uXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctNjgtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6Njk6Y29uZmlnIFBQUF9GSUxURVJcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy03MC1cXHRib29sIFxcXCJQUFAgZmlsdGVyaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctODAtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6ODE6Y29uZmlnIFBQUF9NUFBFXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctODItXFx0dHJpc3RhdGUgXFxcIlBQUCBNUFBFIGNvbXByZXNzaW9uIChlbmNyeXB0aW9uKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTkxLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjkyOmNvbmZpZyBQUFBfTVVMVElMSU5LXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctOTMtXFx0Ym9vbCBcXFwiUFBQIG11bHRpbGluayBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTAzLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjEwNDpjb25maWcgUFBQT0FUTVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTEwNS1cXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgQVRNXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTEyLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjExMzpjb25maWcgUFBQT1hcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMTQtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMTUtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTE2OmNvbmZpZyBQUFBPRVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTExNy1cXHR0cmlzdGF0ZSBcXFwiUFBQIG92ZXIgRXRoZXJuZXRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xMjc9Y2hvaWNlXFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xMzgtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTM5OmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNfMVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0MC1cXHRib29sIFxcXCIxIGJpdCAoMiBidWNrZXRzKVxcXCJcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDEtXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTQyOmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNfMlxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0My1cXHRib29sIFxcXCIyIGJpdHMgKDQgYnVja2V0cylcXFwiXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTQ0LVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnOjE0NTpjb25maWcgUFBQT0VfSEFTSF9CSVRTXzRcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDYtXFx0Ym9vbCBcXFwiNCBiaXRzICgxNiBidWNrZXRzKVxcXCJcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNDctXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTQ4OmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNfOFxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE0OS1cXHRib29sIFxcXCI4IGJpdHMgKDI1NiBidWNrZXRzKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnPTE1MT1lbmRjaG9pY2VcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTItXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc6MTUzOmNvbmZpZyBQUFBPRV9IQVNIX0JJVFNcXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZy0xNTQtXFx0aW50XFxuLS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZz0xNjE9Y29uZmlnIFBQVFBcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE3Mi1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxNzM6Y29uZmlnIFBQUE9MMlRQXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWctMTc0LVxcdHRyaXN0YXRlIFxcXCJQUFAgb3ZlciBMMlRQXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvcHBwL0tjb25maWc9MTgxPWlmIFRUWVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE4Mi1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxODM6Y29uZmlnIFBQUF9BU1lOQ1xcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE4NC1cXHR0cmlzdGF0ZSBcXFwiUFBQIHN1cHBvcnQgZm9yIGFzeW5jIHNlcmlhbCBwb3J0c1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE5NS1cXG5kcml2ZXJzL25ldC9wcHAvS2NvbmZpZzoxOTY6Y29uZmlnIFBQUF9TWU5DX1RUWVxcbmRyaXZlcnMvbmV0L3BwcC9LY29uZmlnLTE5Ny1cXHR0cmlzdGF0ZSBcXFwiUFBQIHN1cHBvcnQgZm9yIHN5bmMgdHR5IHBvcnRzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNDowNzo0Ny4xNjEzNTMzODZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY3MzYwNjI4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBQUFAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUFBQIGNvbmZpZ3VyYXRpb24sIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgUFBQYCBpcyBzdWZmaWNpZW50IGZvciBub3cuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHNwZWNpZmljIGZ1bmN0aW9ucyB0byB0YXJnZXQuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gYHBwcF9pb2N0bGAsIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLCBhbmQgYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgLiBXYWl0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB1c2luZyB0aGUgYmVzdCBJT0NUTCBmdW5jdGlvbi4gYHBwcF9pb2N0bGAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFNob3VsZCBJIGJlIHVzaW5nIGBwcHBfdW5sb2NrZWRfaW9jdGxgIGluc3RlYWQsIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBnaXZlbiB0aGUgYHN0YXRpY2AgZGVjbGFyYXRpb24/IEkgbmVlZCB0byBjaGVjay5cblxuQWxyaWdodCwgSSd2ZSBjb25maXJtZWQgdGhlIGZ1bmN0aW9uIG5hbWUgaXMgZGVmaW5pdGVseSBgcHBwX2lvY3RsYC4gVGltZSB0byBzZWUgaWYgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGFyZSBpbiBwbGF5IGhlcmUuIE9rYXksIGBwcHBfcmVsZWFzZV9jaGFubmVsYCBpcyBhbHNvIG1vZGlmaWVkLCBidXQgaXQncyBhbHNvIHN0YXRpYywgc28gSSBjYW4gcHJvYmFibHkgaWdub3JlIGl0IGZvciB0aGUgbW9tZW50LiBSaWdodCwgc28gYHBwcF9pb2N0bGAgaXMgc3RhdGljLi4uIGJ1dCBpdCAqaXMqIGFzc2lnbmVkIHRvIGBwcHBfZGV2aWNlX2ZvcHMudW5sb2NrZWRfaW9jdGxgIHNvIG5vIGlubGluaW5nLiBUaGF0J3MgZ29vZC5cblxuU28sIEknbGwgc3RpY2sgd2l0aCBgcHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsYCwgYHBwcF91bnJlZ2lzdGVyX2NoYW5uZWxgLCBhbmQgYHBwcF9pb2N0bGAgYXMgbXkgcHJpbWFyeSB0YXJnZXQgc3ltYm9scy4gVGhhdCBgcHBwX2lvY3RsYCBmdW5jdGlvbiAqaXMqIHRoZSBJT0NUTCBoYW5kbGVyLCB3aGljaCBpcyBpbXBvcnRhbnQuIEJ1dCBzaW5jZSBpdCdzIGRlY2xhcmVkIHN0YXRpYywgaXMgaXQgdHJ1bHkgYSBkaXN0aW5jdCBzeW1ib2w/IFllcywgaXQgaXMgdXNlZCBmb3IgdGhlIGRldmljZSdzIGZpbGUgb3BlcmF0aW9ucywgc28gaXQgY2FuJ3QgYmUgaW5saW5lZC4gSXQgd2lsbCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgd2hvIGNhbGxzIGBwcHBfcmVnaXN0ZXJfbmV0X2NoYW5uZWxgLiBJdCdzIHVzZWQgYnkgc2V2ZXJhbCBtb2R1bGVzLCBpbmNsdWRpbmcgYHBwcF9hc3luY2AsIGBwcHBfc3luY3R0eWAsIGFuZCBgcHBwb2VgIGV0Yy4gU28sIGZ1enppbmcgdGhlc2UgZW50cnkgcG9pbnRzIGxvb2tzIGxpa2UgYSBzb2xpZCBzdHJhdGVneS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgYHBwcF9pb2N0bGAgaXMgdGhlIG9ubHkgSU9DVEwgaGFuZGxlciBmb3IgYC9kZXYvcHBwYC4gWWVzLCB0aGF0J3MgY29ycmVjdC5cblxuT2theSwgSSB0aGluayBJIGhhdmUgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBhdHRhY2sgc3VyZmFjZSBoZXJlLiBJJ2xsIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAxNSwiT3V0cHV0VG9rZW5zIjoxMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTQ6MDc6NTQuODM0OTYyMDc0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk3OTM1NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBQUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBwcF9pb2N0bFwiLFxuICAgIFwicHBwX3JlZ2lzdGVyX25ldF9jaGFubmVsXCIsXG4gICAgXCJwcHBfdW5yZWdpc3Rlcl9jaGFubmVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSByd19zZW1hcGhvcmUgd2l0aCBhIG11dGV4IGluIHRoZSBQUFAgY2hhbm5lbCBzdHJ1Y3R1cmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIGxvY2tpbmcgZHVyaW5nIFBQUCBpb2N0bHMgYW5kIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgaW9jdGwgaGFuZGxlciBhbmQgdGhlIGNoYW5uZWwgcmVnaXN0cmF0aW9uL3VucmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQUFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcHBfaW9jdGxcIixcbiAgICBcInBwcF9yZWdpc3Rlcl9uZXRfY2hhbm5lbFwiLFxuICAgIFwicHBwX3VucmVnaXN0ZXJfY2hhbm5lbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgcndfc2VtYXBob3JlIHdpdGggYSBtdXRleCBpbiB0aGUgUFBQIGNoYW5uZWwgc3RydWN0dXJlLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBsb2NraW5nIGR1cmluZyBQUFAgaW9jdGxzIGFuZCBjaGFubmVsIHJlZ2lzdHJhdGlvbi91bnJlZ2lzdHJhdGlvbi4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlIGlvY3RsIGhhbmRsZXIgYW5kIHRoZSBjaGFubmVsIHJlZ2lzdHJhdGlvbi91bnJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2kwxk[1] Phase: Succeeded StartedAt: 2026-07-27 14:08:06 +0000 UTC FinishedAt: 2026-07-27 14:08:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 14:08:06 +0000 UTC FinishedAt: 2026-07-27 14:08:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2] Phase: Succeeded StartedAt: 2026-07-27 14:08:06 +0000 UTC FinishedAt: 2026-07-27 18:41:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-27 14:08:06 +0000 UTC FinishedAt: 2026-07-27 18:41:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-27 14:08:06 +0000 UTC FinishedAt: 2026-07-27 14:08:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-27 14:08:06 +0000 UTC FinishedAt: 2026-07-27 14:08:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2kwxk/series-workflow2kwxk-convert-artifact-3153674119/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-27 14:08:27 +0000 UTC FinishedAt: 2026-07-27 14:42:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-27 14:08:27 +0000 UTC FinishedAt: 2026-07-27 14:42:46 +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:*f6ac85fd-c452-4199-8e58-82906ed30c77,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-workflow2kwxk/series-workflow2kwxk-convert-artifact-3153674119/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": "589b540b-6e17-49ab-97f2-5d24a0d3930a", "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-workflow2kwxk/series-workflow2kwxk-build-action-2213187101/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-27 14:08:27 +0000 UTC FinishedAt: 2026-07-27 14:42:36 +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:*f6ac85fd-c452-4199-8e58-82906ed30c77,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-workflow2kwxk/series-workflow2kwxk-convert-artifact-3153674119/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": "589b540b-6e17-49ab-97f2-5d24a0d3930a", "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-workflow2kwxk/series-workflow2kwxk-build-action-2213187101/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-27 14:42:46 +0000 UTC FinishedAt: 2026-07-27 14:42:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-27 14:42:46 +0000 UTC FinishedAt: 2026-07-27 14:42:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-27 14:42:46 +0000 UTC FinishedAt: 2026-07-27 14:42:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-27 14:42:46 +0000 UTC FinishedAt: 2026-07-27 14:42:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow2kwxk/series-workflow2kwxk-convert-artifact-815067318/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-27 14:42:56 +0000 UTC FinishedAt: 2026-07-27 14:44:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-27 14:42:56 +0000 UTC FinishedAt: 2026-07-27 14:44:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*589b540b-6e17-49ab-97f2-5d24a0d3930a,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-workflow2kwxk/series-workflow2kwxk-build-action-2213187101/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-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-27 14:44:59 +0000 UTC FinishedAt: 2026-07-27 14:44:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-27 14:44:59 +0000 UTC FinishedAt: 2026-07-27 14:44:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-27 14:44:59 +0000 UTC FinishedAt: 2026-07-27 15:36:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-27 14:44:59 +0000 UTC FinishedAt: 2026-07-27 15:36:38 +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:*f6ac85fd-c452-4199-8e58-82906ed30c77,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-workflow2kwxk/series-workflow2kwxk-convert-artifact-815067318/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": "223c13f9-2cdd-45d1-8117-375b4eb3df42", "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-workflow2kwxk/series-workflow2kwxk-build-action-2458727866/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-27 14:44:59 +0000 UTC FinishedAt: 2026-07-27 15:36:28 +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:*f6ac85fd-c452-4199-8e58-82906ed30c77,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-workflow2kwxk/series-workflow2kwxk-convert-artifact-815067318/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": "223c13f9-2cdd-45d1-8117-375b4eb3df42", "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-workflow2kwxk/series-workflow2kwxk-build-action-2458727866/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-27 15:36:38 +0000 UTC FinishedAt: 2026-07-27 15:36:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-27 15:36:38 +0000 UTC FinishedAt: 2026-07-27 15:36:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-27 15:36:38 +0000 UTC FinishedAt: 2026-07-27 15:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-27 15:36:38 +0000 UTC FinishedAt: 2026-07-27 15:38:20 +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:*223c13f9-2cdd-45d1-8117-375b4eb3df42,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-workflow2kwxk/series-workflow2kwxk-build-action-2458727866/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-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-27 15:38:30 +0000 UTC FinishedAt: 2026-07-27 18:41:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-27 15:38:30 +0000 UTC FinishedAt: 2026-07-27 18:41:54 +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":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"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:*589b540b-6e17-49ab-97f2-5d24a0d3930a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*223c13f9-2cdd-45d1-8117-375b4eb3df42,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-workflow2kwxk/series-workflow2kwxk-build-action-2213187101/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-workflow2kwxk/series-workflow2kwxk-build-action-2458727866/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-27 15:38:30 +0000 UTC FinishedAt: 2026-07-27 15:38:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-27 15:38:30 +0000 UTC FinishedAt: 2026-07-27 15:38:38 +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":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"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-workflow2kwxk/series-workflow2kwxk-convert-artifact-2656895451/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-27 15:38:30 +0000 UTC FinishedAt: 2026-07-27 15:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-27 15:38:30 +0000 UTC FinishedAt: 2026-07-27 15:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-27 15:38:30 +0000 UTC FinishedAt: 2026-07-27 15:38:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-27 15:38:40 +0000 UTC FinishedAt: 2026-07-27 18:41:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2kwxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ppp_ioctl","ppp_register_net_channel","ppp_unregister_channel"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["PPP"],"series_id":"890b06ba-7657-4da5-b432-2cd4b2bab7a0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-27 15:38:40 +0000 UTC FinishedAt: 2026-07-27 18:41:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*589b540b-6e17-49ab-97f2-5d24a0d3930a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*223c13f9-2cdd-45d1-8117-375b4eb3df42,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-workflow2kwxk/series-workflow2kwxk-build-action-2213187101/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-workflow2kwxk/series-workflow2kwxk-build-action-2458727866/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-workflow2kwxk/series-workflow2kwxk-convert-artifact-2656895451/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}