Name: series-workflowgg79r Phase: Succeeded StartedAt: 2026-07-11 15:47:05 +0000 UTC FinishedAt: 2026-07-11 21:08:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[0] Phase: Succeeded StartedAt: 2026-07-11 15:47:05 +0000 UTC FinishedAt: 2026-07-11 16:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 15:47:05 +0000 UTC FinishedAt: 2026-07-11 16:08:00 +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": "1cd23ca80784223fa2204e16203f754da4e821f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET_PSP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1cd23ca80784223fa2204e16203f754da4e821f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET_PSP" ], "series_id": "021d4f75-0bd8-4e43-b8a6-74cc0344c138" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDE2OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVRfUFNQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgYW5kIGluY29ycmVjdCBjb250cm9sIGZsb3cgaW4gdGhlIFRDUCByZWNlaXZlIHBhdGggZm9yIFRJTUVfV0FJVCBzb2NrZXRzIHdoZW4gYSBwYWNrZXQgaXMgZHJvcHBlZCBkdWUgdG8gUFNQIHBvbGljeSBjaGVja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlZDczNjIwYzJhZWVjMjc4NWY5MzJkNjQ3OTQ3YWRhOTcyYzNmMjFhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTY6MDc6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lwdjQuYyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcbmluZGV4IDIwOWVmNzUyMjUwOGZjLi40YTQ2ZGEzNzUwNDNiZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcbkBAIC0yMzE4LDggJiM0MzsyMzE4LDEwIEBAIGludCB0Y3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdH1cbiBcbiBcdFx0ZHJvcF9yZWFzb24gPSBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2soaW5ldF90d3NrKHNrKSwgc2tiKTtcbi1cdFx0aWYgKGRyb3BfcmVhc29uKVxuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0aWYgKGRyb3BfcmVhc29uKSB7XG4mIzQzO1x0XHRcdGluZXRfdHdza19wdXQoaW5ldF90d3NrKHNrKSk7XG4mIzQzO1x0XHRcdGdvdG8gZGlzY2FyZF9pdDtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcdFx0LyogdG8gQUNLICovXG4gXHRcdGZhbGx0aHJvdWdoO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3RjcF9pcHY2LmMgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jXG5pbmRleCBlYmUxNjFkNzJmYmQwNy4uNTIyYmE0NWNlOWI3NTkgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jXG5AQCAtMTk3Nyw4ICYjNDM7MTk3NywxMCBAQCBJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgdGNwX3Y2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHR9XG4gXG4gXHRcdGRyb3BfcmVhc29uID0gcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKGluZXRfdHdzayhzayksIHNrYik7XG4tXHRcdGlmIChkcm9wX3JlYXNvbilcbi1cdFx0XHRicmVhaztcbiYjNDM7XHRcdGlmIChkcm9wX3JlYXNvbikge1xuJiM0MztcdFx0XHRpbmV0X3R3c2tfcHV0KGluZXRfdHdzayhzaykpO1xuJiM0MztcdFx0XHRnb3RvIGRpc2NhcmRfaXQ7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXHRcdC8qIHRvIEFDSyAqL1xuIFx0XHRmYWxsdGhyb3VnaDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUX1BTUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvcnJlY3QgY29udHJvbCBmbG93IGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoIGZvciBUSU1FX1dBSVQgc29ja2V0cyB3aGVuIGEgcGFja2V0IGlzIGRyb3BwZWQgZHVlIHRvIFBTUCBwb2xpY3kgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlZDczNjIwYzJhZWVjMjc4NWY5MzJkNjQ3OTQ3YWRhOTcyYzNmMjFhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTEgMTY6MDc6MDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuYwppbmRleCAyMDllZjc1MjI1MDhmYy4uNGE0NmRhMzc1MDQzYmUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lwdjQuYwpAQCAtMjMxOCw4ICYjNDM7MjMxOCwxMCBAQCBpbnQgdGNwX3Y0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQl9CiAKIAkJZHJvcF9yZWFzb24gPSBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2soaW5ldF90d3NrKHNrKSwgc2tiKTsKLQkJaWYgKGRyb3BfcmVhc29uKQotCQkJYnJlYWs7CiYjNDM7CQlpZiAoZHJvcF9yZWFzb24pIHsKJiM0MzsJCQlpbmV0X3R3c2tfcHV0KGluZXRfdHdzayhzaykpOwomIzQzOwkJCWdvdG8gZGlzY2FyZF9pdDsKJiM0MzsJCX0KIAl9CiAJCS8qIHRvIEFDSyAqLwogCQlmYWxsdGhyb3VnaDsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3RjcF9pcHY2LmMgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCmluZGV4IGViZTE2MWQ3MmZiZDA3Li41MjJiYTQ1Y2U5Yjc1OSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdGNwX2lwdjYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCkBAIC0xOTc3LDggJiM0MzsxOTc3LDEwIEBAIElORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCB0Y3BfdjZfcmN2KHN0cnVjdCBza19idWZmICpza2IpCiAJCX0KIAogCQlkcm9wX3JlYXNvbiA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayhpbmV0X3R3c2soc2spLCBza2IpOwotCQlpZiAoZHJvcF9yZWFzb24pCi0JCQlicmVhazsKJiM0MzsJCWlmIChkcm9wX3JlYXNvbikgewomIzQzOwkJCWluZXRfdHdza19wdXQoaW5ldF90d3NrKHNrKSk7CiYjNDM7CQkJZ290byBkaXNjYXJkX2l0OwomIzQzOwkJfQogCX0KIAkJLyogdG8gQUNLICovCiAJCWZhbGx0aHJvdWdoOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRDUCBUSU1FX1dBSVQgU3RhdGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSwgYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCBhbmQgYG5ldC9pcHY2L3RjcF9pcHY2LmNgLiBJbnRlcmVzdGluZy4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhcm91bmQgaG93IHdlIGhhbmRsZSBhIGRyb3AgcmVhc29uIHJldHVybmVkIGJ5IGBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2tgLiBJdCYjMzk7cyBkZXZpYXRpbmcgZnJvbSBhIHNpbXBsZSBgYnJlYWtgIG5vdywgYW5kIGluc3RlYWQgdXNlcyBgaW5ldF90d3NrX3B1dGAgb24gdGhlIGBpbmV0X3R3c2tgIGFzc29jaWF0ZWQgd2l0aCB0aGUgc29ja2V0IChgc2tgKSwgYW5kIHRoZW4ganVtcHMgdG8gYSBgZGlzY2FyZF9pdGAgbGFiZWwuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgbWFraW5nIG1lIHRoaW5rIGFib3V0IHJlZmVyZW5jZSBjb3VudGluZyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMgaW4gdGhlIFRJTUVfV0FJVCBzdGF0ZS4KCk15IG5leHQgc3RlcCBpcyB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2hlcmUqIHRoaXMgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AgaXMgY2FsbGVkIHdpdGhpbiB0aGUgcmVjZWl2ZXIgcm91dGluZXMgYHRjcF92NF9yY3ZgIGFuZCBgdGNwX3Y2X3JjdmAuIFRoaXMgbG9va3MgbGlrZSBpdCYjMzk7cyBzcGVjaWZpY2FsbHkgYWJvdXQgVElNRV9XQUlUIGhhbmRsaW5nLCBidXQgSSBuZWVkIGNvbmZpcm1hdGlvbi4KClRvIHZlcmlmeSBteSBhc3N1bXB0aW9uIGFuZCBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgZnVuY3Rpb24sIEkmIzM5O2xsIGxldmVyYWdlIGBncmVwcGVyYCB0byBxdWlja2x5IGxvY2F0ZSBhbGwgdXNhZ2VzIG9mIGBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2tgLiBUaGlzIHdpbGwgc2hvdyBtZSB0aGUgY2FsbGluZyBjb250ZXh0IGFuZCBhbGxvdyBtZSB0byBxdWlja2x5IGdldCBiYWNrIHVwIHRvIHNwZWVkIG9uIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaD0xMjE9c3RhdGljIGlubGluZSBlbnVtIHNrYl9kcm9wX3JlYXNvblxuaW5jbHVkZS9uZXQvcHNwL2Z1bmN0aW9ucy5oOjEyMjpwc3BfdHdza19yeF9wb2xpY3lfY2hlY2soc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsIHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL25ldC9wc3AvZnVuY3Rpb25zLmgtMTIzLXtcbi0tXG5pbmNsdWRlL25ldC9wc3AvZnVuY3Rpb25zLmg9MTg2PXN0YXRpYyBpbmxpbmUgZW51bSBza2JfZHJvcF9yZWFzb25cbmluY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaDoxODc6cHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKHN0cnVjdCBpbmV0X3RpbWV3YWl0X3NvY2sgKnR3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuaW5jbHVkZS9uZXQvcHNwL2Z1bmN0aW9ucy5oLTE4OC17XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMDY3PWludCB0Y3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMzE5LVxubmV0L2lwdjQvdGNwX2lwdjQuYzoyMzIwOlx0XHRkcm9wX3JlYXNvbiA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayhpbmV0X3R3c2soc2spLCBza2IpO1xubmV0L2lwdjQvdGNwX2lwdjQuYy0yMzIxLVx0XHRpZiAoZHJvcF9yZWFzb24pIHtcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9MTAxPXRjcF90aW1ld2FpdF9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBpbmV0X3RpbWV3YWl0X3NvY2sgKnR3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy0xMTUtXHQgKi9cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzoxMTY6XHRwc3BfZHJvcCA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayh0dywgc2tiKTtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy0xMTctXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xNzI4PUlORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCB0Y3BfdjZfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xOTc4LVxubmV0L2lwdjYvdGNwX2lwdjYuYzoxOTc5Olx0XHRkcm9wX3JlYXNvbiA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayhpbmV0X3R3c2soc2spLCBza2IpO1xubmV0L2lwdjYvdGNwX2lwdjYuYy0xOTgwLVx0XHRpZiAoZHJvcF9yZWFzb24pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTUyCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGF0IHF1ZXJ5LCBhcyBpZiBpdCB3ZXJlIG15IHRob3VnaHQgcHJvY2VzczoKCioqSW52ZXN0aWdhdGluZyB0aGUgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBmaWd1cmUgb3V0ICp3aGVyZSogdGhpcyBgcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrYCBmbGFnIGlzIGFjdHVhbGx5IGVuYWJsZWQuIEdpdmVuIG15IGJhY2tncm91bmQsIEkgYWxyZWFkeSBoYXZlIGEgZmV3IGxpa2VseSBzcG90cyBpbiBtaW5kIC0gYnV0IEkgbmVlZCB0byBiZSBtZXRob2RpY2FsLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgYmxpbmQgc2VhcmNoOyBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgY29udHJvbHMgdGhpcyBzcGVjaWZpYyBiZWhhdmlvci4gSXQmIzM5O3MgbGlrZWx5IHdpdGhpbiBhIGJyb2FkZXIgc3lzdGVtIG9mIG5ldHdvcmsgcG9saWN5IG9yIHNlY3VyaXR5IHNldHRpbmdzLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGNvbnRleHQuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIHRvIGRpZyBpbi4gSSB3aWxsIHN0YXJ0IHdpdGggYSBzZWFyY2ggb2YgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIG1heWJlIHRoZSBkb2N1bWVudGF0aW9uLiBBbmQgSSBzaG91bGQga2VlcCBpbiBtaW5kIHRoYXQgdGhlIHNldHRpbmdzIG1pZ2h0IGJlIGR5bmFtaWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTkVUX1BTUCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM5NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBBY3RpdmF0aW9uIG9mIGBwc3BgIEZ1bmN0aW9uYWxpdHkqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBlbmFibGluZyB0aGlzIGBwc3BgIGZ1bmN0aW9uYWxpdHkuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgaW5jbHVkZSBmaWxlcyB0aGF0IGRlZmluZSBpdHMgaW50ZXJmYWNlLiBBIGxpa2VseSBzdGFydGluZyBwb2ludCB3b3VsZCBiZSBgaW5jbHVkZS9uZXQvcHNwL2Z1bmN0aW9ucy5oYC4gVGhhdCBoZWFkZXIgZmlsZSBpcyB1c3VhbGx5IHRoZSBwbGFjZSB3aGVyZSB0aGUgY29yZSBkZWNsYXJhdGlvbnMgYW5kIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3b3VsZCBsaXZlLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIHRoYXQgZmlsZSBhbmQgbG9vayBmb3IgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMsIHByZXByb2Nlc3NvciBtYWNyb3MsIG9yIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWlnaHQgYmUgdGllZCB0byB0aGUgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIG9mIHRoaXMgZmVhdHVyZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBjb25maWd1cmF0aW9ucyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgYHBzcGAgaXMgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovXG4gICAyOlx0XG4gICAzOlx0I2lmbmRlZiBfX05FVF9QU1BfSEVMUEVSU19IXG4gICA0Olx0I2RlZmluZSBfX05FVF9QU1BfSEVMUEVSU19IXG4gICA1Olx0XG4gICA2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2tidWZmLmhcdTAwM2VcbiAgIDc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yY3VwZGF0ZS5oXHUwMDNlXG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdWRwLmhcdTAwM2VcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NuZXQvc29jay5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbmV0L3RjcC5oXHUwMDNlXG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbmV0L3BzcC90eXBlcy5oXHUwMDNlXG4gIDEyOlx0XG4gIDEzOlx0c3RydWN0IGluZXRfdGltZXdhaXRfc29jaztcbiAgMTQ6XHRcbiAgMTU6XHQvKiBEcml2ZXItZmFjaW5nIEFQSSAqL1xuICAxNjpcdHN0cnVjdCBwc3BfZGV2ICpcbiAgMTc6XHRwc3BfZGV2X2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgcHNwX2Rldl9vcHMgKnBzZF9vcHMsXG4gIDE4Olx0XHQgICAgICAgc3RydWN0IHBzcF9kZXZfY2FwcyAqcHNkX2NhcHMsIHZvaWQgKnByaXZfcHRyKTtcbiAgMTk6XHR2b2lkIHBzcF9kZXZfdW5yZWdpc3RlcihzdHJ1Y3QgcHNwX2RldiAqcHNkKTtcbiAgMjA6XHRib29sIHBzcF9kZXZfZW5jYXBzdWxhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgc3BpLFxuICAyMTpcdFx0XHRcdCB1OCB2ZXIsIF9fYmUxNiBzcG9ydCk7XG4gIDIyOlx0aW50IHBzcF9kZXZfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHUxNiBkZXZfaWQsIHU4IGdlbmVyYXRpb24sIGJvb2wgc3RyaXBfaWN2KTtcbiAgMjM6XHRcbiAgMjQ6XHQvKiBLZXJuZWwtZmFjaW5nIEFQSSAqL1xuICAyNTpcdHZvaWQgcHNwX2Fzc29jX3B1dChzdHJ1Y3QgcHNwX2Fzc29jICpwYXMpO1xuICAyNjpcdFxuICAyNzpcdHN0YXRpYyBpbmxpbmUgdm9pZCAqcHNwX2Fzc29jX2Rydl9kYXRhKHN0cnVjdCBwc3BfYXNzb2MgKnBhcylcbiAgMjg6XHR7XG4gIDI5Olx0XHRyZXR1cm4gcGFzLVx1MDAzZWRydl9kYXRhO1xuICAzMDpcdH1cbiAgMzE6XHRcbiAgMzI6XHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSU5FVF9QU1ApXG4gIDMzOlx0dW5zaWduZWQgaW50IHBzcF9rZXlfc2l6ZSh1MzIgdmVyc2lvbik7XG4gIDM0Olx0dm9pZCBwc3Bfc2tfYXNzb2NfZnJlZShzdHJ1Y3Qgc29jayAqc2spO1xuICAzNTpcdHZvaWQgcHNwX3R3c2tfaW5pdChzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dywgY29uc3Qgc3RydWN0IHNvY2sgKnNrKTtcbiAgMzY6XHR2b2lkIHBzcF90d3NrX2Fzc29jX2ZyZWUoc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcpO1xuICAzNzpcdHZvaWQgcHNwX3JlcGx5X3NldF9kZWNyeXB0ZWQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiAgMzg6XHRcbiAgMzk6XHRzdGF0aWMgaW5saW5lIHN0cnVjdCBwc3BfYXNzb2MgKnBzcF9za19hc3NvYyhjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4gIDQwOlx0e1xuICA0MTpcdFx0cmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9jaGVjayhzay1cdTAwM2Vwc3BfYXNzb2MsIGxvY2tkZXBfc29ja19pc19oZWxkKHNrKSk7XG4gIDQyOlx0fVxuICA0MzpcdFxuICA0NDpcdHN0YXRpYyBpbmxpbmUgdm9pZFxuICA0NTpcdHBzcF9lbnF1ZXVlX3NldF9kZWNyeXB0ZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuICA0NjpcdHtcbiAgNDc6XHRcdHN0cnVjdCBwc3BfYXNzb2MgKnBhcztcbiAgNDg6XHRcbiAgNDk6XHRcdHBhcyA9IHBzcF9za19hc3NvYyhzayk7XG4gIDUwOlx0XHRpZiAocGFzIFx1MDAyNlx1MDAyNiBwYXMtXHUwMDNldHguc3BpKVxuICA1MTpcdFx0XHRza2ItXHUwMDNlZGVjcnlwdGVkID0gMTtcbiAgNTI6XHR9XG4gIDUzOlx0XG4gIDU0Olx0c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nXG4gIDU1Olx0X19wc3Bfc2tiX2NvYWxlc2NlX2RpZmYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKm9uZSwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnR3byxcbiAgNTY6XHRcdFx0XHR1bnNpZ25lZCBsb25nIGRpZmZzKVxuICA1NzpcdHtcbiAgNTg6XHRcdHN0cnVjdCBwc3Bfc2tiX2V4dCAqYSwgKmI7XG4gIDU5Olx0XG4gIDYwOlx0XHRhID0gc2tiX2V4dF9maW5kKG9uZSwgU0tCX0VYVF9QU1ApO1xuICA2MTpcdFx0YiA9IHNrYl9leHRfZmluZCh0d28sIFNLQl9FWFRfUFNQKTtcbiAgNjI6XHRcbiAgNjM6XHRcdGRpZmZzIHw9ICghIWEpIF4gKCEhYik7XG4gIDY0Olx0XHRpZiAoIWRpZmZzIFx1MDAyNlx1MDAyNiB1bmxpa2VseShhKSlcbiAgNjU6XHRcdFx0ZGlmZnMgfD0gbWVtY21wKGEsIGIsIHNpemVvZigqYSkpO1xuICA2NjpcdFx0cmV0dXJuIGRpZmZzO1xuICA2NzpcdH1cbiAgNjg6XHRcbiAgNjk6XHRzdGF0aWMgaW5saW5lIGJvb2xcbiAgNzA6XHRwc3BfaXNfYWxsb3dlZF9ub25kYXRhKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBwc3BfYXNzb2MgKnBhcylcbiAgNzE6XHR7XG4gIDcyOlx0XHRib29sIGZpbiA9ICEhKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2V0Y3BfZmxhZ3MgXHUwMDI2IFRDUEhEUl9GSU4pO1xuICA3MzpcdFx0dTMyIGVuZF9zZXEgPSBUQ1BfU0tCX0NCKHNrYiktXHUwMDNlZW5kX3NlcTtcbiAgNzQ6XHRcdHUzMiBzZXEgPSBUQ1BfU0tCX0NCKHNrYiktXHUwMDNlc2VxO1xuICA3NTpcdFx0Ym9vbCBwdXJlX2ZpbjtcbiAgNzY6XHRcbiAgNzc6XHRcdHB1cmVfZmluID0gZmluIFx1MDAyNlx1MDAyNiBlbmRfc2VxIC0gc2VxID09IDE7XG4gIDc4Olx0XG4gIDc5Olx0XHRyZXR1cm4gc2VxID09IGVuZF9zZXEgfHwgKHB1cmVfZmluIFx1MDAyNlx1MDAyNiBzZXEgPT0gcGFzLVx1MDAzZXVwZ3JhZGVfc2VxKTtcbiAgODA6XHR9XG4gIDgxOlx0XG4gIDgyOlx0c3RhdGljIGlubGluZSBib29sXG4gIDgzOlx0cHNwX3BzZV9tYXRjaGVzX3BhcyhzdHJ1Y3QgcHNwX3NrYl9leHQgKnBzZSwgc3RydWN0IHBzcF9hc3NvYyAqcGFzKVxuICA4NDpcdHtcbiAgODU6XHRcdHJldHVybiBwc2UgXHUwMDI2XHUwMDI2IHBhcy1cdTAwM2VyeC5zcGkgPT0gcHNlLVx1MDAzZXNwaSBcdTAwMjZcdTAwMjZcbiAgODY6XHRcdCAgICAgICBwYXMtXHUwMDNlZ2VuZXJhdGlvbiA9PSBwc2UtXHUwMDNlZ2VuZXJhdGlvbiBcdTAwMjZcdTAwMjZcbiAgODc6XHRcdCAgICAgICBwYXMtXHUwMDNldmVyc2lvbiA9PSBwc2UtXHUwMDNldmVyc2lvbiBcdTAwMjZcdTAwMjZcbiAgODg6XHRcdCAgICAgICBwYXMtXHUwMDNlZGV2X2lkID09IHBzZS1cdTAwM2VkZXZfaWQ7XG4gIDg5Olx0fVxuICA5MDpcdFxuICA5MTpcdHN0YXRpYyBpbmxpbmUgZW51bSBza2JfZHJvcF9yZWFzb25cbiAgOTI6XHRfX3BzcF9za19yeF9wb2xpY3lfY2hlY2soc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHBzcF9hc3NvYyAqcGFzKVxuICA5MzpcdHtcbiAgOTQ6XHRcdHN0cnVjdCBwc3Bfc2tiX2V4dCAqcHNlID0gc2tiX2V4dF9maW5kKHNrYiwgU0tCX0VYVF9QU1ApO1xuICA5NTpcdFxuICA5NjpcdFx0aWYgKCFwYXMpXG4gIDk3Olx0XHRcdHJldHVybiBwc2UgPyBTS0JfRFJPUF9SRUFTT05fUFNQX0lOUFVUIDogMDtcbiAgOTg6XHRcbiAgOTk6XHRcdGlmIChsaWtlbHkocHNwX3BzZV9tYXRjaGVzX3Bhcyhwc2UsIHBhcykpKSB7XG4gMTAwOlx0XHRcdGlmICh1bmxpa2VseSghcGFzLVx1MDAzZXBlZXJfdHgpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxOTEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVENQIFJlY2VpdmUgUGF0aCBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgY29uZmlnIGlzIGBJTkVUX1BTUGAsIG1lYW5pbmcgdGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBQbHVnZ2FibGUgU2VjdXJpdHkgUHJvdG9jb2wsIGFuZCBpdCYjMzk7cyBoaXR0aW5nIHRoZSBgdGNwX3Y0X3JjdmAgYW5kIGB0Y3BfdjZfcmN2YCBmdW5jdGlvbnMuIFJpZ2h0IGF3YXksIHRoYXQgcmFpc2VzIGEgZmxhZyDigJMgdGhlc2UgYXJlIGNvcmUsIGhvdC1wYXRoIGZ1bmN0aW9ucyBpbiB0aGUgVENQIHJlY2VpdmUgcGF0aC4gVGhlIGZpeCBzZWVtcyB0byBiZSB3aXRoaW4gdGhlIGBUSU1FX1dBSVRgIHNvY2tldCBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgYW4gaXNzdWUgd2hlcmUgYGRyb3BfcmVhc29uYCBmcm9tIGBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2tgIHdhcyBpbmNvcnJlY3RseSBicmVha2luZyBhIGxvb3AsIGxlYWRpbmcgdG8gYSBkcm9wcGVkIGB0d3NrYCBhbmQgYHNrYmAuCgpOb3csIHRoZSBxdWVzdGlvbiBiZWNvbWVzIGhvdyB0byBjaGFyYWN0ZXJpemUgdGhpcyBjaGFuZ2UgZWZmZWN0aXZlbHkgZm9yIHRlc3Rpbmcgb3IgYW5hbHlzaXMuIFNob3VsZCBJIGJlIGZvY3VzaW5nIG9uIGB0Y3BfdjRfcmN2YCBhbmQgYHRjcF92Nl9yY3ZgIGRpcmVjdGx5PyBUaGV5IGFyZSBpbmRlZWQgY3JpdGljYWwsIGJ1dCB0aGV5JiMzOTtyZSBzbyBmdW5kYW1lbnRhbCB0aGF0IGluY2x1ZGluZyB0aGVtIGluIGEgYEZvY3VzU3ltYm9sc2AgbGlzdCBjb3VsZCB0aHJvdyBvZmYgdGVzdCBkaXN0cmlidXRpb25zIGR1ZSB0byB0aGVpciBwcmV2YWxlbmNlLiBXaGF0JiMzOTtzIHRoZSBiZXN0IGFwcHJvYWNoIGhlcmU/CgpgcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrYCBpcyB0aGUgbGlrZWx5IGN1bHByaXQgb2YgdGhlIGJ1Zy4gSXQmIzM5O3MgYW4gaW5saW5lIGZ1bmN0aW9uLCBzbyBpdCB3b24mIzM5O3QgYmUgaW4gdGhlIHN5bWJvbCB0YWJsZSwgd2hpY2ggbWFrZXMgaXQgYW4gaW50ZXJlc3RpbmcgY29uc2lkZXJhdGlvbi4gSSBhbHNvIG5lZWQgdG8gdGhpbmsgYWJvdXQgYWx0ZXJuYXRpdmVzLiBgdGNwX3RpbWV3YWl0X3N0YXRlX3Byb2Nlc3NgIGlzbiYjMzk7dCBtb2RpZmllZCBieSB0aGlzIHBhdGNoIGRpcmVjdGx5LiBXaGF0IG90aGVyIG9wdGlvbnMgYXJlIHRoZXJlPwoKTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgY29kZSBsb2NhdGlvbiBmb3IgYHRjcF92NF9yY3ZgLCBhcm91bmQgbGluZSAyMzE4IGluIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCB0byBzb2xpZGlmeSB3aGF0JiMzOTtzIGhhcHBlbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjMwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMzAwOlx0XHRcdGdvdG8gY3N1bV9lcnJvcjtcbjIzMDE6XHRcdH1cbjIzMDI6XHRcbjIzMDM6XHRcdHR3X3N0YXR1cyA9IHRjcF90aW1ld2FpdF9zdGF0ZV9wcm9jZXNzKGluZXRfdHdzayhzayksIHNrYiwgdGgsIFx1MDAyNmlzbixcbjIzMDQ6XHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmRyb3BfcmVhc29uKTtcbjIzMDU6XHRcdHN3aXRjaCAodHdfc3RhdHVzKSB7XG4yMzA2Olx0XHRjYXNlIFRDUF9UV19TWU46IHtcbjIzMDc6XHRcdFx0c3RydWN0IHNvY2sgKnNrMiA9IGluZXRfbG9va3VwX2xpc3RlbmVyKG5ldCwgc2tiLCBfX3RjcF9oZHJsZW4odGgpLFxuMjMwODpcdFx0XHRcdFx0XHRcdFx0aXBoLVx1MDAzZXNhZGRyLCB0aC1cdTAwM2Vzb3VyY2UsXG4yMzA5Olx0XHRcdFx0XHRcdFx0XHRpcGgtXHUwMDNlZGFkZHIsIHRoLVx1MDAzZWRlc3QsXG4yMzEwOlx0XHRcdFx0XHRcdFx0XHRpbmV0X2lpZihza2IpLFxuMjMxMTpcdFx0XHRcdFx0XHRcdFx0c2RpZik7XG4yMzEyOlx0XHRcdGlmIChzazIpIHtcbjIzMTM6XHRcdFx0XHRpbmV0X3R3c2tfZGVzY2hlZHVsZV9wdXQoaW5ldF90d3NrKHNrKSk7XG4yMzE0Olx0XHRcdFx0c2sgPSBzazI7XG4yMzE1Olx0XHRcdFx0dGNwX3Y0X3Jlc3RvcmVfY2Ioc2tiKTtcbjIzMTY6XHRcdFx0XHRyZWZjb3VudGVkID0gZmFsc2U7XG4yMzE3Olx0XHRcdFx0Z290byBwcm9jZXNzO1xuMjMxODpcdFx0XHR9XG4yMzE5Olx0XG4yMzIwOlx0XHRcdGRyb3BfcmVhc29uID0gcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKGluZXRfdHdzayhzayksIHNrYik7XG4yMzIxOlx0XHRcdGlmIChkcm9wX3JlYXNvbikge1xuMjMyMjpcdFx0XHRcdGluZXRfdHdza19wdXQoaW5ldF90d3NrKHNrKSk7XG4yMzIzOlx0XHRcdFx0Z290byBkaXNjYXJkX2l0O1xuMjMyNDpcdFx0XHR9XG4yMzI1Olx0XHR9XG4yMzI2Olx0XHRcdC8qIHRvIEFDSyAqL1xuMjMyNzpcdFx0XHRmYWxsdGhyb3VnaDtcbjIzMjg6XHRcdGNhc2UgVENQX1RXX0FDSzpcbjIzMjk6XHRcdGNhc2UgVENQX1RXX0FDS19PT1c6XG4yMzMwOlx0XHRcdHRjcF92NF90aW1ld2FpdF9hY2soc2ssIHNrYiwgdHdfc3RhdHVzKTtcbjIzMzE6XHRcdFx0YnJlYWs7XG4yMzMyOlx0XHRjYXNlIFRDUF9UV19SU1Q6XG4yMzMzOlx0XHRcdHRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1RJTUVXQUlUX1NPQ0tFVCk7XG4yMzM0Olx0XHRcdGluZXRfdHdza19kZXNjaGVkdWxlX3B1dChpbmV0X3R3c2soc2spKTtcbjIzMzU6XHRcdFx0Z290byBkaXNjYXJkX2l0O1xuMjMzNjpcdFx0Y2FzZSBUQ1BfVFdfU1VDQ0VTUzo7XG4yMzM3Olx0XHR9XG4yMzM4Olx0XHRnb3RvIGRpc2NhcmRfaXQ7XG4yMzM5Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTYzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVxdWVzdCBmb3IgRm9jdXNlZCBGdW5jdGlvbiBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGUgaW5zdHJ1Y3Rpb24gaXMgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhlIGNoYW5nZSBpcyBkZWZpbml0ZWx5IGluIGB0Y3BfdjRfcmN2YCBhbmQgYHRjcF92Nl9yY3ZgLiBUaG9zZSBhcmUgY2xhc3NpYyBob3QtcGF0aCBmdW5jdGlvbnMgZm9yIFRDUCBwYWNrZXQgcmVjZXB0aW9uLCBzbyBsaXN0aW5nIHRoZW0gd291bGQgY2xlYXJseSB2aW9sYXRlIHRoZSAmIzM0O3NrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMmIzM0OyBndWlkZWxpbmUuIEkmIzM5O20gZ29pbmcgdG8gbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHkgZm9yIG5vdywgYXMgdGhhdCYjMzk7cyB0aGUgbW9zdCBjb25zZXJ2YXRpdmUgYXBwcm9hY2ggYW5kIGFsaWducyB3aXRoIHRoZSBleHBsaWNpdCBkaXJlY3RpdmUuCgpCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgdGhlcmUgKmFueXRoaW5nKiBlbHNlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgUGFja2V0IFN0YXRlIFByb2Nlc3NvciAoUFNQKSB0aGF0IHdlIGNvdWxkIHBvdGVudGlhbGx5IGZvY3VzIG9uPyBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb2RlLiBUaGUgcHJvbXB0ICppcyogYXNraW5nIGZvciBmb2N1c2VkIGZ1bmN0aW9ucywgaWYgdGhleSBleGlzdC4gSXQgbWlnaHQgYmUgd29ydGggYSBsb29rLiBJJiMzOTtsbCBzZWFyY2ggYG5ldC9pcHY0L3RjcF9taW5pc29ja3MuY2AgbG9va2luZyBmb3Igc29tZXRoaW5nIHJlbGF0ZWQgdG8gYHRjcF90aW1ld2FpdF9zdGF0ZV9wcm9jZXNzYC4gTGV0JiMzOTtzIHNlZSBpZiB0aGF0IGZpbGUgaG9sZHMgYSByZWxldmFudCBmdW5jdGlvbiwgc28gSSBjYW4gZW5zdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYSBtb3JlIHNwZWNpZmljIGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9taW5pc29ja3MuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTAwOlx0ZW51bSB0Y3BfdHdfc3RhdHVzXG4gMTAxOlx0dGNwX3RpbWV3YWl0X3N0YXRlX3Byb2Nlc3Moc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsIHN0cnVjdCBza19idWZmICpza2IsXG4gMTAyOlx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHRjcGhkciAqdGgsIHUzMiAqdHdfaXNuLFxuIDEwMzpcdFx0XHRcdCAgIGVudW0gc2tiX2Ryb3BfcmVhc29uICpkcm9wX3JlYXNvbilcbiAxMDQ6XHR7XG4gMTA1Olx0XHRzdHJ1Y3QgdGNwX3RpbWV3YWl0X3NvY2sgKnRjcHR3ID0gdGNwX3R3c2soKHN0cnVjdCBzb2NrICopdHcpO1xuIDEwNjpcdFx0dTMyIHJjdl9ueHQgPSBSRUFEX09OQ0UodGNwdHctXHUwMDNldHdfcmN2X254dCk7XG4gMTA3Olx0XHRzdHJ1Y3QgdGNwX29wdGlvbnNfcmVjZWl2ZWQgdG1wX29wdDtcbiAxMDg6XHRcdGVudW0gc2tiX2Ryb3BfcmVhc29uIHBzcF9kcm9wO1xuIDEwOTpcdFx0Ym9vbCBwYXdzX3JlamVjdCA9IGZhbHNlO1xuIDExMDpcdFx0aW50IHRzX3JlY2VudF9zdGFtcDtcbiAxMTE6XHRcbiAxMTI6XHRcdC8qIEluc3RlYWQgb2YgZHJvcHBpbmcgaW1tZWRpYXRlbHksIHdhaXQgdG8gc2VlIHdoYXQgdmFsdWUgaXNcbiAxMTM6XHRcdCAqIHJldHVybmVkLiBXZSB3aWxsIGFjY2VwdCBhIG5vbiBwc3AtZW5jYXBzdWxhdGVkIHN5biBpbiB0aGVcbiAxMTQ6XHRcdCAqIGNhc2Ugd2hlcmUgVENQX1RXX1NZTiBpcyByZXR1cm5lZC5cbiAxMTU6XHRcdCAqL1xuIDExNjpcdFx0cHNwX2Ryb3AgPSBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2sodHcsIHNrYik7XG4gMTE3Olx0XG4gMTE4Olx0XHR0bXBfb3B0LnNhd190c3RhbXAgPSAwO1xuIDExOTpcdFx0dHNfcmVjZW50X3N0YW1wID0gUkVBRF9PTkNFKHRjcHR3LVx1MDAzZXR3X3RzX3JlY2VudF9zdGFtcCk7XG4gMTIwOlx0XHRpZiAodGgtXHUwMDNlZG9mZiBcdTAwM2UgKHNpemVvZigqdGgpIFx1MDAzZVx1MDAzZSAyKSBcdTAwMjZcdTAwMjYgdHNfcmVjZW50X3N0YW1wKSB7XG4gMTIxOlx0XHRcdHRjcF9wYXJzZV9vcHRpb25zKHR3c2tfbmV0KHR3KSwgc2tiLCBcdTAwMjZ0bXBfb3B0LCAwLCBOVUxMKTtcbiAxMjI6XHRcbiAxMjM6XHRcdFx0aWYgKHRtcF9vcHQuc2F3X3RzdGFtcCkge1xuIDEyNDpcdFx0XHRcdGlmICh0bXBfb3B0LnJjdl90c2VjcilcbiAxMjU6XHRcdFx0XHRcdHRtcF9vcHQucmN2X3RzZWNyIC09IHRjcHR3LVx1MDAzZXR3X3RzX29mZnNldDtcbiAxMjY6XHRcdFx0XHR0bXBfb3B0LnRzX3JlY2VudFx0PSBSRUFEX09OQ0UodGNwdHctXHUwMDNldHdfdHNfcmVjZW50KTtcbiAxMjc6XHRcdFx0XHR0bXBfb3B0LnRzX3JlY2VudF9zdGFtcFx0PSB0c19yZWNlbnRfc3RhbXA7XG4gMTI4Olx0XHRcdFx0cGF3c19yZWplY3QgPSB0Y3BfcGF3c19yZWplY3QoXHUwMDI2dG1wX29wdCwgdGgtXHUwMDNlcnN0KTtcbiAxMjk6XHRcdFx0fVxuIDEzMDpcdFx0fVxuIDEzMTpcdFxuIDEzMjpcdFx0aWYgKFJFQURfT05DRSh0dy1cdTAwM2V0d19zdWJzdGF0ZSkgPT0gVENQX0ZJTl9XQUlUMikge1xuIDEzMzpcdFx0XHQvKiBKdXN0IHJlcGVhdCBhbGwgdGhlIGNoZWNrcyBvZiB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3MoKSAqL1xuIDEzNDpcdFxuIDEzNTpcdFx0XHRpZiAocHNwX2Ryb3ApXG4gMTM2Olx0XHRcdFx0Z290byBvdXRfcHV0O1xuIDEzNzpcdFxuIDEzODpcdFx0XHQvKiBPdXQgb2Ygd2luZG93LCBzZW5kIEFDSyAqL1xuIDEzOTpcdFx0XHRpZiAocGF3c19yZWplY3QgfHxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcwNAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUQ1AgUmVjZWl2ZSBQYXRoIE9wdGltaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSBgdGNwX3Y0X3JjdmAgYW5kIGB0Y3BfdjZfcmN2YCBmdW5jdGlvbnMuIFRoZXkmIzM5O3JlIGNsZWFybHkgcGVyZm9ybWFuY2UtY3JpdGljYWwsIHJpZ2h0IGluIHRoZSBob3QgcGF0aC4gVGhhdCBtZWFucyBJIG5lZWQgdG8gYmUgKmV4dHJlbWVseSogY2FyZWZ1bCBhYm91dCBhbnkgY2hhbmdlcyBJIG1ha2UgdG8gdGhlbS4gS2VlcGluZyB0aGF0IGluIG1pbmQsIEkmIzM5O20gZ29pbmcgdG8gbGVhdmUgdGhlIGBGb2N1c1N5bWJvbHNgIGVtcHR5IGZvciBub3csIHRoYXQmIzM5O3MganVzdCBhIGdvb2QgcHJhY3RpY2UgaW4gdGhpcyBjYXNlLiBJIGRvbiYjMzk7dCB3YW50IHRvIGluYWR2ZXJ0ZW50bHkgaW50cm9kdWNlIGFueSBzbG93ZG93biBieSBhZGRpbmcgZXZlbiBhIHRpbnkgYW1vdW50IG9mIG92ZXJoZWFkLgoKTm93LCB0aGUgZG9jdW1lbnRhdGlvbiBzdWdnZXN0cyB0aGF0IGBJTkVUX1BTUGAgaXMgdGhlIGNvbmZpZyBvcHRpb24gcmVzcG9uc2libGUgZm9yIHRoZSBvcHRpbWl6YXRpb24gSSYjMzk7bSBsb29raW5nIGF0LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBhY2N1cmF0ZSBhbmQgdGhhdCBJJiMzOTttIHRhcmdldGluZyB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uLiBJdCYjMzk7cyBlYXN5IHRvIGdldCBsb3N0IGluIHRoZXNlIG9wdGlvbnMsIHNvIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBjb25maXJtIGJlZm9yZSBwcm9jZWVkaW5nLiBHb3R0YSBiZSBtZXRpY3Vsb3VzIHdoZW4gZGVhbGluZyB3aXRoIGNvcmUgbmV0d29ya2luZyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5FVF9QU1AmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BzcC9LY29uZmlnLTQtI1xubmV0L3BzcC9LY29uZmlnOjU6Y29uZmlnIElORVRfUFNQXG5uZXQvcHNwL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7UFNQIFNlY3VyaXR5IFByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA0MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBJTkVUX1BTUGAgaXMgaW5kZWVkIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGJvdGggYSBjcml0aWNhbCBtZW1vcnkgbGVhayDigJMgc3BlY2lmaWNhbGx5LCBhIG1pc3NpbmcgYGluZXRfdHdza19wdXRgIOKAkyBhbmQgYSBidWcgaW4gdGhlIGNvbnRyb2wgZmxvdy4gVGhlIGZsb3cmIzM5O3MgZXJyb3Igc3RlbXMgZnJvbSBhIG1pc3NpbmcgYGdvdG8gZGlzY2FyZF9pdGAgY29uZGl0aW9uLiBUaGVzZSBpc3N1ZXMgbWFuaWZlc3Qgd2hlbiBhIHBhY2tldCBpcyBkcm9wcGVkIGR1ZSB0byBhIFBTUCBwb2xpY3kgY2hlY2sgd2l0aGluIHRoZSBgVENQX1RXX1NZTmAgc3RhdGUuCgpUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2Ugd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY29yZSBrZXJuZWwgbG9naWMgd2l0aGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoOyB0aGlzIGlzIGEgcmVhY2hhYmxlIGNvZGUgcGF0aC4gVGhlcmVmb3JlLCBhbmQgSSYjMzk7bSBxdWl0ZSBjb25maWRlbnQgb2YgdGhpcywgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIHNldCB0byB0cnVlLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgb25seSBjb25maWcgdGhhdCBuZWVkcyBjb25zaWRlcmF0aW9uLiBJIHNlZSBgSU5FVF9QU1BgIGRlcGVuZHMgb24gYElORVRgLiBJJiMzOTtsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBmdXJ0aGVyIGRlcGVuZGVuY2llcyB3aGlsZSBJJiMzOTttIGF0IGl0LCBidXQgbXkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgdGhlIG1vc3QgY3JpdGljYWwgYXNwZWN0IHRvIGFuYWx5emUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3BzcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUFNQIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0Y29uZmlnIElORVRfUFNQXG4gICA2Olx0XHRib29sIFwmIzM0O1BTUCBTZWN1cml0eSBQcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIElORVRcbiAgIDg6XHRcdHNlbGVjdCBTS0JfREVDUllQVEVEXG4gICA5Olx0XHRzZWxlY3QgU0tCX0VYVEVOU0lPTlNcbiAgMTA6XHRcdHNlbGVjdCBTT0NLX1ZBTElEQVRFX1hNSVRcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdEVuYWJsZSBrZXJuZWwgc3VwcG9ydCBmb3IgdGhlIFBTUCBTZWN1cml0eSBQcm90b2NvbCAoUFNQKS5cbiAgMTM6XHRcdEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTpcbiAgMTQ6XHRcdCAgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2dvb2dsZS9wc3AvbWFpbi9kb2MvUFNQX0FyY2hfU3BlYy5wZGZcbiAgMTU6XHRcbiAgMTY6XHRcdElmIHVuc3VyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MjIKCQkJCQkJCW91dHB1dDogNzcKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIENvZGUgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHBsYXkgaGVyZSBpcyBgSU5FVF9QU1BgLiBJIHNlZSB0aGF0IHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyB0b3VjaGVkIGFyZSBgdGNwX3Y0X3JjdmAgYW5kIGB0Y3BfdjZfcmN2YC4gU2luY2UgdGhvc2UgYXJlIGJvdGggaW4gdGhlIGhvdC1wYXRoLCB3ZSBzaG91bGRuJiMzOTt0IHNwZWNpZmljYWxseSBsaXN0IHRoZW0gaW4gdGhlIGBGb2N1c1N5bWJvbHNgIGFzIHRoYXQgd291bGQgcHJvYmFibHkgYmUgb3ZlcmtpbGwuIEJ1dCB3YWl0LCBhbSBJIG1pc3NpbmcgYW55dGhpbmc/IEFoYSwgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AgaXMgYWN0dWFsbHkgaW5saW5lZCwgc28gbm8gbmVlZCB0byBtZW50aW9uIHRoYXQgZXhwbGljaXRseS4gQW5kIGB0Y3BfdGltZXdhaXRfc3RhdGVfcHJvY2Vzc2AgcmVtYWlucyB1bnRvdWNoZWQuCgpBbHJpZ2h0LCB0aGF0IHNldHRsZXMgaXQuIE5vIHNwZWNpZmljIHN5bWJvbHMgdG8gZm9jdXMgb24gaGVyZS4KCkxldCYjMzk7cyBwdXQgdGhpcyBhbGwgdG9nZXRoZXIgdGhlbjoKCiogICBgV29ydGhGdXp6aW5nYDogVHJ1ZQoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgWyYjMzQ7SU5FVF9QU1AmIzM0O11gCiogICBgRm9jdXNTeW1ib2xzYDogYFtdYAoKQW5kIHRoZSByZWFzb25pbmcgYmVoaW5kIGFsbCBvZiB0aGlzOiB0aGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgYW5kIHBvdGVudGlhbCBjb250cm9sIGZsb3cgcHJvYmxlbXMgd2l0aGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBgVElNRV9XQUlUYCBzb2NrZXRzIHdoZW4gdGhlIFBTUCBwb2xpY3kgcmVqZWN0cyBhIHBhY2tldC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBsb2dpYy4KClBlcmZlY3QuIE5vdyB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUX1BTUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvcnJlY3QgY29udHJvbCBmbG93IGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoIGZvciBUSU1FX1dBSVQgc29ja2V0cyB3aGVuIGEgcGFja2V0IGlzIGRyb3BwZWQgZHVlIHRvIFBTUCBwb2xpY3kgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUX1BTUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvcnJlY3QgY29udHJvbCBmbG93IGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoIGZvciBUSU1FX1dBSVQgc29ja2V0cyB3aGVuIGEgcGFja2V0IGlzIGRyb3BwZWQgZHVlIHRvIFBTUCBwb2xpY3kgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMTY6MDc6MDkuMDQ3MzYzNTA3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk5NTU2ODk2NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVF9QU1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBhbmQgaW5jb3JyZWN0IGNvbnRyb2wgZmxvdyBpbiB0aGUgVENQIHJlY2VpdmUgcGF0aCBmb3IgVElNRV9XQUlUIHNvY2tldHMgd2hlbiBhIHBhY2tldCBpcyBkcm9wcGVkIGR1ZSB0byBQU1AgcG9saWN5IGNoZWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yayBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTY6MDc6MDkuMDQ3MzY3Nzc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjU2MDgxNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZDczNjIwYzJhZWVjMjc4NWY5MzJkNjQ3OTQ3YWRhOTcyYzNmMjFhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDExIDE2OjA3OjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXFxuaW5kZXggMjA5ZWY3NTIyNTA4ZmMuLjRhNDZkYTM3NTA0M2JlIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXFxuQEAgLTIzMTgsOCArMjMxOCwxMCBAQCBpbnQgdGNwX3Y0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRkcm9wX3JlYXNvbiA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayhpbmV0X3R3c2soc2spLCBza2IpO1xcbi1cXHRcXHRpZiAoZHJvcF9yZWFzb24pXFxuLVxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRpZiAoZHJvcF9yZWFzb24pIHtcXG4rXFx0XFx0XFx0aW5ldF90d3NrX3B1dChpbmV0X3R3c2soc2spKTtcXG4rXFx0XFx0XFx0Z290byBkaXNjYXJkX2l0O1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFx0XFx0LyogdG8gQUNLICovXFxuIFxcdFxcdGZhbGx0aHJvdWdoO1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0L2lwdjYvdGNwX2lwdjYuY1xcbmluZGV4IGViZTE2MWQ3MmZiZDA3Li41MjJiYTQ1Y2U5Yjc1OSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jXFxuKysrIGIvbmV0L2lwdjYvdGNwX2lwdjYuY1xcbkBAIC0xOTc3LDggKzE5NzcsMTAgQEAgSU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgaW50IHRjcF92Nl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0ZHJvcF9yZWFzb24gPSBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2soaW5ldF90d3NrKHNrKSwgc2tiKTtcXG4tXFx0XFx0aWYgKGRyb3BfcmVhc29uKVxcbi1cXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0aWYgKGRyb3BfcmVhc29uKSB7XFxuK1xcdFxcdFxcdGluZXRfdHdza19wdXQoaW5ldF90d3NrKHNrKSk7XFxuK1xcdFxcdFxcdGdvdG8gZGlzY2FyZF9pdDtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcdFxcdC8qIHRvIEFDSyAqL1xcbiBcXHRcXHRmYWxsdGhyb3VnaDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTY6MDc6MDkuNDEzODI1NjM2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU4OTIxODc2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUX1BTUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvcnJlY3QgY29udHJvbCBmbG93IGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoIGZvciBUSU1FX1dBSVQgc29ja2V0cyB3aGVuIGEgcGFja2V0IGlzIGRyb3BwZWQgZHVlIHRvIFBTUCBwb2xpY3kgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVkNzM2MjBjMmFlZWMyNzg1ZjkzMmQ2NDc5NDdhZGE5NzJjM2YyMWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxNjowNzowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5pbmRleCAyMDllZjc1MjI1MDhmYy4uNGE0NmRhMzc1MDQzYmUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfaXB2NC5jXG4rKysgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5AQCAtMjMxOCw4ICsyMzE4LDEwIEBAIGludCB0Y3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdH1cbiBcbiBcdFx0ZHJvcF9yZWFzb24gPSBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2soaW5ldF90d3NrKHNrKSwgc2tiKTtcbi1cdFx0aWYgKGRyb3BfcmVhc29uKVxuLVx0XHRcdGJyZWFrO1xuK1x0XHRpZiAoZHJvcF9yZWFzb24pIHtcbitcdFx0XHRpbmV0X3R3c2tfcHV0KGluZXRfdHdzayhzaykpO1xuK1x0XHRcdGdvdG8gZGlzY2FyZF9pdDtcbitcdFx0fVxuIFx0fVxuIFx0XHQvKiB0byBBQ0sgKi9cbiBcdFx0ZmFsbHRocm91Z2g7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9pcHY2LmNcbmluZGV4IGViZTE2MWQ3MmZiZDA3Li41MjJiYTQ1Y2U5Yjc1OSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmNcbisrKyBiL25ldC9pcHY2L3RjcF9pcHY2LmNcbkBAIC0xOTc3LDggKzE5NzcsMTAgQEAgSU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgaW50IHRjcF92Nl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0fVxuIFxuIFx0XHRkcm9wX3JlYXNvbiA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayhpbmV0X3R3c2soc2spLCBza2IpO1xuLVx0XHRpZiAoZHJvcF9yZWFzb24pXG4tXHRcdFx0YnJlYWs7XG4rXHRcdGlmIChkcm9wX3JlYXNvbikge1xuK1x0XHRcdGluZXRfdHdza19wdXQoaW5ldF90d3NrKHNrKSk7XG4rXHRcdFx0Z290byBkaXNjYXJkX2l0O1xuK1x0XHR9XG4gXHR9XG4gXHRcdC8qIHRvIEFDSyAqL1xuIFx0XHRmYWxsdGhyb3VnaDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE2OjA3OjA5LjQxMzgyNzA4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDkyMTg1NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVENQIFRJTUVfV0FJVCBTdGF0ZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSwgYW5kIGl0J3MgdG91Y2hpbmcgYG5ldC9pcHY0L3RjcF9pcHY0LmNgIGFuZCBgbmV0L2lwdjYvdGNwX2lwdjYuY2AuIEludGVyZXN0aW5nLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGFyb3VuZCBob3cgd2UgaGFuZGxlIGEgZHJvcCByZWFzb24gcmV0dXJuZWQgYnkgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AuIEl0J3MgZGV2aWF0aW5nIGZyb20gYSBzaW1wbGUgYGJyZWFrYCBub3csIGFuZCBpbnN0ZWFkIHVzZXMgYGluZXRfdHdza19wdXRgIG9uIHRoZSBgaW5ldF90d3NrYCBhc3NvY2lhdGVkIHdpdGggdGhlIHNvY2tldCAoYHNrYCksIGFuZCB0aGVuIGp1bXBzIHRvIGEgYGRpc2NhcmRfaXRgIGxhYmVsLiBUaGF0J3MgaW1tZWRpYXRlbHkgbWFraW5nIG1lIHRoaW5rIGFib3V0IHJlZmVyZW5jZSBjb3VudGluZyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMgaW4gdGhlIFRJTUVfV0FJVCBzdGF0ZS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGVyZSogdGhpcyBgcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrYCBpcyBjYWxsZWQgd2l0aGluIHRoZSByZWNlaXZlciByb3V0aW5lcyBgdGNwX3Y0X3JjdmAgYW5kIGB0Y3BfdjZfcmN2YC4gVGhpcyBsb29rcyBsaWtlIGl0J3Mgc3BlY2lmaWNhbGx5IGFib3V0IFRJTUVfV0FJVCBoYW5kbGluZywgYnV0IEkgbmVlZCBjb25maXJtYXRpb24uXG5cblRvIHZlcmlmeSBteSBhc3N1bXB0aW9uIGFuZCBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgZnVuY3Rpb24sIEknbGwgbGV2ZXJhZ2UgYGdyZXBwZXJgIHRvIHF1aWNrbHkgbG9jYXRlIGFsbCB1c2FnZXMgb2YgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AuIFRoaXMgd2lsbCBzaG93IG1lIHRoZSBjYWxsaW5nIGNvbnRleHQgYW5kIGFsbG93IG1lIHRvIHF1aWNrbHkgZ2V0IGJhY2sgdXAgdG8gc3BlZWQgb24gdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE2OjA3OjEzLjYyMzA0NzU2NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ4MTY2ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBzcF90d3NrX3J4X3BvbGljeV9jaGVja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9wc3AvZnVuY3Rpb25zLmg9MTIxPXN0YXRpYyBpbmxpbmUgZW51bSBza2JfZHJvcF9yZWFzb25cXG5pbmNsdWRlL25ldC9wc3AvZnVuY3Rpb25zLmg6MTIyOnBzcF90d3NrX3J4X3BvbGljeV9jaGVjayhzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5pbmNsdWRlL25ldC9wc3AvZnVuY3Rpb25zLmgtMTIzLXtcXG4tLVxcbmluY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaD0xODY9c3RhdGljIGlubGluZSBlbnVtIHNrYl9kcm9wX3JlYXNvblxcbmluY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaDoxODc6cHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKHN0cnVjdCBpbmV0X3RpbWV3YWl0X3NvY2sgKnR3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmluY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaC0xODgte1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMDY3PWludCB0Y3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzMTktXFxubmV0L2lwdjQvdGNwX2lwdjQuYzoyMzIwOlxcdFxcdGRyb3BfcmVhc29uID0gcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKGluZXRfdHdzayhzayksIHNrYik7XFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMzIxLVxcdFxcdGlmIChkcm9wX3JlYXNvbikge1xcbi0tXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jPTEwMT10Y3BfdGltZXdhaXRfc3RhdGVfcHJvY2VzcyhzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy0xMTUtXFx0ICovXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jOjExNjpcXHRwc3BfZHJvcCA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayh0dywgc2tiKTtcXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtMTE3LVxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xNzI4PUlORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCB0Y3BfdjZfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE5NzgtXFxubmV0L2lwdjYvdGNwX2lwdjYuYzoxOTc5OlxcdFxcdGRyb3BfcmVhc29uID0gcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKGluZXRfdHdzayhzayksIHNrYik7XFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xOTgwLVxcdFxcdGlmIChkcm9wX3JlYXNvbikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzoxNS40NzEyMTk1NjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTkwNDI1NDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhhdCBxdWVyeSwgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGZpZ3VyZSBvdXQgKndoZXJlKiB0aGlzIGBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2tgIGZsYWcgaXMgYWN0dWFsbHkgZW5hYmxlZC4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSBhbHJlYWR5IGhhdmUgYSBmZXcgbGlrZWx5IHNwb3RzIGluIG1pbmQgLSBidXQgSSBuZWVkIHRvIGJlIG1ldGhvZGljYWwuIFRoaXMgaXNuJ3QganVzdCBhIGJsaW5kIHNlYXJjaDsgSSdtIGxvb2tpbmcgZm9yIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgY29udHJvbHMgdGhpcyBzcGVjaWZpYyBiZWhhdmlvci4gSXQncyBsaWtlbHkgd2l0aGluIGEgYnJvYWRlciBzeXN0ZW0gb2YgbmV0d29yayBwb2xpY3kgb3Igc2VjdXJpdHkgc2V0dGluZ3MsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgY29udGV4dC4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyB0byBkaWcgaW4uIEkgd2lsbCBzdGFydCB3aXRoIGEgc2VhcmNoIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBtYXliZSB0aGUgZG9jdW1lbnRhdGlvbi4gQW5kIEkgc2hvdWxkIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBzZXR0aW5ncyBtaWdodCBiZSBkeW5hbWljLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTUyLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTY6MDc6MTguNDYxNjQ3NTExWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDcwMDU0MDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19ORVRfUFNQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzoyMC4zNjg2NjQ3MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MzAyNDQ5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBBY3RpdmF0aW9uIG9mIGBwc3BgIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZW5hYmxpbmcgdGhpcyBgcHNwYCBmdW5jdGlvbmFsaXR5LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGluY2x1ZGUgZmlsZXMgdGhhdCBkZWZpbmUgaXRzIGludGVyZmFjZS4gQSBsaWtlbHkgc3RhcnRpbmcgcG9pbnQgd291bGQgYmUgYGluY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaGAuIFRoYXQgaGVhZGVyIGZpbGUgaXMgdXN1YWxseSB0aGUgcGxhY2Ugd2hlcmUgdGhlIGNvcmUgZGVjbGFyYXRpb25zIGFuZCBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgd291bGQgbGl2ZS4gSSdtIGdvaW5nIHRvIGNoZWNrIHRoYXQgZmlsZSBhbmQgbG9vayBmb3IgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMsIHByZXByb2Nlc3NvciBtYWNyb3MsIG9yIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWlnaHQgYmUgdGllZCB0byB0aGUgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIG9mIHRoaXMgZmVhdHVyZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBjb25maWd1cmF0aW9ucyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgYHBzcGAgaXMgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM5NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE2OjA3OjIzLjA5ODkxMTM0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY5MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9uZXQvcHNwL2Z1bmN0aW9ucy5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi9cXG4gICAyOlxcdFxcbiAgIDM6XFx0I2lmbmRlZiBfX05FVF9QU1BfSEVMUEVSU19IXFxuICAgNDpcXHQjZGVmaW5lIF9fTkVUX1BTUF9IRUxQRVJTX0hcXG4gICA1OlxcdFxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NrYnVmZi5oXFx1MDAzZVxcbiAgIDc6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JjdXBkYXRlLmhcXHUwMDNlXFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdWRwLmhcXHUwMDNlXFxuICAgOTpcXHQjaW5jbHVkZSBcXHUwMDNjbmV0L3NvY2suaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvdGNwLmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbmV0L3BzcC90eXBlcy5oXFx1MDAzZVxcbiAgMTI6XFx0XFxuICAxMzpcXHRzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrO1xcbiAgMTQ6XFx0XFxuICAxNTpcXHQvKiBEcml2ZXItZmFjaW5nIEFQSSAqL1xcbiAgMTY6XFx0c3RydWN0IHBzcF9kZXYgKlxcbiAgMTc6XFx0cHNwX2Rldl9jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IHBzcF9kZXZfb3BzICpwc2Rfb3BzLFxcbiAgMTg6XFx0XFx0ICAgICAgIHN0cnVjdCBwc3BfZGV2X2NhcHMgKnBzZF9jYXBzLCB2b2lkICpwcml2X3B0cik7XFxuICAxOTpcXHR2b2lkIHBzcF9kZXZfdW5yZWdpc3RlcihzdHJ1Y3QgcHNwX2RldiAqcHNkKTtcXG4gIDIwOlxcdGJvb2wgcHNwX2Rldl9lbmNhcHN1bGF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiBzcGksXFxuICAyMTpcXHRcXHRcXHRcXHQgdTggdmVyLCBfX2JlMTYgc3BvcnQpO1xcbiAgMjI6XFx0aW50IHBzcF9kZXZfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHUxNiBkZXZfaWQsIHU4IGdlbmVyYXRpb24sIGJvb2wgc3RyaXBfaWN2KTtcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0LyogS2VybmVsLWZhY2luZyBBUEkgKi9cXG4gIDI1OlxcdHZvaWQgcHNwX2Fzc29jX3B1dChzdHJ1Y3QgcHNwX2Fzc29jICpwYXMpO1xcbiAgMjY6XFx0XFxuICAyNzpcXHRzdGF0aWMgaW5saW5lIHZvaWQgKnBzcF9hc3NvY19kcnZfZGF0YShzdHJ1Y3QgcHNwX2Fzc29jICpwYXMpXFxuICAyODpcXHR7XFxuICAyOTpcXHRcXHRyZXR1cm4gcGFzLVxcdTAwM2VkcnZfZGF0YTtcXG4gIDMwOlxcdH1cXG4gIDMxOlxcdFxcbiAgMzI6XFx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0lORVRfUFNQKVxcbiAgMzM6XFx0dW5zaWduZWQgaW50IHBzcF9rZXlfc2l6ZSh1MzIgdmVyc2lvbik7XFxuICAzNDpcXHR2b2lkIHBzcF9za19hc3NvY19mcmVlKHN0cnVjdCBzb2NrICpzayk7XFxuICAzNTpcXHR2b2lkIHBzcF90d3NrX2luaXQoc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsIGNvbnN0IHN0cnVjdCBzb2NrICpzayk7XFxuICAzNjpcXHR2b2lkIHBzcF90d3NrX2Fzc29jX2ZyZWUoc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcpO1xcbiAgMzc6XFx0dm9pZCBwc3BfcmVwbHlfc2V0X2RlY3J5cHRlZChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xcbiAgMzg6XFx0XFxuICAzOTpcXHRzdGF0aWMgaW5saW5lIHN0cnVjdCBwc3BfYXNzb2MgKnBzcF9za19hc3NvYyhjb25zdCBzdHJ1Y3Qgc29jayAqc2spXFxuICA0MDpcXHR7XFxuICA0MTpcXHRcXHRyZXR1cm4gcmN1X2RlcmVmZXJlbmNlX2NoZWNrKHNrLVxcdTAwM2Vwc3BfYXNzb2MsIGxvY2tkZXBfc29ja19pc19oZWxkKHNrKSk7XFxuICA0MjpcXHR9XFxuICA0MzpcXHRcXG4gIDQ0OlxcdHN0YXRpYyBpbmxpbmUgdm9pZFxcbiAgNDU6XFx0cHNwX2VucXVldWVfc2V0X2RlY3J5cHRlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuICA0NjpcXHR7XFxuICA0NzpcXHRcXHRzdHJ1Y3QgcHNwX2Fzc29jICpwYXM7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdHBhcyA9IHBzcF9za19hc3NvYyhzayk7XFxuICA1MDpcXHRcXHRpZiAocGFzIFxcdTAwMjZcXHUwMDI2IHBhcy1cXHUwMDNldHguc3BpKVxcbiAgNTE6XFx0XFx0XFx0c2tiLVxcdTAwM2VkZWNyeXB0ZWQgPSAxO1xcbiAgNTI6XFx0fVxcbiAgNTM6XFx0XFxuICA1NDpcXHRzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmdcXG4gIDU1OlxcdF9fcHNwX3NrYl9jb2FsZXNjZV9kaWZmKGNvbnN0IHN0cnVjdCBza19idWZmICpvbmUsIGNvbnN0IHN0cnVjdCBza19idWZmICp0d28sXFxuICA1NjpcXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIGRpZmZzKVxcbiAgNTc6XFx0e1xcbiAgNTg6XFx0XFx0c3RydWN0IHBzcF9za2JfZXh0ICphLCAqYjtcXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0YSA9IHNrYl9leHRfZmluZChvbmUsIFNLQl9FWFRfUFNQKTtcXG4gIDYxOlxcdFxcdGIgPSBza2JfZXh0X2ZpbmQodHdvLCBTS0JfRVhUX1BTUCk7XFxuICA2MjpcXHRcXG4gIDYzOlxcdFxcdGRpZmZzIHw9ICghIWEpIF4gKCEhYik7XFxuICA2NDpcXHRcXHRpZiAoIWRpZmZzIFxcdTAwMjZcXHUwMDI2IHVubGlrZWx5KGEpKVxcbiAgNjU6XFx0XFx0XFx0ZGlmZnMgfD0gbWVtY21wKGEsIGIsIHNpemVvZigqYSkpO1xcbiAgNjY6XFx0XFx0cmV0dXJuIGRpZmZzO1xcbiAgNjc6XFx0fVxcbiAgNjg6XFx0XFxuICA2OTpcXHRzdGF0aWMgaW5saW5lIGJvb2xcXG4gIDcwOlxcdHBzcF9pc19hbGxvd2VkX25vbmRhdGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHBzcF9hc3NvYyAqcGFzKVxcbiAgNzE6XFx0e1xcbiAgNzI6XFx0XFx0Ym9vbCBmaW4gPSAhIShUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZXRjcF9mbGFncyBcXHUwMDI2IFRDUEhEUl9GSU4pO1xcbiAgNzM6XFx0XFx0dTMyIGVuZF9zZXEgPSBUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWVuZF9zZXE7XFxuICA3NDpcXHRcXHR1MzIgc2VxID0gVENQX1NLQl9DQihza2IpLVxcdTAwM2VzZXE7XFxuICA3NTpcXHRcXHRib29sIHB1cmVfZmluO1xcbiAgNzY6XFx0XFxuICA3NzpcXHRcXHRwdXJlX2ZpbiA9IGZpbiBcXHUwMDI2XFx1MDAyNiBlbmRfc2VxIC0gc2VxID09IDE7XFxuICA3ODpcXHRcXG4gIDc5OlxcdFxcdHJldHVybiBzZXEgPT0gZW5kX3NlcSB8fCAocHVyZV9maW4gXFx1MDAyNlxcdTAwMjYgc2VxID09IHBhcy1cXHUwMDNldXBncmFkZV9zZXEpO1xcbiAgODA6XFx0fVxcbiAgODE6XFx0XFxuICA4MjpcXHRzdGF0aWMgaW5saW5lIGJvb2xcXG4gIDgzOlxcdHBzcF9wc2VfbWF0Y2hlc19wYXMoc3RydWN0IHBzcF9za2JfZXh0ICpwc2UsIHN0cnVjdCBwc3BfYXNzb2MgKnBhcylcXG4gIDg0OlxcdHtcXG4gIDg1OlxcdFxcdHJldHVybiBwc2UgXFx1MDAyNlxcdTAwMjYgcGFzLVxcdTAwM2VyeC5zcGkgPT0gcHNlLVxcdTAwM2VzcGkgXFx1MDAyNlxcdTAwMjZcXG4gIDg2OlxcdFxcdCAgICAgICBwYXMtXFx1MDAzZWdlbmVyYXRpb24gPT0gcHNlLVxcdTAwM2VnZW5lcmF0aW9uIFxcdTAwMjZcXHUwMDI2XFxuICA4NzpcXHRcXHQgICAgICAgcGFzLVxcdTAwM2V2ZXJzaW9uID09IHBzZS1cXHUwMDNldmVyc2lvbiBcXHUwMDI2XFx1MDAyNlxcbiAgODg6XFx0XFx0ICAgICAgIHBhcy1cXHUwMDNlZGV2X2lkID09IHBzZS1cXHUwMDNlZGV2X2lkO1xcbiAgODk6XFx0fVxcbiAgOTA6XFx0XFxuICA5MTpcXHRzdGF0aWMgaW5saW5lIGVudW0gc2tiX2Ryb3BfcmVhc29uXFxuICA5MjpcXHRfX3BzcF9za19yeF9wb2xpY3lfY2hlY2soc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHBzcF9hc3NvYyAqcGFzKVxcbiAgOTM6XFx0e1xcbiAgOTQ6XFx0XFx0c3RydWN0IHBzcF9za2JfZXh0ICpwc2UgPSBza2JfZXh0X2ZpbmQoc2tiLCBTS0JfRVhUX1BTUCk7XFxuICA5NTpcXHRcXG4gIDk2OlxcdFxcdGlmICghcGFzKVxcbiAgOTc6XFx0XFx0XFx0cmV0dXJuIHBzZSA/IFNLQl9EUk9QX1JFQVNPTl9QU1BfSU5QVVQgOiAwO1xcbiAgOTg6XFx0XFxuICA5OTpcXHRcXHRpZiAobGlrZWx5KHBzcF9wc2VfbWF0Y2hlc19wYXMocHNlLCBwYXMpKSkge1xcbiAxMDA6XFx0XFx0XFx0aWYgKHVubGlrZWx5KCFwYXMtXFx1MDAzZXBlZXJfdHgpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzoyMy4wOTkwMDkzNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1Mzc0MzkyODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVENQIFJlY2VpdmUgUGF0aCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb25maWcgaXMgYElORVRfUFNQYCwgbWVhbmluZyB0aGlzIHBhdGNoIGlzIHNwZWNpZmljYWxseSB0aWVkIHRvIFBsdWdnYWJsZSBTZWN1cml0eSBQcm90b2NvbCwgYW5kIGl0J3MgaGl0dGluZyB0aGUgYHRjcF92NF9yY3ZgIGFuZCBgdGNwX3Y2X3JjdmAgZnVuY3Rpb25zLiBSaWdodCBhd2F5LCB0aGF0IHJhaXNlcyBhIGZsYWcg4oCTIHRoZXNlIGFyZSBjb3JlLCBob3QtcGF0aCBmdW5jdGlvbnMgaW4gdGhlIFRDUCByZWNlaXZlIHBhdGguIFRoZSBmaXggc2VlbXMgdG8gYmUgd2l0aGluIHRoZSBgVElNRV9XQUlUYCBzb2NrZXQgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBhZGRyZXNzaW5nIGFuIGlzc3VlIHdoZXJlIGBkcm9wX3JlYXNvbmAgZnJvbSBgcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrYCB3YXMgaW5jb3JyZWN0bHkgYnJlYWtpbmcgYSBsb29wLCBsZWFkaW5nIHRvIGEgZHJvcHBlZCBgdHdza2AgYW5kIGBza2JgLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBiZWNvbWVzIGhvdyB0byBjaGFyYWN0ZXJpemUgdGhpcyBjaGFuZ2UgZWZmZWN0aXZlbHkgZm9yIHRlc3Rpbmcgb3IgYW5hbHlzaXMuIFNob3VsZCBJIGJlIGZvY3VzaW5nIG9uIGB0Y3BfdjRfcmN2YCBhbmQgYHRjcF92Nl9yY3ZgIGRpcmVjdGx5PyBUaGV5IGFyZSBpbmRlZWQgY3JpdGljYWwsIGJ1dCB0aGV5J3JlIHNvIGZ1bmRhbWVudGFsIHRoYXQgaW5jbHVkaW5nIHRoZW0gaW4gYSBgRm9jdXNTeW1ib2xzYCBsaXN0IGNvdWxkIHRocm93IG9mZiB0ZXN0IGRpc3RyaWJ1dGlvbnMgZHVlIHRvIHRoZWlyIHByZXZhbGVuY2UuIFdoYXQncyB0aGUgYmVzdCBhcHByb2FjaCBoZXJlP1xuXG5gcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrYCBpcyB0aGUgbGlrZWx5IGN1bHByaXQgb2YgdGhlIGJ1Zy4gSXQncyBhbiBpbmxpbmUgZnVuY3Rpb24sIHNvIGl0IHdvbid0IGJlIGluIHRoZSBzeW1ib2wgdGFibGUsIHdoaWNoIG1ha2VzIGl0IGFuIGludGVyZXN0aW5nIGNvbnNpZGVyYXRpb24uIEkgYWxzbyBuZWVkIHRvIHRoaW5rIGFib3V0IGFsdGVybmF0aXZlcy4gYHRjcF90aW1ld2FpdF9zdGF0ZV9wcm9jZXNzYCBpc24ndCBtb2RpZmllZCBieSB0aGlzIHBhdGNoIGRpcmVjdGx5LiBXaGF0IG90aGVyIG9wdGlvbnMgYXJlIHRoZXJlP1xuXG5MZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGxvY2F0aW9uIGZvciBgdGNwX3Y0X3JjdmAsIGFyb3VuZCBsaW5lIDIzMTggaW4gYG5ldC9pcHY0L3RjcF9pcHY0LmNgIHRvIHNvbGlkaWZ5IHdoYXQncyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxOTEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzoyOS42MzY0NTAzODhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjMwMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjMwMDpcXHRcXHRcXHRnb3RvIGNzdW1fZXJyb3I7XFxuMjMwMTpcXHRcXHR9XFxuMjMwMjpcXHRcXG4yMzAzOlxcdFxcdHR3X3N0YXR1cyA9IHRjcF90aW1ld2FpdF9zdGF0ZV9wcm9jZXNzKGluZXRfdHdzayhzayksIHNrYiwgdGgsIFxcdTAwMjZpc24sXFxuMjMwNDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmRyb3BfcmVhc29uKTtcXG4yMzA1OlxcdFxcdHN3aXRjaCAodHdfc3RhdHVzKSB7XFxuMjMwNjpcXHRcXHRjYXNlIFRDUF9UV19TWU46IHtcXG4yMzA3OlxcdFxcdFxcdHN0cnVjdCBzb2NrICpzazIgPSBpbmV0X2xvb2t1cF9saXN0ZW5lcihuZXQsIHNrYiwgX190Y3BfaGRybGVuKHRoKSxcXG4yMzA4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGlwaC1cXHUwMDNlc2FkZHIsIHRoLVxcdTAwM2Vzb3VyY2UsXFxuMjMwOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpcGgtXFx1MDAzZWRhZGRyLCB0aC1cXHUwMDNlZGVzdCxcXG4yMzEwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGluZXRfaWlmKHNrYiksXFxuMjMxMTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRzZGlmKTtcXG4yMzEyOlxcdFxcdFxcdGlmIChzazIpIHtcXG4yMzEzOlxcdFxcdFxcdFxcdGluZXRfdHdza19kZXNjaGVkdWxlX3B1dChpbmV0X3R3c2soc2spKTtcXG4yMzE0OlxcdFxcdFxcdFxcdHNrID0gc2syO1xcbjIzMTU6XFx0XFx0XFx0XFx0dGNwX3Y0X3Jlc3RvcmVfY2Ioc2tiKTtcXG4yMzE2OlxcdFxcdFxcdFxcdHJlZmNvdW50ZWQgPSBmYWxzZTtcXG4yMzE3OlxcdFxcdFxcdFxcdGdvdG8gcHJvY2VzcztcXG4yMzE4OlxcdFxcdFxcdH1cXG4yMzE5OlxcdFxcbjIzMjA6XFx0XFx0XFx0ZHJvcF9yZWFzb24gPSBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2soaW5ldF90d3NrKHNrKSwgc2tiKTtcXG4yMzIxOlxcdFxcdFxcdGlmIChkcm9wX3JlYXNvbikge1xcbjIzMjI6XFx0XFx0XFx0XFx0aW5ldF90d3NrX3B1dChpbmV0X3R3c2soc2spKTtcXG4yMzIzOlxcdFxcdFxcdFxcdGdvdG8gZGlzY2FyZF9pdDtcXG4yMzI0OlxcdFxcdFxcdH1cXG4yMzI1OlxcdFxcdH1cXG4yMzI2OlxcdFxcdFxcdC8qIHRvIEFDSyAqL1xcbjIzMjc6XFx0XFx0XFx0ZmFsbHRocm91Z2g7XFxuMjMyODpcXHRcXHRjYXNlIFRDUF9UV19BQ0s6XFxuMjMyOTpcXHRcXHRjYXNlIFRDUF9UV19BQ0tfT09XOlxcbjIzMzA6XFx0XFx0XFx0dGNwX3Y0X3RpbWV3YWl0X2Fjayhzaywgc2tiLCB0d19zdGF0dXMpO1xcbjIzMzE6XFx0XFx0XFx0YnJlYWs7XFxuMjMzMjpcXHRcXHRjYXNlIFRDUF9UV19SU1Q6XFxuMjMzMzpcXHRcXHRcXHR0Y3BfdjRfc2VuZF9yZXNldChzaywgc2tiLCBTS19SU1RfUkVBU09OX1RDUF9USU1FV0FJVF9TT0NLRVQpO1xcbjIzMzQ6XFx0XFx0XFx0aW5ldF90d3NrX2Rlc2NoZWR1bGVfcHV0KGluZXRfdHdzayhzaykpO1xcbjIzMzU6XFx0XFx0XFx0Z290byBkaXNjYXJkX2l0O1xcbjIzMzY6XFx0XFx0Y2FzZSBUQ1BfVFdfU1VDQ0VTUzo7XFxuMjMzNzpcXHRcXHR9XFxuMjMzODpcXHRcXHRnb3RvIGRpc2NhcmRfaXQ7XFxuMjMzOTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE2OjA3OjI5LjYzNjY4NTQxOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTcyOTIyMTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVxdWVzdCBmb3IgRm9jdXNlZCBGdW5jdGlvbiBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBpbnN0cnVjdGlvbiBpcyB0byBhdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBUaGUgY2hhbmdlIGlzIGRlZmluaXRlbHkgaW4gYHRjcF92NF9yY3ZgIGFuZCBgdGNwX3Y2X3JjdmAuIFRob3NlIGFyZSBjbGFzc2ljIGhvdC1wYXRoIGZ1bmN0aW9ucyBmb3IgVENQIHBhY2tldCByZWNlcHRpb24sIHNvIGxpc3RpbmcgdGhlbSB3b3VsZCBjbGVhcmx5IHZpb2xhdGUgdGhlIFwic2tld2VkIHRlc3QgZGlzdHJpYnV0aW9uc1wiIGd1aWRlbGluZS4gSSdtIGdvaW5nIHRvIGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5IGZvciBub3csIGFzIHRoYXQncyB0aGUgbW9zdCBjb25zZXJ2YXRpdmUgYXBwcm9hY2ggYW5kIGFsaWducyB3aXRoIHRoZSBleHBsaWNpdCBkaXJlY3RpdmUuXG5cbkJ1dCwgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGVyZSAqYW55dGhpbmcqIGVsc2UsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBQYWNrZXQgU3RhdGUgUHJvY2Vzc29yIChQU1ApIHRoYXQgd2UgY291bGQgcG90ZW50aWFsbHkgZm9jdXMgb24/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNvZGUuIFRoZSBwcm9tcHQgKmlzKiBhc2tpbmcgZm9yIGZvY3VzZWQgZnVuY3Rpb25zLCBpZiB0aGV5IGV4aXN0LiBJdCBtaWdodCBiZSB3b3J0aCBhIGxvb2suIEknbGwgc2VhcmNoIGBuZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNgIGxvb2tpbmcgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIGB0Y3BfdGltZXdhaXRfc3RhdGVfcHJvY2Vzc2AuIExldCdzIHNlZSBpZiB0aGF0IGZpbGUgaG9sZHMgYSByZWxldmFudCBmdW5jdGlvbiwgc28gSSBjYW4gZW5zdXJlIEknbSBub3QgbWlzc2luZyBhIG1vcmUgc3BlY2lmaWMgZW50cnkgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NjMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzozMy42MDk2MTA5NjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMDpcXHRlbnVtIHRjcF90d19zdGF0dXNcXG4gMTAxOlxcdHRjcF90aW1ld2FpdF9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBpbmV0X3RpbWV3YWl0X3NvY2sgKnR3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiAxMDI6XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHRjcGhkciAqdGgsIHUzMiAqdHdfaXNuLFxcbiAxMDM6XFx0XFx0XFx0XFx0ICAgZW51bSBza2JfZHJvcF9yZWFzb24gKmRyb3BfcmVhc29uKVxcbiAxMDQ6XFx0e1xcbiAxMDU6XFx0XFx0c3RydWN0IHRjcF90aW1ld2FpdF9zb2NrICp0Y3B0dyA9IHRjcF90d3NrKChzdHJ1Y3Qgc29jayAqKXR3KTtcXG4gMTA2OlxcdFxcdHUzMiByY3Zfbnh0ID0gUkVBRF9PTkNFKHRjcHR3LVxcdTAwM2V0d19yY3Zfbnh0KTtcXG4gMTA3OlxcdFxcdHN0cnVjdCB0Y3Bfb3B0aW9uc19yZWNlaXZlZCB0bXBfb3B0O1xcbiAxMDg6XFx0XFx0ZW51bSBza2JfZHJvcF9yZWFzb24gcHNwX2Ryb3A7XFxuIDEwOTpcXHRcXHRib29sIHBhd3NfcmVqZWN0ID0gZmFsc2U7XFxuIDExMDpcXHRcXHRpbnQgdHNfcmVjZW50X3N0YW1wO1xcbiAxMTE6XFx0XFxuIDExMjpcXHRcXHQvKiBJbnN0ZWFkIG9mIGRyb3BwaW5nIGltbWVkaWF0ZWx5LCB3YWl0IHRvIHNlZSB3aGF0IHZhbHVlIGlzXFxuIDExMzpcXHRcXHQgKiByZXR1cm5lZC4gV2Ugd2lsbCBhY2NlcHQgYSBub24gcHNwLWVuY2Fwc3VsYXRlZCBzeW4gaW4gdGhlXFxuIDExNDpcXHRcXHQgKiBjYXNlIHdoZXJlIFRDUF9UV19TWU4gaXMgcmV0dXJuZWQuXFxuIDExNTpcXHRcXHQgKi9cXG4gMTE2OlxcdFxcdHBzcF9kcm9wID0gcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKHR3LCBza2IpO1xcbiAxMTc6XFx0XFxuIDExODpcXHRcXHR0bXBfb3B0LnNhd190c3RhbXAgPSAwO1xcbiAxMTk6XFx0XFx0dHNfcmVjZW50X3N0YW1wID0gUkVBRF9PTkNFKHRjcHR3LVxcdTAwM2V0d190c19yZWNlbnRfc3RhbXApO1xcbiAxMjA6XFx0XFx0aWYgKHRoLVxcdTAwM2Vkb2ZmIFxcdTAwM2UgKHNpemVvZigqdGgpIFxcdTAwM2VcXHUwMDNlIDIpIFxcdTAwMjZcXHUwMDI2IHRzX3JlY2VudF9zdGFtcCkge1xcbiAxMjE6XFx0XFx0XFx0dGNwX3BhcnNlX29wdGlvbnModHdza19uZXQodHcpLCBza2IsIFxcdTAwMjZ0bXBfb3B0LCAwLCBOVUxMKTtcXG4gMTIyOlxcdFxcbiAxMjM6XFx0XFx0XFx0aWYgKHRtcF9vcHQuc2F3X3RzdGFtcCkge1xcbiAxMjQ6XFx0XFx0XFx0XFx0aWYgKHRtcF9vcHQucmN2X3RzZWNyKVxcbiAxMjU6XFx0XFx0XFx0XFx0XFx0dG1wX29wdC5yY3ZfdHNlY3IgLT0gdGNwdHctXFx1MDAzZXR3X3RzX29mZnNldDtcXG4gMTI2OlxcdFxcdFxcdFxcdHRtcF9vcHQudHNfcmVjZW50XFx0PSBSRUFEX09OQ0UodGNwdHctXFx1MDAzZXR3X3RzX3JlY2VudCk7XFxuIDEyNzpcXHRcXHRcXHRcXHR0bXBfb3B0LnRzX3JlY2VudF9zdGFtcFxcdD0gdHNfcmVjZW50X3N0YW1wO1xcbiAxMjg6XFx0XFx0XFx0XFx0cGF3c19yZWplY3QgPSB0Y3BfcGF3c19yZWplY3QoXFx1MDAyNnRtcF9vcHQsIHRoLVxcdTAwM2Vyc3QpO1xcbiAxMjk6XFx0XFx0XFx0fVxcbiAxMzA6XFx0XFx0fVxcbiAxMzE6XFx0XFxuIDEzMjpcXHRcXHRpZiAoUkVBRF9PTkNFKHR3LVxcdTAwM2V0d19zdWJzdGF0ZSkgPT0gVENQX0ZJTl9XQUlUMikge1xcbiAxMzM6XFx0XFx0XFx0LyogSnVzdCByZXBlYXQgYWxsIHRoZSBjaGVja3Mgb2YgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzKCkgKi9cXG4gMTM0OlxcdFxcbiAxMzU6XFx0XFx0XFx0aWYgKHBzcF9kcm9wKVxcbiAxMzY6XFx0XFx0XFx0XFx0Z290byBvdXRfcHV0O1xcbiAxMzc6XFx0XFxuIDEzODpcXHRcXHRcXHQvKiBPdXQgb2Ygd2luZG93LCBzZW5kIEFDSyAqL1xcbiAxMzk6XFx0XFx0XFx0aWYgKHBhd3NfcmVqZWN0IHx8XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE2OjA3OjMzLjYwOTcwNTYxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzA2Mzc3NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBUQ1AgUmVjZWl2ZSBQYXRoIE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlc2UgYHRjcF92NF9yY3ZgIGFuZCBgdGNwX3Y2X3JjdmAgZnVuY3Rpb25zLiBUaGV5J3JlIGNsZWFybHkgcGVyZm9ybWFuY2UtY3JpdGljYWwsIHJpZ2h0IGluIHRoZSBob3QgcGF0aC4gVGhhdCBtZWFucyBJIG5lZWQgdG8gYmUgKmV4dHJlbWVseSogY2FyZWZ1bCBhYm91dCBhbnkgY2hhbmdlcyBJIG1ha2UgdG8gdGhlbS4gS2VlcGluZyB0aGF0IGluIG1pbmQsIEknbSBnb2luZyB0byBsZWF2ZSB0aGUgYEZvY3VzU3ltYm9sc2AgZW1wdHkgZm9yIG5vdywgdGhhdCdzIGp1c3QgYSBnb29kIHByYWN0aWNlIGluIHRoaXMgY2FzZS4gSSBkb24ndCB3YW50IHRvIGluYWR2ZXJ0ZW50bHkgaW50cm9kdWNlIGFueSBzbG93ZG93biBieSBhZGRpbmcgZXZlbiBhIHRpbnkgYW1vdW50IG9mIG92ZXJoZWFkLlxuXG5Ob3csIHRoZSBkb2N1bWVudGF0aW9uIHN1Z2dlc3RzIHRoYXQgYElORVRfUFNQYCBpcyB0aGUgY29uZmlnIG9wdGlvbiByZXNwb25zaWJsZSBmb3IgdGhlIG9wdGltaXphdGlvbiBJJ20gbG9va2luZyBhdC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBhY2N1cmF0ZSBhbmQgdGhhdCBJJ20gdGFyZ2V0aW5nIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24uIEl0J3MgZWFzeSB0byBnZXQgbG9zdCBpbiB0aGVzZSBvcHRpb25zLCBzbyBJJ2xsIG1ha2Ugc3VyZSB0byBjb25maXJtIGJlZm9yZSBwcm9jZWVkaW5nLiBHb3R0YSBiZSBtZXRpY3Vsb3VzIHdoZW4gZGVhbGluZyB3aXRoIGNvcmUgbmV0d29ya2luZyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzA0LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzozNy4zMTYwODQ3NTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NzE3MzE5NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElORVRfUFNQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9wc3AvS2NvbmZpZy00LSNcXG5uZXQvcHNwL0tjb25maWc6NTpjb25maWcgSU5FVF9QU1BcXG5uZXQvcHNwL0tjb25maWctNi1cXHRib29sIFxcXCJQU1AgU2VjdXJpdHkgUHJvdG9jb2wgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTY6MDc6MzkuODg3ODI0OTkxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MDA0MzQ0MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYElORVRfUFNQYCBpcyBpbmRlZWQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYm90aCBhIGNyaXRpY2FsIG1lbW9yeSBsZWFrIOKAkyBzcGVjaWZpY2FsbHksIGEgbWlzc2luZyBgaW5ldF90d3NrX3B1dGAg4oCTIGFuZCBhIGJ1ZyBpbiB0aGUgY29udHJvbCBmbG93LiBUaGUgZmxvdydzIGVycm9yIHN0ZW1zIGZyb20gYSBtaXNzaW5nIGBnb3RvIGRpc2NhcmRfaXRgIGNvbmRpdGlvbi4gVGhlc2UgaXNzdWVzIG1hbmlmZXN0IHdoZW4gYSBwYWNrZXQgaXMgZHJvcHBlZCBkdWUgdG8gYSBQU1AgcG9saWN5IGNoZWNrIHdpdGhpbiB0aGUgYFRDUF9UV19TWU5gIHN0YXRlLlxuXG5UaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2Ugd2UncmUgdGFsa2luZyBhYm91dCBjb3JlIGtlcm5lbCBsb2dpYyB3aXRoaW4gdGhlIFRDUCByZWNlaXZlIHBhdGg7IHRoaXMgaXMgYSByZWFjaGFibGUgY29kZSBwYXRoLiBUaGVyZWZvcmUsIGFuZCBJJ20gcXVpdGUgY29uZmlkZW50IG9mIHRoaXMsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBzZXQgdG8gdHJ1ZS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IGNvbmZpZyB0aGF0IG5lZWRzIGNvbnNpZGVyYXRpb24uIEkgc2VlIGBJTkVUX1BTUGAgZGVwZW5kcyBvbiBgSU5FVGAuIEknbGwga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgZnVydGhlciBkZXBlbmRlbmNpZXMgd2hpbGUgSSdtIGF0IGl0LCBidXQgbXkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgdGhlIG1vc3QgY3JpdGljYWwgYXNwZWN0IHRvIGFuYWx5emUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNDIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTY6MDc6NDQuMzg4MjYxMTQzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9wc3AvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQU1AgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0Y29uZmlnIElORVRfUFNQXFxuICAgNjpcXHRcXHRib29sIFxcXCJQU1AgU2VjdXJpdHkgUHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgIDg6XFx0XFx0c2VsZWN0IFNLQl9ERUNSWVBURURcXG4gICA5OlxcdFxcdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xcbiAgMTA6XFx0XFx0c2VsZWN0IFNPQ0tfVkFMSURBVEVfWE1JVFxcbiAgMTE6XFx0XFx0aGVscFxcbiAgMTI6XFx0XFx0RW5hYmxlIGtlcm5lbCBzdXBwb3J0IGZvciB0aGUgUFNQIFNlY3VyaXR5IFByb3RvY29sIChQU1ApLlxcbiAgMTM6XFx0XFx0Rm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOlxcbiAgMTQ6XFx0XFx0ICBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZ29vZ2xlL3BzcC9tYWluL2RvYy9QU1BfQXJjaF9TcGVjLnBkZlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHRJZiB1bnN1cmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzo0NC4zODgzMTY5MzNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0MDAwNzIzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQ29kZSBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBwbGF5IGhlcmUgaXMgYElORVRfUFNQYC4gSSBzZWUgdGhhdCB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdG91Y2hlZCBhcmUgYHRjcF92NF9yY3ZgIGFuZCBgdGNwX3Y2X3JjdmAuIFNpbmNlIHRob3NlIGFyZSBib3RoIGluIHRoZSBob3QtcGF0aCwgd2Ugc2hvdWxkbid0IHNwZWNpZmljYWxseSBsaXN0IHRoZW0gaW4gdGhlIGBGb2N1c1N5bWJvbHNgIGFzIHRoYXQgd291bGQgcHJvYmFibHkgYmUgb3ZlcmtpbGwuIEJ1dCB3YWl0LCBhbSBJIG1pc3NpbmcgYW55dGhpbmc/IEFoYSwgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AgaXMgYWN0dWFsbHkgaW5saW5lZCwgc28gbm8gbmVlZCB0byBtZW50aW9uIHRoYXQgZXhwbGljaXRseS4gQW5kIGB0Y3BfdGltZXdhaXRfc3RhdGVfcHJvY2Vzc2AgcmVtYWlucyB1bnRvdWNoZWQuXG5cbkFscmlnaHQsIHRoYXQgc2V0dGxlcyBpdC4gTm8gc3BlY2lmaWMgc3ltYm9scyB0byBmb2N1cyBvbiBoZXJlLlxuXG5MZXQncyBwdXQgdGhpcyBhbGwgdG9nZXRoZXIgdGhlbjpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBUcnVlXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBgW1wiSU5FVF9QU1BcIl1gXG4qICAgYEZvY3VzU3ltYm9sc2A6IGBbXWBcblxuQW5kIHRoZSByZWFzb25pbmcgYmVoaW5kIGFsbCBvZiB0aGlzOiB0aGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgYW5kIHBvdGVudGlhbCBjb250cm9sIGZsb3cgcHJvYmxlbXMgd2l0aGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBgVElNRV9XQUlUYCBzb2NrZXRzIHdoZW4gdGhlIFBTUCBwb2xpY3kgcmVqZWN0cyBhIHBhY2tldC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBsb2dpYy5cblxuUGVyZmVjdC4gTm93IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYyMiwiT3V0cHV0VG9rZW5zIjo3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE2OjA3OjQ4LjkyODMyNjQxOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NzEyNDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUX1BTUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvcnJlY3QgY29udHJvbCBmbG93IGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoIGZvciBUSU1FX1dBSVQgc29ja2V0cyB3aGVuIGEgcGFja2V0IGlzIGRyb3BwZWQgZHVlIHRvIFBTUCBwb2xpY3kgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRfUFNQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgYW5kIGluY29ycmVjdCBjb250cm9sIGZsb3cgaW4gdGhlIFRDUCByZWNlaXZlIHBhdGggZm9yIFRJTUVfV0FJVCBzb2NrZXRzIHdoZW4gYSBwYWNrZXQgaXMgZHJvcHBlZCBkdWUgdG8gUFNQIHBvbGljeSBjaGVja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowgg79r[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 15:47:05 +0000 UTC FinishedAt: 2026-07-11 16:07:50 +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": "1cd23ca80784223fa2204e16203f754da4e821f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET_PSP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1cd23ca80784223fa2204e16203f754da4e821f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET_PSP" ], "series_id": "021d4f75-0bd8-4e43-b8a6-74cc0344c138" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDE2OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVRfUFNQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgYW5kIGluY29ycmVjdCBjb250cm9sIGZsb3cgaW4gdGhlIFRDUCByZWNlaXZlIHBhdGggZm9yIFRJTUVfV0FJVCBzb2NrZXRzIHdoZW4gYSBwYWNrZXQgaXMgZHJvcHBlZCBkdWUgdG8gUFNQIHBvbGljeSBjaGVja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlZDczNjIwYzJhZWVjMjc4NWY5MzJkNjQ3OTQ3YWRhOTcyYzNmMjFhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTY6MDc6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lwdjQuYyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcbmluZGV4IDIwOWVmNzUyMjUwOGZjLi40YTQ2ZGEzNzUwNDNiZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcbkBAIC0yMzE4LDggJiM0MzsyMzE4LDEwIEBAIGludCB0Y3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdH1cbiBcbiBcdFx0ZHJvcF9yZWFzb24gPSBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2soaW5ldF90d3NrKHNrKSwgc2tiKTtcbi1cdFx0aWYgKGRyb3BfcmVhc29uKVxuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0aWYgKGRyb3BfcmVhc29uKSB7XG4mIzQzO1x0XHRcdGluZXRfdHdza19wdXQoaW5ldF90d3NrKHNrKSk7XG4mIzQzO1x0XHRcdGdvdG8gZGlzY2FyZF9pdDtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcdFx0LyogdG8gQUNLICovXG4gXHRcdGZhbGx0aHJvdWdoO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3RjcF9pcHY2LmMgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jXG5pbmRleCBlYmUxNjFkNzJmYmQwNy4uNTIyYmE0NWNlOWI3NTkgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jXG5AQCAtMTk3Nyw4ICYjNDM7MTk3NywxMCBAQCBJTkRJUkVDVF9DQUxMQUJMRV9TQ09QRSBpbnQgdGNwX3Y2X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHR9XG4gXG4gXHRcdGRyb3BfcmVhc29uID0gcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKGluZXRfdHdzayhzayksIHNrYik7XG4tXHRcdGlmIChkcm9wX3JlYXNvbilcbi1cdFx0XHRicmVhaztcbiYjNDM7XHRcdGlmIChkcm9wX3JlYXNvbikge1xuJiM0MztcdFx0XHRpbmV0X3R3c2tfcHV0KGluZXRfdHdzayhzaykpO1xuJiM0MztcdFx0XHRnb3RvIGRpc2NhcmRfaXQ7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXHRcdC8qIHRvIEFDSyAqL1xuIFx0XHRmYWxsdGhyb3VnaDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUX1BTUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvcnJlY3QgY29udHJvbCBmbG93IGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoIGZvciBUSU1FX1dBSVQgc29ja2V0cyB3aGVuIGEgcGFja2V0IGlzIGRyb3BwZWQgZHVlIHRvIFBTUCBwb2xpY3kgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlZDczNjIwYzJhZWVjMjc4NWY5MzJkNjQ3OTQ3YWRhOTcyYzNmMjFhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTEgMTY6MDc6MDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuYwppbmRleCAyMDllZjc1MjI1MDhmYy4uNGE0NmRhMzc1MDQzYmUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lwdjQuYwpAQCAtMjMxOCw4ICYjNDM7MjMxOCwxMCBAQCBpbnQgdGNwX3Y0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQl9CiAKIAkJZHJvcF9yZWFzb24gPSBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2soaW5ldF90d3NrKHNrKSwgc2tiKTsKLQkJaWYgKGRyb3BfcmVhc29uKQotCQkJYnJlYWs7CiYjNDM7CQlpZiAoZHJvcF9yZWFzb24pIHsKJiM0MzsJCQlpbmV0X3R3c2tfcHV0KGluZXRfdHdzayhzaykpOwomIzQzOwkJCWdvdG8gZGlzY2FyZF9pdDsKJiM0MzsJCX0KIAl9CiAJCS8qIHRvIEFDSyAqLwogCQlmYWxsdGhyb3VnaDsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3RjcF9pcHY2LmMgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCmluZGV4IGViZTE2MWQ3MmZiZDA3Li41MjJiYTQ1Y2U5Yjc1OSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdGNwX2lwdjYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCkBAIC0xOTc3LDggJiM0MzsxOTc3LDEwIEBAIElORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCB0Y3BfdjZfcmN2KHN0cnVjdCBza19idWZmICpza2IpCiAJCX0KIAogCQlkcm9wX3JlYXNvbiA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayhpbmV0X3R3c2soc2spLCBza2IpOwotCQlpZiAoZHJvcF9yZWFzb24pCi0JCQlicmVhazsKJiM0MzsJCWlmIChkcm9wX3JlYXNvbikgewomIzQzOwkJCWluZXRfdHdza19wdXQoaW5ldF90d3NrKHNrKSk7CiYjNDM7CQkJZ290byBkaXNjYXJkX2l0OwomIzQzOwkJfQogCX0KIAkJLyogdG8gQUNLICovCiAJCWZhbGx0aHJvdWdoOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFRDUCBUSU1FX1dBSVQgU3RhdGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSwgYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCBhbmQgYG5ldC9pcHY2L3RjcF9pcHY2LmNgLiBJbnRlcmVzdGluZy4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhcm91bmQgaG93IHdlIGhhbmRsZSBhIGRyb3AgcmVhc29uIHJldHVybmVkIGJ5IGBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2tgLiBJdCYjMzk7cyBkZXZpYXRpbmcgZnJvbSBhIHNpbXBsZSBgYnJlYWtgIG5vdywgYW5kIGluc3RlYWQgdXNlcyBgaW5ldF90d3NrX3B1dGAgb24gdGhlIGBpbmV0X3R3c2tgIGFzc29jaWF0ZWQgd2l0aCB0aGUgc29ja2V0IChgc2tgKSwgYW5kIHRoZW4ganVtcHMgdG8gYSBgZGlzY2FyZF9pdGAgbGFiZWwuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgbWFraW5nIG1lIHRoaW5rIGFib3V0IHJlZmVyZW5jZSBjb3VudGluZyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMgaW4gdGhlIFRJTUVfV0FJVCBzdGF0ZS4KCk15IG5leHQgc3RlcCBpcyB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2hlcmUqIHRoaXMgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AgaXMgY2FsbGVkIHdpdGhpbiB0aGUgcmVjZWl2ZXIgcm91dGluZXMgYHRjcF92NF9yY3ZgIGFuZCBgdGNwX3Y2X3JjdmAuIFRoaXMgbG9va3MgbGlrZSBpdCYjMzk7cyBzcGVjaWZpY2FsbHkgYWJvdXQgVElNRV9XQUlUIGhhbmRsaW5nLCBidXQgSSBuZWVkIGNvbmZpcm1hdGlvbi4KClRvIHZlcmlmeSBteSBhc3N1bXB0aW9uIGFuZCBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgZnVuY3Rpb24sIEkmIzM5O2xsIGxldmVyYWdlIGBncmVwcGVyYCB0byBxdWlja2x5IGxvY2F0ZSBhbGwgdXNhZ2VzIG9mIGBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2tgLiBUaGlzIHdpbGwgc2hvdyBtZSB0aGUgY2FsbGluZyBjb250ZXh0IGFuZCBhbGxvdyBtZSB0byBxdWlja2x5IGdldCBiYWNrIHVwIHRvIHNwZWVkIG9uIHRoaXMgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaD0xMjE9c3RhdGljIGlubGluZSBlbnVtIHNrYl9kcm9wX3JlYXNvblxuaW5jbHVkZS9uZXQvcHNwL2Z1bmN0aW9ucy5oOjEyMjpwc3BfdHdza19yeF9wb2xpY3lfY2hlY2soc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsIHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL25ldC9wc3AvZnVuY3Rpb25zLmgtMTIzLXtcbi0tXG5pbmNsdWRlL25ldC9wc3AvZnVuY3Rpb25zLmg9MTg2PXN0YXRpYyBpbmxpbmUgZW51bSBza2JfZHJvcF9yZWFzb25cbmluY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaDoxODc6cHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKHN0cnVjdCBpbmV0X3RpbWV3YWl0X3NvY2sgKnR3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuaW5jbHVkZS9uZXQvcHNwL2Z1bmN0aW9ucy5oLTE4OC17XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMDY3PWludCB0Y3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMzE5LVxubmV0L2lwdjQvdGNwX2lwdjQuYzoyMzIwOlx0XHRkcm9wX3JlYXNvbiA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayhpbmV0X3R3c2soc2spLCBza2IpO1xubmV0L2lwdjQvdGNwX2lwdjQuYy0yMzIxLVx0XHRpZiAoZHJvcF9yZWFzb24pIHtcbi0tXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmM9MTAxPXRjcF90aW1ld2FpdF9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBpbmV0X3RpbWV3YWl0X3NvY2sgKnR3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy0xMTUtXHQgKi9cbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYzoxMTY6XHRwc3BfZHJvcCA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayh0dywgc2tiKTtcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy0xMTctXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xNzI4PUlORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCB0Y3BfdjZfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xOTc4LVxubmV0L2lwdjYvdGNwX2lwdjYuYzoxOTc5Olx0XHRkcm9wX3JlYXNvbiA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayhpbmV0X3R3c2soc2spLCBza2IpO1xubmV0L2lwdjYvdGNwX2lwdjYuYy0xOTgwLVx0XHRpZiAoZHJvcF9yZWFzb24pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTUyCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGF0IHF1ZXJ5LCBhcyBpZiBpdCB3ZXJlIG15IHRob3VnaHQgcHJvY2VzczoKCioqSW52ZXN0aWdhdGluZyB0aGUgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBmaWd1cmUgb3V0ICp3aGVyZSogdGhpcyBgcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrYCBmbGFnIGlzIGFjdHVhbGx5IGVuYWJsZWQuIEdpdmVuIG15IGJhY2tncm91bmQsIEkgYWxyZWFkeSBoYXZlIGEgZmV3IGxpa2VseSBzcG90cyBpbiBtaW5kIC0gYnV0IEkgbmVlZCB0byBiZSBtZXRob2RpY2FsLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgYmxpbmQgc2VhcmNoOyBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgY29udHJvbHMgdGhpcyBzcGVjaWZpYyBiZWhhdmlvci4gSXQmIzM5O3MgbGlrZWx5IHdpdGhpbiBhIGJyb2FkZXIgc3lzdGVtIG9mIG5ldHdvcmsgcG9saWN5IG9yIHNlY3VyaXR5IHNldHRpbmdzLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGNvbnRleHQuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIHRvIGRpZyBpbi4gSSB3aWxsIHN0YXJ0IHdpdGggYSBzZWFyY2ggb2YgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIG1heWJlIHRoZSBkb2N1bWVudGF0aW9uLiBBbmQgSSBzaG91bGQga2VlcCBpbiBtaW5kIHRoYXQgdGhlIHNldHRpbmdzIG1pZ2h0IGJlIGR5bmFtaWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTkVUX1BTUCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM5NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBBY3RpdmF0aW9uIG9mIGBwc3BgIEZ1bmN0aW9uYWxpdHkqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBlbmFibGluZyB0aGlzIGBwc3BgIGZ1bmN0aW9uYWxpdHkuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgaW5jbHVkZSBmaWxlcyB0aGF0IGRlZmluZSBpdHMgaW50ZXJmYWNlLiBBIGxpa2VseSBzdGFydGluZyBwb2ludCB3b3VsZCBiZSBgaW5jbHVkZS9uZXQvcHNwL2Z1bmN0aW9ucy5oYC4gVGhhdCBoZWFkZXIgZmlsZSBpcyB1c3VhbGx5IHRoZSBwbGFjZSB3aGVyZSB0aGUgY29yZSBkZWNsYXJhdGlvbnMgYW5kIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3b3VsZCBsaXZlLiBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIHRoYXQgZmlsZSBhbmQgbG9vayBmb3IgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMsIHByZXByb2Nlc3NvciBtYWNyb3MsIG9yIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWlnaHQgYmUgdGllZCB0byB0aGUgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIG9mIHRoaXMgZmVhdHVyZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBjb25maWd1cmF0aW9ucyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgYHBzcGAgaXMgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovXG4gICAyOlx0XG4gICAzOlx0I2lmbmRlZiBfX05FVF9QU1BfSEVMUEVSU19IXG4gICA0Olx0I2RlZmluZSBfX05FVF9QU1BfSEVMUEVSU19IXG4gICA1Olx0XG4gICA2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2tidWZmLmhcdTAwM2VcbiAgIDc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yY3VwZGF0ZS5oXHUwMDNlXG4gICA4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdWRwLmhcdTAwM2VcbiAgIDk6XHQjaW5jbHVkZSBcdTAwM2NuZXQvc29jay5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbmV0L3RjcC5oXHUwMDNlXG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbmV0L3BzcC90eXBlcy5oXHUwMDNlXG4gIDEyOlx0XG4gIDEzOlx0c3RydWN0IGluZXRfdGltZXdhaXRfc29jaztcbiAgMTQ6XHRcbiAgMTU6XHQvKiBEcml2ZXItZmFjaW5nIEFQSSAqL1xuICAxNjpcdHN0cnVjdCBwc3BfZGV2ICpcbiAgMTc6XHRwc3BfZGV2X2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgcHNwX2Rldl9vcHMgKnBzZF9vcHMsXG4gIDE4Olx0XHQgICAgICAgc3RydWN0IHBzcF9kZXZfY2FwcyAqcHNkX2NhcHMsIHZvaWQgKnByaXZfcHRyKTtcbiAgMTk6XHR2b2lkIHBzcF9kZXZfdW5yZWdpc3RlcihzdHJ1Y3QgcHNwX2RldiAqcHNkKTtcbiAgMjA6XHRib29sIHBzcF9kZXZfZW5jYXBzdWxhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2JlMzIgc3BpLFxuICAyMTpcdFx0XHRcdCB1OCB2ZXIsIF9fYmUxNiBzcG9ydCk7XG4gIDIyOlx0aW50IHBzcF9kZXZfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHUxNiBkZXZfaWQsIHU4IGdlbmVyYXRpb24sIGJvb2wgc3RyaXBfaWN2KTtcbiAgMjM6XHRcbiAgMjQ6XHQvKiBLZXJuZWwtZmFjaW5nIEFQSSAqL1xuICAyNTpcdHZvaWQgcHNwX2Fzc29jX3B1dChzdHJ1Y3QgcHNwX2Fzc29jICpwYXMpO1xuICAyNjpcdFxuICAyNzpcdHN0YXRpYyBpbmxpbmUgdm9pZCAqcHNwX2Fzc29jX2Rydl9kYXRhKHN0cnVjdCBwc3BfYXNzb2MgKnBhcylcbiAgMjg6XHR7XG4gIDI5Olx0XHRyZXR1cm4gcGFzLVx1MDAzZWRydl9kYXRhO1xuICAzMDpcdH1cbiAgMzE6XHRcbiAgMzI6XHQjaWYgSVNfRU5BQkxFRChDT05GSUdfSU5FVF9QU1ApXG4gIDMzOlx0dW5zaWduZWQgaW50IHBzcF9rZXlfc2l6ZSh1MzIgdmVyc2lvbik7XG4gIDM0Olx0dm9pZCBwc3Bfc2tfYXNzb2NfZnJlZShzdHJ1Y3Qgc29jayAqc2spO1xuICAzNTpcdHZvaWQgcHNwX3R3c2tfaW5pdChzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dywgY29uc3Qgc3RydWN0IHNvY2sgKnNrKTtcbiAgMzY6XHR2b2lkIHBzcF90d3NrX2Fzc29jX2ZyZWUoc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcpO1xuICAzNzpcdHZvaWQgcHNwX3JlcGx5X3NldF9kZWNyeXB0ZWQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiAgMzg6XHRcbiAgMzk6XHRzdGF0aWMgaW5saW5lIHN0cnVjdCBwc3BfYXNzb2MgKnBzcF9za19hc3NvYyhjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4gIDQwOlx0e1xuICA0MTpcdFx0cmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9jaGVjayhzay1cdTAwM2Vwc3BfYXNzb2MsIGxvY2tkZXBfc29ja19pc19oZWxkKHNrKSk7XG4gIDQyOlx0fVxuICA0MzpcdFxuICA0NDpcdHN0YXRpYyBpbmxpbmUgdm9pZFxuICA0NTpcdHBzcF9lbnF1ZXVlX3NldF9kZWNyeXB0ZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuICA0NjpcdHtcbiAgNDc6XHRcdHN0cnVjdCBwc3BfYXNzb2MgKnBhcztcbiAgNDg6XHRcbiAgNDk6XHRcdHBhcyA9IHBzcF9za19hc3NvYyhzayk7XG4gIDUwOlx0XHRpZiAocGFzIFx1MDAyNlx1MDAyNiBwYXMtXHUwMDNldHguc3BpKVxuICA1MTpcdFx0XHRza2ItXHUwMDNlZGVjcnlwdGVkID0gMTtcbiAgNTI6XHR9XG4gIDUzOlx0XG4gIDU0Olx0c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nXG4gIDU1Olx0X19wc3Bfc2tiX2NvYWxlc2NlX2RpZmYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKm9uZSwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnR3byxcbiAgNTY6XHRcdFx0XHR1bnNpZ25lZCBsb25nIGRpZmZzKVxuICA1NzpcdHtcbiAgNTg6XHRcdHN0cnVjdCBwc3Bfc2tiX2V4dCAqYSwgKmI7XG4gIDU5Olx0XG4gIDYwOlx0XHRhID0gc2tiX2V4dF9maW5kKG9uZSwgU0tCX0VYVF9QU1ApO1xuICA2MTpcdFx0YiA9IHNrYl9leHRfZmluZCh0d28sIFNLQl9FWFRfUFNQKTtcbiAgNjI6XHRcbiAgNjM6XHRcdGRpZmZzIHw9ICghIWEpIF4gKCEhYik7XG4gIDY0Olx0XHRpZiAoIWRpZmZzIFx1MDAyNlx1MDAyNiB1bmxpa2VseShhKSlcbiAgNjU6XHRcdFx0ZGlmZnMgfD0gbWVtY21wKGEsIGIsIHNpemVvZigqYSkpO1xuICA2NjpcdFx0cmV0dXJuIGRpZmZzO1xuICA2NzpcdH1cbiAgNjg6XHRcbiAgNjk6XHRzdGF0aWMgaW5saW5lIGJvb2xcbiAgNzA6XHRwc3BfaXNfYWxsb3dlZF9ub25kYXRhKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBwc3BfYXNzb2MgKnBhcylcbiAgNzE6XHR7XG4gIDcyOlx0XHRib29sIGZpbiA9ICEhKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2V0Y3BfZmxhZ3MgXHUwMDI2IFRDUEhEUl9GSU4pO1xuICA3MzpcdFx0dTMyIGVuZF9zZXEgPSBUQ1BfU0tCX0NCKHNrYiktXHUwMDNlZW5kX3NlcTtcbiAgNzQ6XHRcdHUzMiBzZXEgPSBUQ1BfU0tCX0NCKHNrYiktXHUwMDNlc2VxO1xuICA3NTpcdFx0Ym9vbCBwdXJlX2ZpbjtcbiAgNzY6XHRcbiAgNzc6XHRcdHB1cmVfZmluID0gZmluIFx1MDAyNlx1MDAyNiBlbmRfc2VxIC0gc2VxID09IDE7XG4gIDc4Olx0XG4gIDc5Olx0XHRyZXR1cm4gc2VxID09IGVuZF9zZXEgfHwgKHB1cmVfZmluIFx1MDAyNlx1MDAyNiBzZXEgPT0gcGFzLVx1MDAzZXVwZ3JhZGVfc2VxKTtcbiAgODA6XHR9XG4gIDgxOlx0XG4gIDgyOlx0c3RhdGljIGlubGluZSBib29sXG4gIDgzOlx0cHNwX3BzZV9tYXRjaGVzX3BhcyhzdHJ1Y3QgcHNwX3NrYl9leHQgKnBzZSwgc3RydWN0IHBzcF9hc3NvYyAqcGFzKVxuICA4NDpcdHtcbiAgODU6XHRcdHJldHVybiBwc2UgXHUwMDI2XHUwMDI2IHBhcy1cdTAwM2VyeC5zcGkgPT0gcHNlLVx1MDAzZXNwaSBcdTAwMjZcdTAwMjZcbiAgODY6XHRcdCAgICAgICBwYXMtXHUwMDNlZ2VuZXJhdGlvbiA9PSBwc2UtXHUwMDNlZ2VuZXJhdGlvbiBcdTAwMjZcdTAwMjZcbiAgODc6XHRcdCAgICAgICBwYXMtXHUwMDNldmVyc2lvbiA9PSBwc2UtXHUwMDNldmVyc2lvbiBcdTAwMjZcdTAwMjZcbiAgODg6XHRcdCAgICAgICBwYXMtXHUwMDNlZGV2X2lkID09IHBzZS1cdTAwM2VkZXZfaWQ7XG4gIDg5Olx0fVxuICA5MDpcdFxuICA5MTpcdHN0YXRpYyBpbmxpbmUgZW51bSBza2JfZHJvcF9yZWFzb25cbiAgOTI6XHRfX3BzcF9za19yeF9wb2xpY3lfY2hlY2soc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHBzcF9hc3NvYyAqcGFzKVxuICA5MzpcdHtcbiAgOTQ6XHRcdHN0cnVjdCBwc3Bfc2tiX2V4dCAqcHNlID0gc2tiX2V4dF9maW5kKHNrYiwgU0tCX0VYVF9QU1ApO1xuICA5NTpcdFxuICA5NjpcdFx0aWYgKCFwYXMpXG4gIDk3Olx0XHRcdHJldHVybiBwc2UgPyBTS0JfRFJPUF9SRUFTT05fUFNQX0lOUFVUIDogMDtcbiAgOTg6XHRcbiAgOTk6XHRcdGlmIChsaWtlbHkocHNwX3BzZV9tYXRjaGVzX3Bhcyhwc2UsIHBhcykpKSB7XG4gMTAwOlx0XHRcdGlmICh1bmxpa2VseSghcGFzLVx1MDAzZXBlZXJfdHgpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxOTEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVENQIFJlY2VpdmUgUGF0aCBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgY29uZmlnIGlzIGBJTkVUX1BTUGAsIG1lYW5pbmcgdGhpcyBwYXRjaCBpcyBzcGVjaWZpY2FsbHkgdGllZCB0byBQbHVnZ2FibGUgU2VjdXJpdHkgUHJvdG9jb2wsIGFuZCBpdCYjMzk7cyBoaXR0aW5nIHRoZSBgdGNwX3Y0X3JjdmAgYW5kIGB0Y3BfdjZfcmN2YCBmdW5jdGlvbnMuIFJpZ2h0IGF3YXksIHRoYXQgcmFpc2VzIGEgZmxhZyDigJMgdGhlc2UgYXJlIGNvcmUsIGhvdC1wYXRoIGZ1bmN0aW9ucyBpbiB0aGUgVENQIHJlY2VpdmUgcGF0aC4gVGhlIGZpeCBzZWVtcyB0byBiZSB3aXRoaW4gdGhlIGBUSU1FX1dBSVRgIHNvY2tldCBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgYW4gaXNzdWUgd2hlcmUgYGRyb3BfcmVhc29uYCBmcm9tIGBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2tgIHdhcyBpbmNvcnJlY3RseSBicmVha2luZyBhIGxvb3AsIGxlYWRpbmcgdG8gYSBkcm9wcGVkIGB0d3NrYCBhbmQgYHNrYmAuCgpOb3csIHRoZSBxdWVzdGlvbiBiZWNvbWVzIGhvdyB0byBjaGFyYWN0ZXJpemUgdGhpcyBjaGFuZ2UgZWZmZWN0aXZlbHkgZm9yIHRlc3Rpbmcgb3IgYW5hbHlzaXMuIFNob3VsZCBJIGJlIGZvY3VzaW5nIG9uIGB0Y3BfdjRfcmN2YCBhbmQgYHRjcF92Nl9yY3ZgIGRpcmVjdGx5PyBUaGV5IGFyZSBpbmRlZWQgY3JpdGljYWwsIGJ1dCB0aGV5JiMzOTtyZSBzbyBmdW5kYW1lbnRhbCB0aGF0IGluY2x1ZGluZyB0aGVtIGluIGEgYEZvY3VzU3ltYm9sc2AgbGlzdCBjb3VsZCB0aHJvdyBvZmYgdGVzdCBkaXN0cmlidXRpb25zIGR1ZSB0byB0aGVpciBwcmV2YWxlbmNlLiBXaGF0JiMzOTtzIHRoZSBiZXN0IGFwcHJvYWNoIGhlcmU/CgpgcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrYCBpcyB0aGUgbGlrZWx5IGN1bHByaXQgb2YgdGhlIGJ1Zy4gSXQmIzM5O3MgYW4gaW5saW5lIGZ1bmN0aW9uLCBzbyBpdCB3b24mIzM5O3QgYmUgaW4gdGhlIHN5bWJvbCB0YWJsZSwgd2hpY2ggbWFrZXMgaXQgYW4gaW50ZXJlc3RpbmcgY29uc2lkZXJhdGlvbi4gSSBhbHNvIG5lZWQgdG8gdGhpbmsgYWJvdXQgYWx0ZXJuYXRpdmVzLiBgdGNwX3RpbWV3YWl0X3N0YXRlX3Byb2Nlc3NgIGlzbiYjMzk7dCBtb2RpZmllZCBieSB0aGlzIHBhdGNoIGRpcmVjdGx5LiBXaGF0IG90aGVyIG9wdGlvbnMgYXJlIHRoZXJlPwoKTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgY29kZSBsb2NhdGlvbiBmb3IgYHRjcF92NF9yY3ZgLCBhcm91bmQgbGluZSAyMzE4IGluIGBuZXQvaXB2NC90Y3BfaXB2NC5jYCB0byBzb2xpZGlmeSB3aGF0JiMzOTtzIGhhcHBlbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjMwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMzAwOlx0XHRcdGdvdG8gY3N1bV9lcnJvcjtcbjIzMDE6XHRcdH1cbjIzMDI6XHRcbjIzMDM6XHRcdHR3X3N0YXR1cyA9IHRjcF90aW1ld2FpdF9zdGF0ZV9wcm9jZXNzKGluZXRfdHdzayhzayksIHNrYiwgdGgsIFx1MDAyNmlzbixcbjIzMDQ6XHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmRyb3BfcmVhc29uKTtcbjIzMDU6XHRcdHN3aXRjaCAodHdfc3RhdHVzKSB7XG4yMzA2Olx0XHRjYXNlIFRDUF9UV19TWU46IHtcbjIzMDc6XHRcdFx0c3RydWN0IHNvY2sgKnNrMiA9IGluZXRfbG9va3VwX2xpc3RlbmVyKG5ldCwgc2tiLCBfX3RjcF9oZHJsZW4odGgpLFxuMjMwODpcdFx0XHRcdFx0XHRcdFx0aXBoLVx1MDAzZXNhZGRyLCB0aC1cdTAwM2Vzb3VyY2UsXG4yMzA5Olx0XHRcdFx0XHRcdFx0XHRpcGgtXHUwMDNlZGFkZHIsIHRoLVx1MDAzZWRlc3QsXG4yMzEwOlx0XHRcdFx0XHRcdFx0XHRpbmV0X2lpZihza2IpLFxuMjMxMTpcdFx0XHRcdFx0XHRcdFx0c2RpZik7XG4yMzEyOlx0XHRcdGlmIChzazIpIHtcbjIzMTM6XHRcdFx0XHRpbmV0X3R3c2tfZGVzY2hlZHVsZV9wdXQoaW5ldF90d3NrKHNrKSk7XG4yMzE0Olx0XHRcdFx0c2sgPSBzazI7XG4yMzE1Olx0XHRcdFx0dGNwX3Y0X3Jlc3RvcmVfY2Ioc2tiKTtcbjIzMTY6XHRcdFx0XHRyZWZjb3VudGVkID0gZmFsc2U7XG4yMzE3Olx0XHRcdFx0Z290byBwcm9jZXNzO1xuMjMxODpcdFx0XHR9XG4yMzE5Olx0XG4yMzIwOlx0XHRcdGRyb3BfcmVhc29uID0gcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKGluZXRfdHdzayhzayksIHNrYik7XG4yMzIxOlx0XHRcdGlmIChkcm9wX3JlYXNvbikge1xuMjMyMjpcdFx0XHRcdGluZXRfdHdza19wdXQoaW5ldF90d3NrKHNrKSk7XG4yMzIzOlx0XHRcdFx0Z290byBkaXNjYXJkX2l0O1xuMjMyNDpcdFx0XHR9XG4yMzI1Olx0XHR9XG4yMzI2Olx0XHRcdC8qIHRvIEFDSyAqL1xuMjMyNzpcdFx0XHRmYWxsdGhyb3VnaDtcbjIzMjg6XHRcdGNhc2UgVENQX1RXX0FDSzpcbjIzMjk6XHRcdGNhc2UgVENQX1RXX0FDS19PT1c6XG4yMzMwOlx0XHRcdHRjcF92NF90aW1ld2FpdF9hY2soc2ssIHNrYiwgdHdfc3RhdHVzKTtcbjIzMzE6XHRcdFx0YnJlYWs7XG4yMzMyOlx0XHRjYXNlIFRDUF9UV19SU1Q6XG4yMzMzOlx0XHRcdHRjcF92NF9zZW5kX3Jlc2V0KHNrLCBza2IsIFNLX1JTVF9SRUFTT05fVENQX1RJTUVXQUlUX1NPQ0tFVCk7XG4yMzM0Olx0XHRcdGluZXRfdHdza19kZXNjaGVkdWxlX3B1dChpbmV0X3R3c2soc2spKTtcbjIzMzU6XHRcdFx0Z290byBkaXNjYXJkX2l0O1xuMjMzNjpcdFx0Y2FzZSBUQ1BfVFdfU1VDQ0VTUzo7XG4yMzM3Olx0XHR9XG4yMzM4Olx0XHRnb3RvIGRpc2NhcmRfaXQ7XG4yMzM5Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTYzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVxdWVzdCBmb3IgRm9jdXNlZCBGdW5jdGlvbiBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGUgaW5zdHJ1Y3Rpb24gaXMgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4gVGhlIGNoYW5nZSBpcyBkZWZpbml0ZWx5IGluIGB0Y3BfdjRfcmN2YCBhbmQgYHRjcF92Nl9yY3ZgLiBUaG9zZSBhcmUgY2xhc3NpYyBob3QtcGF0aCBmdW5jdGlvbnMgZm9yIFRDUCBwYWNrZXQgcmVjZXB0aW9uLCBzbyBsaXN0aW5nIHRoZW0gd291bGQgY2xlYXJseSB2aW9sYXRlIHRoZSAmIzM0O3NrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMmIzM0OyBndWlkZWxpbmUuIEkmIzM5O20gZ29pbmcgdG8gbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHkgZm9yIG5vdywgYXMgdGhhdCYjMzk7cyB0aGUgbW9zdCBjb25zZXJ2YXRpdmUgYXBwcm9hY2ggYW5kIGFsaWducyB3aXRoIHRoZSBleHBsaWNpdCBkaXJlY3RpdmUuCgpCdXQsIGhvbGQgb24gYSBzZWNvbmQuLi4gaXMgdGhlcmUgKmFueXRoaW5nKiBlbHNlLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgUGFja2V0IFN0YXRlIFByb2Nlc3NvciAoUFNQKSB0aGF0IHdlIGNvdWxkIHBvdGVudGlhbGx5IGZvY3VzIG9uPyBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb2RlLiBUaGUgcHJvbXB0ICppcyogYXNraW5nIGZvciBmb2N1c2VkIGZ1bmN0aW9ucywgaWYgdGhleSBleGlzdC4gSXQgbWlnaHQgYmUgd29ydGggYSBsb29rLiBJJiMzOTtsbCBzZWFyY2ggYG5ldC9pcHY0L3RjcF9taW5pc29ja3MuY2AgbG9va2luZyBmb3Igc29tZXRoaW5nIHJlbGF0ZWQgdG8gYHRjcF90aW1ld2FpdF9zdGF0ZV9wcm9jZXNzYC4gTGV0JiMzOTtzIHNlZSBpZiB0aGF0IGZpbGUgaG9sZHMgYSByZWxldmFudCBmdW5jdGlvbiwgc28gSSBjYW4gZW5zdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYSBtb3JlIHNwZWNpZmljIGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9taW5pc29ja3MuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTAwOlx0ZW51bSB0Y3BfdHdfc3RhdHVzXG4gMTAxOlx0dGNwX3RpbWV3YWl0X3N0YXRlX3Byb2Nlc3Moc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsIHN0cnVjdCBza19idWZmICpza2IsXG4gMTAyOlx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IHRjcGhkciAqdGgsIHUzMiAqdHdfaXNuLFxuIDEwMzpcdFx0XHRcdCAgIGVudW0gc2tiX2Ryb3BfcmVhc29uICpkcm9wX3JlYXNvbilcbiAxMDQ6XHR7XG4gMTA1Olx0XHRzdHJ1Y3QgdGNwX3RpbWV3YWl0X3NvY2sgKnRjcHR3ID0gdGNwX3R3c2soKHN0cnVjdCBzb2NrICopdHcpO1xuIDEwNjpcdFx0dTMyIHJjdl9ueHQgPSBSRUFEX09OQ0UodGNwdHctXHUwMDNldHdfcmN2X254dCk7XG4gMTA3Olx0XHRzdHJ1Y3QgdGNwX29wdGlvbnNfcmVjZWl2ZWQgdG1wX29wdDtcbiAxMDg6XHRcdGVudW0gc2tiX2Ryb3BfcmVhc29uIHBzcF9kcm9wO1xuIDEwOTpcdFx0Ym9vbCBwYXdzX3JlamVjdCA9IGZhbHNlO1xuIDExMDpcdFx0aW50IHRzX3JlY2VudF9zdGFtcDtcbiAxMTE6XHRcbiAxMTI6XHRcdC8qIEluc3RlYWQgb2YgZHJvcHBpbmcgaW1tZWRpYXRlbHksIHdhaXQgdG8gc2VlIHdoYXQgdmFsdWUgaXNcbiAxMTM6XHRcdCAqIHJldHVybmVkLiBXZSB3aWxsIGFjY2VwdCBhIG5vbiBwc3AtZW5jYXBzdWxhdGVkIHN5biBpbiB0aGVcbiAxMTQ6XHRcdCAqIGNhc2Ugd2hlcmUgVENQX1RXX1NZTiBpcyByZXR1cm5lZC5cbiAxMTU6XHRcdCAqL1xuIDExNjpcdFx0cHNwX2Ryb3AgPSBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2sodHcsIHNrYik7XG4gMTE3Olx0XG4gMTE4Olx0XHR0bXBfb3B0LnNhd190c3RhbXAgPSAwO1xuIDExOTpcdFx0dHNfcmVjZW50X3N0YW1wID0gUkVBRF9PTkNFKHRjcHR3LVx1MDAzZXR3X3RzX3JlY2VudF9zdGFtcCk7XG4gMTIwOlx0XHRpZiAodGgtXHUwMDNlZG9mZiBcdTAwM2UgKHNpemVvZigqdGgpIFx1MDAzZVx1MDAzZSAyKSBcdTAwMjZcdTAwMjYgdHNfcmVjZW50X3N0YW1wKSB7XG4gMTIxOlx0XHRcdHRjcF9wYXJzZV9vcHRpb25zKHR3c2tfbmV0KHR3KSwgc2tiLCBcdTAwMjZ0bXBfb3B0LCAwLCBOVUxMKTtcbiAxMjI6XHRcbiAxMjM6XHRcdFx0aWYgKHRtcF9vcHQuc2F3X3RzdGFtcCkge1xuIDEyNDpcdFx0XHRcdGlmICh0bXBfb3B0LnJjdl90c2VjcilcbiAxMjU6XHRcdFx0XHRcdHRtcF9vcHQucmN2X3RzZWNyIC09IHRjcHR3LVx1MDAzZXR3X3RzX29mZnNldDtcbiAxMjY6XHRcdFx0XHR0bXBfb3B0LnRzX3JlY2VudFx0PSBSRUFEX09OQ0UodGNwdHctXHUwMDNldHdfdHNfcmVjZW50KTtcbiAxMjc6XHRcdFx0XHR0bXBfb3B0LnRzX3JlY2VudF9zdGFtcFx0PSB0c19yZWNlbnRfc3RhbXA7XG4gMTI4Olx0XHRcdFx0cGF3c19yZWplY3QgPSB0Y3BfcGF3c19yZWplY3QoXHUwMDI2dG1wX29wdCwgdGgtXHUwMDNlcnN0KTtcbiAxMjk6XHRcdFx0fVxuIDEzMDpcdFx0fVxuIDEzMTpcdFxuIDEzMjpcdFx0aWYgKFJFQURfT05DRSh0dy1cdTAwM2V0d19zdWJzdGF0ZSkgPT0gVENQX0ZJTl9XQUlUMikge1xuIDEzMzpcdFx0XHQvKiBKdXN0IHJlcGVhdCBhbGwgdGhlIGNoZWNrcyBvZiB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3MoKSAqL1xuIDEzNDpcdFxuIDEzNTpcdFx0XHRpZiAocHNwX2Ryb3ApXG4gMTM2Olx0XHRcdFx0Z290byBvdXRfcHV0O1xuIDEzNzpcdFxuIDEzODpcdFx0XHQvKiBPdXQgb2Ygd2luZG93LCBzZW5kIEFDSyAqL1xuIDEzOTpcdFx0XHRpZiAocGF3c19yZWplY3QgfHxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcwNAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUQ1AgUmVjZWl2ZSBQYXRoIE9wdGltaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSBgdGNwX3Y0X3JjdmAgYW5kIGB0Y3BfdjZfcmN2YCBmdW5jdGlvbnMuIFRoZXkmIzM5O3JlIGNsZWFybHkgcGVyZm9ybWFuY2UtY3JpdGljYWwsIHJpZ2h0IGluIHRoZSBob3QgcGF0aC4gVGhhdCBtZWFucyBJIG5lZWQgdG8gYmUgKmV4dHJlbWVseSogY2FyZWZ1bCBhYm91dCBhbnkgY2hhbmdlcyBJIG1ha2UgdG8gdGhlbS4gS2VlcGluZyB0aGF0IGluIG1pbmQsIEkmIzM5O20gZ29pbmcgdG8gbGVhdmUgdGhlIGBGb2N1c1N5bWJvbHNgIGVtcHR5IGZvciBub3csIHRoYXQmIzM5O3MganVzdCBhIGdvb2QgcHJhY3RpY2UgaW4gdGhpcyBjYXNlLiBJIGRvbiYjMzk7dCB3YW50IHRvIGluYWR2ZXJ0ZW50bHkgaW50cm9kdWNlIGFueSBzbG93ZG93biBieSBhZGRpbmcgZXZlbiBhIHRpbnkgYW1vdW50IG9mIG92ZXJoZWFkLgoKTm93LCB0aGUgZG9jdW1lbnRhdGlvbiBzdWdnZXN0cyB0aGF0IGBJTkVUX1BTUGAgaXMgdGhlIGNvbmZpZyBvcHRpb24gcmVzcG9uc2libGUgZm9yIHRoZSBvcHRpbWl6YXRpb24gSSYjMzk7bSBsb29raW5nIGF0LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBhY2N1cmF0ZSBhbmQgdGhhdCBJJiMzOTttIHRhcmdldGluZyB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uLiBJdCYjMzk7cyBlYXN5IHRvIGdldCBsb3N0IGluIHRoZXNlIG9wdGlvbnMsIHNvIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBjb25maXJtIGJlZm9yZSBwcm9jZWVkaW5nLiBHb3R0YSBiZSBtZXRpY3Vsb3VzIHdoZW4gZGVhbGluZyB3aXRoIGNvcmUgbmV0d29ya2luZyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNjowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5FVF9QU1AmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BzcC9LY29uZmlnLTQtI1xubmV0L3BzcC9LY29uZmlnOjU6Y29uZmlnIElORVRfUFNQXG5uZXQvcHNwL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7UFNQIFNlY3VyaXR5IFByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA0MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFByb3Bvc2VkIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBJTkVUX1BTUGAgaXMgaW5kZWVkIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGJvdGggYSBjcml0aWNhbCBtZW1vcnkgbGVhayDigJMgc3BlY2lmaWNhbGx5LCBhIG1pc3NpbmcgYGluZXRfdHdza19wdXRgIOKAkyBhbmQgYSBidWcgaW4gdGhlIGNvbnRyb2wgZmxvdy4gVGhlIGZsb3cmIzM5O3MgZXJyb3Igc3RlbXMgZnJvbSBhIG1pc3NpbmcgYGdvdG8gZGlzY2FyZF9pdGAgY29uZGl0aW9uLiBUaGVzZSBpc3N1ZXMgbWFuaWZlc3Qgd2hlbiBhIHBhY2tldCBpcyBkcm9wcGVkIGR1ZSB0byBhIFBTUCBwb2xpY3kgY2hlY2sgd2l0aGluIHRoZSBgVENQX1RXX1NZTmAgc3RhdGUuCgpUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2Ugd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY29yZSBrZXJuZWwgbG9naWMgd2l0aGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoOyB0aGlzIGlzIGEgcmVhY2hhYmxlIGNvZGUgcGF0aC4gVGhlcmVmb3JlLCBhbmQgSSYjMzk7bSBxdWl0ZSBjb25maWRlbnQgb2YgdGhpcywgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIHNldCB0byB0cnVlLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgb25seSBjb25maWcgdGhhdCBuZWVkcyBjb25zaWRlcmF0aW9uLiBJIHNlZSBgSU5FVF9QU1BgIGRlcGVuZHMgb24gYElORVRgLiBJJiMzOTtsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGFueSBmdXJ0aGVyIGRlcGVuZGVuY2llcyB3aGlsZSBJJiMzOTttIGF0IGl0LCBidXQgbXkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgdGhlIG1vc3QgY3JpdGljYWwgYXNwZWN0IHRvIGFuYWx5emUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3BzcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUFNQIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0Y29uZmlnIElORVRfUFNQXG4gICA2Olx0XHRib29sIFwmIzM0O1BTUCBTZWN1cml0eSBQcm90b2NvbCBzdXBwb3J0XCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIElORVRcbiAgIDg6XHRcdHNlbGVjdCBTS0JfREVDUllQVEVEXG4gICA5Olx0XHRzZWxlY3QgU0tCX0VYVEVOU0lPTlNcbiAgMTA6XHRcdHNlbGVjdCBTT0NLX1ZBTElEQVRFX1hNSVRcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdEVuYWJsZSBrZXJuZWwgc3VwcG9ydCBmb3IgdGhlIFBTUCBTZWN1cml0eSBQcm90b2NvbCAoUFNQKS5cbiAgMTM6XHRcdEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTpcbiAgMTQ6XHRcdCAgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2dvb2dsZS9wc3AvbWFpbi9kb2MvUFNQX0FyY2hfU3BlYy5wZGZcbiAgMTU6XHRcbiAgMTY6XHRcdElmIHVuc3VyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MjIKCQkJCQkJCW91dHB1dDogNzcKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIENvZGUgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHBsYXkgaGVyZSBpcyBgSU5FVF9QU1BgLiBJIHNlZSB0aGF0IHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyB0b3VjaGVkIGFyZSBgdGNwX3Y0X3JjdmAgYW5kIGB0Y3BfdjZfcmN2YC4gU2luY2UgdGhvc2UgYXJlIGJvdGggaW4gdGhlIGhvdC1wYXRoLCB3ZSBzaG91bGRuJiMzOTt0IHNwZWNpZmljYWxseSBsaXN0IHRoZW0gaW4gdGhlIGBGb2N1c1N5bWJvbHNgIGFzIHRoYXQgd291bGQgcHJvYmFibHkgYmUgb3ZlcmtpbGwuIEJ1dCB3YWl0LCBhbSBJIG1pc3NpbmcgYW55dGhpbmc/IEFoYSwgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AgaXMgYWN0dWFsbHkgaW5saW5lZCwgc28gbm8gbmVlZCB0byBtZW50aW9uIHRoYXQgZXhwbGljaXRseS4gQW5kIGB0Y3BfdGltZXdhaXRfc3RhdGVfcHJvY2Vzc2AgcmVtYWlucyB1bnRvdWNoZWQuCgpBbHJpZ2h0LCB0aGF0IHNldHRsZXMgaXQuIE5vIHNwZWNpZmljIHN5bWJvbHMgdG8gZm9jdXMgb24gaGVyZS4KCkxldCYjMzk7cyBwdXQgdGhpcyBhbGwgdG9nZXRoZXIgdGhlbjoKCiogICBgV29ydGhGdXp6aW5nYDogVHJ1ZQoqICAgYEVuYWJsZUNvbmZpZ3NgOiBgWyYjMzQ7SU5FVF9QU1AmIzM0O11gCiogICBgRm9jdXNTeW1ib2xzYDogYFtdYAoKQW5kIHRoZSByZWFzb25pbmcgYmVoaW5kIGFsbCBvZiB0aGlzOiB0aGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgYW5kIHBvdGVudGlhbCBjb250cm9sIGZsb3cgcHJvYmxlbXMgd2l0aGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBgVElNRV9XQUlUYCBzb2NrZXRzIHdoZW4gdGhlIFBTUCBwb2xpY3kgcmVqZWN0cyBhIHBhY2tldC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBsb2dpYy4KClBlcmZlY3QuIE5vdyB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUX1BTUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvcnJlY3QgY29udHJvbCBmbG93IGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoIGZvciBUSU1FX1dBSVQgc29ja2V0cyB3aGVuIGEgcGFja2V0IGlzIGRyb3BwZWQgZHVlIHRvIFBTUCBwb2xpY3kgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJTkVUX1BTUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvcnJlY3QgY29udHJvbCBmbG93IGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoIGZvciBUSU1FX1dBSVQgc29ja2V0cyB3aGVuIGEgcGFja2V0IGlzIGRyb3BwZWQgZHVlIHRvIFBTUCBwb2xpY3kgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMTY6MDc6MDkuMDQ3MzYzNTA3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk5NTU2ODk2NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVF9QU1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBhbmQgaW5jb3JyZWN0IGNvbnRyb2wgZmxvdyBpbiB0aGUgVENQIHJlY2VpdmUgcGF0aCBmb3IgVElNRV9XQUlUIHNvY2tldHMgd2hlbiBhIHBhY2tldCBpcyBkcm9wcGVkIGR1ZSB0byBQU1AgcG9saWN5IGNoZWNrcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yayBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTY6MDc6MDkuMDQ3MzY3Nzc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjU2MDgxNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZDczNjIwYzJhZWVjMjc4NWY5MzJkNjQ3OTQ3YWRhOTcyYzNmMjFhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDExIDE2OjA3OjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXFxuaW5kZXggMjA5ZWY3NTIyNTA4ZmMuLjRhNDZkYTM3NTA0M2JlIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXFxuQEAgLTIzMTgsOCArMjMxOCwxMCBAQCBpbnQgdGNwX3Y0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRkcm9wX3JlYXNvbiA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayhpbmV0X3R3c2soc2spLCBza2IpO1xcbi1cXHRcXHRpZiAoZHJvcF9yZWFzb24pXFxuLVxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRpZiAoZHJvcF9yZWFzb24pIHtcXG4rXFx0XFx0XFx0aW5ldF90d3NrX3B1dChpbmV0X3R3c2soc2spKTtcXG4rXFx0XFx0XFx0Z290byBkaXNjYXJkX2l0O1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFx0XFx0LyogdG8gQUNLICovXFxuIFxcdFxcdGZhbGx0aHJvdWdoO1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0L2lwdjYvdGNwX2lwdjYuY1xcbmluZGV4IGViZTE2MWQ3MmZiZDA3Li41MjJiYTQ1Y2U5Yjc1OSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jXFxuKysrIGIvbmV0L2lwdjYvdGNwX2lwdjYuY1xcbkBAIC0xOTc3LDggKzE5NzcsMTAgQEAgSU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgaW50IHRjcF92Nl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0ZHJvcF9yZWFzb24gPSBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2soaW5ldF90d3NrKHNrKSwgc2tiKTtcXG4tXFx0XFx0aWYgKGRyb3BfcmVhc29uKVxcbi1cXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0aWYgKGRyb3BfcmVhc29uKSB7XFxuK1xcdFxcdFxcdGluZXRfdHdza19wdXQoaW5ldF90d3NrKHNrKSk7XFxuK1xcdFxcdFxcdGdvdG8gZGlzY2FyZF9pdDtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcdFxcdC8qIHRvIEFDSyAqL1xcbiBcXHRcXHRmYWxsdGhyb3VnaDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTY6MDc6MDkuNDEzODI1NjM2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU4OTIxODc2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUX1BTUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvcnJlY3QgY29udHJvbCBmbG93IGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoIGZvciBUSU1FX1dBSVQgc29ja2V0cyB3aGVuIGEgcGFja2V0IGlzIGRyb3BwZWQgZHVlIHRvIFBTUCBwb2xpY3kgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVkNzM2MjBjMmFlZWMyNzg1ZjkzMmQ2NDc5NDdhZGE5NzJjM2YyMWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxNjowNzowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5pbmRleCAyMDllZjc1MjI1MDhmYy4uNGE0NmRhMzc1MDQzYmUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfaXB2NC5jXG4rKysgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5AQCAtMjMxOCw4ICsyMzE4LDEwIEBAIGludCB0Y3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdH1cbiBcbiBcdFx0ZHJvcF9yZWFzb24gPSBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2soaW5ldF90d3NrKHNrKSwgc2tiKTtcbi1cdFx0aWYgKGRyb3BfcmVhc29uKVxuLVx0XHRcdGJyZWFrO1xuK1x0XHRpZiAoZHJvcF9yZWFzb24pIHtcbitcdFx0XHRpbmV0X3R3c2tfcHV0KGluZXRfdHdzayhzaykpO1xuK1x0XHRcdGdvdG8gZGlzY2FyZF9pdDtcbitcdFx0fVxuIFx0fVxuIFx0XHQvKiB0byBBQ0sgKi9cbiBcdFx0ZmFsbHRocm91Z2g7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9pcHY2LmNcbmluZGV4IGViZTE2MWQ3MmZiZDA3Li41MjJiYTQ1Y2U5Yjc1OSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3RjcF9pcHY2LmNcbisrKyBiL25ldC9pcHY2L3RjcF9pcHY2LmNcbkBAIC0xOTc3LDggKzE5NzcsMTAgQEAgSU5ESVJFQ1RfQ0FMTEFCTEVfU0NPUEUgaW50IHRjcF92Nl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0fVxuIFxuIFx0XHRkcm9wX3JlYXNvbiA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayhpbmV0X3R3c2soc2spLCBza2IpO1xuLVx0XHRpZiAoZHJvcF9yZWFzb24pXG4tXHRcdFx0YnJlYWs7XG4rXHRcdGlmIChkcm9wX3JlYXNvbikge1xuK1x0XHRcdGluZXRfdHdza19wdXQoaW5ldF90d3NrKHNrKSk7XG4rXHRcdFx0Z290byBkaXNjYXJkX2l0O1xuK1x0XHR9XG4gXHR9XG4gXHRcdC8qIHRvIEFDSyAqL1xuIFx0XHRmYWxsdGhyb3VnaDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE2OjA3OjA5LjQxMzgyNzA4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDkyMTg1NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVENQIFRJTUVfV0FJVCBTdGF0ZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSwgYW5kIGl0J3MgdG91Y2hpbmcgYG5ldC9pcHY0L3RjcF9pcHY0LmNgIGFuZCBgbmV0L2lwdjYvdGNwX2lwdjYuY2AuIEludGVyZXN0aW5nLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGFyb3VuZCBob3cgd2UgaGFuZGxlIGEgZHJvcCByZWFzb24gcmV0dXJuZWQgYnkgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AuIEl0J3MgZGV2aWF0aW5nIGZyb20gYSBzaW1wbGUgYGJyZWFrYCBub3csIGFuZCBpbnN0ZWFkIHVzZXMgYGluZXRfdHdza19wdXRgIG9uIHRoZSBgaW5ldF90d3NrYCBhc3NvY2lhdGVkIHdpdGggdGhlIHNvY2tldCAoYHNrYCksIGFuZCB0aGVuIGp1bXBzIHRvIGEgYGRpc2NhcmRfaXRgIGxhYmVsLiBUaGF0J3MgaW1tZWRpYXRlbHkgbWFraW5nIG1lIHRoaW5rIGFib3V0IHJlZmVyZW5jZSBjb3VudGluZyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMgaW4gdGhlIFRJTUVfV0FJVCBzdGF0ZS5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGdldCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGVyZSogdGhpcyBgcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrYCBpcyBjYWxsZWQgd2l0aGluIHRoZSByZWNlaXZlciByb3V0aW5lcyBgdGNwX3Y0X3JjdmAgYW5kIGB0Y3BfdjZfcmN2YC4gVGhpcyBsb29rcyBsaWtlIGl0J3Mgc3BlY2lmaWNhbGx5IGFib3V0IFRJTUVfV0FJVCBoYW5kbGluZywgYnV0IEkgbmVlZCBjb25maXJtYXRpb24uXG5cblRvIHZlcmlmeSBteSBhc3N1bXB0aW9uIGFuZCBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgZnVuY3Rpb24sIEknbGwgbGV2ZXJhZ2UgYGdyZXBwZXJgIHRvIHF1aWNrbHkgbG9jYXRlIGFsbCB1c2FnZXMgb2YgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AuIFRoaXMgd2lsbCBzaG93IG1lIHRoZSBjYWxsaW5nIGNvbnRleHQgYW5kIGFsbG93IG1lIHRvIHF1aWNrbHkgZ2V0IGJhY2sgdXAgdG8gc3BlZWQgb24gdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE2OjA3OjEzLjYyMzA0NzU2NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ4MTY2ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBzcF90d3NrX3J4X3BvbGljeV9jaGVja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9wc3AvZnVuY3Rpb25zLmg9MTIxPXN0YXRpYyBpbmxpbmUgZW51bSBza2JfZHJvcF9yZWFzb25cXG5pbmNsdWRlL25ldC9wc3AvZnVuY3Rpb25zLmg6MTIyOnBzcF90d3NrX3J4X3BvbGljeV9jaGVjayhzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5pbmNsdWRlL25ldC9wc3AvZnVuY3Rpb25zLmgtMTIzLXtcXG4tLVxcbmluY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaD0xODY9c3RhdGljIGlubGluZSBlbnVtIHNrYl9kcm9wX3JlYXNvblxcbmluY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaDoxODc6cHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKHN0cnVjdCBpbmV0X3RpbWV3YWl0X3NvY2sgKnR3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmluY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaC0xODgte1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0yMDY3PWludCB0Y3BfdjRfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTIzMTktXFxubmV0L2lwdjQvdGNwX2lwdjQuYzoyMzIwOlxcdFxcdGRyb3BfcmVhc29uID0gcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKGluZXRfdHdzayhzayksIHNrYik7XFxubmV0L2lwdjQvdGNwX2lwdjQuYy0yMzIxLVxcdFxcdGlmIChkcm9wX3JlYXNvbikge1xcbi0tXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jPTEwMT10Y3BfdGltZXdhaXRfc3RhdGVfcHJvY2VzcyhzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L3RjcF9taW5pc29ja3MuYy0xMTUtXFx0ICovXFxubmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jOjExNjpcXHRwc3BfZHJvcCA9IHBzcF90d3NrX3J4X3BvbGljeV9jaGVjayh0dywgc2tiKTtcXG5uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMtMTE3LVxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xNzI4PUlORElSRUNUX0NBTExBQkxFX1NDT1BFIGludCB0Y3BfdjZfcmN2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE5NzgtXFxubmV0L2lwdjYvdGNwX2lwdjYuYzoxOTc5OlxcdFxcdGRyb3BfcmVhc29uID0gcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKGluZXRfdHdzayhzayksIHNrYik7XFxubmV0L2lwdjYvdGNwX2lwdjYuYy0xOTgwLVxcdFxcdGlmIChkcm9wX3JlYXNvbikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzoxNS40NzEyMTk1NjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTkwNDI1NDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhhdCBxdWVyeSwgYXMgaWYgaXQgd2VyZSBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGZpZ3VyZSBvdXQgKndoZXJlKiB0aGlzIGBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2tgIGZsYWcgaXMgYWN0dWFsbHkgZW5hYmxlZC4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSBhbHJlYWR5IGhhdmUgYSBmZXcgbGlrZWx5IHNwb3RzIGluIG1pbmQgLSBidXQgSSBuZWVkIHRvIGJlIG1ldGhvZGljYWwuIFRoaXMgaXNuJ3QganVzdCBhIGJsaW5kIHNlYXJjaDsgSSdtIGxvb2tpbmcgZm9yIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgY29udHJvbHMgdGhpcyBzcGVjaWZpYyBiZWhhdmlvci4gSXQncyBsaWtlbHkgd2l0aGluIGEgYnJvYWRlciBzeXN0ZW0gb2YgbmV0d29yayBwb2xpY3kgb3Igc2VjdXJpdHkgc2V0dGluZ3MsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgY29udGV4dC4gSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyB0byBkaWcgaW4uIEkgd2lsbCBzdGFydCB3aXRoIGEgc2VhcmNoIG9mIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBtYXliZSB0aGUgZG9jdW1lbnRhdGlvbi4gQW5kIEkgc2hvdWxkIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBzZXR0aW5ncyBtaWdodCBiZSBkeW5hbWljLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTUyLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTY6MDc6MTguNDYxNjQ3NTExWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDcwMDU0MDksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19ORVRfUFNQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzoyMC4zNjg2NjQ3MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MzAyNDQ5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBBY3RpdmF0aW9uIG9mIGBwc3BgIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZW5hYmxpbmcgdGhpcyBgcHNwYCBmdW5jdGlvbmFsaXR5LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGluY2x1ZGUgZmlsZXMgdGhhdCBkZWZpbmUgaXRzIGludGVyZmFjZS4gQSBsaWtlbHkgc3RhcnRpbmcgcG9pbnQgd291bGQgYmUgYGluY2x1ZGUvbmV0L3BzcC9mdW5jdGlvbnMuaGAuIFRoYXQgaGVhZGVyIGZpbGUgaXMgdXN1YWxseSB0aGUgcGxhY2Ugd2hlcmUgdGhlIGNvcmUgZGVjbGFyYXRpb25zIGFuZCBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgd291bGQgbGl2ZS4gSSdtIGdvaW5nIHRvIGNoZWNrIHRoYXQgZmlsZSBhbmQgbG9vayBmb3IgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMsIHByZXByb2Nlc3NvciBtYWNyb3MsIG9yIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWlnaHQgYmUgdGllZCB0byB0aGUgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIG9mIHRoaXMgZmVhdHVyZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBjb25maWd1cmF0aW9ucyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgYHBzcGAgaXMgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM5NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE2OjA3OjIzLjA5ODkxMTM0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY5MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9uZXQvcHNwL2Z1bmN0aW9ucy5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi9cXG4gICAyOlxcdFxcbiAgIDM6XFx0I2lmbmRlZiBfX05FVF9QU1BfSEVMUEVSU19IXFxuICAgNDpcXHQjZGVmaW5lIF9fTkVUX1BTUF9IRUxQRVJTX0hcXG4gICA1OlxcdFxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NrYnVmZi5oXFx1MDAzZVxcbiAgIDc6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JjdXBkYXRlLmhcXHUwMDNlXFxuICAgODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdWRwLmhcXHUwMDNlXFxuICAgOTpcXHQjaW5jbHVkZSBcXHUwMDNjbmV0L3NvY2suaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvdGNwLmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbmV0L3BzcC90eXBlcy5oXFx1MDAzZVxcbiAgMTI6XFx0XFxuICAxMzpcXHRzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrO1xcbiAgMTQ6XFx0XFxuICAxNTpcXHQvKiBEcml2ZXItZmFjaW5nIEFQSSAqL1xcbiAgMTY6XFx0c3RydWN0IHBzcF9kZXYgKlxcbiAgMTc6XFx0cHNwX2Rldl9jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IHBzcF9kZXZfb3BzICpwc2Rfb3BzLFxcbiAgMTg6XFx0XFx0ICAgICAgIHN0cnVjdCBwc3BfZGV2X2NhcHMgKnBzZF9jYXBzLCB2b2lkICpwcml2X3B0cik7XFxuICAxOTpcXHR2b2lkIHBzcF9kZXZfdW5yZWdpc3RlcihzdHJ1Y3QgcHNwX2RldiAqcHNkKTtcXG4gIDIwOlxcdGJvb2wgcHNwX2Rldl9lbmNhcHN1bGF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsIF9fYmUzMiBzcGksXFxuICAyMTpcXHRcXHRcXHRcXHQgdTggdmVyLCBfX2JlMTYgc3BvcnQpO1xcbiAgMjI6XFx0aW50IHBzcF9kZXZfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHUxNiBkZXZfaWQsIHU4IGdlbmVyYXRpb24sIGJvb2wgc3RyaXBfaWN2KTtcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0LyogS2VybmVsLWZhY2luZyBBUEkgKi9cXG4gIDI1OlxcdHZvaWQgcHNwX2Fzc29jX3B1dChzdHJ1Y3QgcHNwX2Fzc29jICpwYXMpO1xcbiAgMjY6XFx0XFxuICAyNzpcXHRzdGF0aWMgaW5saW5lIHZvaWQgKnBzcF9hc3NvY19kcnZfZGF0YShzdHJ1Y3QgcHNwX2Fzc29jICpwYXMpXFxuICAyODpcXHR7XFxuICAyOTpcXHRcXHRyZXR1cm4gcGFzLVxcdTAwM2VkcnZfZGF0YTtcXG4gIDMwOlxcdH1cXG4gIDMxOlxcdFxcbiAgMzI6XFx0I2lmIElTX0VOQUJMRUQoQ09ORklHX0lORVRfUFNQKVxcbiAgMzM6XFx0dW5zaWduZWQgaW50IHBzcF9rZXlfc2l6ZSh1MzIgdmVyc2lvbik7XFxuICAzNDpcXHR2b2lkIHBzcF9za19hc3NvY19mcmVlKHN0cnVjdCBzb2NrICpzayk7XFxuICAzNTpcXHR2b2lkIHBzcF90d3NrX2luaXQoc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsIGNvbnN0IHN0cnVjdCBzb2NrICpzayk7XFxuICAzNjpcXHR2b2lkIHBzcF90d3NrX2Fzc29jX2ZyZWUoc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcpO1xcbiAgMzc6XFx0dm9pZCBwc3BfcmVwbHlfc2V0X2RlY3J5cHRlZChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpO1xcbiAgMzg6XFx0XFxuICAzOTpcXHRzdGF0aWMgaW5saW5lIHN0cnVjdCBwc3BfYXNzb2MgKnBzcF9za19hc3NvYyhjb25zdCBzdHJ1Y3Qgc29jayAqc2spXFxuICA0MDpcXHR7XFxuICA0MTpcXHRcXHRyZXR1cm4gcmN1X2RlcmVmZXJlbmNlX2NoZWNrKHNrLVxcdTAwM2Vwc3BfYXNzb2MsIGxvY2tkZXBfc29ja19pc19oZWxkKHNrKSk7XFxuICA0MjpcXHR9XFxuICA0MzpcXHRcXG4gIDQ0OlxcdHN0YXRpYyBpbmxpbmUgdm9pZFxcbiAgNDU6XFx0cHNwX2VucXVldWVfc2V0X2RlY3J5cHRlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuICA0NjpcXHR7XFxuICA0NzpcXHRcXHRzdHJ1Y3QgcHNwX2Fzc29jICpwYXM7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdFxcdHBhcyA9IHBzcF9za19hc3NvYyhzayk7XFxuICA1MDpcXHRcXHRpZiAocGFzIFxcdTAwMjZcXHUwMDI2IHBhcy1cXHUwMDNldHguc3BpKVxcbiAgNTE6XFx0XFx0XFx0c2tiLVxcdTAwM2VkZWNyeXB0ZWQgPSAxO1xcbiAgNTI6XFx0fVxcbiAgNTM6XFx0XFxuICA1NDpcXHRzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmdcXG4gIDU1OlxcdF9fcHNwX3NrYl9jb2FsZXNjZV9kaWZmKGNvbnN0IHN0cnVjdCBza19idWZmICpvbmUsIGNvbnN0IHN0cnVjdCBza19idWZmICp0d28sXFxuICA1NjpcXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nIGRpZmZzKVxcbiAgNTc6XFx0e1xcbiAgNTg6XFx0XFx0c3RydWN0IHBzcF9za2JfZXh0ICphLCAqYjtcXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0YSA9IHNrYl9leHRfZmluZChvbmUsIFNLQl9FWFRfUFNQKTtcXG4gIDYxOlxcdFxcdGIgPSBza2JfZXh0X2ZpbmQodHdvLCBTS0JfRVhUX1BTUCk7XFxuICA2MjpcXHRcXG4gIDYzOlxcdFxcdGRpZmZzIHw9ICghIWEpIF4gKCEhYik7XFxuICA2NDpcXHRcXHRpZiAoIWRpZmZzIFxcdTAwMjZcXHUwMDI2IHVubGlrZWx5KGEpKVxcbiAgNjU6XFx0XFx0XFx0ZGlmZnMgfD0gbWVtY21wKGEsIGIsIHNpemVvZigqYSkpO1xcbiAgNjY6XFx0XFx0cmV0dXJuIGRpZmZzO1xcbiAgNjc6XFx0fVxcbiAgNjg6XFx0XFxuICA2OTpcXHRzdGF0aWMgaW5saW5lIGJvb2xcXG4gIDcwOlxcdHBzcF9pc19hbGxvd2VkX25vbmRhdGEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHBzcF9hc3NvYyAqcGFzKVxcbiAgNzE6XFx0e1xcbiAgNzI6XFx0XFx0Ym9vbCBmaW4gPSAhIShUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZXRjcF9mbGFncyBcXHUwMDI2IFRDUEhEUl9GSU4pO1xcbiAgNzM6XFx0XFx0dTMyIGVuZF9zZXEgPSBUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZWVuZF9zZXE7XFxuICA3NDpcXHRcXHR1MzIgc2VxID0gVENQX1NLQl9DQihza2IpLVxcdTAwM2VzZXE7XFxuICA3NTpcXHRcXHRib29sIHB1cmVfZmluO1xcbiAgNzY6XFx0XFxuICA3NzpcXHRcXHRwdXJlX2ZpbiA9IGZpbiBcXHUwMDI2XFx1MDAyNiBlbmRfc2VxIC0gc2VxID09IDE7XFxuICA3ODpcXHRcXG4gIDc5OlxcdFxcdHJldHVybiBzZXEgPT0gZW5kX3NlcSB8fCAocHVyZV9maW4gXFx1MDAyNlxcdTAwMjYgc2VxID09IHBhcy1cXHUwMDNldXBncmFkZV9zZXEpO1xcbiAgODA6XFx0fVxcbiAgODE6XFx0XFxuICA4MjpcXHRzdGF0aWMgaW5saW5lIGJvb2xcXG4gIDgzOlxcdHBzcF9wc2VfbWF0Y2hlc19wYXMoc3RydWN0IHBzcF9za2JfZXh0ICpwc2UsIHN0cnVjdCBwc3BfYXNzb2MgKnBhcylcXG4gIDg0OlxcdHtcXG4gIDg1OlxcdFxcdHJldHVybiBwc2UgXFx1MDAyNlxcdTAwMjYgcGFzLVxcdTAwM2VyeC5zcGkgPT0gcHNlLVxcdTAwM2VzcGkgXFx1MDAyNlxcdTAwMjZcXG4gIDg2OlxcdFxcdCAgICAgICBwYXMtXFx1MDAzZWdlbmVyYXRpb24gPT0gcHNlLVxcdTAwM2VnZW5lcmF0aW9uIFxcdTAwMjZcXHUwMDI2XFxuICA4NzpcXHRcXHQgICAgICAgcGFzLVxcdTAwM2V2ZXJzaW9uID09IHBzZS1cXHUwMDNldmVyc2lvbiBcXHUwMDI2XFx1MDAyNlxcbiAgODg6XFx0XFx0ICAgICAgIHBhcy1cXHUwMDNlZGV2X2lkID09IHBzZS1cXHUwMDNlZGV2X2lkO1xcbiAgODk6XFx0fVxcbiAgOTA6XFx0XFxuICA5MTpcXHRzdGF0aWMgaW5saW5lIGVudW0gc2tiX2Ryb3BfcmVhc29uXFxuICA5MjpcXHRfX3BzcF9za19yeF9wb2xpY3lfY2hlY2soc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHBzcF9hc3NvYyAqcGFzKVxcbiAgOTM6XFx0e1xcbiAgOTQ6XFx0XFx0c3RydWN0IHBzcF9za2JfZXh0ICpwc2UgPSBza2JfZXh0X2ZpbmQoc2tiLCBTS0JfRVhUX1BTUCk7XFxuICA5NTpcXHRcXG4gIDk2OlxcdFxcdGlmICghcGFzKVxcbiAgOTc6XFx0XFx0XFx0cmV0dXJuIHBzZSA/IFNLQl9EUk9QX1JFQVNPTl9QU1BfSU5QVVQgOiAwO1xcbiAgOTg6XFx0XFxuICA5OTpcXHRcXHRpZiAobGlrZWx5KHBzcF9wc2VfbWF0Y2hlc19wYXMocHNlLCBwYXMpKSkge1xcbiAxMDA6XFx0XFx0XFx0aWYgKHVubGlrZWx5KCFwYXMtXFx1MDAzZXBlZXJfdHgpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzoyMy4wOTkwMDkzNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1Mzc0MzkyODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVENQIFJlY2VpdmUgUGF0aCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb25maWcgaXMgYElORVRfUFNQYCwgbWVhbmluZyB0aGlzIHBhdGNoIGlzIHNwZWNpZmljYWxseSB0aWVkIHRvIFBsdWdnYWJsZSBTZWN1cml0eSBQcm90b2NvbCwgYW5kIGl0J3MgaGl0dGluZyB0aGUgYHRjcF92NF9yY3ZgIGFuZCBgdGNwX3Y2X3JjdmAgZnVuY3Rpb25zLiBSaWdodCBhd2F5LCB0aGF0IHJhaXNlcyBhIGZsYWcg4oCTIHRoZXNlIGFyZSBjb3JlLCBob3QtcGF0aCBmdW5jdGlvbnMgaW4gdGhlIFRDUCByZWNlaXZlIHBhdGguIFRoZSBmaXggc2VlbXMgdG8gYmUgd2l0aGluIHRoZSBgVElNRV9XQUlUYCBzb2NrZXQgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBhZGRyZXNzaW5nIGFuIGlzc3VlIHdoZXJlIGBkcm9wX3JlYXNvbmAgZnJvbSBgcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrYCB3YXMgaW5jb3JyZWN0bHkgYnJlYWtpbmcgYSBsb29wLCBsZWFkaW5nIHRvIGEgZHJvcHBlZCBgdHdza2AgYW5kIGBza2JgLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBiZWNvbWVzIGhvdyB0byBjaGFyYWN0ZXJpemUgdGhpcyBjaGFuZ2UgZWZmZWN0aXZlbHkgZm9yIHRlc3Rpbmcgb3IgYW5hbHlzaXMuIFNob3VsZCBJIGJlIGZvY3VzaW5nIG9uIGB0Y3BfdjRfcmN2YCBhbmQgYHRjcF92Nl9yY3ZgIGRpcmVjdGx5PyBUaGV5IGFyZSBpbmRlZWQgY3JpdGljYWwsIGJ1dCB0aGV5J3JlIHNvIGZ1bmRhbWVudGFsIHRoYXQgaW5jbHVkaW5nIHRoZW0gaW4gYSBgRm9jdXNTeW1ib2xzYCBsaXN0IGNvdWxkIHRocm93IG9mZiB0ZXN0IGRpc3RyaWJ1dGlvbnMgZHVlIHRvIHRoZWlyIHByZXZhbGVuY2UuIFdoYXQncyB0aGUgYmVzdCBhcHByb2FjaCBoZXJlP1xuXG5gcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrYCBpcyB0aGUgbGlrZWx5IGN1bHByaXQgb2YgdGhlIGJ1Zy4gSXQncyBhbiBpbmxpbmUgZnVuY3Rpb24sIHNvIGl0IHdvbid0IGJlIGluIHRoZSBzeW1ib2wgdGFibGUsIHdoaWNoIG1ha2VzIGl0IGFuIGludGVyZXN0aW5nIGNvbnNpZGVyYXRpb24uIEkgYWxzbyBuZWVkIHRvIHRoaW5rIGFib3V0IGFsdGVybmF0aXZlcy4gYHRjcF90aW1ld2FpdF9zdGF0ZV9wcm9jZXNzYCBpc24ndCBtb2RpZmllZCBieSB0aGlzIHBhdGNoIGRpcmVjdGx5LiBXaGF0IG90aGVyIG9wdGlvbnMgYXJlIHRoZXJlP1xuXG5MZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGxvY2F0aW9uIGZvciBgdGNwX3Y0X3JjdmAsIGFyb3VuZCBsaW5lIDIzMTggaW4gYG5ldC9pcHY0L3RjcF9pcHY0LmNgIHRvIHNvbGlkaWZ5IHdoYXQncyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxOTEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzoyOS42MzY0NTAzODhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjMwMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjMwMDpcXHRcXHRcXHRnb3RvIGNzdW1fZXJyb3I7XFxuMjMwMTpcXHRcXHR9XFxuMjMwMjpcXHRcXG4yMzAzOlxcdFxcdHR3X3N0YXR1cyA9IHRjcF90aW1ld2FpdF9zdGF0ZV9wcm9jZXNzKGluZXRfdHdzayhzayksIHNrYiwgdGgsIFxcdTAwMjZpc24sXFxuMjMwNDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmRyb3BfcmVhc29uKTtcXG4yMzA1OlxcdFxcdHN3aXRjaCAodHdfc3RhdHVzKSB7XFxuMjMwNjpcXHRcXHRjYXNlIFRDUF9UV19TWU46IHtcXG4yMzA3OlxcdFxcdFxcdHN0cnVjdCBzb2NrICpzazIgPSBpbmV0X2xvb2t1cF9saXN0ZW5lcihuZXQsIHNrYiwgX190Y3BfaGRybGVuKHRoKSxcXG4yMzA4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGlwaC1cXHUwMDNlc2FkZHIsIHRoLVxcdTAwM2Vzb3VyY2UsXFxuMjMwOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpcGgtXFx1MDAzZWRhZGRyLCB0aC1cXHUwMDNlZGVzdCxcXG4yMzEwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGluZXRfaWlmKHNrYiksXFxuMjMxMTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRzZGlmKTtcXG4yMzEyOlxcdFxcdFxcdGlmIChzazIpIHtcXG4yMzEzOlxcdFxcdFxcdFxcdGluZXRfdHdza19kZXNjaGVkdWxlX3B1dChpbmV0X3R3c2soc2spKTtcXG4yMzE0OlxcdFxcdFxcdFxcdHNrID0gc2syO1xcbjIzMTU6XFx0XFx0XFx0XFx0dGNwX3Y0X3Jlc3RvcmVfY2Ioc2tiKTtcXG4yMzE2OlxcdFxcdFxcdFxcdHJlZmNvdW50ZWQgPSBmYWxzZTtcXG4yMzE3OlxcdFxcdFxcdFxcdGdvdG8gcHJvY2VzcztcXG4yMzE4OlxcdFxcdFxcdH1cXG4yMzE5OlxcdFxcbjIzMjA6XFx0XFx0XFx0ZHJvcF9yZWFzb24gPSBwc3BfdHdza19yeF9wb2xpY3lfY2hlY2soaW5ldF90d3NrKHNrKSwgc2tiKTtcXG4yMzIxOlxcdFxcdFxcdGlmIChkcm9wX3JlYXNvbikge1xcbjIzMjI6XFx0XFx0XFx0XFx0aW5ldF90d3NrX3B1dChpbmV0X3R3c2soc2spKTtcXG4yMzIzOlxcdFxcdFxcdFxcdGdvdG8gZGlzY2FyZF9pdDtcXG4yMzI0OlxcdFxcdFxcdH1cXG4yMzI1OlxcdFxcdH1cXG4yMzI2OlxcdFxcdFxcdC8qIHRvIEFDSyAqL1xcbjIzMjc6XFx0XFx0XFx0ZmFsbHRocm91Z2g7XFxuMjMyODpcXHRcXHRjYXNlIFRDUF9UV19BQ0s6XFxuMjMyOTpcXHRcXHRjYXNlIFRDUF9UV19BQ0tfT09XOlxcbjIzMzA6XFx0XFx0XFx0dGNwX3Y0X3RpbWV3YWl0X2Fjayhzaywgc2tiLCB0d19zdGF0dXMpO1xcbjIzMzE6XFx0XFx0XFx0YnJlYWs7XFxuMjMzMjpcXHRcXHRjYXNlIFRDUF9UV19SU1Q6XFxuMjMzMzpcXHRcXHRcXHR0Y3BfdjRfc2VuZF9yZXNldChzaywgc2tiLCBTS19SU1RfUkVBU09OX1RDUF9USU1FV0FJVF9TT0NLRVQpO1xcbjIzMzQ6XFx0XFx0XFx0aW5ldF90d3NrX2Rlc2NoZWR1bGVfcHV0KGluZXRfdHdzayhzaykpO1xcbjIzMzU6XFx0XFx0XFx0Z290byBkaXNjYXJkX2l0O1xcbjIzMzY6XFx0XFx0Y2FzZSBUQ1BfVFdfU1VDQ0VTUzo7XFxuMjMzNzpcXHRcXHR9XFxuMjMzODpcXHRcXHRnb3RvIGRpc2NhcmRfaXQ7XFxuMjMzOTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE2OjA3OjI5LjYzNjY4NTQxOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTcyOTIyMTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVxdWVzdCBmb3IgRm9jdXNlZCBGdW5jdGlvbiBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBpbnN0cnVjdGlvbiBpcyB0byBhdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLiBUaGUgY2hhbmdlIGlzIGRlZmluaXRlbHkgaW4gYHRjcF92NF9yY3ZgIGFuZCBgdGNwX3Y2X3JjdmAuIFRob3NlIGFyZSBjbGFzc2ljIGhvdC1wYXRoIGZ1bmN0aW9ucyBmb3IgVENQIHBhY2tldCByZWNlcHRpb24sIHNvIGxpc3RpbmcgdGhlbSB3b3VsZCBjbGVhcmx5IHZpb2xhdGUgdGhlIFwic2tld2VkIHRlc3QgZGlzdHJpYnV0aW9uc1wiIGd1aWRlbGluZS4gSSdtIGdvaW5nIHRvIGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5IGZvciBub3csIGFzIHRoYXQncyB0aGUgbW9zdCBjb25zZXJ2YXRpdmUgYXBwcm9hY2ggYW5kIGFsaWducyB3aXRoIHRoZSBleHBsaWNpdCBkaXJlY3RpdmUuXG5cbkJ1dCwgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGVyZSAqYW55dGhpbmcqIGVsc2UsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBQYWNrZXQgU3RhdGUgUHJvY2Vzc29yIChQU1ApIHRoYXQgd2UgY291bGQgcG90ZW50aWFsbHkgZm9jdXMgb24/IExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGNvZGUuIFRoZSBwcm9tcHQgKmlzKiBhc2tpbmcgZm9yIGZvY3VzZWQgZnVuY3Rpb25zLCBpZiB0aGV5IGV4aXN0LiBJdCBtaWdodCBiZSB3b3J0aCBhIGxvb2suIEknbGwgc2VhcmNoIGBuZXQvaXB2NC90Y3BfbWluaXNvY2tzLmNgIGxvb2tpbmcgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIGB0Y3BfdGltZXdhaXRfc3RhdGVfcHJvY2Vzc2AuIExldCdzIHNlZSBpZiB0aGF0IGZpbGUgaG9sZHMgYSByZWxldmFudCBmdW5jdGlvbiwgc28gSSBjYW4gZW5zdXJlIEknbSBub3QgbWlzc2luZyBhIG1vcmUgc3BlY2lmaWMgZW50cnkgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NjMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzozMy42MDk2MTA5NjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEwMDpcXHRlbnVtIHRjcF90d19zdGF0dXNcXG4gMTAxOlxcdHRjcF90aW1ld2FpdF9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBpbmV0X3RpbWV3YWl0X3NvY2sgKnR3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiAxMDI6XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHRjcGhkciAqdGgsIHUzMiAqdHdfaXNuLFxcbiAxMDM6XFx0XFx0XFx0XFx0ICAgZW51bSBza2JfZHJvcF9yZWFzb24gKmRyb3BfcmVhc29uKVxcbiAxMDQ6XFx0e1xcbiAxMDU6XFx0XFx0c3RydWN0IHRjcF90aW1ld2FpdF9zb2NrICp0Y3B0dyA9IHRjcF90d3NrKChzdHJ1Y3Qgc29jayAqKXR3KTtcXG4gMTA2OlxcdFxcdHUzMiByY3Zfbnh0ID0gUkVBRF9PTkNFKHRjcHR3LVxcdTAwM2V0d19yY3Zfbnh0KTtcXG4gMTA3OlxcdFxcdHN0cnVjdCB0Y3Bfb3B0aW9uc19yZWNlaXZlZCB0bXBfb3B0O1xcbiAxMDg6XFx0XFx0ZW51bSBza2JfZHJvcF9yZWFzb24gcHNwX2Ryb3A7XFxuIDEwOTpcXHRcXHRib29sIHBhd3NfcmVqZWN0ID0gZmFsc2U7XFxuIDExMDpcXHRcXHRpbnQgdHNfcmVjZW50X3N0YW1wO1xcbiAxMTE6XFx0XFxuIDExMjpcXHRcXHQvKiBJbnN0ZWFkIG9mIGRyb3BwaW5nIGltbWVkaWF0ZWx5LCB3YWl0IHRvIHNlZSB3aGF0IHZhbHVlIGlzXFxuIDExMzpcXHRcXHQgKiByZXR1cm5lZC4gV2Ugd2lsbCBhY2NlcHQgYSBub24gcHNwLWVuY2Fwc3VsYXRlZCBzeW4gaW4gdGhlXFxuIDExNDpcXHRcXHQgKiBjYXNlIHdoZXJlIFRDUF9UV19TWU4gaXMgcmV0dXJuZWQuXFxuIDExNTpcXHRcXHQgKi9cXG4gMTE2OlxcdFxcdHBzcF9kcm9wID0gcHNwX3R3c2tfcnhfcG9saWN5X2NoZWNrKHR3LCBza2IpO1xcbiAxMTc6XFx0XFxuIDExODpcXHRcXHR0bXBfb3B0LnNhd190c3RhbXAgPSAwO1xcbiAxMTk6XFx0XFx0dHNfcmVjZW50X3N0YW1wID0gUkVBRF9PTkNFKHRjcHR3LVxcdTAwM2V0d190c19yZWNlbnRfc3RhbXApO1xcbiAxMjA6XFx0XFx0aWYgKHRoLVxcdTAwM2Vkb2ZmIFxcdTAwM2UgKHNpemVvZigqdGgpIFxcdTAwM2VcXHUwMDNlIDIpIFxcdTAwMjZcXHUwMDI2IHRzX3JlY2VudF9zdGFtcCkge1xcbiAxMjE6XFx0XFx0XFx0dGNwX3BhcnNlX29wdGlvbnModHdza19uZXQodHcpLCBza2IsIFxcdTAwMjZ0bXBfb3B0LCAwLCBOVUxMKTtcXG4gMTIyOlxcdFxcbiAxMjM6XFx0XFx0XFx0aWYgKHRtcF9vcHQuc2F3X3RzdGFtcCkge1xcbiAxMjQ6XFx0XFx0XFx0XFx0aWYgKHRtcF9vcHQucmN2X3RzZWNyKVxcbiAxMjU6XFx0XFx0XFx0XFx0XFx0dG1wX29wdC5yY3ZfdHNlY3IgLT0gdGNwdHctXFx1MDAzZXR3X3RzX29mZnNldDtcXG4gMTI2OlxcdFxcdFxcdFxcdHRtcF9vcHQudHNfcmVjZW50XFx0PSBSRUFEX09OQ0UodGNwdHctXFx1MDAzZXR3X3RzX3JlY2VudCk7XFxuIDEyNzpcXHRcXHRcXHRcXHR0bXBfb3B0LnRzX3JlY2VudF9zdGFtcFxcdD0gdHNfcmVjZW50X3N0YW1wO1xcbiAxMjg6XFx0XFx0XFx0XFx0cGF3c19yZWplY3QgPSB0Y3BfcGF3c19yZWplY3QoXFx1MDAyNnRtcF9vcHQsIHRoLVxcdTAwM2Vyc3QpO1xcbiAxMjk6XFx0XFx0XFx0fVxcbiAxMzA6XFx0XFx0fVxcbiAxMzE6XFx0XFxuIDEzMjpcXHRcXHRpZiAoUkVBRF9PTkNFKHR3LVxcdTAwM2V0d19zdWJzdGF0ZSkgPT0gVENQX0ZJTl9XQUlUMikge1xcbiAxMzM6XFx0XFx0XFx0LyogSnVzdCByZXBlYXQgYWxsIHRoZSBjaGVja3Mgb2YgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzKCkgKi9cXG4gMTM0OlxcdFxcbiAxMzU6XFx0XFx0XFx0aWYgKHBzcF9kcm9wKVxcbiAxMzY6XFx0XFx0XFx0XFx0Z290byBvdXRfcHV0O1xcbiAxMzc6XFx0XFxuIDEzODpcXHRcXHRcXHQvKiBPdXQgb2Ygd2luZG93LCBzZW5kIEFDSyAqL1xcbiAxMzk6XFx0XFx0XFx0aWYgKHBhd3NfcmVqZWN0IHx8XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE2OjA3OjMzLjYwOTcwNTYxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzA2Mzc3NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBUQ1AgUmVjZWl2ZSBQYXRoIE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhlc2UgYHRjcF92NF9yY3ZgIGFuZCBgdGNwX3Y2X3JjdmAgZnVuY3Rpb25zLiBUaGV5J3JlIGNsZWFybHkgcGVyZm9ybWFuY2UtY3JpdGljYWwsIHJpZ2h0IGluIHRoZSBob3QgcGF0aC4gVGhhdCBtZWFucyBJIG5lZWQgdG8gYmUgKmV4dHJlbWVseSogY2FyZWZ1bCBhYm91dCBhbnkgY2hhbmdlcyBJIG1ha2UgdG8gdGhlbS4gS2VlcGluZyB0aGF0IGluIG1pbmQsIEknbSBnb2luZyB0byBsZWF2ZSB0aGUgYEZvY3VzU3ltYm9sc2AgZW1wdHkgZm9yIG5vdywgdGhhdCdzIGp1c3QgYSBnb29kIHByYWN0aWNlIGluIHRoaXMgY2FzZS4gSSBkb24ndCB3YW50IHRvIGluYWR2ZXJ0ZW50bHkgaW50cm9kdWNlIGFueSBzbG93ZG93biBieSBhZGRpbmcgZXZlbiBhIHRpbnkgYW1vdW50IG9mIG92ZXJoZWFkLlxuXG5Ob3csIHRoZSBkb2N1bWVudGF0aW9uIHN1Z2dlc3RzIHRoYXQgYElORVRfUFNQYCBpcyB0aGUgY29uZmlnIG9wdGlvbiByZXNwb25zaWJsZSBmb3IgdGhlIG9wdGltaXphdGlvbiBJJ20gbG9va2luZyBhdC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBhY2N1cmF0ZSBhbmQgdGhhdCBJJ20gdGFyZ2V0aW5nIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24uIEl0J3MgZWFzeSB0byBnZXQgbG9zdCBpbiB0aGVzZSBvcHRpb25zLCBzbyBJJ2xsIG1ha2Ugc3VyZSB0byBjb25maXJtIGJlZm9yZSBwcm9jZWVkaW5nLiBHb3R0YSBiZSBtZXRpY3Vsb3VzIHdoZW4gZGVhbGluZyB3aXRoIGNvcmUgbmV0d29ya2luZyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzA0LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzozNy4zMTYwODQ3NTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NzE3MzE5NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElORVRfUFNQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9wc3AvS2NvbmZpZy00LSNcXG5uZXQvcHNwL0tjb25maWc6NTpjb25maWcgSU5FVF9QU1BcXG5uZXQvcHNwL0tjb25maWctNi1cXHRib29sIFxcXCJQU1AgU2VjdXJpdHkgUHJvdG9jb2wgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTY6MDc6MzkuODg3ODI0OTkxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MDA0MzQ0MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYElORVRfUFNQYCBpcyBpbmRlZWQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYm90aCBhIGNyaXRpY2FsIG1lbW9yeSBsZWFrIOKAkyBzcGVjaWZpY2FsbHksIGEgbWlzc2luZyBgaW5ldF90d3NrX3B1dGAg4oCTIGFuZCBhIGJ1ZyBpbiB0aGUgY29udHJvbCBmbG93LiBUaGUgZmxvdydzIGVycm9yIHN0ZW1zIGZyb20gYSBtaXNzaW5nIGBnb3RvIGRpc2NhcmRfaXRgIGNvbmRpdGlvbi4gVGhlc2UgaXNzdWVzIG1hbmlmZXN0IHdoZW4gYSBwYWNrZXQgaXMgZHJvcHBlZCBkdWUgdG8gYSBQU1AgcG9saWN5IGNoZWNrIHdpdGhpbiB0aGUgYFRDUF9UV19TWU5gIHN0YXRlLlxuXG5UaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2Ugd2UncmUgdGFsa2luZyBhYm91dCBjb3JlIGtlcm5lbCBsb2dpYyB3aXRoaW4gdGhlIFRDUCByZWNlaXZlIHBhdGg7IHRoaXMgaXMgYSByZWFjaGFibGUgY29kZSBwYXRoLiBUaGVyZWZvcmUsIGFuZCBJJ20gcXVpdGUgY29uZmlkZW50IG9mIHRoaXMsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBzZXQgdG8gdHJ1ZS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IGNvbmZpZyB0aGF0IG5lZWRzIGNvbnNpZGVyYXRpb24uIEkgc2VlIGBJTkVUX1BTUGAgZGVwZW5kcyBvbiBgSU5FVGAuIEknbGwga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgZnVydGhlciBkZXBlbmRlbmNpZXMgd2hpbGUgSSdtIGF0IGl0LCBidXQgbXkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgdGhlIG1vc3QgY3JpdGljYWwgYXNwZWN0IHRvIGFuYWx5emUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNDIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTY6MDc6NDQuMzg4MjYxMTQzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9wc3AvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQU1AgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0Y29uZmlnIElORVRfUFNQXFxuICAgNjpcXHRcXHRib29sIFxcXCJQU1AgU2VjdXJpdHkgUHJvdG9jb2wgc3VwcG9ydFxcXCJcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgIDg6XFx0XFx0c2VsZWN0IFNLQl9ERUNSWVBURURcXG4gICA5OlxcdFxcdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xcbiAgMTA6XFx0XFx0c2VsZWN0IFNPQ0tfVkFMSURBVEVfWE1JVFxcbiAgMTE6XFx0XFx0aGVscFxcbiAgMTI6XFx0XFx0RW5hYmxlIGtlcm5lbCBzdXBwb3J0IGZvciB0aGUgUFNQIFNlY3VyaXR5IFByb3RvY29sIChQU1ApLlxcbiAgMTM6XFx0XFx0Rm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOlxcbiAgMTQ6XFx0XFx0ICBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZ29vZ2xlL3BzcC9tYWluL2RvYy9QU1BfQXJjaF9TcGVjLnBkZlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHRJZiB1bnN1cmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNjowNzo0NC4zODgzMTY5MzNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0MDAwNzIzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQ29kZSBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBwbGF5IGhlcmUgaXMgYElORVRfUFNQYC4gSSBzZWUgdGhhdCB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdG91Y2hlZCBhcmUgYHRjcF92NF9yY3ZgIGFuZCBgdGNwX3Y2X3JjdmAuIFNpbmNlIHRob3NlIGFyZSBib3RoIGluIHRoZSBob3QtcGF0aCwgd2Ugc2hvdWxkbid0IHNwZWNpZmljYWxseSBsaXN0IHRoZW0gaW4gdGhlIGBGb2N1c1N5bWJvbHNgIGFzIHRoYXQgd291bGQgcHJvYmFibHkgYmUgb3ZlcmtpbGwuIEJ1dCB3YWl0LCBhbSBJIG1pc3NpbmcgYW55dGhpbmc/IEFoYSwgYHBzcF90d3NrX3J4X3BvbGljeV9jaGVja2AgaXMgYWN0dWFsbHkgaW5saW5lZCwgc28gbm8gbmVlZCB0byBtZW50aW9uIHRoYXQgZXhwbGljaXRseS4gQW5kIGB0Y3BfdGltZXdhaXRfc3RhdGVfcHJvY2Vzc2AgcmVtYWlucyB1bnRvdWNoZWQuXG5cbkFscmlnaHQsIHRoYXQgc2V0dGxlcyBpdC4gTm8gc3BlY2lmaWMgc3ltYm9scyB0byBmb2N1cyBvbiBoZXJlLlxuXG5MZXQncyBwdXQgdGhpcyBhbGwgdG9nZXRoZXIgdGhlbjpcblxuKiAgIGBXb3J0aEZ1enppbmdgOiBUcnVlXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBgW1wiSU5FVF9QU1BcIl1gXG4qICAgYEZvY3VzU3ltYm9sc2A6IGBbXWBcblxuQW5kIHRoZSByZWFzb25pbmcgYmVoaW5kIGFsbCBvZiB0aGlzOiB0aGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGxlYWsgYW5kIHBvdGVudGlhbCBjb250cm9sIGZsb3cgcHJvYmxlbXMgd2l0aGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBgVElNRV9XQUlUYCBzb2NrZXRzIHdoZW4gdGhlIFBTUCBwb2xpY3kgcmVqZWN0cyBhIHBhY2tldC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBsb2dpYy5cblxuUGVyZmVjdC4gTm93IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYyMiwiT3V0cHV0VG9rZW5zIjo3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE2OjA3OjQ4LjkyODMyNjQxOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NzEyNDI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUX1BTUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBpbmNvcnJlY3QgY29udHJvbCBmbG93IGluIHRoZSBUQ1AgcmVjZWl2ZSBwYXRoIGZvciBUSU1FX1dBSVQgc29ja2V0cyB3aGVuIGEgcGFja2V0IGlzIGRyb3BwZWQgZHVlIHRvIFBTUCBwb2xpY3kgY2hlY2tzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRfUFNQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgYW5kIGluY29ycmVjdCBjb250cm9sIGZsb3cgaW4gdGhlIFRDUCByZWNlaXZlIHBhdGggZm9yIFRJTUVfV0FJVCBzb2NrZXRzIHdoZW4gYSBwYWNrZXQgaXMgZHJvcHBlZCBkdWUgdG8gUFNQIHBvbGljeSBjaGVja3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowgg79r[1] Phase: Succeeded StartedAt: 2026-07-11 16:08:00 +0000 UTC FinishedAt: 2026-07-11 16:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-11 16:08:00 +0000 UTC FinishedAt: 2026-07-11 16:08:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2] Phase: Succeeded StartedAt: 2026-07-11 16:08:00 +0000 UTC FinishedAt: 2026-07-11 21:08:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:08:00 +0000 UTC FinishedAt: 2026-07-11 21:08:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:08:00 +0000 UTC FinishedAt: 2026-07-11 16:08:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:08:00 +0000 UTC FinishedAt: 2026-07-11 16:08:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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-workflowgg79r/series-workflowgg79r-convert-artifact-4046475056/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:08:10 +0000 UTC FinishedAt: 2026-07-11 16:55:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:08:10 +0000 UTC FinishedAt: 2026-07-11 16:55:21 +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:*06fa2331-7fd5-4648-afd2-1af5293b3714,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-workflowgg79r/series-workflowgg79r-convert-artifact-4046475056/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": "4052b8e7-ecdb-4a51-b7b1-36ee986c170d", "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-workflowgg79r/series-workflowgg79r-build-action-2175810614/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:08:10 +0000 UTC FinishedAt: 2026-07-11 16:55:11 +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:*06fa2331-7fd5-4648-afd2-1af5293b3714,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-workflowgg79r/series-workflowgg79r-convert-artifact-4046475056/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": "4052b8e7-ecdb-4a51-b7b1-36ee986c170d", "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-workflowgg79r/series-workflowgg79r-build-action-2175810614/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:55:21 +0000 UTC FinishedAt: 2026-07-11 16:55:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:55:21 +0000 UTC FinishedAt: 2026-07-11 16:55:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:55:21 +0000 UTC FinishedAt: 2026-07-11 16:55:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:55:21 +0000 UTC FinishedAt: 2026-07-11 16:55:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-workflowgg79r/series-workflowgg79r-convert-artifact-722746391/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:55:31 +0000 UTC FinishedAt: 2026-07-11 16:58:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:55:31 +0000 UTC FinishedAt: 2026-07-11 16:58:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4052b8e7-ecdb-4a51-b7b1-36ee986c170d,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-workflowgg79r/series-workflowgg79r-build-action-2175810614/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-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:58:10 +0000 UTC FinishedAt: 2026-07-11 16:58:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:58:10 +0000 UTC FinishedAt: 2026-07-11 16:58:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:58:10 +0000 UTC FinishedAt: 2026-07-11 18:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:58:10 +0000 UTC FinishedAt: 2026-07-11 18:02:47 +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:*06fa2331-7fd5-4648-afd2-1af5293b3714,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-workflowgg79r/series-workflowgg79r-convert-artifact-722746391/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": "11143bf5-2e5b-4cce-abbb-dbc22c4fc055", "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-workflowgg79r/series-workflowgg79r-build-action-2063561307/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 16:58:10 +0000 UTC FinishedAt: 2026-07-11 18:02:37 +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:*06fa2331-7fd5-4648-afd2-1af5293b3714,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-workflowgg79r/series-workflowgg79r-convert-artifact-722746391/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": "11143bf5-2e5b-4cce-abbb-dbc22c4fc055", "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-workflowgg79r/series-workflowgg79r-build-action-2063561307/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:02:47 +0000 UTC FinishedAt: 2026-07-11 18:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:02:47 +0000 UTC FinishedAt: 2026-07-11 18:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:02:47 +0000 UTC FinishedAt: 2026-07-11 18:04:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:02:47 +0000 UTC FinishedAt: 2026-07-11 18:04:47 +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:*11143bf5-2e5b-4cce-abbb-dbc22c4fc055,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-workflowgg79r/series-workflowgg79r-build-action-2063561307/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-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:04:57 +0000 UTC FinishedAt: 2026-07-11 21:08:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:04:57 +0000 UTC FinishedAt: 2026-07-11 21:08:52 +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":[],"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:*4052b8e7-ecdb-4a51-b7b1-36ee986c170d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*11143bf5-2e5b-4cce-abbb-dbc22c4fc055,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-workflowgg79r/series-workflowgg79r-build-action-2175810614/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-workflowgg79r/series-workflowgg79r-build-action-2063561307/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:04:57 +0000 UTC FinishedAt: 2026-07-11 18:06:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:04:57 +0000 UTC FinishedAt: 2026-07-11 18:05:17 +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":[],"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-workflowgg79r/series-workflowgg79r-convert-artifact-2129986256/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:04:57 +0000 UTC FinishedAt: 2026-07-11 18:04:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:04:57 +0000 UTC FinishedAt: 2026-07-11 18:04:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:04:57 +0000 UTC FinishedAt: 2026-07-11 18:04:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:06:04 +0000 UTC FinishedAt: 2026-07-11 21:08:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgg79r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"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":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET_PSP"],"series_id":"021d4f75-0bd8-4e43-b8a6-74cc0344c138","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-11 18:06:04 +0000 UTC FinishedAt: 2026-07-11 21:08:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4052b8e7-ecdb-4a51-b7b1-36ee986c170d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*11143bf5-2e5b-4cce-abbb-dbc22c4fc055,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-workflowgg79r/series-workflowgg79r-build-action-2175810614/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-workflowgg79r/series-workflowgg79r-build-action-2063561307/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-workflowgg79r/series-workflowgg79r-convert-artifact-2129986256/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,}