Name: series-workflowr5frq Phase: Succeeded StartedAt: 2026-07-03 10:13:03 +0000 UTC FinishedAt: 2026-07-03 14:47:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[0] Phase: Succeeded StartedAt: 2026-07-03 10:13:03 +0000 UTC FinishedAt: 2026-07-03 10:27:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 10:13:03 +0000 UTC FinishedAt: 2026-07-03 10:27:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "62e7df6d042aeebd5efb581074e28865c04477be", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "62e7df6d042aeebd5efb581074e28865c04477be", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "57a5f762-df4e-41f7-beaf-1688c5b50b3f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "gtp1u_udp_encap_recv", "gtp_parse_exthdrs" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d0cDF1X3VkcF9lbmNhcF9yZWN2JiMzNDssCiAgICAmIzM0O2d0cF9wYXJzZV9leHRoZHJzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBHVFAgZHJpdmVyIHdoZXJlIGBndHBfaW5uZXJfcHJvdG9gIHdhcyBjYWxsZWQgYmVmb3JlIGBndHBfcGFyc2VfZXh0aGRyc2AsIHdoaWNoIHVwZGF0ZXMgdGhlIGBoZHJsZW5gIHVzZWQgYnkgYGd0cF9pbm5lcl9wcm90b2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgcGFja2V0IHBhcnNpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTA6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0OGJhZGVhYmUyODlmODBmMzE1NzU4OWY0YzkxZWVhNDkzYTcwZTVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMDoyNjozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ndHAuYyBiL2RyaXZlcnMvbmV0L2d0cC5jXG5pbmRleCBhNjBlZjMyYjM1YjgyNS4uNGE4YjAwNTQ4NjczNTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC04MjYsNiAmIzQzOzgyNiwxMCBAQCBzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZHJsZW4pKVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4mIzQzO1x0aWYgKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDI2IEdUUDFfRl9FWFRIRFIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgXHUwMDI2aGRybGVuKSBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiAtMTtcbiYjNDM7XG4gXHRpZiAoZ3RwX2lubmVyX3Byb3RvKHNrYiwgaGRybGVuLCBcdTAwMjZpbm5lcl9wcm90bykgXHUwMDNjIDApIHtcbiBcdFx0bmV0ZGV2X2RiZyhndHAtXHUwMDNlZGV2LCBcJiMzNDtHVFAgcGFja2V0IGRvZXMgbm90IGVuY2Fwc3VsYXRlIGFuIElQIHBhY2tldFxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiAtMTtcbkBAIC04NDAsMTAgJiM0Mzs4NDQsNiBAQCBzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdHJldHVybiAxO1xuIFx0fVxuIFxuLVx0aWYgKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDI2IEdUUDFfRl9FWFRIRFIgXHUwMDI2XHUwMDI2XG4tXHQgICAgZ3RwX3BhcnNlX2V4dGhkcnMoc2tiLCBcdTAwMjZoZHJsZW4pIFx1MDAzYyAwKVxuLVx0XHRyZXR1cm4gLTE7XG4tXG4gXHRyZXR1cm4gZ3RwX3J4KHBjdHgsIHNrYiwgaGRybGVuLCBndHAtXHUwMDNlcm9sZSwgaW5uZXJfcHJvdG8pO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtndHAxdV91ZHBfZW5jYXBfcmVjdiYjMzQ7LAogICAgJiMzNDtndHBfcGFyc2VfZXh0aGRycyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgR1RQIGRyaXZlciB3aGVyZSBgZ3RwX2lubmVyX3Byb3RvYCB3YXMgY2FsbGVkIGJlZm9yZSBgZ3RwX3BhcnNlX2V4dGhkcnNgLCB3aGljaCB1cGRhdGVzIHRoZSBgaGRybGVuYCB1c2VkIGJ5IGBndHBfaW5uZXJfcHJvdG9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIHBhY2tldCBwYXJzaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0OGJhZGVhYmUyODlmODBmMzE1NzU4OWY0YzkxZWVhNDkzYTcwZTVhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMyAxMDoyNjozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmMKaW5kZXggYTYwZWYzMmIzNWI4MjUuLjRhOGIwMDU0ODY3MzUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ndHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ndHAuYwpAQCAtODI2LDYgJiM0Mzs4MjYsMTAgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmICghcHNrYl9tYXlfcHVsbChza2IsIGhkcmxlbikpCiAJCXJldHVybiAtMTsKIAomIzQzOwlpZiAoZ3RwMS0mZ3Q7ZmxhZ3MgJmFtcDsgR1RQMV9GX0VYVEhEUiAmYW1wOyZhbXA7CiYjNDM7CSAgICBndHBfcGFyc2VfZXh0aGRycyhza2IsICZhbXA7aGRybGVuKSAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gLTE7CiYjNDM7CiAJaWYgKGd0cF9pbm5lcl9wcm90byhza2IsIGhkcmxlbiwgJmFtcDtpbm5lcl9wcm90bykgJmx0OyAwKSB7CiAJCW5ldGRldl9kYmcoZ3RwLSZndDtkZXYsICYjMzQ7R1RQIHBhY2tldCBkb2VzIG5vdCBlbmNhcHN1bGF0ZSBhbiBJUCBwYWNrZXRcbiYjMzQ7KTsKIAkJcmV0dXJuIC0xOwpAQCAtODQwLDEwICYjNDM7ODQ0LDYgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlyZXR1cm4gMTsKIAl9CiAKLQlpZiAoZ3RwMS0mZ3Q7ZmxhZ3MgJmFtcDsgR1RQMV9GX0VYVEhEUiAmYW1wOyZhbXA7Ci0JICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgJmFtcDtoZHJsZW4pICZsdDsgMCkKLQkJcmV0dXJuIC0xOwotCiAJcmV0dXJuIGd0cF9yeChwY3R4LCBza2IsIGhkcmxlbiwgZ3RwLSZndDtyb2xlLCBpbm5lcl9wcm90byk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTA6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBHVFAgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZ3RwLmNgLiBJdCYjMzk7cyBhIGZhaXJseSBzcGVjaWZpYyBmdW5jdGlvbmFsIGNoYW5nZSwgYXBwYXJlbnRseS4gSXQmIzM5O3MgbW92aW5nIHRoZSBjYWxsIHRvIGBndHBfcGFyc2VfZXh0aGRyc2AgZWFybGllciBpbiBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgLiBUaGUga2V5IGhlcmUgaXMgdGhlICpvcmRlciogb2Ygb3BlcmF0aW9uczsgc28gbm93LCB0aGUgZXh0ZW5zaW9uIGhlYWRlciBwYXJzaW5nIGlzIGRvbmUgKmJlZm9yZSogdGhlIGlubmVyIHByb3RvY29sIGlzIGRldGVybWluZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIG9yZGVyaW5nIG1hdHRlcnMgYW5kIHdoYXQgYXNzdW1wdGlvbnMgaXQmIzM5O3MgY2hhbmdpbmcsIG9yIHdoYXQgc3BlY2lmaWMgaXNzdWUgdGhpcyBhZGRyZXNzZXMuCgpUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgY29kZS4gSSBuZWVkIHRvIHJlLWZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSByZWxldmFudCBmdW5jdGlvbnMsIG5hbWVseSBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGFuZCBgZ3RwX3BhcnNlX2V4dGhkcnNgLCBib3RoIGluIGBkcml2ZXJzL25ldC9ndHAuY2AuIFVuZGVyc3RhbmRpbmcgdGhlaXIgaW5kaXZpZHVhbCByb2xlcyBhbmQgdGhlIGRhdGEgZmxvdyBiZXR3ZWVuIHRoZW0gaXMgY3J1Y2lhbCB0byBncmFzcGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyBvciBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYmVpbmcgYWx0ZXJlZCBieSB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cDF1X3VkcF9lbmNhcF9yZWN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmM9NzUwPXN0YXRpYyBpbnQgZ3RwX3BhcnNlX2V4dGhkcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50ICpoZHJsZW4pXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtNzg2LVxuZHJpdmVycy9uZXQvZ3RwLmM6Nzg3OnN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L2d0cC5jLTc4OC17XG4tLVxuZHJpdmVycy9uZXQvZ3RwLmM9OTAyPXN0YXRpYyBpbnQgZ3RwX2VuY2FwX3JlY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L2d0cC5jLTkxOS1cdFx0bmV0ZGV2X2RiZyhndHAtXHUwMDNlZGV2LCBcJiMzNDtyZWNlaXZlZCBHVFAxVSBwYWNrZXRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZ3RwLmM6OTIwOlx0XHRyZXQgPSBndHAxdV91ZHBfZW5jYXBfcmVjdihndHAsIHNrYik7XG5kcml2ZXJzL25ldC9ndHAuYy05MjEtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdUUCBUdW5uZWxpbmcgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gYGd0cDF1X3VkcF9lbmNhcF9yZWN2YCBpcyBjYWxsZWQgZnJvbSBgZ3RwX2VuY2FwX3JlY3ZgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gS25vd2luZyB0aGF0IG1lYW5zIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgYW5kIHNob3VsZCBiZSBzdHJhaWdodGZvcndhcmQgdG8gdGVzdCwgd2hpY2ggaXMgYWx3YXlzIGEgcmVsaWVmLiBJIGNhbiBub3cgZm9jdXMgb24gdmVyaWZ5aW5nIHRoZSBjb3JlIGxvZ2ljLgoKTmV4dCBzdGVwOiBsZXQmIzM5O3MgZ28gZmluZCB0aGUgS2NvbmZpZyBvcHRpb24gZm9yIGBkcml2ZXJzL25ldC9ndHAuY2AuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgY3J1Y2lhbCBmb3IgY29udHJvbGxpbmcgdGhpcyBtb2R1bGUgYW5kIGNvbmZpZ3VyaW5nIGl0cyBiZWhhdmlvdXIuIEtub3dpbmcgdGhlIEtjb25maWcgb3B0aW9uIHdpbGwgaGVscCBlbnN1cmUgSSYjMzk7bSBlbmFibGluZyBpdCBjb3JyZWN0bHkgaW4gYW55IHRlc3Qgc2NlbmFyaW9zLCBhbmQgdGhhdCBhbnkgZGVwZW5kZW5jaWVzIGFyZSBhY2NvdW50ZWQgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cFxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9NYWtlZmlsZT0zOD1vYmotJChDT05GSUdfQkFSRVVEUCkgJiM0Mzs9IGJhcmV1ZHAub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6Mzk6b2JqLSQoQ09ORklHX0dUUCkgJiM0Mzs9IGd0cC5vXG5kcml2ZXJzL25ldC9NYWtlZmlsZS00MC1vYmotJChDT05GSUdfTkxNT04pICYjNDM7PSBubG1vbi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTA6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4MAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDExNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgR1RQIFBhY2tldCBQcm9jZXNzaW5nKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBjb2RlLCBhbmQgdGhlIGZvY3VzIGhlcmUgaXMgZGVmaW5pdGVseSBvbiBgQ09ORklHX0dUUGAuIFRoZSBjb3JlIGZ1bmN0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlzIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAuIEJ1dCB3YWl0LCB0aGF0IGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBtZWFucyBJIHNob3VsZCBhbHNvIGluY2x1ZGUgYGd0cF9lbmNhcF9yZWN2YCBhbmQgYGd0cF9wYXJzZV9leHRoZHJzYCBpbiBteSBtZW50YWwgbWFwLCBzaW5jZSB0aGV5IGFyZSBsaWtlbHkgY29ubmVjdGVkIHNvbWVob3cuIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byB0cmFjZSB0aG9zZSBjb25uZWN0aW9ucy4KClNvLCBmb3Igbm93LCBJJiMzOTtsbCBkZWZpbml0ZWx5IGJlIGZvY3VzaW5nIG9uIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAgYW5kIGBndHBfcGFyc2VfZXh0aGRyc2AuIExldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiB0aGUgZW52aXJvbm1lbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBtaWdodCBiZSByZWxldmFudDsgSSBkb24mIzM5O3Qgd2FudCB0byBtaXNzIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBHVFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MjYwPWNvbmZpZyBCQVJFVURQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzEtXG5kcml2ZXJzL25ldC9LY29uZmlnOjI3Mjpjb25maWcgR1RQXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3My1cdHRyaXN0YXRlIFwmIzM0O0dQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSlcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzkyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCkFscmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIGluIHVzZSBpcyBjbGVhcmx5IGBHVFBgLiBUaGF0IGltbWVkaWF0ZWx5IGdldHMgbXkgYXR0ZW50aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBwaXZvdCBhbmQgY29uc2lkZXIgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gTm93LCBhIGtleSBhcmVhIEkmIzM5O20gemVyb2luZyBpbiBvbiBpcyBgZ3RwX2lubmVyX3Byb3RvYC4gVGhpcyBpcyB3aGVyZSBJIHNlZSB0aGUgaW1tZWRpYXRlIHZhbHVlLiBUaGUgaW5uZXIgcHJvdG9jb2wgd2l0aGluIEdUUCBpcyBhbG1vc3QgYWx3YXlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJdCYjMzk7cyBvZnRlbiBsZXNzIHJpZ29yb3VzbHkgdGVzdGVkIHRoYW4gdGhlIG91dGVyIEdUUCBoYW5kbGluZyBpdHNlbGYsIGFuZCB0aGVyZWZvcmUgYSBtb3JlIGxpa2VseSBzb3VyY2Ugb2YgZXhwbG9pdGFibGUgYnVncy4gSXTigJlzIHdoZXJlIG1vcmUgb2YgdGhlIGludGVyZXN0aW5nIGRhdGEgbGl2ZXMsIGFuZCB3aGVyZSB1bmV4cGVjdGVkIGlucHV0cyBhcmUgbGlrZWx5IHRvIHRyaWdnZXIgc29tZXRoaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtZZXAsIHRpbWUgdG8gcHV0IHRoYXQgb24gdGhlIGxpc3QuIGBndHBfaW5uZXJfcHJvdG9gIGlzIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBhbmQgYSBmdXp6aW5nIGNhbXBhaWduLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cF9pbm5lcl9wcm90byYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2d0cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2d0cC5jPTI3NT1zdGF0aWMgYm9vbCBndHBfY2hlY2tfbXMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHBkcF9jdHggKnBjdHgsXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtMjg3LVxuZHJpdmVycy9uZXQvZ3RwLmM6Mjg4OnN0YXRpYyBpbnQgZ3RwX2lubmVyX3Byb3RvKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBoZHJsZW4sXG5kcml2ZXJzL25ldC9ndHAuYy0yODktXHRcdFx0ICAgX191MTYgKmlubmVyX3Byb3RvKVxuLS1cbmRyaXZlcnMvbmV0L2d0cC5jPTU4MD1zdGF0aWMgaW50IGd0cDBfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy02MDgtXG5kcml2ZXJzL25ldC9ndHAuYzo2MDk6XHRpZiAoZ3RwX2lubmVyX3Byb3RvKHNrYiwgaGRybGVuLCBcdTAwMjZpbm5lcl9wcm90bykgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L2d0cC5jLTYxMC1cdFx0bmV0ZGV2X2RiZyhndHAtXHUwMDNlZGV2LCBcJiMzNDtHVFAgcGFja2V0IGRvZXMgbm90IGVuY2Fwc3VsYXRlIGFuIElQIHBhY2tldFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZ3RwLmM9Nzg3PXN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy04MzItXG5kcml2ZXJzL25ldC9ndHAuYzo4MzM6XHRpZiAoZ3RwX2lubmVyX3Byb3RvKHNrYiwgaGRybGVuLCBcdTAwMjZpbm5lcl9wcm90bykgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L2d0cC5jLTgzNC1cdFx0bmV0ZGV2X2RiZyhndHAtXHUwMDNlZGV2LCBcJiMzNDtHVFAgcGFja2V0IGRvZXMgbm90IGVuY2Fwc3VsYXRlIGFuIElQIHBhY2tldFxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNTUKCQkJCQkJCW91dHB1dDogMTIxCgkJCQkJCQl0aG91Z2h0czogMTM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIGl0IHdlcmUgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRml4aW5nIGEgR1RQIEhlYWRlciBQYXJzaW5nIE9yZGVyIERlcGVuZGVuY3kqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCBzZWVtcyBsaWtlIHRoZXJlJiMzOTtzIGEgY3JpdGljYWwgb3JkZXJpbmcgaXNzdWUgaW4gdGhlIEdUUCBwYWNrZXQgcHJvY2Vzc2luZy4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb24gYGd0cF9pbm5lcl9wcm90b2Agd2FzIGJlaW5nIGNhbGxlZCAqYmVmb3JlKiBgZ3RwX3BhcnNlX2V4dGhkcnNgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGBndHBfaW5uZXJfcHJvdG9gIHJlbGllcyBvbiB0aGUgYGhkcmxlbmAgdmFyaWFibGUsIGFuZCBgaGRybGVuYCYjMzk7cyB2YWx1ZSBpcyBtb2RpZmllZCBieSBgZ3RwX3BhcnNlX2V4dGhkcnNgLiBTbywgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHVzZS1iZWZvcmUtaW5pdGlhbGl6YXRpb24gc2l0dWF0aW9uLCBsZWFkaW5nIHRvIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gb3IgdW5leHBlY3RlZCBiZWhhdmlvci4KClRoZSBmaXggaXMgc3RyYWlnaHRmb3J3YXJkOiBqdXN0IHJlb3JkZXIgdGhlIGNhbGxzLiBXZSYjMzk7bGwgY2FsbCBgZ3RwX3BhcnNlX2V4dGhkcnNgICpiZWZvcmUqIGBndHBfaW5uZXJfcHJvdG9gLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgZXh0ZW5kZWQgaGVhZGVyIHBhcnNpbmcgaGFwcGVucyBmaXJzdCwgYWNjdXJhdGVseSBkZXRlcm1pbmluZyB0aGUgaGVhZGVyIGxlbmd0aCwgYW5kIHRoZW4gc3Vic2VxdWVudCBmdW5jdGlvbnMgdGhhdCBkZXBlbmQgb24gdGhlIHBhcnNlZCB2YWx1ZSBjYW4gb3BlcmF0ZSBjb3JyZWN0bHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgSSYjMzk7bSBtYXJraW5nIHRoaXMgZm9yIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIGVkZ2UgY2FzZXMuIEkmIzM5O2xsIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGFuZCBgZ3RwX3BhcnNlX2V4dGhkcnNgIHNwZWNpZmljYWxseS4gVGhlIGBHVFBgIGNvbmZpZyBvcHRpb24gd2lsbCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gYmUgYnVpbHQgaW4gYXMgd2VsbC4KCkxldCYjMzk7cyBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z3RwMXVfdWRwX2VuY2FwX3JlY3YmIzM0OywKICAgICYjMzQ7Z3RwX3BhcnNlX2V4dGhkcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEdUUCBkcml2ZXIgd2hlcmUgYGd0cF9pbm5lcl9wcm90b2Agd2FzIGNhbGxlZCBiZWZvcmUgYGd0cF9wYXJzZV9leHRoZHJzYCwgd2hpY2ggdXBkYXRlcyB0aGUgYGhkcmxlbmAgdXNlZCBieSBgZ3RwX2lubmVyX3Byb3RvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBwYWNrZXQgcGFyc2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z3RwMXVfdWRwX2VuY2FwX3JlY3YmIzM0OywKICAgICYjMzQ7Z3RwX3BhcnNlX2V4dGhkcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEdUUCBkcml2ZXIgd2hlcmUgYGd0cF9pbm5lcl9wcm90b2Agd2FzIGNhbGxlZCBiZWZvcmUgYGd0cF9wYXJzZV9leHRoZHJzYCwgd2hpY2ggdXBkYXRlcyB0aGUgYGhkcmxlbmAgdXNlZCBieSBgZ3RwX2lubmVyX3Byb3RvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBwYWNrZXQgcGFyc2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjI2OjMyLjYxNjYyMTUzN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODkzMzUyMjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cDF1X3VkcF9lbmNhcF9yZWN2XCIsXG4gICAgXCJndHBfcGFyc2VfZXh0aGRyc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBHVFAgZHJpdmVyIHdoZXJlIGBndHBfaW5uZXJfcHJvdG9gIHdhcyBjYWxsZWQgYmVmb3JlIGBndHBfcGFyc2VfZXh0aGRyc2AsIHdoaWNoIHVwZGF0ZXMgdGhlIGBoZHJsZW5gIHVzZWQgYnkgYGd0cF9pbm5lcl9wcm90b2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgcGFja2V0IHBhcnNpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjI2OjMyLjYxNjYzMjU0NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA0MTQ3ODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDhiYWRlYWJlMjg5ZjgwZjMxNTc1ODlmNGM5MWVlYTQ5M2E3MGU1YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzIDEwOjI2OjMxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmNcXG5pbmRleCBhNjBlZjMyYjM1YjgyNS4uNGE4YjAwNTQ4NjczNTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZ3RwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ndHAuY1xcbkBAIC04MjYsNiArODI2LDEwIEBAIHN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGRybGVuKSlcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbiBcXG4rXFx0aWYgKGd0cDEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgR1RQMV9GX0VYVEhEUiBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgZ3RwX3BhcnNlX2V4dGhkcnMoc2tiLCBcXHUwMDI2aGRybGVuKSBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiAtMTtcXG4rXFxuIFxcdGlmIChndHBfaW5uZXJfcHJvdG8oc2tiLCBoZHJsZW4sIFxcdTAwMjZpbm5lcl9wcm90bykgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdG5ldGRldl9kYmcoZ3RwLVxcdTAwM2VkZXYsIFxcXCJHVFAgcGFja2V0IGRvZXMgbm90IGVuY2Fwc3VsYXRlIGFuIElQIHBhY2tldFxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtMTtcXG5AQCAtODQwLDEwICs4NDQsNiBAQCBzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdHJldHVybiAxO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZ3RwMS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBHVFAxX0ZfRVhUSERSIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBndHBfcGFyc2VfZXh0aGRycyhza2IsIFxcdTAwMjZoZHJsZW4pIFxcdTAwM2MgMClcXG4tXFx0XFx0cmV0dXJuIC0xO1xcbi1cXG4gXFx0cmV0dXJuIGd0cF9yeChwY3R4LCBza2IsIGhkcmxlbiwgZ3RwLVxcdTAwM2Vyb2xlLCBpbm5lcl9wcm90byk7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjI2OjMzLjEyMTc1MzA2OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjIzODgyMTA2NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3RwMXVfdWRwX2VuY2FwX3JlY3ZcIixcbiAgICBcImd0cF9wYXJzZV9leHRoZHJzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEdUUCBkcml2ZXIgd2hlcmUgYGd0cF9pbm5lcl9wcm90b2Agd2FzIGNhbGxlZCBiZWZvcmUgYGd0cF9wYXJzZV9leHRoZHJzYCwgd2hpY2ggdXBkYXRlcyB0aGUgYGhkcmxlbmAgdXNlZCBieSBgZ3RwX2lubmVyX3Byb3RvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBwYWNrZXQgcGFyc2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0OGJhZGVhYmUyODlmODBmMzE1NzU4OWY0YzkxZWVhNDkzYTcwZTVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMDoyNjozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmNcbmluZGV4IGE2MGVmMzJiMzViODI1Li40YThiMDA1NDg2NzM1MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2d0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9ndHAuY1xuQEAgLTgyNiw2ICs4MjYsMTAgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGRybGVuKSlcbiBcdFx0cmV0dXJuIC0xO1xuIFxuK1x0aWYgKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDI2IEdUUDFfRl9FWFRIRFIgXHUwMDI2XHUwMDI2XG4rXHQgICAgZ3RwX3BhcnNlX2V4dGhkcnMoc2tiLCBcdTAwMjZoZHJsZW4pIFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gLTE7XG4rXG4gXHRpZiAoZ3RwX2lubmVyX3Byb3RvKHNrYiwgaGRybGVuLCBcdTAwMjZpbm5lcl9wcm90bykgXHUwMDNjIDApIHtcbiBcdFx0bmV0ZGV2X2RiZyhndHAtXHUwMDNlZGV2LCBcIkdUUCBwYWNrZXQgZG9lcyBub3QgZW5jYXBzdWxhdGUgYW4gSVAgcGFja2V0XFxuXCIpO1xuIFx0XHRyZXR1cm4gLTE7XG5AQCAtODQwLDEwICs4NDQsNiBAQCBzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdHJldHVybiAxO1xuIFx0fVxuIFxuLVx0aWYgKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDI2IEdUUDFfRl9FWFRIRFIgXHUwMDI2XHUwMDI2XG4tXHQgICAgZ3RwX3BhcnNlX2V4dGhkcnMoc2tiLCBcdTAwMjZoZHJsZW4pIFx1MDAzYyAwKVxuLVx0XHRyZXR1cm4gLTE7XG4tXG4gXHRyZXR1cm4gZ3RwX3J4KHBjdHgsIHNrYiwgaGRybGVuLCBndHAtXHUwMDNlcm9sZSwgaW5uZXJfcHJvdG8pO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjI2OjMzLjEyMTc1NDQxOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDgwOTMzOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgR1RQIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ndHAuY2AuIEl0J3MgYSBmYWlybHkgc3BlY2lmaWMgZnVuY3Rpb25hbCBjaGFuZ2UsIGFwcGFyZW50bHkuIEl0J3MgbW92aW5nIHRoZSBjYWxsIHRvIGBndHBfcGFyc2VfZXh0aGRyc2AgZWFybGllciBpbiBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgLiBUaGUga2V5IGhlcmUgaXMgdGhlICpvcmRlciogb2Ygb3BlcmF0aW9uczsgc28gbm93LCB0aGUgZXh0ZW5zaW9uIGhlYWRlciBwYXJzaW5nIGlzIGRvbmUgKmJlZm9yZSogdGhlIGlubmVyIHByb3RvY29sIGlzIGRldGVybWluZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIG9yZGVyaW5nIG1hdHRlcnMgYW5kIHdoYXQgYXNzdW1wdGlvbnMgaXQncyBjaGFuZ2luZywgb3Igd2hhdCBzcGVjaWZpYyBpc3N1ZSB0aGlzIGFkZHJlc3Nlcy5cblxuVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJJ2xsIGRpdmUgaW50byB0aGUgY29kZS4gSSBuZWVkIHRvIHJlLWZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSByZWxldmFudCBmdW5jdGlvbnMsIG5hbWVseSBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGFuZCBgZ3RwX3BhcnNlX2V4dGhkcnNgLCBib3RoIGluIGBkcml2ZXJzL25ldC9ndHAuY2AuIFVuZGVyc3RhbmRpbmcgdGhlaXIgaW5kaXZpZHVhbCByb2xlcyBhbmQgdGhlIGRhdGEgZmxvdyBiZXR3ZWVuIHRoZW0gaXMgY3J1Y2lhbCB0byBncmFzcGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIG9yIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBiZWluZyBhbHRlcmVkIGJ5IHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMDoyNjozNi45Njk4NTA5MzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4MjI2NTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImd0cDF1X3VkcF9lbmNhcF9yZWN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jPTc1MD1zdGF0aWMgaW50IGd0cF9wYXJzZV9leHRoZHJzKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCAqaGRybGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmMtNzg2LVxcbmRyaXZlcnMvbmV0L2d0cC5jOjc4NzpzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvZ3RwLmMtNzg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jPTkwMj1zdGF0aWMgaW50IGd0cF9lbmNhcF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTkxOS1cXHRcXHRuZXRkZXZfZGJnKGd0cC1cXHUwMDNlZGV2LCBcXFwicmVjZWl2ZWQgR1RQMVUgcGFja2V0XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ndHAuYzo5MjA6XFx0XFx0cmV0ID0gZ3RwMXVfdWRwX2VuY2FwX3JlY3YoZ3RwLCBza2IpO1xcbmRyaXZlcnMvbmV0L2d0cC5jLTkyMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MjY6MzcuMTE4MDgyNTg5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyMjA0OTk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdUUCBUdW5uZWxpbmcgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGlzIGNhbGxlZCBmcm9tIGBndHBfZW5jYXBfcmVjdmAuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEtub3dpbmcgdGhhdCBtZWFucyBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgYW5kIHNob3VsZCBiZSBzdHJhaWdodGZvcndhcmQgdG8gdGVzdCwgd2hpY2ggaXMgYWx3YXlzIGEgcmVsaWVmLiBJIGNhbiBub3cgZm9jdXMgb24gdmVyaWZ5aW5nIHRoZSBjb3JlIGxvZ2ljLlxuXG5OZXh0IHN0ZXA6IGxldCdzIGdvIGZpbmQgdGhlIEtjb25maWcgb3B0aW9uIGZvciBgZHJpdmVycy9uZXQvZ3RwLmNgLiBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGlzIGNydWNpYWwgZm9yIGNvbnRyb2xsaW5nIHRoaXMgbW9kdWxlIGFuZCBjb25maWd1cmluZyBpdHMgYmVoYXZpb3VyLiBLbm93aW5nIHRoZSBLY29uZmlnIG9wdGlvbiB3aWxsIGhlbHAgZW5zdXJlIEknbSBlbmFibGluZyBpdCBjb3JyZWN0bHkgaW4gYW55IHRlc3Qgc2NlbmFyaW9zLCBhbmQgdGhhdCBhbnkgZGVwZW5kZW5jaWVzIGFyZSBhY2NvdW50ZWQgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjcwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MjY6MzkuOTQwMTM0NzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU1NDYxNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3RwXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L01ha2VmaWxlPTM4PW9iai0kKENPTkZJR19CQVJFVURQKSArPSBiYXJldWRwLm9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfR1RQKSArPSBndHAub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlLTQwLW9iai0kKENPTkZJR19OTE1PTikgKz0gbmxtb24ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMDoyNjo0MC4wMzU2ODg3ODdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDM0MjU4NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBHVFAgUGFja2V0IFByb2Nlc3NpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBjb2RlLCBhbmQgdGhlIGZvY3VzIGhlcmUgaXMgZGVmaW5pdGVseSBvbiBgQ09ORklHX0dUUGAuIFRoZSBjb3JlIGZ1bmN0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlzIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAuIEJ1dCB3YWl0LCB0aGF0IGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBtZWFucyBJIHNob3VsZCBhbHNvIGluY2x1ZGUgYGd0cF9lbmNhcF9yZWN2YCBhbmQgYGd0cF9wYXJzZV9leHRoZHJzYCBpbiBteSBtZW50YWwgbWFwLCBzaW5jZSB0aGV5IGFyZSBsaWtlbHkgY29ubmVjdGVkIHNvbWVob3cuIEknbGwgbWFrZSBzdXJlIHRvIHRyYWNlIHRob3NlIGNvbm5lY3Rpb25zLlxuXG5TbywgZm9yIG5vdywgSSdsbCBkZWZpbml0ZWx5IGJlIGZvY3VzaW5nIG9uIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAgYW5kIGBndHBfcGFyc2VfZXh0aGRyc2AuIExldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiB0aGUgZW52aXJvbm1lbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBtaWdodCBiZSByZWxldmFudDsgSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MjY6NDMuNDY5OTUyMzE3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTc5ODk5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgR1RQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjcxLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjcyOmNvbmZpZyBHVFBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3My1cXHR0cmlzdGF0ZSBcXFwiR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MjY6NDMuNjE5NzU3NzYxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwNjgyODIwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuQWxyaWdodCwgdGhlIGNvbmZpZ3VyYXRpb24gaW4gdXNlIGlzIGNsZWFybHkgYEdUUGAuIFRoYXQgaW1tZWRpYXRlbHkgZ2V0cyBteSBhdHRlbnRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHBpdm90IGFuZCBjb25zaWRlciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBOb3csIGEga2V5IGFyZWEgSSdtIHplcm9pbmcgaW4gb24gaXMgYGd0cF9pbm5lcl9wcm90b2AuIFRoaXMgaXMgd2hlcmUgSSBzZWUgdGhlIGltbWVkaWF0ZSB2YWx1ZS4gVGhlIGlubmVyIHByb3RvY29sIHdpdGhpbiBHVFAgaXMgYWxtb3N0IGFsd2F5cyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSXQncyBvZnRlbiBsZXNzIHJpZ29yb3VzbHkgdGVzdGVkIHRoYW4gdGhlIG91dGVyIEdUUCBoYW5kbGluZyBpdHNlbGYsIGFuZCB0aGVyZWZvcmUgYSBtb3JlIGxpa2VseSBzb3VyY2Ugb2YgZXhwbG9pdGFibGUgYnVncy4gSXTigJlzIHdoZXJlIG1vcmUgb2YgdGhlIGludGVyZXN0aW5nIGRhdGEgbGl2ZXMsIGFuZCB3aGVyZSB1bmV4cGVjdGVkIGlucHV0cyBhcmUgbGlrZWx5IHRvIHRyaWdnZXIgc29tZXRoaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJZZXAsIHRpbWUgdG8gcHV0IHRoYXQgb24gdGhlIGxpc3QuIGBndHBfaW5uZXJfcHJvdG9gIGlzIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBhbmQgYSBmdXp6aW5nIGNhbXBhaWduLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMDoyNjo0Ni40MjY1ODgwMjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTc5OTY2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJndHBfaW5uZXJfcHJvdG9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZ3RwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZ3RwLmM9Mjc1PXN0YXRpYyBib29sIGd0cF9jaGVja19tcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcGRwX2N0eCAqcGN0eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTI4Ny1cXG5kcml2ZXJzL25ldC9ndHAuYzoyODg6c3RhdGljIGludCBndHBfaW5uZXJfcHJvdG8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGhkcmxlbixcXG5kcml2ZXJzL25ldC9ndHAuYy0yODktXFx0XFx0XFx0ICAgX191MTYgKmlubmVyX3Byb3RvKVxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmM9NTgwPXN0YXRpYyBpbnQgZ3RwMF91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmMtNjA4LVxcbmRyaXZlcnMvbmV0L2d0cC5jOjYwOTpcXHRpZiAoZ3RwX2lubmVyX3Byb3RvKHNrYiwgaGRybGVuLCBcXHUwMDI2aW5uZXJfcHJvdG8pIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L2d0cC5jLTYxMC1cXHRcXHRuZXRkZXZfZGJnKGd0cC1cXHUwMDNlZGV2LCBcXFwiR1RQIHBhY2tldCBkb2VzIG5vdCBlbmNhcHN1bGF0ZSBhbiBJUCBwYWNrZXRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmM9Nzg3PXN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTgzMi1cXG5kcml2ZXJzL25ldC9ndHAuYzo4MzM6XFx0aWYgKGd0cF9pbm5lcl9wcm90byhza2IsIGhkcmxlbiwgXFx1MDAyNmlubmVyX3Byb3RvKSBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC9ndHAuYy04MzQtXFx0XFx0bmV0ZGV2X2RiZyhndHAtXFx1MDAzZWRldiwgXFxcIkdUUCBwYWNrZXQgZG9lcyBub3QgZW5jYXBzdWxhdGUgYW4gSVAgcGFja2V0XFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MjY6NDYuNTMyMzkzMzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODc4NTA4MTkzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIGl0IHdlcmUgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipGaXhpbmcgYSBHVFAgSGVhZGVyIFBhcnNpbmcgT3JkZXIgRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQgc2VlbXMgbGlrZSB0aGVyZSdzIGEgY3JpdGljYWwgb3JkZXJpbmcgaXNzdWUgaW4gdGhlIEdUUCBwYWNrZXQgcHJvY2Vzc2luZy4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb24gYGd0cF9pbm5lcl9wcm90b2Agd2FzIGJlaW5nIGNhbGxlZCAqYmVmb3JlKiBgZ3RwX3BhcnNlX2V4dGhkcnNgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGBndHBfaW5uZXJfcHJvdG9gIHJlbGllcyBvbiB0aGUgYGhkcmxlbmAgdmFyaWFibGUsIGFuZCBgaGRybGVuYCdzIHZhbHVlIGlzIG1vZGlmaWVkIGJ5IGBndHBfcGFyc2VfZXh0aGRyc2AuIFNvLCB3ZSdyZSBkZWFsaW5nIHdpdGggYSB1c2UtYmVmb3JlLWluaXRpYWxpemF0aW9uIHNpdHVhdGlvbiwgbGVhZGluZyB0byBwb3RlbnRpYWwgZGF0YSBjb3JydXB0aW9uIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG5cblRoZSBmaXggaXMgc3RyYWlnaHRmb3J3YXJkOiBqdXN0IHJlb3JkZXIgdGhlIGNhbGxzLiBXZSdsbCBjYWxsIGBndHBfcGFyc2VfZXh0aGRyc2AgKmJlZm9yZSogYGd0cF9pbm5lcl9wcm90b2AuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBleHRlbmRlZCBoZWFkZXIgcGFyc2luZyBoYXBwZW5zIGZpcnN0LCBhY2N1cmF0ZWx5IGRldGVybWluaW5nIHRoZSBoZWFkZXIgbGVuZ3RoLCBhbmQgdGhlbiBzdWJzZXF1ZW50IGZ1bmN0aW9ucyB0aGF0IGRlcGVuZCBvbiB0aGUgcGFyc2VkIHZhbHVlIGNhbiBvcGVyYXRlIGNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCBJJ20gbWFya2luZyB0aGlzIGZvciBmdXp6aW5nIHRvIGNhdGNoIHBvdGVudGlhbCBlZGdlIGNhc2VzLiBJJ2xsIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGFuZCBgZ3RwX3BhcnNlX2V4dGhkcnNgIHNwZWNpZmljYWxseS4gVGhlIGBHVFBgIGNvbmZpZyBvcHRpb24gd2lsbCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gYmUgYnVpbHQgaW4gYXMgd2VsbC5cblxuTGV0J3MgY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA1NSwiT3V0cHV0VG9rZW5zIjoxMjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MjY6NTUuMzE3NDc5ODYyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyNDc0ODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJHVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJndHAxdV91ZHBfZW5jYXBfcmVjdlwiLFxuICAgIFwiZ3RwX3BhcnNlX2V4dGhkcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgR1RQIGRyaXZlciB3aGVyZSBgZ3RwX2lubmVyX3Byb3RvYCB3YXMgY2FsbGVkIGJlZm9yZSBgZ3RwX3BhcnNlX2V4dGhkcnNgLCB3aGljaCB1cGRhdGVzIHRoZSBgaGRybGVuYCB1c2VkIGJ5IGBndHBfaW5uZXJfcHJvdG9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIHBhY2tldCBwYXJzaW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cDF1X3VkcF9lbmNhcF9yZWN2XCIsXG4gICAgXCJndHBfcGFyc2VfZXh0aGRyc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBHVFAgZHJpdmVyIHdoZXJlIGBndHBfaW5uZXJfcHJvdG9gIHdhcyBjYWxsZWQgYmVmb3JlIGBndHBfcGFyc2VfZXh0aGRyc2AsIHdoaWNoIHVwZGF0ZXMgdGhlIGBoZHJsZW5gIHVzZWQgYnkgYGd0cF9pbm5lcl9wcm90b2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgcGFja2V0IHBhcnNpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowr5frq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 10:13:03 +0000 UTC FinishedAt: 2026-07-03 10:26:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "62e7df6d042aeebd5efb581074e28865c04477be", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "62e7df6d042aeebd5efb581074e28865c04477be", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "57a5f762-df4e-41f7-beaf-1688c5b50b3f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "gtp1u_udp_encap_recv", "gtp_parse_exthdrs" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d0cDF1X3VkcF9lbmNhcF9yZWN2JiMzNDssCiAgICAmIzM0O2d0cF9wYXJzZV9leHRoZHJzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBHVFAgZHJpdmVyIHdoZXJlIGBndHBfaW5uZXJfcHJvdG9gIHdhcyBjYWxsZWQgYmVmb3JlIGBndHBfcGFyc2VfZXh0aGRyc2AsIHdoaWNoIHVwZGF0ZXMgdGhlIGBoZHJsZW5gIHVzZWQgYnkgYGd0cF9pbm5lcl9wcm90b2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgcGFja2V0IHBhcnNpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTA6MjY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0OGJhZGVhYmUyODlmODBmMzE1NzU4OWY0YzkxZWVhNDkzYTcwZTVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMDoyNjozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ndHAuYyBiL2RyaXZlcnMvbmV0L2d0cC5jXG5pbmRleCBhNjBlZjMyYjM1YjgyNS4uNGE4YjAwNTQ4NjczNTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC04MjYsNiAmIzQzOzgyNiwxMCBAQCBzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZHJsZW4pKVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4mIzQzO1x0aWYgKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDI2IEdUUDFfRl9FWFRIRFIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgXHUwMDI2aGRybGVuKSBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiAtMTtcbiYjNDM7XG4gXHRpZiAoZ3RwX2lubmVyX3Byb3RvKHNrYiwgaGRybGVuLCBcdTAwMjZpbm5lcl9wcm90bykgXHUwMDNjIDApIHtcbiBcdFx0bmV0ZGV2X2RiZyhndHAtXHUwMDNlZGV2LCBcJiMzNDtHVFAgcGFja2V0IGRvZXMgbm90IGVuY2Fwc3VsYXRlIGFuIElQIHBhY2tldFxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiAtMTtcbkBAIC04NDAsMTAgJiM0Mzs4NDQsNiBAQCBzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdHJldHVybiAxO1xuIFx0fVxuIFxuLVx0aWYgKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDI2IEdUUDFfRl9FWFRIRFIgXHUwMDI2XHUwMDI2XG4tXHQgICAgZ3RwX3BhcnNlX2V4dGhkcnMoc2tiLCBcdTAwMjZoZHJsZW4pIFx1MDAzYyAwKVxuLVx0XHRyZXR1cm4gLTE7XG4tXG4gXHRyZXR1cm4gZ3RwX3J4KHBjdHgsIHNrYiwgaGRybGVuLCBndHAtXHUwMDNlcm9sZSwgaW5uZXJfcHJvdG8pO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtndHAxdV91ZHBfZW5jYXBfcmVjdiYjMzQ7LAogICAgJiMzNDtndHBfcGFyc2VfZXh0aGRycyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgR1RQIGRyaXZlciB3aGVyZSBgZ3RwX2lubmVyX3Byb3RvYCB3YXMgY2FsbGVkIGJlZm9yZSBgZ3RwX3BhcnNlX2V4dGhkcnNgLCB3aGljaCB1cGRhdGVzIHRoZSBgaGRybGVuYCB1c2VkIGJ5IGBndHBfaW5uZXJfcHJvdG9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIHBhY2tldCBwYXJzaW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0OGJhZGVhYmUyODlmODBmMzE1NzU4OWY0YzkxZWVhNDkzYTcwZTVhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMyAxMDoyNjozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmMKaW5kZXggYTYwZWYzMmIzNWI4MjUuLjRhOGIwMDU0ODY3MzUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ndHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ndHAuYwpAQCAtODI2LDYgJiM0Mzs4MjYsMTAgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmICghcHNrYl9tYXlfcHVsbChza2IsIGhkcmxlbikpCiAJCXJldHVybiAtMTsKIAomIzQzOwlpZiAoZ3RwMS0mZ3Q7ZmxhZ3MgJmFtcDsgR1RQMV9GX0VYVEhEUiAmYW1wOyZhbXA7CiYjNDM7CSAgICBndHBfcGFyc2VfZXh0aGRycyhza2IsICZhbXA7aGRybGVuKSAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gLTE7CiYjNDM7CiAJaWYgKGd0cF9pbm5lcl9wcm90byhza2IsIGhkcmxlbiwgJmFtcDtpbm5lcl9wcm90bykgJmx0OyAwKSB7CiAJCW5ldGRldl9kYmcoZ3RwLSZndDtkZXYsICYjMzQ7R1RQIHBhY2tldCBkb2VzIG5vdCBlbmNhcHN1bGF0ZSBhbiBJUCBwYWNrZXRcbiYjMzQ7KTsKIAkJcmV0dXJuIC0xOwpAQCAtODQwLDEwICYjNDM7ODQ0LDYgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlyZXR1cm4gMTsKIAl9CiAKLQlpZiAoZ3RwMS0mZ3Q7ZmxhZ3MgJmFtcDsgR1RQMV9GX0VYVEhEUiAmYW1wOyZhbXA7Ci0JICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgJmFtcDtoZHJsZW4pICZsdDsgMCkKLQkJcmV0dXJuIC0xOwotCiAJcmV0dXJuIGd0cF9yeChwY3R4LCBza2IsIGhkcmxlbiwgZ3RwLSZndDtyb2xlLCBpbm5lcl9wcm90byk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTA6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBHVFAgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZ3RwLmNgLiBJdCYjMzk7cyBhIGZhaXJseSBzcGVjaWZpYyBmdW5jdGlvbmFsIGNoYW5nZSwgYXBwYXJlbnRseS4gSXQmIzM5O3MgbW92aW5nIHRoZSBjYWxsIHRvIGBndHBfcGFyc2VfZXh0aGRyc2AgZWFybGllciBpbiBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgLiBUaGUga2V5IGhlcmUgaXMgdGhlICpvcmRlciogb2Ygb3BlcmF0aW9uczsgc28gbm93LCB0aGUgZXh0ZW5zaW9uIGhlYWRlciBwYXJzaW5nIGlzIGRvbmUgKmJlZm9yZSogdGhlIGlubmVyIHByb3RvY29sIGlzIGRldGVybWluZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIG9yZGVyaW5nIG1hdHRlcnMgYW5kIHdoYXQgYXNzdW1wdGlvbnMgaXQmIzM5O3MgY2hhbmdpbmcsIG9yIHdoYXQgc3BlY2lmaWMgaXNzdWUgdGhpcyBhZGRyZXNzZXMuCgpUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgY29kZS4gSSBuZWVkIHRvIHJlLWZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSByZWxldmFudCBmdW5jdGlvbnMsIG5hbWVseSBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGFuZCBgZ3RwX3BhcnNlX2V4dGhkcnNgLCBib3RoIGluIGBkcml2ZXJzL25ldC9ndHAuY2AuIFVuZGVyc3RhbmRpbmcgdGhlaXIgaW5kaXZpZHVhbCByb2xlcyBhbmQgdGhlIGRhdGEgZmxvdyBiZXR3ZWVuIHRoZW0gaXMgY3J1Y2lhbCB0byBncmFzcGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyBvciBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYmVpbmcgYWx0ZXJlZCBieSB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cDF1X3VkcF9lbmNhcF9yZWN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmM9NzUwPXN0YXRpYyBpbnQgZ3RwX3BhcnNlX2V4dGhkcnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50ICpoZHJsZW4pXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtNzg2LVxuZHJpdmVycy9uZXQvZ3RwLmM6Nzg3OnN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L2d0cC5jLTc4OC17XG4tLVxuZHJpdmVycy9uZXQvZ3RwLmM9OTAyPXN0YXRpYyBpbnQgZ3RwX2VuY2FwX3JlY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L2d0cC5jLTkxOS1cdFx0bmV0ZGV2X2RiZyhndHAtXHUwMDNlZGV2LCBcJiMzNDtyZWNlaXZlZCBHVFAxVSBwYWNrZXRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZ3RwLmM6OTIwOlx0XHRyZXQgPSBndHAxdV91ZHBfZW5jYXBfcmVjdihndHAsIHNrYik7XG5kcml2ZXJzL25ldC9ndHAuYy05MjEtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdUUCBUdW5uZWxpbmcgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gYGd0cDF1X3VkcF9lbmNhcF9yZWN2YCBpcyBjYWxsZWQgZnJvbSBgZ3RwX2VuY2FwX3JlY3ZgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gS25vd2luZyB0aGF0IG1lYW5zIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgYW5kIHNob3VsZCBiZSBzdHJhaWdodGZvcndhcmQgdG8gdGVzdCwgd2hpY2ggaXMgYWx3YXlzIGEgcmVsaWVmLiBJIGNhbiBub3cgZm9jdXMgb24gdmVyaWZ5aW5nIHRoZSBjb3JlIGxvZ2ljLgoKTmV4dCBzdGVwOiBsZXQmIzM5O3MgZ28gZmluZCB0aGUgS2NvbmZpZyBvcHRpb24gZm9yIGBkcml2ZXJzL25ldC9ndHAuY2AuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgY3J1Y2lhbCBmb3IgY29udHJvbGxpbmcgdGhpcyBtb2R1bGUgYW5kIGNvbmZpZ3VyaW5nIGl0cyBiZWhhdmlvdXIuIEtub3dpbmcgdGhlIEtjb25maWcgb3B0aW9uIHdpbGwgaGVscCBlbnN1cmUgSSYjMzk7bSBlbmFibGluZyBpdCBjb3JyZWN0bHkgaW4gYW55IHRlc3Qgc2NlbmFyaW9zLCBhbmQgdGhhdCBhbnkgZGVwZW5kZW5jaWVzIGFyZSBhY2NvdW50ZWQgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cFxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9NYWtlZmlsZT0zOD1vYmotJChDT05GSUdfQkFSRVVEUCkgJiM0Mzs9IGJhcmV1ZHAub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6Mzk6b2JqLSQoQ09ORklHX0dUUCkgJiM0Mzs9IGd0cC5vXG5kcml2ZXJzL25ldC9NYWtlZmlsZS00MC1vYmotJChDT05GSUdfTkxNT04pICYjNDM7PSBubG1vbi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTA6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4MAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDExNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgR1RQIFBhY2tldCBQcm9jZXNzaW5nKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBjb2RlLCBhbmQgdGhlIGZvY3VzIGhlcmUgaXMgZGVmaW5pdGVseSBvbiBgQ09ORklHX0dUUGAuIFRoZSBjb3JlIGZ1bmN0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlzIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAuIEJ1dCB3YWl0LCB0aGF0IGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBtZWFucyBJIHNob3VsZCBhbHNvIGluY2x1ZGUgYGd0cF9lbmNhcF9yZWN2YCBhbmQgYGd0cF9wYXJzZV9leHRoZHJzYCBpbiBteSBtZW50YWwgbWFwLCBzaW5jZSB0aGV5IGFyZSBsaWtlbHkgY29ubmVjdGVkIHNvbWVob3cuIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byB0cmFjZSB0aG9zZSBjb25uZWN0aW9ucy4KClNvLCBmb3Igbm93LCBJJiMzOTtsbCBkZWZpbml0ZWx5IGJlIGZvY3VzaW5nIG9uIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAgYW5kIGBndHBfcGFyc2VfZXh0aGRyc2AuIExldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiB0aGUgZW52aXJvbm1lbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBtaWdodCBiZSByZWxldmFudDsgSSBkb24mIzM5O3Qgd2FudCB0byBtaXNzIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBHVFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MjYwPWNvbmZpZyBCQVJFVURQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzEtXG5kcml2ZXJzL25ldC9LY29uZmlnOjI3Mjpjb25maWcgR1RQXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3My1cdHRyaXN0YXRlIFwmIzM0O0dQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSlcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzkyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCkFscmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIGluIHVzZSBpcyBjbGVhcmx5IGBHVFBgLiBUaGF0IGltbWVkaWF0ZWx5IGdldHMgbXkgYXR0ZW50aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBwaXZvdCBhbmQgY29uc2lkZXIgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gTm93LCBhIGtleSBhcmVhIEkmIzM5O20gemVyb2luZyBpbiBvbiBpcyBgZ3RwX2lubmVyX3Byb3RvYC4gVGhpcyBpcyB3aGVyZSBJIHNlZSB0aGUgaW1tZWRpYXRlIHZhbHVlLiBUaGUgaW5uZXIgcHJvdG9jb2wgd2l0aGluIEdUUCBpcyBhbG1vc3QgYWx3YXlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJdCYjMzk7cyBvZnRlbiBsZXNzIHJpZ29yb3VzbHkgdGVzdGVkIHRoYW4gdGhlIG91dGVyIEdUUCBoYW5kbGluZyBpdHNlbGYsIGFuZCB0aGVyZWZvcmUgYSBtb3JlIGxpa2VseSBzb3VyY2Ugb2YgZXhwbG9pdGFibGUgYnVncy4gSXTigJlzIHdoZXJlIG1vcmUgb2YgdGhlIGludGVyZXN0aW5nIGRhdGEgbGl2ZXMsIGFuZCB3aGVyZSB1bmV4cGVjdGVkIGlucHV0cyBhcmUgbGlrZWx5IHRvIHRyaWdnZXIgc29tZXRoaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtZZXAsIHRpbWUgdG8gcHV0IHRoYXQgb24gdGhlIGxpc3QuIGBndHBfaW5uZXJfcHJvdG9gIGlzIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBhbmQgYSBmdXp6aW5nIGNhbXBhaWduLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cF9pbm5lcl9wcm90byYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2d0cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2d0cC5jPTI3NT1zdGF0aWMgYm9vbCBndHBfY2hlY2tfbXMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHBkcF9jdHggKnBjdHgsXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtMjg3LVxuZHJpdmVycy9uZXQvZ3RwLmM6Mjg4OnN0YXRpYyBpbnQgZ3RwX2lubmVyX3Byb3RvKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBoZHJsZW4sXG5kcml2ZXJzL25ldC9ndHAuYy0yODktXHRcdFx0ICAgX191MTYgKmlubmVyX3Byb3RvKVxuLS1cbmRyaXZlcnMvbmV0L2d0cC5jPTU4MD1zdGF0aWMgaW50IGd0cDBfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy02MDgtXG5kcml2ZXJzL25ldC9ndHAuYzo2MDk6XHRpZiAoZ3RwX2lubmVyX3Byb3RvKHNrYiwgaGRybGVuLCBcdTAwMjZpbm5lcl9wcm90bykgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L2d0cC5jLTYxMC1cdFx0bmV0ZGV2X2RiZyhndHAtXHUwMDNlZGV2LCBcJiMzNDtHVFAgcGFja2V0IGRvZXMgbm90IGVuY2Fwc3VsYXRlIGFuIElQIHBhY2tldFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZ3RwLmM9Nzg3PXN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy04MzItXG5kcml2ZXJzL25ldC9ndHAuYzo4MzM6XHRpZiAoZ3RwX2lubmVyX3Byb3RvKHNrYiwgaGRybGVuLCBcdTAwMjZpbm5lcl9wcm90bykgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L2d0cC5jLTgzNC1cdFx0bmV0ZGV2X2RiZyhndHAtXHUwMDNlZGV2LCBcJiMzNDtHVFAgcGFja2V0IGRvZXMgbm90IGVuY2Fwc3VsYXRlIGFuIElQIHBhY2tldFxcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEwOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNTUKCQkJCQkJCW91dHB1dDogMTIxCgkJCQkJCQl0aG91Z2h0czogMTM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIGl0IHdlcmUgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRml4aW5nIGEgR1RQIEhlYWRlciBQYXJzaW5nIE9yZGVyIERlcGVuZGVuY3kqKgoKQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCBzZWVtcyBsaWtlIHRoZXJlJiMzOTtzIGEgY3JpdGljYWwgb3JkZXJpbmcgaXNzdWUgaW4gdGhlIEdUUCBwYWNrZXQgcHJvY2Vzc2luZy4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb24gYGd0cF9pbm5lcl9wcm90b2Agd2FzIGJlaW5nIGNhbGxlZCAqYmVmb3JlKiBgZ3RwX3BhcnNlX2V4dGhkcnNgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGBndHBfaW5uZXJfcHJvdG9gIHJlbGllcyBvbiB0aGUgYGhkcmxlbmAgdmFyaWFibGUsIGFuZCBgaGRybGVuYCYjMzk7cyB2YWx1ZSBpcyBtb2RpZmllZCBieSBgZ3RwX3BhcnNlX2V4dGhkcnNgLiBTbywgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHVzZS1iZWZvcmUtaW5pdGlhbGl6YXRpb24gc2l0dWF0aW9uLCBsZWFkaW5nIHRvIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gb3IgdW5leHBlY3RlZCBiZWhhdmlvci4KClRoZSBmaXggaXMgc3RyYWlnaHRmb3J3YXJkOiBqdXN0IHJlb3JkZXIgdGhlIGNhbGxzLiBXZSYjMzk7bGwgY2FsbCBgZ3RwX3BhcnNlX2V4dGhkcnNgICpiZWZvcmUqIGBndHBfaW5uZXJfcHJvdG9gLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgZXh0ZW5kZWQgaGVhZGVyIHBhcnNpbmcgaGFwcGVucyBmaXJzdCwgYWNjdXJhdGVseSBkZXRlcm1pbmluZyB0aGUgaGVhZGVyIGxlbmd0aCwgYW5kIHRoZW4gc3Vic2VxdWVudCBmdW5jdGlvbnMgdGhhdCBkZXBlbmQgb24gdGhlIHBhcnNlZCB2YWx1ZSBjYW4gb3BlcmF0ZSBjb3JyZWN0bHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgSSYjMzk7bSBtYXJraW5nIHRoaXMgZm9yIGZ1enppbmcgdG8gY2F0Y2ggcG90ZW50aWFsIGVkZ2UgY2FzZXMuIEkmIzM5O2xsIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGFuZCBgZ3RwX3BhcnNlX2V4dGhkcnNgIHNwZWNpZmljYWxseS4gVGhlIGBHVFBgIGNvbmZpZyBvcHRpb24gd2lsbCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gYmUgYnVpbHQgaW4gYXMgd2VsbC4KCkxldCYjMzk7cyBjYWxsIHNldC1yZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMDoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z3RwMXVfdWRwX2VuY2FwX3JlY3YmIzM0OywKICAgICYjMzQ7Z3RwX3BhcnNlX2V4dGhkcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEdUUCBkcml2ZXIgd2hlcmUgYGd0cF9pbm5lcl9wcm90b2Agd2FzIGNhbGxlZCBiZWZvcmUgYGd0cF9wYXJzZV9leHRoZHJzYCwgd2hpY2ggdXBkYXRlcyB0aGUgYGhkcmxlbmAgdXNlZCBieSBgZ3RwX2lubmVyX3Byb3RvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBwYWNrZXQgcGFyc2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z3RwMXVfdWRwX2VuY2FwX3JlY3YmIzM0OywKICAgICYjMzQ7Z3RwX3BhcnNlX2V4dGhkcnMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEdUUCBkcml2ZXIgd2hlcmUgYGd0cF9pbm5lcl9wcm90b2Agd2FzIGNhbGxlZCBiZWZvcmUgYGd0cF9wYXJzZV9leHRoZHJzYCwgd2hpY2ggdXBkYXRlcyB0aGUgYGhkcmxlbmAgdXNlZCBieSBgZ3RwX2lubmVyX3Byb3RvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBwYWNrZXQgcGFyc2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjI2OjMyLjYxNjYyMTUzN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODkzMzUyMjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cDF1X3VkcF9lbmNhcF9yZWN2XCIsXG4gICAgXCJndHBfcGFyc2VfZXh0aGRyc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBHVFAgZHJpdmVyIHdoZXJlIGBndHBfaW5uZXJfcHJvdG9gIHdhcyBjYWxsZWQgYmVmb3JlIGBndHBfcGFyc2VfZXh0aGRyc2AsIHdoaWNoIHVwZGF0ZXMgdGhlIGBoZHJsZW5gIHVzZWQgYnkgYGd0cF9pbm5lcl9wcm90b2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgcGFja2V0IHBhcnNpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjI2OjMyLjYxNjYzMjU0NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA0MTQ3ODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDhiYWRlYWJlMjg5ZjgwZjMxNTc1ODlmNGM5MWVlYTQ5M2E3MGU1YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzIDEwOjI2OjMxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmNcXG5pbmRleCBhNjBlZjMyYjM1YjgyNS4uNGE4YjAwNTQ4NjczNTIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZ3RwLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ndHAuY1xcbkBAIC04MjYsNiArODI2LDEwIEBAIHN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGRybGVuKSlcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbiBcXG4rXFx0aWYgKGd0cDEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgR1RQMV9GX0VYVEhEUiBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgZ3RwX3BhcnNlX2V4dGhkcnMoc2tiLCBcXHUwMDI2aGRybGVuKSBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiAtMTtcXG4rXFxuIFxcdGlmIChndHBfaW5uZXJfcHJvdG8oc2tiLCBoZHJsZW4sIFxcdTAwMjZpbm5lcl9wcm90bykgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdG5ldGRldl9kYmcoZ3RwLVxcdTAwM2VkZXYsIFxcXCJHVFAgcGFja2V0IGRvZXMgbm90IGVuY2Fwc3VsYXRlIGFuIElQIHBhY2tldFxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtMTtcXG5AQCAtODQwLDEwICs4NDQsNiBAQCBzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdFxcdHJldHVybiAxO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoZ3RwMS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBHVFAxX0ZfRVhUSERSIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBndHBfcGFyc2VfZXh0aGRycyhza2IsIFxcdTAwMjZoZHJsZW4pIFxcdTAwM2MgMClcXG4tXFx0XFx0cmV0dXJuIC0xO1xcbi1cXG4gXFx0cmV0dXJuIGd0cF9yeChwY3R4LCBza2IsIGhkcmxlbiwgZ3RwLVxcdTAwM2Vyb2xlLCBpbm5lcl9wcm90byk7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjI2OjMzLjEyMTc1MzA2OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjIzODgyMTA2NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3RwMXVfdWRwX2VuY2FwX3JlY3ZcIixcbiAgICBcImd0cF9wYXJzZV9leHRoZHJzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEdUUCBkcml2ZXIgd2hlcmUgYGd0cF9pbm5lcl9wcm90b2Agd2FzIGNhbGxlZCBiZWZvcmUgYGd0cF9wYXJzZV9leHRoZHJzYCwgd2hpY2ggdXBkYXRlcyB0aGUgYGhkcmxlbmAgdXNlZCBieSBgZ3RwX2lubmVyX3Byb3RvYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIHRoZSBwYWNrZXQgcGFyc2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0OGJhZGVhYmUyODlmODBmMzE1NzU4OWY0YzkxZWVhNDkzYTcwZTVhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMDoyNjozMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmNcbmluZGV4IGE2MGVmMzJiMzViODI1Li40YThiMDA1NDg2NzM1MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2d0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9ndHAuY1xuQEAgLTgyNiw2ICs4MjYsMTAgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0aWYgKCFwc2tiX21heV9wdWxsKHNrYiwgaGRybGVuKSlcbiBcdFx0cmV0dXJuIC0xO1xuIFxuK1x0aWYgKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDI2IEdUUDFfRl9FWFRIRFIgXHUwMDI2XHUwMDI2XG4rXHQgICAgZ3RwX3BhcnNlX2V4dGhkcnMoc2tiLCBcdTAwMjZoZHJsZW4pIFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gLTE7XG4rXG4gXHRpZiAoZ3RwX2lubmVyX3Byb3RvKHNrYiwgaGRybGVuLCBcdTAwMjZpbm5lcl9wcm90bykgXHUwMDNjIDApIHtcbiBcdFx0bmV0ZGV2X2RiZyhndHAtXHUwMDNlZGV2LCBcIkdUUCBwYWNrZXQgZG9lcyBub3QgZW5jYXBzdWxhdGUgYW4gSVAgcGFja2V0XFxuXCIpO1xuIFx0XHRyZXR1cm4gLTE7XG5AQCAtODQwLDEwICs4NDQsNiBAQCBzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdHJldHVybiAxO1xuIFx0fVxuIFxuLVx0aWYgKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDI2IEdUUDFfRl9FWFRIRFIgXHUwMDI2XHUwMDI2XG4tXHQgICAgZ3RwX3BhcnNlX2V4dGhkcnMoc2tiLCBcdTAwMjZoZHJsZW4pIFx1MDAzYyAwKVxuLVx0XHRyZXR1cm4gLTE7XG4tXG4gXHRyZXR1cm4gZ3RwX3J4KHBjdHgsIHNrYiwgaGRybGVuLCBndHAtXHUwMDNlcm9sZSwgaW5uZXJfcHJvdG8pO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEwOjI2OjMzLjEyMTc1NDQxOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDgwOTMzOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgR1RQIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ndHAuY2AuIEl0J3MgYSBmYWlybHkgc3BlY2lmaWMgZnVuY3Rpb25hbCBjaGFuZ2UsIGFwcGFyZW50bHkuIEl0J3MgbW92aW5nIHRoZSBjYWxsIHRvIGBndHBfcGFyc2VfZXh0aGRyc2AgZWFybGllciBpbiBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgLiBUaGUga2V5IGhlcmUgaXMgdGhlICpvcmRlciogb2Ygb3BlcmF0aW9uczsgc28gbm93LCB0aGUgZXh0ZW5zaW9uIGhlYWRlciBwYXJzaW5nIGlzIGRvbmUgKmJlZm9yZSogdGhlIGlubmVyIHByb3RvY29sIGlzIGRldGVybWluZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIG9yZGVyaW5nIG1hdHRlcnMgYW5kIHdoYXQgYXNzdW1wdGlvbnMgaXQncyBjaGFuZ2luZywgb3Igd2hhdCBzcGVjaWZpYyBpc3N1ZSB0aGlzIGFkZHJlc3Nlcy5cblxuVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJJ2xsIGRpdmUgaW50byB0aGUgY29kZS4gSSBuZWVkIHRvIHJlLWZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSByZWxldmFudCBmdW5jdGlvbnMsIG5hbWVseSBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGFuZCBgZ3RwX3BhcnNlX2V4dGhkcnNgLCBib3RoIGluIGBkcml2ZXJzL25ldC9ndHAuY2AuIFVuZGVyc3RhbmRpbmcgdGhlaXIgaW5kaXZpZHVhbCByb2xlcyBhbmQgdGhlIGRhdGEgZmxvdyBiZXR3ZWVuIHRoZW0gaXMgY3J1Y2lhbCB0byBncmFzcGluZyB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIG9yIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBiZWluZyBhbHRlcmVkIGJ5IHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMDoyNjozNi45Njk4NTA5MzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4MjI2NTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImd0cDF1X3VkcF9lbmNhcF9yZWN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jPTc1MD1zdGF0aWMgaW50IGd0cF9wYXJzZV9leHRoZHJzKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCAqaGRybGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmMtNzg2LVxcbmRyaXZlcnMvbmV0L2d0cC5jOjc4NzpzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvZ3RwLmMtNzg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jPTkwMj1zdGF0aWMgaW50IGd0cF9lbmNhcF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTkxOS1cXHRcXHRuZXRkZXZfZGJnKGd0cC1cXHUwMDNlZGV2LCBcXFwicmVjZWl2ZWQgR1RQMVUgcGFja2V0XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ndHAuYzo5MjA6XFx0XFx0cmV0ID0gZ3RwMXVfdWRwX2VuY2FwX3JlY3YoZ3RwLCBza2IpO1xcbmRyaXZlcnMvbmV0L2d0cC5jLTkyMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MjY6MzcuMTE4MDgyNTg5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyMjA0OTk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdUUCBUdW5uZWxpbmcgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGlzIGNhbGxlZCBmcm9tIGBndHBfZW5jYXBfcmVjdmAuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEtub3dpbmcgdGhhdCBtZWFucyBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvZGUgYW5kIHNob3VsZCBiZSBzdHJhaWdodGZvcndhcmQgdG8gdGVzdCwgd2hpY2ggaXMgYWx3YXlzIGEgcmVsaWVmLiBJIGNhbiBub3cgZm9jdXMgb24gdmVyaWZ5aW5nIHRoZSBjb3JlIGxvZ2ljLlxuXG5OZXh0IHN0ZXA6IGxldCdzIGdvIGZpbmQgdGhlIEtjb25maWcgb3B0aW9uIGZvciBgZHJpdmVycy9uZXQvZ3RwLmNgLiBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGlzIGNydWNpYWwgZm9yIGNvbnRyb2xsaW5nIHRoaXMgbW9kdWxlIGFuZCBjb25maWd1cmluZyBpdHMgYmVoYXZpb3VyLiBLbm93aW5nIHRoZSBLY29uZmlnIG9wdGlvbiB3aWxsIGhlbHAgZW5zdXJlIEknbSBlbmFibGluZyBpdCBjb3JyZWN0bHkgaW4gYW55IHRlc3Qgc2NlbmFyaW9zLCBhbmQgdGhhdCBhbnkgZGVwZW5kZW5jaWVzIGFyZSBhY2NvdW50ZWQgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjcwLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MjY6MzkuOTQwMTM0NzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU1NDYxNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3RwXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L01ha2VmaWxlPTM4PW9iai0kKENPTkZJR19CQVJFVURQKSArPSBiYXJldWRwLm9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfR1RQKSArPSBndHAub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlLTQwLW9iai0kKENPTkZJR19OTE1PTikgKz0gbmxtb24ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMDoyNjo0MC4wMzU2ODg3ODdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDM0MjU4NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBHVFAgUGFja2V0IFByb2Nlc3NpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBjb2RlLCBhbmQgdGhlIGZvY3VzIGhlcmUgaXMgZGVmaW5pdGVseSBvbiBgQ09ORklHX0dUUGAuIFRoZSBjb3JlIGZ1bmN0aW9uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlzIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAuIEJ1dCB3YWl0LCB0aGF0IGZ1bmN0aW9uIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgdGhhdCBtZWFucyBJIHNob3VsZCBhbHNvIGluY2x1ZGUgYGd0cF9lbmNhcF9yZWN2YCBhbmQgYGd0cF9wYXJzZV9leHRoZHJzYCBpbiBteSBtZW50YWwgbWFwLCBzaW5jZSB0aGV5IGFyZSBsaWtlbHkgY29ubmVjdGVkIHNvbWVob3cuIEknbGwgbWFrZSBzdXJlIHRvIHRyYWNlIHRob3NlIGNvbm5lY3Rpb25zLlxuXG5TbywgZm9yIG5vdywgSSdsbCBkZWZpbml0ZWx5IGJlIGZvY3VzaW5nIG9uIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAgYW5kIGBndHBfcGFyc2VfZXh0aGRyc2AuIExldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiB0aGUgZW52aXJvbm1lbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBtaWdodCBiZSByZWxldmFudDsgSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5ODAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MjY6NDMuNDY5OTUyMzE3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTc5ODk5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgR1RQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjcxLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjcyOmNvbmZpZyBHVFBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3My1cXHR0cmlzdGF0ZSBcXFwiR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MjY6NDMuNjE5NzU3NzYxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwNjgyODIwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuQWxyaWdodCwgdGhlIGNvbmZpZ3VyYXRpb24gaW4gdXNlIGlzIGNsZWFybHkgYEdUUGAuIFRoYXQgaW1tZWRpYXRlbHkgZ2V0cyBteSBhdHRlbnRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IHBpdm90IGFuZCBjb25zaWRlciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBOb3csIGEga2V5IGFyZWEgSSdtIHplcm9pbmcgaW4gb24gaXMgYGd0cF9pbm5lcl9wcm90b2AuIFRoaXMgaXMgd2hlcmUgSSBzZWUgdGhlIGltbWVkaWF0ZSB2YWx1ZS4gVGhlIGlubmVyIHByb3RvY29sIHdpdGhpbiBHVFAgaXMgYWxtb3N0IGFsd2F5cyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSXQncyBvZnRlbiBsZXNzIHJpZ29yb3VzbHkgdGVzdGVkIHRoYW4gdGhlIG91dGVyIEdUUCBoYW5kbGluZyBpdHNlbGYsIGFuZCB0aGVyZWZvcmUgYSBtb3JlIGxpa2VseSBzb3VyY2Ugb2YgZXhwbG9pdGFibGUgYnVncy4gSXTigJlzIHdoZXJlIG1vcmUgb2YgdGhlIGludGVyZXN0aW5nIGRhdGEgbGl2ZXMsIGFuZCB3aGVyZSB1bmV4cGVjdGVkIGlucHV0cyBhcmUgbGlrZWx5IHRvIHRyaWdnZXIgc29tZXRoaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJZZXAsIHRpbWUgdG8gcHV0IHRoYXQgb24gdGhlIGxpc3QuIGBndHBfaW5uZXJfcHJvdG9gIGlzIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBhbmQgYSBmdXp6aW5nIGNhbXBhaWduLlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMDoyNjo0Ni40MjY1ODgwMjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTc5OTY2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJndHBfaW5uZXJfcHJvdG9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZ3RwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZ3RwLmM9Mjc1PXN0YXRpYyBib29sIGd0cF9jaGVja19tcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcGRwX2N0eCAqcGN0eCxcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTI4Ny1cXG5kcml2ZXJzL25ldC9ndHAuYzoyODg6c3RhdGljIGludCBndHBfaW5uZXJfcHJvdG8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGhkcmxlbixcXG5kcml2ZXJzL25ldC9ndHAuYy0yODktXFx0XFx0XFx0ICAgX191MTYgKmlubmVyX3Byb3RvKVxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmM9NTgwPXN0YXRpYyBpbnQgZ3RwMF91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmMtNjA4LVxcbmRyaXZlcnMvbmV0L2d0cC5jOjYwOTpcXHRpZiAoZ3RwX2lubmVyX3Byb3RvKHNrYiwgaGRybGVuLCBcXHUwMDI2aW5uZXJfcHJvdG8pIFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L2d0cC5jLTYxMC1cXHRcXHRuZXRkZXZfZGJnKGd0cC1cXHUwMDNlZGV2LCBcXFwiR1RQIHBhY2tldCBkb2VzIG5vdCBlbmNhcHN1bGF0ZSBhbiBJUCBwYWNrZXRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmM9Nzg3PXN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTgzMi1cXG5kcml2ZXJzL25ldC9ndHAuYzo4MzM6XFx0aWYgKGd0cF9pbm5lcl9wcm90byhza2IsIGhkcmxlbiwgXFx1MDAyNmlubmVyX3Byb3RvKSBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC9ndHAuYy04MzQtXFx0XFx0bmV0ZGV2X2RiZyhndHAtXFx1MDAzZWRldiwgXFxcIkdUUCBwYWNrZXQgZG9lcyBub3QgZW5jYXBzdWxhdGUgYW4gSVAgcGFja2V0XFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MjY6NDYuNTMyMzkzMzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODc4NTA4MTkzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIGl0IHdlcmUgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipGaXhpbmcgYSBHVFAgSGVhZGVyIFBhcnNpbmcgT3JkZXIgRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQgc2VlbXMgbGlrZSB0aGVyZSdzIGEgY3JpdGljYWwgb3JkZXJpbmcgaXNzdWUgaW4gdGhlIEdUUCBwYWNrZXQgcHJvY2Vzc2luZy4gU3BlY2lmaWNhbGx5LCB0aGUgZnVuY3Rpb24gYGd0cF9pbm5lcl9wcm90b2Agd2FzIGJlaW5nIGNhbGxlZCAqYmVmb3JlKiBgZ3RwX3BhcnNlX2V4dGhkcnNgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGBndHBfaW5uZXJfcHJvdG9gIHJlbGllcyBvbiB0aGUgYGhkcmxlbmAgdmFyaWFibGUsIGFuZCBgaGRybGVuYCdzIHZhbHVlIGlzIG1vZGlmaWVkIGJ5IGBndHBfcGFyc2VfZXh0aGRyc2AuIFNvLCB3ZSdyZSBkZWFsaW5nIHdpdGggYSB1c2UtYmVmb3JlLWluaXRpYWxpemF0aW9uIHNpdHVhdGlvbiwgbGVhZGluZyB0byBwb3RlbnRpYWwgZGF0YSBjb3JydXB0aW9uIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG5cblRoZSBmaXggaXMgc3RyYWlnaHRmb3J3YXJkOiBqdXN0IHJlb3JkZXIgdGhlIGNhbGxzLiBXZSdsbCBjYWxsIGBndHBfcGFyc2VfZXh0aGRyc2AgKmJlZm9yZSogYGd0cF9pbm5lcl9wcm90b2AuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBleHRlbmRlZCBoZWFkZXIgcGFyc2luZyBoYXBwZW5zIGZpcnN0LCBhY2N1cmF0ZWx5IGRldGVybWluaW5nIHRoZSBoZWFkZXIgbGVuZ3RoLCBhbmQgdGhlbiBzdWJzZXF1ZW50IGZ1bmN0aW9ucyB0aGF0IGRlcGVuZCBvbiB0aGUgcGFyc2VkIHZhbHVlIGNhbiBvcGVyYXRlIGNvcnJlY3RseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCBJJ20gbWFya2luZyB0aGlzIGZvciBmdXp6aW5nIHRvIGNhdGNoIHBvdGVudGlhbCBlZGdlIGNhc2VzLiBJJ2xsIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGFuZCBgZ3RwX3BhcnNlX2V4dGhkcnNgIHNwZWNpZmljYWxseS4gVGhlIGBHVFBgIGNvbmZpZyBvcHRpb24gd2lsbCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gYmUgYnVpbHQgaW4gYXMgd2VsbC5cblxuTGV0J3MgY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA1NSwiT3V0cHV0VG9rZW5zIjoxMjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTA6MjY6NTUuMzE3NDc5ODYyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyNDc0ODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJHVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJndHAxdV91ZHBfZW5jYXBfcmVjdlwiLFxuICAgIFwiZ3RwX3BhcnNlX2V4dGhkcnNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgR1RQIGRyaXZlciB3aGVyZSBgZ3RwX2lubmVyX3Byb3RvYCB3YXMgY2FsbGVkIGJlZm9yZSBgZ3RwX3BhcnNlX2V4dGhkcnNgLCB3aGljaCB1cGRhdGVzIHRoZSBgaGRybGVuYCB1c2VkIGJ5IGBndHBfaW5uZXJfcHJvdG9gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgdGhlIHBhY2tldCBwYXJzaW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cDF1X3VkcF9lbmNhcF9yZWN2XCIsXG4gICAgXCJndHBfcGFyc2VfZXh0aGRyc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBHVFAgZHJpdmVyIHdoZXJlIGBndHBfaW5uZXJfcHJvdG9gIHdhcyBjYWxsZWQgYmVmb3JlIGBndHBfcGFyc2VfZXh0aGRyc2AsIHdoaWNoIHVwZGF0ZXMgdGhlIGBoZHJsZW5gIHVzZWQgYnkgYGd0cF9pbm5lcl9wcm90b2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyB0aGUgcGFja2V0IHBhcnNpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowr5frq[1] Phase: Succeeded StartedAt: 2026-07-03 10:27:07 +0000 UTC FinishedAt: 2026-07-03 10:27:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-03 10:27:07 +0000 UTC FinishedAt: 2026-07-03 10:27:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2] Phase: Succeeded StartedAt: 2026-07-03 10:27:07 +0000 UTC FinishedAt: 2026-07-03 14:47:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-03 10:27:07 +0000 UTC FinishedAt: 2026-07-03 14:47:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-03 10:27:07 +0000 UTC FinishedAt: 2026-07-03 10:27:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-03 10:27:07 +0000 UTC FinishedAt: 2026-07-03 10:27:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowr5frq/series-workflowr5frq-convert-artifact-2541974416/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-03 10:27:28 +0000 UTC FinishedAt: 2026-07-03 11:09:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-03 10:27:28 +0000 UTC FinishedAt: 2026-07-03 11:09:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a494f20e-cdbc-4450-a075-228cc82a4146,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-workflowr5frq/series-workflowr5frq-convert-artifact-2541974416/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": "9a50926b-b7d0-4067-a1f6-ac4d4357b4dd", "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-workflowr5frq/series-workflowr5frq-build-action-2385285142/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-03 10:27:28 +0000 UTC FinishedAt: 2026-07-03 11:03:37 +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:*a494f20e-cdbc-4450-a075-228cc82a4146,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-workflowr5frq/series-workflowr5frq-convert-artifact-2541974416/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": "9a50926b-b7d0-4067-a1f6-ac4d4357b4dd", "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-workflowr5frq/series-workflowr5frq-build-action-2385285142/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-03 11:09:43 +0000 UTC FinishedAt: 2026-07-03 11:09:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-03 11:09:43 +0000 UTC FinishedAt: 2026-07-03 11:09:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-03 11:09:43 +0000 UTC FinishedAt: 2026-07-03 11:10:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-03 11:09:43 +0000 UTC FinishedAt: 2026-07-03 11:09:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowr5frq/series-workflowr5frq-convert-artifact-1960837879/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-03 11:10:03 +0000 UTC FinishedAt: 2026-07-03 11:12:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-03 11:10:03 +0000 UTC FinishedAt: 2026-07-03 11:12:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9a50926b-b7d0-4067-a1f6-ac4d4357b4dd,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-workflowr5frq/series-workflowr5frq-build-action-2385285142/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-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-03 11:12:21 +0000 UTC FinishedAt: 2026-07-03 11:12:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-03 11:12:21 +0000 UTC FinishedAt: 2026-07-03 11:12:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-03 11:12:21 +0000 UTC FinishedAt: 2026-07-03 11:41:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-03 11:12:21 +0000 UTC FinishedAt: 2026-07-03 11:41:15 +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:*a494f20e-cdbc-4450-a075-228cc82a4146,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-workflowr5frq/series-workflowr5frq-convert-artifact-1960837879/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": "914907b4-29f9-48e1-bc96-018a6dcb11c7", "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-workflowr5frq/series-workflowr5frq-build-action-1147721147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-03 11:12:21 +0000 UTC FinishedAt: 2026-07-03 11:41:05 +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:*a494f20e-cdbc-4450-a075-228cc82a4146,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-workflowr5frq/series-workflowr5frq-convert-artifact-1960837879/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": "914907b4-29f9-48e1-bc96-018a6dcb11c7", "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-workflowr5frq/series-workflowr5frq-build-action-1147721147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-03 11:41:15 +0000 UTC FinishedAt: 2026-07-03 11:41:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-03 11:41:15 +0000 UTC FinishedAt: 2026-07-03 11:41:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-03 11:41:15 +0000 UTC FinishedAt: 2026-07-03 11:43:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-03 11:41:15 +0000 UTC FinishedAt: 2026-07-03 11:43:05 +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:*914907b4-29f9-48e1-bc96-018a6dcb11c7,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-workflowr5frq/series-workflowr5frq-build-action-1147721147/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-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-03 11:43:15 +0000 UTC FinishedAt: 2026-07-03 14:47:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-03 11:43:15 +0000 UTC FinishedAt: 2026-07-03 14:47:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"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:*9a50926b-b7d0-4067-a1f6-ac4d4357b4dd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*914907b4-29f9-48e1-bc96-018a6dcb11c7,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-workflowr5frq/series-workflowr5frq-build-action-2385285142/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-workflowr5frq/series-workflowr5frq-build-action-1147721147/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-03 11:43:15 +0000 UTC FinishedAt: 2026-07-03 11:44:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-03 11:43:15 +0000 UTC FinishedAt: 2026-07-03 11:44:08 +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":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"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-workflowr5frq/series-workflowr5frq-convert-artifact-2332599088/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-03 11:43:15 +0000 UTC FinishedAt: 2026-07-03 11:43:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-03 11:43:15 +0000 UTC FinishedAt: 2026-07-03 11:43:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-03 11:43:15 +0000 UTC FinishedAt: 2026-07-03 11:43:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-03 11:44:25 +0000 UTC FinishedAt: 2026-07-03 14:47:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr5frq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp1u_udp_encap_recv","gtp_parse_exthdrs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"57a5f762-df4e-41f7-beaf-1688c5b50b3f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-03 11:44:25 +0000 UTC FinishedAt: 2026-07-03 14:46:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9a50926b-b7d0-4067-a1f6-ac4d4357b4dd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*914907b4-29f9-48e1-bc96-018a6dcb11c7,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-workflowr5frq/series-workflowr5frq-build-action-2385285142/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-workflowr5frq/series-workflowr5frq-build-action-1147721147/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-workflowr5frq/series-workflowr5frq-convert-artifact-2332599088/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,}