Name: series-workflowfkmsl Phase: Succeeded StartedAt: 2026-07-09 20:36:05 +0000 UTC FinishedAt: 2026-07-10 01:13:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[0] Phase: Succeeded StartedAt: 2026-07-09 20:36:05 +0000 UTC FinishedAt: 2026-07-09 20:51:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 20:36:05 +0000 UTC FinishedAt: 2026-07-09 20:51:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "24c4c88259464d38b35c3fbaecb68675de64137d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP6_NF_MATCH_OPTS", "IP6_NF_MATCH_IPV6HEADER", "IP6_NF_MATCH_SRH" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "24c4c88259464d38b35c3fbaecb68675de64137d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP6_NF_MATCH_OPTS", "IP6_NF_MATCH_IPV6HEADER", "IP6_NF_MATCH_SRH" ], "series_id": "ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hbh_mt6", "ipv6header_mt6", "srh_mt6", "srh1_mt6" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA5IDIwOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9PUFRTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9TUkgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoYmhfbXQ2JiMzNDssCiAgICAmIzM0O2lwdjZoZWFkZXJfbXQ2JiMzNDssCiAgICAmIzM0O3NyaF9tdDYmIzM0OywKICAgICYjMzQ7c3JoMV9tdDYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVB2NiBuZXRmaWx0ZXIgbWF0Y2ggbW9kdWxlcyAoaGJoLCBpcHY2aGVhZGVyLCBzcmgpIHRvIHNldCBgcGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlYCB3aGVuIGVuY291bnRlcmluZyBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXJzLiBUaGlzIGNhdXNlcyB0aGUgcGFja2V0IHRvIGJlIGRyb3BwZWQgcmF0aGVyIHRoYW4ganVzdCBmYWlsaW5nIHRoZSBtYXRjaCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjA6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5YzAxMjA2YWRkM2NhMGE5YmE5N2FhMzhlY2MwZDJiMDFlNjgzNWE2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAyMDo1MDowMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXG5pbmRleCA2ZDFhNWQyMDI2YTY3OC4uYTY3ZjdkMGZlOTNmZTIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcbkBAIC0xMDQsOCAmIzQzOzEwNCwxMCBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdHRwID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgcHRyLCBzaXplb2YoX29wdHR5cGUpLFxuIFx0XHRcdFx0XHRcdFx1MDAyNl9vcHR0eXBlKTtcbi1cdFx0XHRpZiAodHAgPT0gTlVMTClcbi1cdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRpZiAoIXRwKSB7XG4mIzQzO1x0XHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuJiM0MztcdFx0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdFx0fVxuIFxuIFx0XHRcdC8qIFR5cGUgY2hlY2sgKi9cbiBcdFx0XHRpZiAoKnRwICE9IChvcHRpbmZvLVx1MDAzZW9wdHNbdGVtcF0gXHUwMDI2IDB4RkYwMCkgXHUwMDNlXHUwMDNlIDgpIHtcbkBAIC0xMjAsMTMgJiM0MzsxMjIsMTcgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0XHR1MTYgc3BlY19sZW47XG4gXG4gXHRcdFx0XHQvKiBsZW5ndGggZmllbGQgZXhpc3RzID8gKi9cbi1cdFx0XHRcdGlmIChoZHJsZW4gXHUwMDNjIDIpXG4tXHRcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRcdGlmIChoZHJsZW4gXHUwMDNjIDIpIHtcbiYjNDM7XHRcdFx0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiYjNDM7XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdFx0XHR9XG4gXHRcdFx0XHRscCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciAmIzQzOyAxLFxuIFx0XHRcdFx0XHRcdFx0c2l6ZW9mKF9vcHRsZW4pLFxuIFx0XHRcdFx0XHRcdFx0XHUwMDI2X29wdGxlbik7XG4tXHRcdFx0XHRpZiAobHAgPT0gTlVMTClcbi1cdFx0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdFx0aWYgKCFscCkge1xuJiM0MztcdFx0XHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuJiM0MztcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0XHRcdH1cbiBcdFx0XHRcdHNwZWNfbGVuID0gb3B0aW5mby1cdTAwM2VvcHRzW3RlbXBdIFx1MDAyNiAweDAwRkY7XG4gXG4gXHRcdFx0XHRpZiAoc3BlY19sZW4gIT0gMHgwMEZGIFx1MDAyNlx1MDAyNiBzcGVjX2xlbiAhPSAqbHApIHtcbkBAIC0xNDcsNyAmIzQzOzE1Myw4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdGlmICgocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuIC0gb3B0bGVuIHx8IGhkcmxlbiBcdTAwM2Mgb3B0bGVuKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgdGVtcCBcdTAwM2Mgb3B0aW5mby1cdTAwM2VvcHRzbnIgLSAxKSB7XG4gXHRcdFx0XHRwcl9kZWJ1ZyhcJiMzNDtuZXcgcG9pbnRlciBpcyB0b28gbGFyZ2UhXFxuXCYjMzQ7KTtcbi1cdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdFx0fVxuIFx0XHRcdHB0ciAmIzQzOz0gb3B0bGVuO1xuIFx0XHRcdGhkcmxlbiAtPSBvcHRsZW47XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jXG5pbmRleCBjNTJmZjkyOWM5M2IzNi4uMDU2OGViOTllYjFjMGEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuY1xuQEAgLTUzLDggJiM0Mzs1MywxMCBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdFx0LyogSXMgdGhlcmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgbmV4dCBleHQgaGVhZGVyPyAqL1xuLVx0XHRpZiAobGVuIFx1MDAzYyAoaW50KXNpemVvZihzdHJ1Y3QgaXB2Nl9vcHRfaGRyKSlcbiYjNDM7XHRcdGlmIChsZW4gXHUwMDNjIChpbnQpc2l6ZW9mKHN0cnVjdCBpcHY2X29wdF9oZHIpKSB7XG4mIzQzO1x0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHR9XG4gXHRcdC8qIEVTUCAtXHUwMDNlIGV2YWx1YXRlICovXG4gXHRcdGlmIChuZXh0aGRyID09IE5FWFRIRFJfRVNQKSB7XG4gXHRcdFx0dGVtcCB8PSBNQVNLX0VTUDtcbkBAIC05OSw4ICYjNDM7MTAxLDEwIEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdFx0bmV4dGhkciA9IGhwLVx1MDAzZW5leHRoZHI7XG4gXHRcdGxlbiAtPSBoZHJsZW47XG4gXHRcdHB0ciAmIzQzOz0gaGRybGVuO1xuLVx0XHRpZiAocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuKVxuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0aWYgKHB0ciBcdTAwM2Ugc2tiLVx1MDAzZWxlbikge1xuJiM0MztcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdGlmIChuZXh0aGRyICE9IE5FWFRIRFJfTk9ORSBcdTAwMjZcdTAwMjYgbmV4dGhkciAhPSBORVhUSERSX0VTUClcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jXG5pbmRleCBkYjBmZDY0ZDg5ODYyNy4uMzNhNjU5YjliMGUzN2UgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmNcbkBAIC0yNywxNiAmIzQzOzI3LDI1IEBAIHN0YXRpYyBib29sIHNyaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XG4gXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgX3NyaDtcbiBcdGludCBoZHJsZW4sIHNyaG9mZiA9IDA7XG4mIzQzO1x0aW50IGVycjtcbiBcbi1cdGlmIChpcHY2X2ZpbmRfaGRyKHNrYiwgXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpIFx1MDAzYyAwKVxuJiM0MztcdGVyciA9IGlwdjZfZmluZF9oZHIoc2tiLCBcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCk7XG4mIzQzO1x0aWYgKGVyciBcdTAwM2MgMCkge1xuJiM0MztcdFx0aWYgKGVyciAhPSAtRU5PRU5UKVxuJiM0MztcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gXHRzcmggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBzcmhvZmYsIHNpemVvZihfc3JoKSwgXHUwMDI2X3NyaCk7XG4tXHRpZiAoIXNyaClcbiYjNDM7XHRpZiAoIXNyaCkge1xuJiM0MztcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuIFxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4oc3JoKTtcbi1cdGlmIChza2ItXHUwMDNlbGVuIC0gc3Job2ZmIFx1MDAzYyBoZHJsZW4pXG4mIzQzO1x0aWYgKHNrYi1cdTAwM2VsZW4gLSBzcmhvZmYgXHUwMDNjIGhkcmxlbikge1xuJiM0MztcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKHNyaC1cdTAwM2V0eXBlICE9IElQVjZfU1JDUlRfVFlQRV80KVxuIFx0XHRyZXR1cm4gZmFsc2U7XG5AQCAtMTIxLDE2ICYjNDM7MTMwLDI1IEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdHN0cnVjdCBpbjZfYWRkciBfcHNpZCwgX25zaWQsIF9sc2lkO1xuIFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XG4gXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgX3NyaDtcbiYjNDM7XHRpbnQgZXJyO1xuIFxuLVx0aWYgKGlwdjZfZmluZF9oZHIoc2tiLCBcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCkgXHUwMDNjIDApXG4mIzQzO1x0ZXJyID0gaXB2Nl9maW5kX2hkcihza2IsIFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTtcbiYjNDM7XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRpZiAoZXJyICE9IC1FTk9FTlQpXG4mIzQzO1x0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiBcdHNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCBcdTAwMjZfc3JoKTtcbi1cdGlmICghc3JoKVxuJiM0MztcdGlmICghc3JoKSB7XG4mIzQzO1x0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gXG4gXHRoZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpO1xuLVx0aWYgKHNrYi1cdTAwM2VsZW4gLSBzcmhvZmYgXHUwMDNjIGhkcmxlbilcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiAtIHNyaG9mZiBcdTAwM2MgaGRybGVuKSB7XG4mIzQzO1x0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gXG4gXHRpZiAoc3JoLVx1MDAzZXR5cGUgIT0gSVBWNl9TUkNSVF9UWVBFXzQpXG4gXHRcdHJldHVybiBmYWxzZTtcbkBAIC0yMDYsOCAmIzQzOzIyNCwxMCBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdHBzaWRvZmYgPSBzcmhvZmYgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcikgJiM0MztcbiBcdFx0XHQgICgoc3JoLVx1MDAzZXNlZ21lbnRzX2xlZnQgJiM0MzsgMSkgKiBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSk7XG4gXHRcdHBzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwc2lkb2ZmLCBzaXplb2YoX3BzaWQpLCBcdTAwMjZfcHNpZCk7XG4tXHRcdGlmICghcHNpZClcbiYjNDM7XHRcdGlmICghcHNpZCkge1xuJiM0MztcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0fVxuIFx0XHRpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX1BTSUQsXG4gXHRcdFx0XHRpcHY2X21hc2tlZF9hZGRyX2NtcChwc2lkLCBcdTAwMjZzcmhpbmZvLVx1MDAzZXBzaWRfbXNrLFxuIFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2c3JoaW5mby1cdTAwM2Vwc2lkX2FkZHIpKSlcbkBAIC0yMjEsOCAmIzQzOzI0MSwxMCBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdG5zaWRvZmYgPSBzcmhvZmYgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcikgJiM0MztcbiBcdFx0XHQgICgoc3JoLVx1MDAzZXNlZ21lbnRzX2xlZnQgLSAxKSAqIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTtcbiBcdFx0bnNpZCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG5zaWRvZmYsIHNpemVvZihfbnNpZCksIFx1MDAyNl9uc2lkKTtcbi1cdFx0aWYgKCFuc2lkKVxuJiM0MztcdFx0aWYgKCFuc2lkKSB7XG4mIzQzO1x0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHR9XG4gXHRcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfTlNJRCxcbiBcdFx0XHRcdGlwdjZfbWFza2VkX2FkZHJfY21wKG5zaWQsIFx1MDAyNnNyaGluZm8tXHUwMDNlbnNpZF9tc2ssXG4gXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZzcmhpbmZvLVx1MDAzZW5zaWRfYWRkcikpKVxuQEAgLTIzMyw4ICYjNDM7MjU1LDEwIEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdGlmIChzcmhpbmZvLVx1MDAzZW10X2ZsYWdzIFx1MDAyNiBJUDZUX1NSSF9MU0lEKSB7XG4gXHRcdGxzaWRvZmYgPSBzcmhvZmYgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcik7XG4gXHRcdGxzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBsc2lkb2ZmLCBzaXplb2YoX2xzaWQpLCBcdTAwMjZfbHNpZCk7XG4tXHRcdGlmICghbHNpZClcbiYjNDM7XHRcdGlmICghbHNpZCkge1xuJiM0MztcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0fVxuIFx0XHRpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX0xTSUQsXG4gXHRcdFx0XHRpcHY2X21hc2tlZF9hZGRyX2NtcChsc2lkLCBcdTAwMjZzcmhpbmZvLVx1MDAzZWxzaWRfbXNrLFxuIFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2c3JoaW5mby1cdTAwM2Vsc2lkX2FkZHIpKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMDo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUDZfTkZfTUFUQ0hfT1BUUyYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUiYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfU1JIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGJoX210NiYjMzQ7LAogICAgJiMzNDtpcHY2aGVhZGVyX210NiYjMzQ7LAogICAgJiMzNDtzcmhfbXQ2JiMzNDssCiAgICAmIzM0O3NyaDFfbXQ2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIElQdjYgbmV0ZmlsdGVyIG1hdGNoIG1vZHVsZXMgKGhiaCwgaXB2NmhlYWRlciwgc3JoKSB0byBzZXQgYHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZWAgd2hlbiBlbmNvdW50ZXJpbmcgbWFsZm9ybWVkIG9yIHRydW5jYXRlZCBleHRlbnNpb24gaGVhZGVycy4gVGhpcyBjYXVzZXMgdGhlIHBhY2tldCB0byBiZSBkcm9wcGVkIHJhdGhlciB0aGFuIGp1c3QgZmFpbGluZyB0aGUgbWF0Y2gsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5YzAxMjA2YWRkM2NhMGE5YmE5N2FhMzhlY2MwZDJiMDFlNjgzNWE2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAyMDo1MDowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMKaW5kZXggNmQxYTVkMjAyNmE2NzguLmE2N2Y3ZDBmZTkzZmUyIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYwpAQCAtMTA0LDggJiM0MzsxMDQsMTAgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJCQkJYnJlYWs7CiAJCQl0cCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciwgc2l6ZW9mKF9vcHR0eXBlKSwKIAkJCQkJCSZhbXA7X29wdHR5cGUpOwotCQkJaWYgKHRwID09IE5VTEwpCi0JCQkJYnJlYWs7CiYjNDM7CQkJaWYgKCF0cCkgewomIzQzOwkJCQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwomIzQzOwkJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQkJfQogCiAJCQkvKiBUeXBlIGNoZWNrICovCiAJCQlpZiAoKnRwICE9IChvcHRpbmZvLSZndDtvcHRzW3RlbXBdICZhbXA7IDB4RkYwMCkgJmd0OyZndDsgOCkgewpAQCAtMTIwLDEzICYjNDM7MTIyLDE3IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCQkJCXUxNiBzcGVjX2xlbjsKIAogCQkJCS8qIGxlbmd0aCBmaWVsZCBleGlzdHMgPyAqLwotCQkJCWlmIChoZHJsZW4gJmx0OyAyKQotCQkJCQlicmVhazsKJiM0MzsJCQkJaWYgKGhkcmxlbiAmbHQ7IDIpIHsKJiM0MzsJCQkJCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiYjNDM7CQkJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQkJCX0KIAkJCQlscCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciAmIzQzOyAxLAogCQkJCQkJCXNpemVvZihfb3B0bGVuKSwKIAkJCQkJCQkmYW1wO19vcHRsZW4pOwotCQkJCWlmIChscCA9PSBOVUxMKQotCQkJCQlicmVhazsKJiM0MzsJCQkJaWYgKCFscCkgewomIzQzOwkJCQkJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKJiM0MzsJCQkJCXJldHVybiBmYWxzZTsKJiM0MzsJCQkJfQogCQkJCXNwZWNfbGVuID0gb3B0aW5mby0mZ3Q7b3B0c1t0ZW1wXSAmYW1wOyAweDAwRkY7CiAKIAkJCQlpZiAoc3BlY19sZW4gIT0gMHgwMEZGICZhbXA7JmFtcDsgc3BlY19sZW4gIT0gKmxwKSB7CkBAIC0xNDcsNyAmIzQzOzE1Myw4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCQkJaWYgKChwdHIgJmd0OyBza2ItJmd0O2xlbiAtIG9wdGxlbiB8fCBoZHJsZW4gJmx0OyBvcHRsZW4pICZhbXA7JmFtcDsKIAkJCSAgICB0ZW1wICZsdDsgb3B0aW5mby0mZ3Q7b3B0c25yIC0gMSkgewogCQkJCXByX2RlYnVnKCYjMzQ7bmV3IHBvaW50ZXIgaXMgdG9vIGxhcmdlIVxuJiMzNDspOwotCQkJCWJyZWFrOwomIzQzOwkJCQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwomIzQzOwkJCQlyZXR1cm4gZmFsc2U7CiAJCQl9CiAJCQlwdHIgJiM0Mzs9IG9wdGxlbjsKIAkJCWhkcmxlbiAtPSBvcHRsZW47CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmMKaW5kZXggYzUyZmY5MjljOTNiMzYuLjA1NjhlYjk5ZWIxYzBhIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jCkBAIC01Myw4ICYjNDM7NTMsMTAgQEAgaXB2NmhlYWRlcl9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCQkJYnJlYWs7CiAJCX0KIAkJLyogSXMgdGhlcmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgbmV4dCBleHQgaGVhZGVyPyAqLwotCQlpZiAobGVuICZsdDsgKGludClzaXplb2Yoc3RydWN0IGlwdjZfb3B0X2hkcikpCiYjNDM7CQlpZiAobGVuICZsdDsgKGludClzaXplb2Yoc3RydWN0IGlwdjZfb3B0X2hkcikpIHsKJiM0MzsJCQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwogCQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJfQogCQkvKiBFU1AgLSZndDsgZXZhbHVhdGUgKi8KIAkJaWYgKG5leHRoZHIgPT0gTkVYVEhEUl9FU1ApIHsKIAkJCXRlbXAgfD0gTUFTS19FU1A7CkBAIC05OSw4ICYjNDM7MTAxLDEwIEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJbmV4dGhkciA9IGhwLSZndDtuZXh0aGRyOwogCQlsZW4gLT0gaGRybGVuOwogCQlwdHIgJiM0Mzs9IGhkcmxlbjsKLQkJaWYgKHB0ciAmZ3Q7IHNrYi0mZ3Q7bGVuKQotCQkJYnJlYWs7CiYjNDM7CQlpZiAocHRyICZndDsgc2tiLSZndDtsZW4pIHsKJiM0MzsJCQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsJCX0KIAl9CiAKIAlpZiAobmV4dGhkciAhPSBORVhUSERSX05PTkUgJmFtcDsmYW1wOyBuZXh0aGRyICE9IE5FWFRIRFJfRVNQKQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYwppbmRleCBkYjBmZDY0ZDg5ODYyNy4uMzNhNjU5YjliMGUzN2UgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jCkBAIC0yNywxNiAmIzQzOzI3LDI1IEBAIHN0YXRpYyBib29sIHNyaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCXN0cnVjdCBpcHY2X3NyX2hkciAqc3JoOwogCXN0cnVjdCBpcHY2X3NyX2hkciBfc3JoOwogCWludCBoZHJsZW4sIHNyaG9mZiA9IDA7CiYjNDM7CWludCBlcnI7CiAKLQlpZiAoaXB2Nl9maW5kX2hkcihza2IsICZhbXA7c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpICZsdDsgMCkKJiM0MzsJZXJyID0gaXB2Nl9maW5kX2hkcihza2IsICZhbXA7c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpOwomIzQzOwlpZiAoZXJyICZsdDsgMCkgewomIzQzOwkJaWYgKGVyciAhPSAtRU5PRU5UKQomIzQzOwkJCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiAJCXJldHVybiBmYWxzZTsKJiM0MzsJfQogCXNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCAmYW1wO19zcmgpOwotCWlmICghc3JoKQomIzQzOwlpZiAoIXNyaCkgewomIzQzOwkJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKIAkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiAKIAloZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpOwotCWlmIChza2ItJmd0O2xlbiAtIHNyaG9mZiAmbHQ7IGhkcmxlbikKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuIC0gc3Job2ZmICZsdDsgaGRybGVuKSB7CiYjNDM7CQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwogCQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIAogCWlmIChzcmgtJmd0O3R5cGUgIT0gSVBWNl9TUkNSVF9UWVBFXzQpCiAJCXJldHVybiBmYWxzZTsKQEAgLTEyMSwxNiAmIzQzOzEzMCwyNSBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJc3RydWN0IGluNl9hZGRyIF9wc2lkLCBfbnNpZCwgX2xzaWQ7CiAJc3RydWN0IGlwdjZfc3JfaGRyICpzcmg7CiAJc3RydWN0IGlwdjZfc3JfaGRyIF9zcmg7CiYjNDM7CWludCBlcnI7CiAKLQlpZiAoaXB2Nl9maW5kX2hkcihza2IsICZhbXA7c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpICZsdDsgMCkKJiM0MzsJZXJyID0gaXB2Nl9maW5kX2hkcihza2IsICZhbXA7c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpOwomIzQzOwlpZiAoZXJyICZsdDsgMCkgewomIzQzOwkJaWYgKGVyciAhPSAtRU5PRU5UKQomIzQzOwkJCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiAJCXJldHVybiBmYWxzZTsKJiM0MzsJfQogCXNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCAmYW1wO19zcmgpOwotCWlmICghc3JoKQomIzQzOwlpZiAoIXNyaCkgewomIzQzOwkJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKIAkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiAKIAloZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpOwotCWlmIChza2ItJmd0O2xlbiAtIHNyaG9mZiAmbHQ7IGhkcmxlbikKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuIC0gc3Job2ZmICZsdDsgaGRybGVuKSB7CiYjNDM7CQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwogCQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIAogCWlmIChzcmgtJmd0O3R5cGUgIT0gSVBWNl9TUkNSVF9UWVBFXzQpCiAJCXJldHVybiBmYWxzZTsKQEAgLTIwNiw4ICYjNDM7MjI0LDEwIEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJcHNpZG9mZiA9IHNyaG9mZiAmIzQzOyBzaXplb2Yoc3RydWN0IGlwdjZfc3JfaGRyKSAmIzQzOwogCQkJICAoKHNyaC0mZ3Q7c2VnbWVudHNfbGVmdCAmIzQzOyAxKSAqIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTsKIAkJcHNpZCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHBzaWRvZmYsIHNpemVvZihfcHNpZCksICZhbXA7X3BzaWQpOwotCQlpZiAoIXBzaWQpCiYjNDM7CQlpZiAoIXBzaWQpIHsKJiM0MzsJCQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwogCQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJfQogCQlpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX1BTSUQsCiAJCQkJaXB2Nl9tYXNrZWRfYWRkcl9jbXAocHNpZCwgJmFtcDtzcmhpbmZvLSZndDtwc2lkX21zaywKIAkJCQkJCSAgICAgJmFtcDtzcmhpbmZvLSZndDtwc2lkX2FkZHIpKSkKQEAgLTIyMSw4ICYjNDM7MjQxLDEwIEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJbnNpZG9mZiA9IHNyaG9mZiAmIzQzOyBzaXplb2Yoc3RydWN0IGlwdjZfc3JfaGRyKSAmIzQzOwogCQkJICAoKHNyaC0mZ3Q7c2VnbWVudHNfbGVmdCAtIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpOwogCQluc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbnNpZG9mZiwgc2l6ZW9mKF9uc2lkKSwgJmFtcDtfbnNpZCk7Ci0JCWlmICghbnNpZCkKJiM0MzsJCWlmICghbnNpZCkgewomIzQzOwkJCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiAJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQl9CiAJCWlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfTlNJRCwKIAkJCQlpcHY2X21hc2tlZF9hZGRyX2NtcChuc2lkLCAmYW1wO3NyaGluZm8tJmd0O25zaWRfbXNrLAogCQkJCQkJICAgICAmYW1wO3NyaGluZm8tJmd0O25zaWRfYWRkcikpKQpAQCAtMjMzLDggJiM0MzsyNTUsMTAgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCWlmIChzcmhpbmZvLSZndDttdF9mbGFncyAmYW1wOyBJUDZUX1NSSF9MU0lEKSB7CiAJCWxzaWRvZmYgPSBzcmhvZmYgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcik7CiAJCWxzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBsc2lkb2ZmLCBzaXplb2YoX2xzaWQpLCAmYW1wO19sc2lkKTsKLQkJaWYgKCFsc2lkKQomIzQzOwkJaWYgKCFsc2lkKSB7CiYjNDM7CQkJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKIAkJCXJldHVybiBmYWxzZTsKJiM0MzsJCX0KIAkJaWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9MU0lELAogCQkJCWlwdjZfbWFza2VkX2FkZHJfY21wKGxzaWQsICZhbXA7c3JoaW5mby0mZ3Q7bHNpZF9tc2ssCiAJCQkJCQkgICAgICZhbXA7c3JoaW5mby0mZ3Q7bHNpZF9hZGRyKSkpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUHY2IE5ldGZpbHRlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBhIGZldyBuZXRmaWx0ZXIgbW9kdWxlcyBkZWFsaW5nIHdpdGggSVB2Njogc3BlY2lmaWNhbGx5IGBpcDZ0X2hiaC5jYCwgYGlwNnRfaXB2NmhlYWRlci5jYCwgYW5kIGBpcDZ0X3NyaC5jYC4gVGhlIGNvcmUgY2hhbmdlIHNlZW1zIHRvIGJlIGhvdyB0aGV5IGhhbmRsZSBtYWxmb3JtZWQgSVB2NiBoZWFkZXJzLiBQcmV2aW91c2x5LCBpZiBzb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgdGhlIHBhcnNpbmcgcHJvY2Vzc+KAlHNheSwgYSB0cnVuY2F0ZWQgaGVhZGVyIG9yIGFuIGludmFsaWQgbGVuZ3RoIGZpZWxk4oCUdGhlIGZ1bmN0aW9ucyBqdXN0IHF1aWV0bHkgYmFpbGVkIG91dCwgcmV0dXJuaW5nIGBmYWxzZWAgb3IgYnJlYWtpbmcgYSBsb29wLiBOb3csIHRoaW5ncyBhcmUgZGlmZmVyZW50LiBUaGV5JiMzOTtyZSBzZXR0aW5nIGBwYXItJmd0O2hvdGRyb3AgPSB0cnVlO2AgKmJlZm9yZSogcmV0dXJuaW5nIGBmYWxzZWAuCgpUaGF0JiMzOTtzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZSBmcm9tIGEgcGFja2V0LXByb2Nlc3Npbmcgc3RhbmRwb2ludC4gQmFzaWNhbGx5LCBpdCYjMzk7cyB0ZWxsaW5nIG5ldGZpbHRlciB0byBpbW1lZGlhdGVseSBkcm9wIHRoZSBvZmZlbmRpbmcgcGFja2V0LCB3aGVyZWFzIGJlZm9yZSBpdCBtaWdodCBoYXZlIGNvbnRpbnVlZCBwcm9jZXNzaW5nIGluIHNvbWUgZmFzaGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLgoKRmlyc3QsIEkgd2FudCB0byBjb25maXJtIEkgdW5kZXJzdGFuZCB0aGUgY29uZmlnIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGtub3cgdGhlIEtjb25maWcgZW50cmllcyByZXF1aXJlZCB0byBlbmFibGUgdGhlc2UgbW9kdWxlcy4gU28sIEkmIzM5O2xsIGxldmVyYWdlIGBncmVwcGVyYCB0byBmaW5kIHRoZSBleGFjdCBLY29uZmlnIGVudHJpZXMgZm9yIGBpcDZ0X2hiaC5jYCwgYGlwNnRfaXB2NmhlYWRlci5jYCwgYW5kIGBpcDZ0X3NyaC5jYC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBuZXcgYmVoYXZpb3IgdG8gdGFrZSBlZmZlY3QuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZyBpcyBhbHdheXMgdGhlIGZpcnN0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXA2dF9oYmgubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU9MzY9b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgJiM0Mzs9IGlwNnRfbWgub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfT1BUUykgJiM0Mzs9IGlwNnRfaGJoLm9cbm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfSVA2X05GX01BVENIX1JQRklMVEVSKSAmIzQzOz0gaXA2dF9ycGZpbHRlci5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjA6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg4NwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIGFuZCBJUHY2IEhvcC1ieS1Ib3AgT3B0aW9ucyoqCgpBbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSBjb25uZWN0IHRoZSBkb3RzIGhlcmUuIEkgc2VlIGBDT05GSUdfSVA2X05GX01BVENIX09QVFNgIGFuZCBteSBpbW1lZGlhdGUgYXNzb2NpYXRpb24gaXMgd2l0aCB0aGUgYGlwNnRfaGJoLm9gIG1vZHVsZS4gTm8gbmVlZCB0byBkaWcgYW55IGRlZXBlciwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCYjMzk7cyB0aGUgY29ycmVjdCBtb2R1bGUgaXQmIzM5O3MgcmVsYXRlZCB0by4gSXQmIzM5O3MgYSBxdWljayBhc3NvY2lhdGlvbiBiYXNlZCBvbiBteSBleHBlcmllbmNlIHdpdGggdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBJUHY2IG5ldGZpbHRlciBtb2R1bGVzLCBhbmQgSSBkb24mIzM5O3Qgc2VlIGFueSBvdGhlciBwb3NzaWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwNnRfaXB2NmhlYWRlci5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfSVA2X05GX01BVENIX0ZSQUcpICYjNDM7PSBpcDZ0X2ZyYWcub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUikgJiM0Mzs9IGlwNnRfaXB2NmhlYWRlci5vXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGUtMzYtb2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgJiM0Mzs9IGlwNnRfbWgub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxOTEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBBbmFseXNpczogSVB2NiBIZWFkZXIgTWF0Y2hpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgQ09ORklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIHRoaXMgZW5hYmxlcyB0aGUgYGlwNnRfaXB2NmhlYWRlci5vYCBtb2R1bGUuJiMzNDsgSXQmIzM5O3MgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGRlcGVuZGVuY3ksIG5vdCBwYXJ0aWN1bGFybHkgY29tcGxleC4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGxpa2VseSBjb250cm9scyB0aGUgY29tcGlsYXRpb24gYW5kIGluY2x1c2lvbiBvZiB0aGUgSVB2NiBoZWFkZXIgbWF0Y2hpbmcgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIG92ZXJhbGwgSVB2NiBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBTZWVtcyBsaWtlIHN0YW5kYXJkIGtlcm5lbCBtb2R1bGUgbG9naWMgYXQgcGxheS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGlmIHRoZXJlIGFyZSBudWFuY2VzLCBidXQgb24gdGhlIHN1cmZhY2UsIGl0JiMzOTtzIGp1c3QgYWJvdXQgZW5hYmxpbmcgdGhlIG1vZHVsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHRha2UgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGludG8gY29uc2lkZXJhdGlvbiAtIGFuZCBpdCYjMzk7cyBkZXBlbmRlbmN5IG9uIG90aGVyIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXA2dF9zcmgubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU9Mzk9b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9SVCkgJiM0Mzs9IGlwNnRfcnQub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfU1JIKSAmIzQzOz0gaXA2dF9zcmgub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlLTQxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MjMKCQkJCQkJCW91dHB1dDogMTY5CgkJCQkJCQl0aG91Z2h0czogNDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFRoaXMgTmV0ZmlsdGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyBzb21lIElQdjYgbmV0ZmlsdGVyIG1hdGNoIG1vZHVsZXMuIFNwZWNpZmljYWxseSwgdGhlIG1vZHVsZXMgYWZmZWN0ZWQgYXJlIGBpcDZ0X3NyaC5vYCwgd2hpY2ggaXMgY29udHJvbGxlZCBieSBgQ09ORklHX0lQNl9ORl9NQVRDSF9TUkhgLiBUaGUgY29kZSB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQsIGFuZCB0aGVyZWZvcmUgbmVlZHMgbXkgYXR0ZW50aW9uLCBpbmNsdWRlcyB0aGUgYGhiaF9tdDZgLCBgaXB2NmhlYWRlcl9tdDZgLCBgc3JoX210NmAsIGFuZCBgc3JoMV9tdDZgIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGFsbCB0aGUgbmV0ZmlsdGVyIG1hdGNoIGZ1bmN0aW9ucywgc28gdGhleSYjMzk7cmUgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHRlc3RhYmxlLgoKVGhlIG1lYXQgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBzZXR0aW5nIGBwYXItJmd0O2hvdGRyb3AgPSB0cnVlYC4gSW5zdGVhZCBvZiBqdXN0IGZhaWxpbmcgdGhlIG1hdGNoIHdoZW4gYSBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXIgaXMgZW5jb3VudGVyZWQsIHRoZSBwYXRjaCBjYXVzZXMgdGhlIHBhY2tldCB0byBiZSAqZHJvcHBlZCouIFRoaXMgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgdGhlIG5ldGZpbHRlciBoYW5kbGVzIHRoZXNlIHR5cGVzIG9mIHBhY2tldHM7IHRoaXMgY291bGQgaGF2ZSBzZXJpb3VzIGltcGxpY2F0aW9ucyBmb3IgZXhpc3RpbmcgcnVsZXNldHMuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBzb21lIHRob3JvdWdoIGZ1enppbmcuCgpJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBjb25maWcgZGVwZW5kZW5jaWVzIHRvIGJlIHN1cmUgSSYjMzk7dmUgZ290IGV2ZXJ5dGhpbmcgY292ZXJlZC4gSSYjMzk7bSBhc3N1bWluZyB3ZSYjMzk7bGwgbmVlZCBgSVA2X05GX0lQVEFCTEVTYCwgYnV0IEkmIzM5O2xsIGZvY3VzIG9uIGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAsIGFuZCBgSVA2X05GX01BVENIX1NSSGAsIGFzIHRoZXkgYXJlIGV4cGxpY2l0bHkgcmVsYXRlZCB0byB0aGUgbW9kdWxlcyBJJiMzOTttIGZvY3VzZWQgb24uCgpTbywganVzdCB0byBiZSBleHBsaWNpdCwgdGhlIGltcG9ydGFudCBjb25maWdzIGFyZToKKiAgIGBJUDZfTkZfTUFUQ0hfT1BUU2AKKiAgIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAKKiAgIGBJUDZfTkZfTUFUQ0hfU1JIYAoKQW5kLCBhcyBhIHJlbWluZGVyLCB0aGUga2V5IHN5bWJvbHMgaGVyZSBhcmU6CiogICBgaGJoX210NmAKKiAgIGBpcHY2aGVhZGVyX210NmAKKiAgIGBzcmhfbXQ2YAoqICAgYHNyaDFfbXQ2YAoKVGhlIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBiZWhhdmlvciBmcm9tIGEgc2ltcGxlIG1hdGNoIGZhaWx1cmUgdG8gYSBwYWNrZXQgZHJvcCwgd2hpY2ggY291bGQgaGF2ZSBzb21lIG5hc3R5IHNpZGUtZWZmZWN0cyBpZiB1bmV4cGVjdGVkIGJ5IGFkbWluaXN0cmF0b3JzLiBUaGlzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZnV6emVyLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhpcyBpbmZvcm1hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9PUFRTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9TUkgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoYmhfbXQ2JiMzNDssCiAgICAmIzM0O2lwdjZoZWFkZXJfbXQ2JiMzNDssCiAgICAmIzM0O3NyaF9tdDYmIzM0OywKICAgICYjMzQ7c3JoMV9tdDYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVB2NiBuZXRmaWx0ZXIgbWF0Y2ggbW9kdWxlcyAoaGJoLCBpcHY2aGVhZGVyLCBzcmgpIHRvIHNldCBgcGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlYCB3aGVuIGVuY291bnRlcmluZyBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXJzLiBUaGlzIGNhdXNlcyB0aGUgcGFja2V0IHRvIGJlIGRyb3BwZWQgcmF0aGVyIHRoYW4ganVzdCBmYWlsaW5nIHRoZSBtYXRjaCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9PUFRTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9TUkgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoYmhfbXQ2JiMzNDssCiAgICAmIzM0O2lwdjZoZWFkZXJfbXQ2JiMzNDssCiAgICAmIzM0O3NyaF9tdDYmIzM0OywKICAgICYjMzQ7c3JoMV9tdDYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVB2NiBuZXRmaWx0ZXIgbWF0Y2ggbW9kdWxlcyAoaGJoLCBpcHY2aGVhZGVyLCBzcmgpIHRvIHNldCBgcGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlYCB3aGVuIGVuY291bnRlcmluZyBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXJzLiBUaGlzIGNhdXNlcyB0aGUgcGFja2V0IHRvIGJlIGRyb3BwZWQgcmF0aGVyIHRoYW4ganVzdCBmYWlsaW5nIHRoZSBtYXRjaCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMDo1MDowMi4yNTgwMDAyNjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDU0OTMxMjM1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICAgIFwiSVA2X05GX01BVENIX0lQVjZIRUFERVJcIixcbiAgICBcIklQNl9ORl9NQVRDSF9TUkhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoYmhfbXQ2XCIsXG4gICAgXCJpcHY2aGVhZGVyX210NlwiLFxuICAgIFwic3JoX210NlwiLFxuICAgIFwic3JoMV9tdDZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUHY2IG5ldGZpbHRlciBtYXRjaCBtb2R1bGVzIChoYmgsIGlwdjZoZWFkZXIsIHNyaCkgdG8gc2V0IGBwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlYCB3aGVuIGVuY291bnRlcmluZyBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXJzLiBUaGlzIGNhdXNlcyB0aGUgcGFja2V0IHRvIGJlIGRyb3BwZWQgcmF0aGVyIHRoYW4ganVzdCBmYWlsaW5nIHRoZSBtYXRjaCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIwOjUwOjAyLjI1ODAwNjU4N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQwNDM3NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOWMwMTIwNmFkZDNjYTBhOWJhOTdhYTM4ZWNjMGQyYjAxZTY4MzVhNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCA5IDIwOjUwOjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcXG5pbmRleCA2ZDFhNWQyMDI2YTY3OC4uYTY3ZjdkMGZlOTNmZTIgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xcbkBAIC0xMDQsOCArMTA0LDEwIEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0XFx0dHAgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIsIHNpemVvZihfb3B0dHlwZSksXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZfb3B0dHlwZSk7XFxuLVxcdFxcdFxcdGlmICh0cCA9PSBOVUxMKVxcbi1cXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0aWYgKCF0cCkge1xcbitcXHRcXHRcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbitcXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdFxcdH1cXG4gXFxuIFxcdFxcdFxcdC8qIFR5cGUgY2hlY2sgKi9cXG4gXFx0XFx0XFx0aWYgKCp0cCAhPSAob3B0aW5mby1cXHUwMDNlb3B0c1t0ZW1wXSBcXHUwMDI2IDB4RkYwMCkgXFx1MDAzZVxcdTAwM2UgOCkge1xcbkBAIC0xMjAsMTMgKzEyMiwxNyBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0XFx0dTE2IHNwZWNfbGVuO1xcbiBcXG4gXFx0XFx0XFx0XFx0LyogbGVuZ3RoIGZpZWxkIGV4aXN0cyA/ICovXFxuLVxcdFxcdFxcdFxcdGlmIChoZHJsZW4gXFx1MDAzYyAyKVxcbi1cXHRcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0XFx0aWYgKGhkcmxlbiBcXHUwMDNjIDIpIHtcXG4rXFx0XFx0XFx0XFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4rXFx0XFx0XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdFxcdGxwID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgcHRyICsgMSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2l6ZW9mKF9vcHRsZW4pLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2X29wdGxlbik7XFxuLVxcdFxcdFxcdFxcdGlmIChscCA9PSBOVUxMKVxcbi1cXHRcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0XFx0aWYgKCFscCkge1xcbitcXHRcXHRcXHRcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbitcXHRcXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0XFx0c3BlY19sZW4gPSBvcHRpbmZvLVxcdTAwM2VvcHRzW3RlbXBdIFxcdTAwMjYgMHgwMEZGO1xcbiBcXG4gXFx0XFx0XFx0XFx0aWYgKHNwZWNfbGVuICE9IDB4MDBGRiBcXHUwMDI2XFx1MDAyNiBzcGVjX2xlbiAhPSAqbHApIHtcXG5AQCAtMTQ3LDcgKzE1Myw4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbiBcXHRcXHRcXHRpZiAoKHB0ciBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuIC0gb3B0bGVuIHx8IGhkcmxlbiBcXHUwMDNjIG9wdGxlbikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIHRlbXAgXFx1MDAzYyBvcHRpbmZvLVxcdTAwM2VvcHRzbnIgLSAxKSB7XFxuIFxcdFxcdFxcdFxcdHByX2RlYnVnKFxcXCJuZXcgcG9pbnRlciBpcyB0b28gbGFyZ2UhXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdFxcdHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWU7XFxuK1xcdFxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRwdHIgKz0gb3B0bGVuO1xcbiBcXHRcXHRcXHRoZHJsZW4gLT0gb3B0bGVuO1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcXG5pbmRleCBjNTJmZjkyOWM5M2IzNi4uMDU2OGViOTllYjFjMGEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jXFxuKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jXFxuQEAgLTUzLDggKzUzLDEwIEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4gXFx0XFx0LyogSXMgdGhlcmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgbmV4dCBleHQgaGVhZGVyPyAqL1xcbi1cXHRcXHRpZiAobGVuIFxcdTAwM2MgKGludClzaXplb2Yoc3RydWN0IGlwdjZfb3B0X2hkcikpXFxuK1xcdFxcdGlmIChsZW4gXFx1MDAzYyAoaW50KXNpemVvZihzdHJ1Y3QgaXB2Nl9vcHRfaGRyKSkge1xcbitcXHRcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbiBcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdH1cXG4gXFx0XFx0LyogRVNQIC1cXHUwMDNlIGV2YWx1YXRlICovXFxuIFxcdFxcdGlmIChuZXh0aGRyID09IE5FWFRIRFJfRVNQKSB7XFxuIFxcdFxcdFxcdHRlbXAgfD0gTUFTS19FU1A7XFxuQEAgLTk5LDggKzEwMSwxMCBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdFxcdG5leHRoZHIgPSBocC1cXHUwMDNlbmV4dGhkcjtcXG4gXFx0XFx0bGVuIC09IGhkcmxlbjtcXG4gXFx0XFx0cHRyICs9IGhkcmxlbjtcXG4tXFx0XFx0aWYgKHB0ciBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKVxcbi1cXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0aWYgKHB0ciBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKSB7XFxuK1xcdFxcdFxcdHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWU7XFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRpZiAobmV4dGhkciAhPSBORVhUSERSX05PTkUgXFx1MDAyNlxcdTAwMjYgbmV4dGhkciAhPSBORVhUSERSX0VTUClcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xcbmluZGV4IGRiMGZkNjRkODk4NjI3Li4zM2E2NTliOWIwZTM3ZSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jXFxuQEAgLTI3LDE2ICsyNywyNSBAQCBzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XFxuIFxcdHN0cnVjdCBpcHY2X3NyX2hkciBfc3JoO1xcbiBcXHRpbnQgaGRybGVuLCBzcmhvZmYgPSAwO1xcbitcXHRpbnQgZXJyO1xcbiBcXG4tXFx0aWYgKGlwdjZfZmluZF9oZHIoc2tiLCBcXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpIFxcdTAwM2MgMClcXG4rXFx0ZXJyID0gaXB2Nl9maW5kX2hkcihza2IsIFxcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCk7XFxuK1xcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdGlmIChlcnIgIT0gLUVOT0VOVClcXG4rXFx0XFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuIFxcdHNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCBcXHUwMDI2X3NyaCk7XFxuLVxcdGlmICghc3JoKVxcbitcXHRpZiAoIXNyaCkge1xcbitcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4gXFxuIFxcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKHNyaCk7XFxuLVxcdGlmIChza2ItXFx1MDAzZWxlbiAtIHNyaG9mZiBcXHUwMDNjIGhkcmxlbilcXG4rXFx0aWYgKHNrYi1cXHUwMDNlbGVuIC0gc3Job2ZmIFxcdTAwM2MgaGRybGVuKSB7XFxuK1xcdFxcdHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWU7XFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKHNyaC1cXHUwMDNldHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNClcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbkBAIC0xMjEsMTYgKzEzMCwyNSBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdHN0cnVjdCBpbjZfYWRkciBfcHNpZCwgX25zaWQsIF9sc2lkO1xcbiBcXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgKnNyaDtcXG4gXFx0c3RydWN0IGlwdjZfc3JfaGRyIF9zcmg7XFxuK1xcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoaXB2Nl9maW5kX2hkcihza2IsIFxcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCkgXFx1MDAzYyAwKVxcbitcXHRlcnIgPSBpcHY2X2ZpbmRfaGRyKHNrYiwgXFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTtcXG4rXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4rXFx0XFx0aWYgKGVyciAhPSAtRU5PRU5UKVxcbitcXHRcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4gXFx0c3JoID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgc3Job2ZmLCBzaXplb2YoX3NyaCksIFxcdTAwMjZfc3JoKTtcXG4tXFx0aWYgKCFzcmgpXFxuK1xcdGlmICghc3JoKSB7XFxuK1xcdFxcdHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWU7XFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbiBcXG4gXFx0aGRybGVuID0gaXB2Nl9vcHRsZW4oc3JoKTtcXG4tXFx0aWYgKHNrYi1cXHUwMDNlbGVuIC0gc3Job2ZmIFxcdTAwM2MgaGRybGVuKVxcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gLSBzcmhvZmYgXFx1MDAzYyBoZHJsZW4pIHtcXG4rXFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoc3JoLVxcdTAwM2V0eXBlICE9IElQVjZfU1JDUlRfVFlQRV80KVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuQEAgLTIwNiw4ICsyMjQsMTAgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbiBcXHRcXHRwc2lkb2ZmID0gc3Job2ZmICsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcikgK1xcbiBcXHRcXHRcXHQgICgoc3JoLVxcdTAwM2VzZWdtZW50c19sZWZ0ICsgMSkgKiBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSk7XFxuIFxcdFxcdHBzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwc2lkb2ZmLCBzaXplb2YoX3BzaWQpLCBcXHUwMDI2X3BzaWQpO1xcbi1cXHRcXHRpZiAoIXBzaWQpXFxuK1xcdFxcdGlmICghcHNpZCkge1xcbitcXHRcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbiBcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdH1cXG4gXFx0XFx0aWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9QU0lELFxcbiBcXHRcXHRcXHRcXHRpcHY2X21hc2tlZF9hZGRyX2NtcChwc2lkLCBcXHUwMDI2c3JoaW5mby1cXHUwMDNlcHNpZF9tc2ssXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnNyaGluZm8tXFx1MDAzZXBzaWRfYWRkcikpKVxcbkBAIC0yMjEsOCArMjQxLDEwIEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0bnNpZG9mZiA9IHNyaG9mZiArIHNpemVvZihzdHJ1Y3QgaXB2Nl9zcl9oZHIpICtcXG4gXFx0XFx0XFx0ICAoKHNyaC1cXHUwMDNlc2VnbWVudHNfbGVmdCAtIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpO1xcbiBcXHRcXHRuc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbnNpZG9mZiwgc2l6ZW9mKF9uc2lkKSwgXFx1MDAyNl9uc2lkKTtcXG4tXFx0XFx0aWYgKCFuc2lkKVxcbitcXHRcXHRpZiAoIW5zaWQpIHtcXG4rXFx0XFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHR9XFxuIFxcdFxcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfTlNJRCxcXG4gXFx0XFx0XFx0XFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAobnNpZCwgXFx1MDAyNnNyaGluZm8tXFx1MDAzZW5zaWRfbXNrLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZzcmhpbmZvLVxcdTAwM2Vuc2lkX2FkZHIpKSlcXG5AQCAtMjMzLDggKzI1NSwxMCBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdGlmIChzcmhpbmZvLVxcdTAwM2VtdF9mbGFncyBcXHUwMDI2IElQNlRfU1JIX0xTSUQpIHtcXG4gXFx0XFx0bHNpZG9mZiA9IHNyaG9mZiArIHNpemVvZihzdHJ1Y3QgaXB2Nl9zcl9oZHIpO1xcbiBcXHRcXHRsc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbHNpZG9mZiwgc2l6ZW9mKF9sc2lkKSwgXFx1MDAyNl9sc2lkKTtcXG4tXFx0XFx0aWYgKCFsc2lkKVxcbitcXHRcXHRpZiAoIWxzaWQpIHtcXG4rXFx0XFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHR9XFxuIFxcdFxcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfTFNJRCxcXG4gXFx0XFx0XFx0XFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAobHNpZCwgXFx1MDAyNnNyaGluZm8tXFx1MDAzZWxzaWRfbXNrLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZzcmhpbmZvLVxcdTAwM2Vsc2lkX2FkZHIpKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjA6NTA6MDMuMDk5MTE1NzA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTcwODE4ODU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICAgIFwiSVA2X05GX01BVENIX0lQVjZIRUFERVJcIixcbiAgICBcIklQNl9ORl9NQVRDSF9TUkhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoYmhfbXQ2XCIsXG4gICAgXCJpcHY2aGVhZGVyX210NlwiLFxuICAgIFwic3JoX210NlwiLFxuICAgIFwic3JoMV9tdDZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUHY2IG5ldGZpbHRlciBtYXRjaCBtb2R1bGVzIChoYmgsIGlwdjZoZWFkZXIsIHNyaCkgdG8gc2V0IGBwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlYCB3aGVuIGVuY291bnRlcmluZyBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXJzLiBUaGlzIGNhdXNlcyB0aGUgcGFja2V0IHRvIGJlIGRyb3BwZWQgcmF0aGVyIHRoYW4ganVzdCBmYWlsaW5nIHRoZSBtYXRjaCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWMwMTIwNmFkZDNjYTBhOWJhOTdhYTM4ZWNjMGQyYjAxZTY4MzVhNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMjA6NTA6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXG5pbmRleCA2ZDFhNWQyMDI2YTY3OC4uYTY3ZjdkMGZlOTNmZTIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xuKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcbkBAIC0xMDQsOCArMTA0LDEwIEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0dHAgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIsIHNpemVvZihfb3B0dHlwZSksXG4gXHRcdFx0XHRcdFx0XHUwMDI2X29wdHR5cGUpO1xuLVx0XHRcdGlmICh0cCA9PSBOVUxMKVxuLVx0XHRcdFx0YnJlYWs7XG4rXHRcdFx0aWYgKCF0cCkge1xuK1x0XHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuK1x0XHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHRcdH1cbiBcbiBcdFx0XHQvKiBUeXBlIGNoZWNrICovXG4gXHRcdFx0aWYgKCp0cCAhPSAob3B0aW5mby1cdTAwM2VvcHRzW3RlbXBdIFx1MDAyNiAweEZGMDApIFx1MDAzZVx1MDAzZSA4KSB7XG5AQCAtMTIwLDEzICsxMjIsMTcgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0XHR1MTYgc3BlY19sZW47XG4gXG4gXHRcdFx0XHQvKiBsZW5ndGggZmllbGQgZXhpc3RzID8gKi9cbi1cdFx0XHRcdGlmIChoZHJsZW4gXHUwMDNjIDIpXG4tXHRcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0aWYgKGhkcmxlbiBcdTAwM2MgMikge1xuK1x0XHRcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4rXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0XHRcdH1cbiBcdFx0XHRcdGxwID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgcHRyICsgMSxcbiBcdFx0XHRcdFx0XHRcdHNpemVvZihfb3B0bGVuKSxcbiBcdFx0XHRcdFx0XHRcdFx1MDAyNl9vcHRsZW4pO1xuLVx0XHRcdFx0aWYgKGxwID09IE5VTEwpXG4tXHRcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0aWYgKCFscCkge1xuK1x0XHRcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4rXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0XHRcdH1cbiBcdFx0XHRcdHNwZWNfbGVuID0gb3B0aW5mby1cdTAwM2VvcHRzW3RlbXBdIFx1MDAyNiAweDAwRkY7XG4gXG4gXHRcdFx0XHRpZiAoc3BlY19sZW4gIT0gMHgwMEZGIFx1MDAyNlx1MDAyNiBzcGVjX2xlbiAhPSAqbHApIHtcbkBAIC0xNDcsNyArMTUzLDggQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0aWYgKChwdHIgXHUwMDNlIHNrYi1cdTAwM2VsZW4gLSBvcHRsZW4gfHwgaGRybGVuIFx1MDAzYyBvcHRsZW4pIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB0ZW1wIFx1MDAzYyBvcHRpbmZvLVx1MDAzZW9wdHNuciAtIDEpIHtcbiBcdFx0XHRcdHByX2RlYnVnKFwibmV3IHBvaW50ZXIgaXMgdG9vIGxhcmdlIVxcblwiKTtcbi1cdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuK1x0XHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHRcdH1cbiBcdFx0XHRwdHIgKz0gb3B0bGVuO1xuIFx0XHRcdGhkcmxlbiAtPSBvcHRsZW47XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jXG5pbmRleCBjNTJmZjkyOWM5M2IzNi4uMDU2OGViOTllYjFjMGEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuY1xuQEAgLTUzLDggKzUzLDEwIEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFx0XHQvKiBJcyB0aGVyZSBlbm91Z2ggc3BhY2UgZm9yIHRoZSBuZXh0IGV4dCBoZWFkZXI/ICovXG4tXHRcdGlmIChsZW4gXHUwMDNjIChpbnQpc2l6ZW9mKHN0cnVjdCBpcHY2X29wdF9oZHIpKVxuK1x0XHRpZiAobGVuIFx1MDAzYyAoaW50KXNpemVvZihzdHJ1Y3QgaXB2Nl9vcHRfaGRyKSkge1xuK1x0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdH1cbiBcdFx0LyogRVNQIC1cdTAwM2UgZXZhbHVhdGUgKi9cbiBcdFx0aWYgKG5leHRoZHIgPT0gTkVYVEhEUl9FU1ApIHtcbiBcdFx0XHR0ZW1wIHw9IE1BU0tfRVNQO1xuQEAgLTk5LDggKzEwMSwxMCBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdG5leHRoZHIgPSBocC1cdTAwM2VuZXh0aGRyO1xuIFx0XHRsZW4gLT0gaGRybGVuO1xuIFx0XHRwdHIgKz0gaGRybGVuO1xuLVx0XHRpZiAocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuKVxuLVx0XHRcdGJyZWFrO1xuK1x0XHRpZiAocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuKSB7XG4rXHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0aWYgKG5leHRoZHIgIT0gTkVYVEhEUl9OT05FIFx1MDAyNlx1MDAyNiBuZXh0aGRyICE9IE5FWFRIRFJfRVNQKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmNcbmluZGV4IGRiMGZkNjRkODk4NjI3Li4zM2E2NTliOWIwZTM3ZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xuQEAgLTI3LDE2ICsyNywyNSBAQCBzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdHN0cnVjdCBpcHY2X3NyX2hkciAqc3JoO1xuIFx0c3RydWN0IGlwdjZfc3JfaGRyIF9zcmg7XG4gXHRpbnQgaGRybGVuLCBzcmhvZmYgPSAwO1xuK1x0aW50IGVycjtcbiBcbi1cdGlmIChpcHY2X2ZpbmRfaGRyKHNrYiwgXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpIFx1MDAzYyAwKVxuK1x0ZXJyID0gaXB2Nl9maW5kX2hkcihza2IsIFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTtcbitcdGlmIChlcnIgXHUwMDNjIDApIHtcbitcdFx0aWYgKGVyciAhPSAtRU5PRU5UKVxuK1x0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuIFx0c3JoID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgc3Job2ZmLCBzaXplb2YoX3NyaCksIFx1MDAyNl9zcmgpO1xuLVx0aWYgKCFzcmgpXG4rXHRpZiAoIXNyaCkge1xuK1x0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbiBcbiBcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKHNyaCk7XG4tXHRpZiAoc2tiLVx1MDAzZWxlbiAtIHNyaG9mZiBcdTAwM2MgaGRybGVuKVxuK1x0aWYgKHNrYi1cdTAwM2VsZW4gLSBzcmhvZmYgXHUwMDNjIGhkcmxlbikge1xuK1x0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbiBcbiBcdGlmIChzcmgtXHUwMDNldHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEyMSwxNiArMTMwLDI1IEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdHN0cnVjdCBpbjZfYWRkciBfcHNpZCwgX25zaWQsIF9sc2lkO1xuIFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XG4gXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgX3NyaDtcbitcdGludCBlcnI7XG4gXG4tXHRpZiAoaXB2Nl9maW5kX2hkcihza2IsIFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKSBcdTAwM2MgMClcbitcdGVyciA9IGlwdjZfZmluZF9oZHIoc2tiLCBcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCk7XG4rXHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4rXHRcdGlmIChlcnIgIT0gLUVOT0VOVClcbitcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbiBcdHNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCBcdTAwMjZfc3JoKTtcbi1cdGlmICghc3JoKVxuK1x0aWYgKCFzcmgpIHtcbitcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4gXG4gXHRoZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpO1xuLVx0aWYgKHNrYi1cdTAwM2VsZW4gLSBzcmhvZmYgXHUwMDNjIGhkcmxlbilcbitcdGlmIChza2ItXHUwMDNlbGVuIC0gc3Job2ZmIFx1MDAzYyBoZHJsZW4pIHtcbitcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4gXG4gXHRpZiAoc3JoLVx1MDAzZXR5cGUgIT0gSVBWNl9TUkNSVF9UWVBFXzQpXG4gXHRcdHJldHVybiBmYWxzZTtcbkBAIC0yMDYsOCArMjI0LDEwIEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdFx0cHNpZG9mZiA9IHNyaG9mZiArIHNpemVvZihzdHJ1Y3QgaXB2Nl9zcl9oZHIpICtcbiBcdFx0XHQgICgoc3JoLVx1MDAzZXNlZ21lbnRzX2xlZnQgKyAxKSAqIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTtcbiBcdFx0cHNpZCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHBzaWRvZmYsIHNpemVvZihfcHNpZCksIFx1MDAyNl9wc2lkKTtcbi1cdFx0aWYgKCFwc2lkKVxuK1x0XHRpZiAoIXBzaWQpIHtcbitcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHR9XG4gXHRcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfUFNJRCxcbiBcdFx0XHRcdGlwdjZfbWFza2VkX2FkZHJfY21wKHBzaWQsIFx1MDAyNnNyaGluZm8tXHUwMDNlcHNpZF9tc2ssXG4gXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZzcmhpbmZvLVx1MDAzZXBzaWRfYWRkcikpKVxuQEAgLTIyMSw4ICsyNDEsMTAgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRuc2lkb2ZmID0gc3Job2ZmICsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcikgK1xuIFx0XHRcdCAgKChzcmgtXHUwMDNlc2VnbWVudHNfbGVmdCAtIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpO1xuIFx0XHRuc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbnNpZG9mZiwgc2l6ZW9mKF9uc2lkKSwgXHUwMDI2X25zaWQpO1xuLVx0XHRpZiAoIW5zaWQpXG4rXHRcdGlmICghbnNpZCkge1xuK1x0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdH1cbiBcdFx0aWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9OU0lELFxuIFx0XHRcdFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAobnNpZCwgXHUwMDI2c3JoaW5mby1cdTAwM2Vuc2lkX21zayxcbiBcdFx0XHRcdFx0XHQgICAgIFx1MDAyNnNyaGluZm8tXHUwMDNlbnNpZF9hZGRyKSkpXG5AQCAtMjMzLDggKzI1NSwxMCBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRpZiAoc3JoaW5mby1cdTAwM2VtdF9mbGFncyBcdTAwMjYgSVA2VF9TUkhfTFNJRCkge1xuIFx0XHRsc2lkb2ZmID0gc3Job2ZmICsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcik7XG4gXHRcdGxzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBsc2lkb2ZmLCBzaXplb2YoX2xzaWQpLCBcdTAwMjZfbHNpZCk7XG4tXHRcdGlmICghbHNpZClcbitcdFx0aWYgKCFsc2lkKSB7XG4rXHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0fVxuIFx0XHRpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX0xTSUQsXG4gXHRcdFx0XHRpcHY2X21hc2tlZF9hZGRyX2NtcChsc2lkLCBcdTAwMjZzcmhpbmZvLVx1MDAzZWxzaWRfbXNrLFxuIFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2c3JoaW5mby1cdTAwM2Vsc2lkX2FkZHIpKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIwOjUwOjAzLjA5OTExNjg4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyOTUwMjczMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJUHY2IE5ldGZpbHRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYSBmZXcgbmV0ZmlsdGVyIG1vZHVsZXMgZGVhbGluZyB3aXRoIElQdjY6IHNwZWNpZmljYWxseSBgaXA2dF9oYmguY2AsIGBpcDZ0X2lwdjZoZWFkZXIuY2AsIGFuZCBgaXA2dF9zcmguY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSBob3cgdGhleSBoYW5kbGUgbWFsZm9ybWVkIElQdjYgaGVhZGVycy4gUHJldmlvdXNseSwgaWYgc29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIHRoZSBwYXJzaW5nIHByb2Nlc3PigJRzYXksIGEgdHJ1bmNhdGVkIGhlYWRlciBvciBhbiBpbnZhbGlkIGxlbmd0aCBmaWVsZOKAlHRoZSBmdW5jdGlvbnMganVzdCBxdWlldGx5IGJhaWxlZCBvdXQsIHJldHVybmluZyBgZmFsc2VgIG9yIGJyZWFraW5nIGEgbG9vcC4gTm93LCB0aGluZ3MgYXJlIGRpZmZlcmVudC4gVGhleSdyZSBzZXR0aW5nIGBwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7YCAqYmVmb3JlKiByZXR1cm5pbmcgYGZhbHNlYC5cblxuVGhhdCdzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZSBmcm9tIGEgcGFja2V0LXByb2Nlc3Npbmcgc3RhbmRwb2ludC4gQmFzaWNhbGx5LCBpdCdzIHRlbGxpbmcgbmV0ZmlsdGVyIHRvIGltbWVkaWF0ZWx5IGRyb3AgdGhlIG9mZmVuZGluZyBwYWNrZXQsIHdoZXJlYXMgYmVmb3JlIGl0IG1pZ2h0IGhhdmUgY29udGludWVkIHByb2Nlc3NpbmcgaW4gc29tZSBmYXNoaW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuXG5cbkZpcnN0LCBJIHdhbnQgdG8gY29uZmlybSBJIHVuZGVyc3RhbmQgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBrbm93IHRoZSBLY29uZmlnIGVudHJpZXMgcmVxdWlyZWQgdG8gZW5hYmxlIHRoZXNlIG1vZHVsZXMuIFNvLCBJJ2xsIGxldmVyYWdlIGBncmVwcGVyYCB0byBmaW5kIHRoZSBleGFjdCBLY29uZmlnIGVudHJpZXMgZm9yIGBpcDZ0X2hiaC5jYCwgYGlwNnRfaXB2NmhlYWRlci5jYCwgYW5kIGBpcDZ0X3NyaC5jYC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBuZXcgYmVoYXZpb3IgdG8gdGFrZSBlZmZlY3QuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZyBpcyBhbHdheXMgdGhlIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTIsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMDo1MDowOC4zOTQxNDY3NDhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgzNDc1NTA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcDZ0X2hiaC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZT0zNj1vYmotJChDT05GSUdfSVA2X05GX01BVENIX01IKSArPSBpcDZ0X21oLm9cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9PUFRTKSArPSBpcDZ0X2hiaC5vXFxubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfUlBGSUxURVIpICs9IGlwNnRfcnBmaWx0ZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMDo1MDoxMi4yMjg5MDc5OTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzEyMTk2ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBhbmQgSVB2NiBIb3AtYnktSG9wIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSBjb25uZWN0IHRoZSBkb3RzIGhlcmUuIEkgc2VlIGBDT05GSUdfSVA2X05GX01BVENIX09QVFNgIGFuZCBteSBpbW1lZGlhdGUgYXNzb2NpYXRpb24gaXMgd2l0aCB0aGUgYGlwNnRfaGJoLm9gIG1vZHVsZS4gTm8gbmVlZCB0byBkaWcgYW55IGRlZXBlciwgSSdtIGNvbmZpZGVudCB0aGF0J3MgdGhlIGNvcnJlY3QgbW9kdWxlIGl0J3MgcmVsYXRlZCB0by4gSXQncyBhIHF1aWNrIGFzc29jaWF0aW9uIGJhc2VkIG9uIG15IGV4cGVyaWVuY2Ugd2l0aCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIElQdjYgbmV0ZmlsdGVyIG1vZHVsZXMsIGFuZCBJIGRvbid0IHNlZSBhbnkgb3RoZXIgcG9zc2liaWxpdGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg4NywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIwOjUwOjE0Ljk0MTEwNzE2NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTk3ODExMjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwNnRfaXB2NmhlYWRlci5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfSVA2X05GX01BVENIX0ZSQUcpICs9IGlwNnRfZnJhZy5vXFxubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUikgKz0gaXA2dF9pcHY2aGVhZGVyLm9cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGUtMzYtb2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgKz0gaXA2dF9taC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIwOjUwOjE3LjkzODkyNDc2NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0MDY1NDg5NDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBBbmFseXNpczogSVB2NiBIZWFkZXIgTWF0Y2hpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiwgYENPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCB0aGlzIGVuYWJsZXMgdGhlIGBpcDZ0X2lwdjZoZWFkZXIub2AgbW9kdWxlLlwiIEl0J3MgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGRlcGVuZGVuY3ksIG5vdCBwYXJ0aWN1bGFybHkgY29tcGxleC4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGxpa2VseSBjb250cm9scyB0aGUgY29tcGlsYXRpb24gYW5kIGluY2x1c2lvbiBvZiB0aGUgSVB2NiBoZWFkZXIgbWF0Y2hpbmcgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIG92ZXJhbGwgSVB2NiBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBTZWVtcyBsaWtlIHN0YW5kYXJkIGtlcm5lbCBtb2R1bGUgbG9naWMgYXQgcGxheS4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gaWYgdGhlcmUgYXJlIG51YW5jZXMsIGJ1dCBvbiB0aGUgc3VyZmFjZSwgaXQncyBqdXN0IGFib3V0IGVuYWJsaW5nIHRoZSBtb2R1bGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB0YWtlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBpbnRvIGNvbnNpZGVyYXRpb24gLSBhbmQgaXQncyBkZXBlbmRlbmN5IG9uIG90aGVyIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxOTEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMDo1MDo0Mi4wMDQ0MTYzNzhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0MjQ3Mzk3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcDZ0X3NyaC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZT0zOT1vYmotJChDT05GSUdfSVA2X05GX01BVENIX1JUKSArPSBpcDZ0X3J0Lm9cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU6NDA6b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9TUkgpICs9IGlwNnRfc3JoLm9cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGUtNDEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIwOjUwOjQ0Ljk0Njg5NjgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzcyNzYzNjMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIE5ldGZpbHRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgc29tZSBJUHY2IG5ldGZpbHRlciBtYXRjaCBtb2R1bGVzLiBTcGVjaWZpY2FsbHksIHRoZSBtb2R1bGVzIGFmZmVjdGVkIGFyZSBgaXA2dF9zcmgub2AsIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgYENPTkZJR19JUDZfTkZfTUFUQ0hfU1JIYC4gVGhlIGNvZGUgdGhhdCdzIGJlZW4gbW9kaWZpZWQsIGFuZCB0aGVyZWZvcmUgbmVlZHMgbXkgYXR0ZW50aW9uLCBpbmNsdWRlcyB0aGUgYGhiaF9tdDZgLCBgaXB2NmhlYWRlcl9tdDZgLCBgc3JoX210NmAsIGFuZCBgc3JoMV9tdDZgIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGFsbCB0aGUgbmV0ZmlsdGVyIG1hdGNoIGZ1bmN0aW9ucywgc28gdGhleSdyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuXG5cblRoZSBtZWF0IG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgc2V0dGluZyBgcGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlYC4gSW5zdGVhZCBvZiBqdXN0IGZhaWxpbmcgdGhlIG1hdGNoIHdoZW4gYSBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXIgaXMgZW5jb3VudGVyZWQsIHRoZSBwYXRjaCBjYXVzZXMgdGhlIHBhY2tldCB0byBiZSAqZHJvcHBlZCouIFRoaXMgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgdGhlIG5ldGZpbHRlciBoYW5kbGVzIHRoZXNlIHR5cGVzIG9mIHBhY2tldHM7IHRoaXMgY291bGQgaGF2ZSBzZXJpb3VzIGltcGxpY2F0aW9ucyBmb3IgZXhpc3RpbmcgcnVsZXNldHMuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBzb21lIHRob3JvdWdoIGZ1enppbmcuXG5cbkknbGwgcXVpY2tseSBjaGVjayB0aGUgY29uZmlnIGRlcGVuZGVuY2llcyB0byBiZSBzdXJlIEkndmUgZ290IGV2ZXJ5dGhpbmcgY292ZXJlZC4gSSdtIGFzc3VtaW5nIHdlJ2xsIG5lZWQgYElQNl9ORl9JUFRBQkxFU2AsIGJ1dCBJJ2xsIGZvY3VzIG9uIGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAsIGFuZCBgSVA2X05GX01BVENIX1NSSGAsIGFzIHRoZXkgYXJlIGV4cGxpY2l0bHkgcmVsYXRlZCB0byB0aGUgbW9kdWxlcyBJJ20gZm9jdXNlZCBvbi5cblxuU28sIGp1c3QgdG8gYmUgZXhwbGljaXQsIHRoZSBpbXBvcnRhbnQgY29uZmlncyBhcmU6XG4qICAgYElQNl9ORl9NQVRDSF9PUFRTYFxuKiAgIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmBcbiogICBgSVA2X05GX01BVENIX1NSSGBcblxuQW5kLCBhcyBhIHJlbWluZGVyLCB0aGUga2V5IHN5bWJvbHMgaGVyZSBhcmU6XG4qICAgYGhiaF9tdDZgXG4qICAgYGlwdjZoZWFkZXJfbXQ2YFxuKiAgIGBzcmhfbXQ2YFxuKiAgIGBzcmgxX210NmBcblxuVGhlIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBiZWhhdmlvciBmcm9tIGEgc2ltcGxlIG1hdGNoIGZhaWx1cmUgdG8gYSBwYWNrZXQgZHJvcCwgd2hpY2ggY291bGQgaGF2ZSBzb21lIG5hc3R5IHNpZGUtZWZmZWN0cyBpZiB1bmV4cGVjdGVkIGJ5IGFkbWluaXN0cmF0b3JzLiBUaGlzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZnV6emVyLiBMZXQncyBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGlzIGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTIzLCJPdXRwdXRUb2tlbnMiOjE2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMDo1MDo1Mi42NzQ1MzYxMzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzI3NjI0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQNl9ORl9NQVRDSF9PUFRTXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUlwiLFxuICAgIFwiSVA2X05GX01BVENIX1NSSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhiaF9tdDZcIixcbiAgICBcImlwdjZoZWFkZXJfbXQ2XCIsXG4gICAgXCJzcmhfbXQ2XCIsXG4gICAgXCJzcmgxX210NlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIElQdjYgbmV0ZmlsdGVyIG1hdGNoIG1vZHVsZXMgKGhiaCwgaXB2NmhlYWRlciwgc3JoKSB0byBzZXQgYHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWVgIHdoZW4gZW5jb3VudGVyaW5nIG1hbGZvcm1lZCBvciB0cnVuY2F0ZWQgZXh0ZW5zaW9uIGhlYWRlcnMuIFRoaXMgY2F1c2VzIHRoZSBwYWNrZXQgdG8gYmUgZHJvcHBlZCByYXRoZXIgdGhhbiBqdXN0IGZhaWxpbmcgdGhlIG1hdGNoLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICAgIFwiSVA2X05GX01BVENIX0lQVjZIRUFERVJcIixcbiAgICBcIklQNl9ORl9NQVRDSF9TUkhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoYmhfbXQ2XCIsXG4gICAgXCJpcHY2aGVhZGVyX210NlwiLFxuICAgIFwic3JoX210NlwiLFxuICAgIFwic3JoMV9tdDZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUHY2IG5ldGZpbHRlciBtYXRjaCBtb2R1bGVzIChoYmgsIGlwdjZoZWFkZXIsIHNyaCkgdG8gc2V0IGBwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlYCB3aGVuIGVuY291bnRlcmluZyBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXJzLiBUaGlzIGNhdXNlcyB0aGUgcGFja2V0IHRvIGJlIGRyb3BwZWQgcmF0aGVyIHRoYW4ganVzdCBmYWlsaW5nIHRoZSBtYXRjaCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowfkmsl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 20:36:05 +0000 UTC FinishedAt: 2026-07-09 20:50:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "24c4c88259464d38b35c3fbaecb68675de64137d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP6_NF_MATCH_OPTS", "IP6_NF_MATCH_IPV6HEADER", "IP6_NF_MATCH_SRH" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "24c4c88259464d38b35c3fbaecb68675de64137d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP6_NF_MATCH_OPTS", "IP6_NF_MATCH_IPV6HEADER", "IP6_NF_MATCH_SRH" ], "series_id": "ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hbh_mt6", "ipv6header_mt6", "srh_mt6", "srh1_mt6" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA5IDIwOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9PUFRTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9TUkgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoYmhfbXQ2JiMzNDssCiAgICAmIzM0O2lwdjZoZWFkZXJfbXQ2JiMzNDssCiAgICAmIzM0O3NyaF9tdDYmIzM0OywKICAgICYjMzQ7c3JoMV9tdDYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVB2NiBuZXRmaWx0ZXIgbWF0Y2ggbW9kdWxlcyAoaGJoLCBpcHY2aGVhZGVyLCBzcmgpIHRvIHNldCBgcGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlYCB3aGVuIGVuY291bnRlcmluZyBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXJzLiBUaGlzIGNhdXNlcyB0aGUgcGFja2V0IHRvIGJlIGRyb3BwZWQgcmF0aGVyIHRoYW4ganVzdCBmYWlsaW5nIHRoZSBtYXRjaCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjA6NTA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5YzAxMjA2YWRkM2NhMGE5YmE5N2FhMzhlY2MwZDJiMDFlNjgzNWE2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgOSAyMDo1MDowMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXG5pbmRleCA2ZDFhNWQyMDI2YTY3OC4uYTY3ZjdkMGZlOTNmZTIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcbkBAIC0xMDQsOCAmIzQzOzEwNCwxMCBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdFx0XHRcdGJyZWFrO1xuIFx0XHRcdHRwID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgcHRyLCBzaXplb2YoX29wdHR5cGUpLFxuIFx0XHRcdFx0XHRcdFx1MDAyNl9vcHR0eXBlKTtcbi1cdFx0XHRpZiAodHAgPT0gTlVMTClcbi1cdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRpZiAoIXRwKSB7XG4mIzQzO1x0XHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuJiM0MztcdFx0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdFx0fVxuIFxuIFx0XHRcdC8qIFR5cGUgY2hlY2sgKi9cbiBcdFx0XHRpZiAoKnRwICE9IChvcHRpbmZvLVx1MDAzZW9wdHNbdGVtcF0gXHUwMDI2IDB4RkYwMCkgXHUwMDNlXHUwMDNlIDgpIHtcbkBAIC0xMjAsMTMgJiM0MzsxMjIsMTcgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0XHR1MTYgc3BlY19sZW47XG4gXG4gXHRcdFx0XHQvKiBsZW5ndGggZmllbGQgZXhpc3RzID8gKi9cbi1cdFx0XHRcdGlmIChoZHJsZW4gXHUwMDNjIDIpXG4tXHRcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRcdGlmIChoZHJsZW4gXHUwMDNjIDIpIHtcbiYjNDM7XHRcdFx0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiYjNDM7XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdFx0XHR9XG4gXHRcdFx0XHRscCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciAmIzQzOyAxLFxuIFx0XHRcdFx0XHRcdFx0c2l6ZW9mKF9vcHRsZW4pLFxuIFx0XHRcdFx0XHRcdFx0XHUwMDI2X29wdGxlbik7XG4tXHRcdFx0XHRpZiAobHAgPT0gTlVMTClcbi1cdFx0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdFx0aWYgKCFscCkge1xuJiM0MztcdFx0XHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuJiM0MztcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0XHRcdH1cbiBcdFx0XHRcdHNwZWNfbGVuID0gb3B0aW5mby1cdTAwM2VvcHRzW3RlbXBdIFx1MDAyNiAweDAwRkY7XG4gXG4gXHRcdFx0XHRpZiAoc3BlY19sZW4gIT0gMHgwMEZGIFx1MDAyNlx1MDAyNiBzcGVjX2xlbiAhPSAqbHApIHtcbkBAIC0xNDcsNyAmIzQzOzE1Myw4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdGlmICgocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuIC0gb3B0bGVuIHx8IGhkcmxlbiBcdTAwM2Mgb3B0bGVuKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgdGVtcCBcdTAwM2Mgb3B0aW5mby1cdTAwM2VvcHRzbnIgLSAxKSB7XG4gXHRcdFx0XHRwcl9kZWJ1ZyhcJiMzNDtuZXcgcG9pbnRlciBpcyB0b28gbGFyZ2UhXFxuXCYjMzQ7KTtcbi1cdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiYjNDM7XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdFx0fVxuIFx0XHRcdHB0ciAmIzQzOz0gb3B0bGVuO1xuIFx0XHRcdGhkcmxlbiAtPSBvcHRsZW47XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jXG5pbmRleCBjNTJmZjkyOWM5M2IzNi4uMDU2OGViOTllYjFjMGEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuY1xuQEAgLTUzLDggJiM0Mzs1MywxMCBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdFx0LyogSXMgdGhlcmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgbmV4dCBleHQgaGVhZGVyPyAqL1xuLVx0XHRpZiAobGVuIFx1MDAzYyAoaW50KXNpemVvZihzdHJ1Y3QgaXB2Nl9vcHRfaGRyKSlcbiYjNDM7XHRcdGlmIChsZW4gXHUwMDNjIChpbnQpc2l6ZW9mKHN0cnVjdCBpcHY2X29wdF9oZHIpKSB7XG4mIzQzO1x0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHR9XG4gXHRcdC8qIEVTUCAtXHUwMDNlIGV2YWx1YXRlICovXG4gXHRcdGlmIChuZXh0aGRyID09IE5FWFRIRFJfRVNQKSB7XG4gXHRcdFx0dGVtcCB8PSBNQVNLX0VTUDtcbkBAIC05OSw4ICYjNDM7MTAxLDEwIEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdFx0bmV4dGhkciA9IGhwLVx1MDAzZW5leHRoZHI7XG4gXHRcdGxlbiAtPSBoZHJsZW47XG4gXHRcdHB0ciAmIzQzOz0gaGRybGVuO1xuLVx0XHRpZiAocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuKVxuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0aWYgKHB0ciBcdTAwM2Ugc2tiLVx1MDAzZWxlbikge1xuJiM0MztcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdGlmIChuZXh0aGRyICE9IE5FWFRIRFJfTk9ORSBcdTAwMjZcdTAwMjYgbmV4dGhkciAhPSBORVhUSERSX0VTUClcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jXG5pbmRleCBkYjBmZDY0ZDg5ODYyNy4uMzNhNjU5YjliMGUzN2UgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmNcbkBAIC0yNywxNiAmIzQzOzI3LDI1IEBAIHN0YXRpYyBib29sIHNyaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XG4gXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgX3NyaDtcbiBcdGludCBoZHJsZW4sIHNyaG9mZiA9IDA7XG4mIzQzO1x0aW50IGVycjtcbiBcbi1cdGlmIChpcHY2X2ZpbmRfaGRyKHNrYiwgXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpIFx1MDAzYyAwKVxuJiM0MztcdGVyciA9IGlwdjZfZmluZF9oZHIoc2tiLCBcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCk7XG4mIzQzO1x0aWYgKGVyciBcdTAwM2MgMCkge1xuJiM0MztcdFx0aWYgKGVyciAhPSAtRU5PRU5UKVxuJiM0MztcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gXHRzcmggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBzcmhvZmYsIHNpemVvZihfc3JoKSwgXHUwMDI2X3NyaCk7XG4tXHRpZiAoIXNyaClcbiYjNDM7XHRpZiAoIXNyaCkge1xuJiM0MztcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuIFxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4oc3JoKTtcbi1cdGlmIChza2ItXHUwMDNlbGVuIC0gc3Job2ZmIFx1MDAzYyBoZHJsZW4pXG4mIzQzO1x0aWYgKHNrYi1cdTAwM2VsZW4gLSBzcmhvZmYgXHUwMDNjIGhkcmxlbikge1xuJiM0MztcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuIFxuIFx0aWYgKHNyaC1cdTAwM2V0eXBlICE9IElQVjZfU1JDUlRfVFlQRV80KVxuIFx0XHRyZXR1cm4gZmFsc2U7XG5AQCAtMTIxLDE2ICYjNDM7MTMwLDI1IEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdHN0cnVjdCBpbjZfYWRkciBfcHNpZCwgX25zaWQsIF9sc2lkO1xuIFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XG4gXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgX3NyaDtcbiYjNDM7XHRpbnQgZXJyO1xuIFxuLVx0aWYgKGlwdjZfZmluZF9oZHIoc2tiLCBcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCkgXHUwMDNjIDApXG4mIzQzO1x0ZXJyID0gaXB2Nl9maW5kX2hkcihza2IsIFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTtcbiYjNDM7XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRpZiAoZXJyICE9IC1FTk9FTlQpXG4mIzQzO1x0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiBcdHNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCBcdTAwMjZfc3JoKTtcbi1cdGlmICghc3JoKVxuJiM0MztcdGlmICghc3JoKSB7XG4mIzQzO1x0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gXG4gXHRoZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpO1xuLVx0aWYgKHNrYi1cdTAwM2VsZW4gLSBzcmhvZmYgXHUwMDNjIGhkcmxlbilcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiAtIHNyaG9mZiBcdTAwM2MgaGRybGVuKSB7XG4mIzQzO1x0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gXG4gXHRpZiAoc3JoLVx1MDAzZXR5cGUgIT0gSVBWNl9TUkNSVF9UWVBFXzQpXG4gXHRcdHJldHVybiBmYWxzZTtcbkBAIC0yMDYsOCAmIzQzOzIyNCwxMCBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdHBzaWRvZmYgPSBzcmhvZmYgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcikgJiM0MztcbiBcdFx0XHQgICgoc3JoLVx1MDAzZXNlZ21lbnRzX2xlZnQgJiM0MzsgMSkgKiBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSk7XG4gXHRcdHBzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwc2lkb2ZmLCBzaXplb2YoX3BzaWQpLCBcdTAwMjZfcHNpZCk7XG4tXHRcdGlmICghcHNpZClcbiYjNDM7XHRcdGlmICghcHNpZCkge1xuJiM0MztcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0fVxuIFx0XHRpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX1BTSUQsXG4gXHRcdFx0XHRpcHY2X21hc2tlZF9hZGRyX2NtcChwc2lkLCBcdTAwMjZzcmhpbmZvLVx1MDAzZXBzaWRfbXNrLFxuIFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2c3JoaW5mby1cdTAwM2Vwc2lkX2FkZHIpKSlcbkBAIC0yMjEsOCAmIzQzOzI0MSwxMCBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdG5zaWRvZmYgPSBzcmhvZmYgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcikgJiM0MztcbiBcdFx0XHQgICgoc3JoLVx1MDAzZXNlZ21lbnRzX2xlZnQgLSAxKSAqIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTtcbiBcdFx0bnNpZCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG5zaWRvZmYsIHNpemVvZihfbnNpZCksIFx1MDAyNl9uc2lkKTtcbi1cdFx0aWYgKCFuc2lkKVxuJiM0MztcdFx0aWYgKCFuc2lkKSB7XG4mIzQzO1x0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHR9XG4gXHRcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfTlNJRCxcbiBcdFx0XHRcdGlwdjZfbWFza2VkX2FkZHJfY21wKG5zaWQsIFx1MDAyNnNyaGluZm8tXHUwMDNlbnNpZF9tc2ssXG4gXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZzcmhpbmZvLVx1MDAzZW5zaWRfYWRkcikpKVxuQEAgLTIzMyw4ICYjNDM7MjU1LDEwIEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdGlmIChzcmhpbmZvLVx1MDAzZW10X2ZsYWdzIFx1MDAyNiBJUDZUX1NSSF9MU0lEKSB7XG4gXHRcdGxzaWRvZmYgPSBzcmhvZmYgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcik7XG4gXHRcdGxzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBsc2lkb2ZmLCBzaXplb2YoX2xzaWQpLCBcdTAwMjZfbHNpZCk7XG4tXHRcdGlmICghbHNpZClcbiYjNDM7XHRcdGlmICghbHNpZCkge1xuJiM0MztcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0fVxuIFx0XHRpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX0xTSUQsXG4gXHRcdFx0XHRpcHY2X21hc2tlZF9hZGRyX2NtcChsc2lkLCBcdTAwMjZzcmhpbmZvLVx1MDAzZWxzaWRfbXNrLFxuIFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2c3JoaW5mby1cdTAwM2Vsc2lkX2FkZHIpKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAyMDo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUDZfTkZfTUFUQ0hfT1BUUyYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUiYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfU1JIJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGJoX210NiYjMzQ7LAogICAgJiMzNDtpcHY2aGVhZGVyX210NiYjMzQ7LAogICAgJiMzNDtzcmhfbXQ2JiMzNDssCiAgICAmIzM0O3NyaDFfbXQ2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIElQdjYgbmV0ZmlsdGVyIG1hdGNoIG1vZHVsZXMgKGhiaCwgaXB2NmhlYWRlciwgc3JoKSB0byBzZXQgYHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZWAgd2hlbiBlbmNvdW50ZXJpbmcgbWFsZm9ybWVkIG9yIHRydW5jYXRlZCBleHRlbnNpb24gaGVhZGVycy4gVGhpcyBjYXVzZXMgdGhlIHBhY2tldCB0byBiZSBkcm9wcGVkIHJhdGhlciB0aGFuIGp1c3QgZmFpbGluZyB0aGUgbWF0Y2gsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5YzAxMjA2YWRkM2NhMGE5YmE5N2FhMzhlY2MwZDJiMDFlNjgzNWE2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgOSAyMDo1MDowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMKaW5kZXggNmQxYTVkMjAyNmE2NzguLmE2N2Y3ZDBmZTkzZmUyIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYwpAQCAtMTA0LDggJiM0MzsxMDQsMTAgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJCQkJYnJlYWs7CiAJCQl0cCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciwgc2l6ZW9mKF9vcHR0eXBlKSwKIAkJCQkJCSZhbXA7X29wdHR5cGUpOwotCQkJaWYgKHRwID09IE5VTEwpCi0JCQkJYnJlYWs7CiYjNDM7CQkJaWYgKCF0cCkgewomIzQzOwkJCQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwomIzQzOwkJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQkJfQogCiAJCQkvKiBUeXBlIGNoZWNrICovCiAJCQlpZiAoKnRwICE9IChvcHRpbmZvLSZndDtvcHRzW3RlbXBdICZhbXA7IDB4RkYwMCkgJmd0OyZndDsgOCkgewpAQCAtMTIwLDEzICYjNDM7MTIyLDE3IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCQkJCXUxNiBzcGVjX2xlbjsKIAogCQkJCS8qIGxlbmd0aCBmaWVsZCBleGlzdHMgPyAqLwotCQkJCWlmIChoZHJsZW4gJmx0OyAyKQotCQkJCQlicmVhazsKJiM0MzsJCQkJaWYgKGhkcmxlbiAmbHQ7IDIpIHsKJiM0MzsJCQkJCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiYjNDM7CQkJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQkJCX0KIAkJCQlscCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciAmIzQzOyAxLAogCQkJCQkJCXNpemVvZihfb3B0bGVuKSwKIAkJCQkJCQkmYW1wO19vcHRsZW4pOwotCQkJCWlmIChscCA9PSBOVUxMKQotCQkJCQlicmVhazsKJiM0MzsJCQkJaWYgKCFscCkgewomIzQzOwkJCQkJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKJiM0MzsJCQkJCXJldHVybiBmYWxzZTsKJiM0MzsJCQkJfQogCQkJCXNwZWNfbGVuID0gb3B0aW5mby0mZ3Q7b3B0c1t0ZW1wXSAmYW1wOyAweDAwRkY7CiAKIAkJCQlpZiAoc3BlY19sZW4gIT0gMHgwMEZGICZhbXA7JmFtcDsgc3BlY19sZW4gIT0gKmxwKSB7CkBAIC0xNDcsNyAmIzQzOzE1Myw4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCQkJaWYgKChwdHIgJmd0OyBza2ItJmd0O2xlbiAtIG9wdGxlbiB8fCBoZHJsZW4gJmx0OyBvcHRsZW4pICZhbXA7JmFtcDsKIAkJCSAgICB0ZW1wICZsdDsgb3B0aW5mby0mZ3Q7b3B0c25yIC0gMSkgewogCQkJCXByX2RlYnVnKCYjMzQ7bmV3IHBvaW50ZXIgaXMgdG9vIGxhcmdlIVxuJiMzNDspOwotCQkJCWJyZWFrOwomIzQzOwkJCQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwomIzQzOwkJCQlyZXR1cm4gZmFsc2U7CiAJCQl9CiAJCQlwdHIgJiM0Mzs9IG9wdGxlbjsKIAkJCWhkcmxlbiAtPSBvcHRsZW47CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmMKaW5kZXggYzUyZmY5MjljOTNiMzYuLjA1NjhlYjk5ZWIxYzBhIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jCkBAIC01Myw4ICYjNDM7NTMsMTAgQEAgaXB2NmhlYWRlcl9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCQkJYnJlYWs7CiAJCX0KIAkJLyogSXMgdGhlcmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgbmV4dCBleHQgaGVhZGVyPyAqLwotCQlpZiAobGVuICZsdDsgKGludClzaXplb2Yoc3RydWN0IGlwdjZfb3B0X2hkcikpCiYjNDM7CQlpZiAobGVuICZsdDsgKGludClzaXplb2Yoc3RydWN0IGlwdjZfb3B0X2hkcikpIHsKJiM0MzsJCQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwogCQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJfQogCQkvKiBFU1AgLSZndDsgZXZhbHVhdGUgKi8KIAkJaWYgKG5leHRoZHIgPT0gTkVYVEhEUl9FU1ApIHsKIAkJCXRlbXAgfD0gTUFTS19FU1A7CkBAIC05OSw4ICYjNDM7MTAxLDEwIEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJbmV4dGhkciA9IGhwLSZndDtuZXh0aGRyOwogCQlsZW4gLT0gaGRybGVuOwogCQlwdHIgJiM0Mzs9IGhkcmxlbjsKLQkJaWYgKHB0ciAmZ3Q7IHNrYi0mZ3Q7bGVuKQotCQkJYnJlYWs7CiYjNDM7CQlpZiAocHRyICZndDsgc2tiLSZndDtsZW4pIHsKJiM0MzsJCQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwomIzQzOwkJCXJldHVybiBmYWxzZTsKJiM0MzsJCX0KIAl9CiAKIAlpZiAobmV4dGhkciAhPSBORVhUSERSX05PTkUgJmFtcDsmYW1wOyBuZXh0aGRyICE9IE5FWFRIRFJfRVNQKQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYwppbmRleCBkYjBmZDY0ZDg5ODYyNy4uMzNhNjU5YjliMGUzN2UgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jCkBAIC0yNywxNiAmIzQzOzI3LDI1IEBAIHN0YXRpYyBib29sIHNyaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCXN0cnVjdCBpcHY2X3NyX2hkciAqc3JoOwogCXN0cnVjdCBpcHY2X3NyX2hkciBfc3JoOwogCWludCBoZHJsZW4sIHNyaG9mZiA9IDA7CiYjNDM7CWludCBlcnI7CiAKLQlpZiAoaXB2Nl9maW5kX2hkcihza2IsICZhbXA7c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpICZsdDsgMCkKJiM0MzsJZXJyID0gaXB2Nl9maW5kX2hkcihza2IsICZhbXA7c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpOwomIzQzOwlpZiAoZXJyICZsdDsgMCkgewomIzQzOwkJaWYgKGVyciAhPSAtRU5PRU5UKQomIzQzOwkJCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiAJCXJldHVybiBmYWxzZTsKJiM0MzsJfQogCXNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCAmYW1wO19zcmgpOwotCWlmICghc3JoKQomIzQzOwlpZiAoIXNyaCkgewomIzQzOwkJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKIAkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiAKIAloZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpOwotCWlmIChza2ItJmd0O2xlbiAtIHNyaG9mZiAmbHQ7IGhkcmxlbikKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuIC0gc3Job2ZmICZsdDsgaGRybGVuKSB7CiYjNDM7CQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwogCQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIAogCWlmIChzcmgtJmd0O3R5cGUgIT0gSVBWNl9TUkNSVF9UWVBFXzQpCiAJCXJldHVybiBmYWxzZTsKQEAgLTEyMSwxNiAmIzQzOzEzMCwyNSBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJc3RydWN0IGluNl9hZGRyIF9wc2lkLCBfbnNpZCwgX2xzaWQ7CiAJc3RydWN0IGlwdjZfc3JfaGRyICpzcmg7CiAJc3RydWN0IGlwdjZfc3JfaGRyIF9zcmg7CiYjNDM7CWludCBlcnI7CiAKLQlpZiAoaXB2Nl9maW5kX2hkcihza2IsICZhbXA7c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpICZsdDsgMCkKJiM0MzsJZXJyID0gaXB2Nl9maW5kX2hkcihza2IsICZhbXA7c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpOwomIzQzOwlpZiAoZXJyICZsdDsgMCkgewomIzQzOwkJaWYgKGVyciAhPSAtRU5PRU5UKQomIzQzOwkJCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiAJCXJldHVybiBmYWxzZTsKJiM0MzsJfQogCXNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCAmYW1wO19zcmgpOwotCWlmICghc3JoKQomIzQzOwlpZiAoIXNyaCkgewomIzQzOwkJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKIAkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiAKIAloZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpOwotCWlmIChza2ItJmd0O2xlbiAtIHNyaG9mZiAmbHQ7IGhkcmxlbikKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuIC0gc3Job2ZmICZsdDsgaGRybGVuKSB7CiYjNDM7CQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwogCQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIAogCWlmIChzcmgtJmd0O3R5cGUgIT0gSVBWNl9TUkNSVF9UWVBFXzQpCiAJCXJldHVybiBmYWxzZTsKQEAgLTIwNiw4ICYjNDM7MjI0LDEwIEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJcHNpZG9mZiA9IHNyaG9mZiAmIzQzOyBzaXplb2Yoc3RydWN0IGlwdjZfc3JfaGRyKSAmIzQzOwogCQkJICAoKHNyaC0mZ3Q7c2VnbWVudHNfbGVmdCAmIzQzOyAxKSAqIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTsKIAkJcHNpZCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHBzaWRvZmYsIHNpemVvZihfcHNpZCksICZhbXA7X3BzaWQpOwotCQlpZiAoIXBzaWQpCiYjNDM7CQlpZiAoIXBzaWQpIHsKJiM0MzsJCQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwogCQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJfQogCQlpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX1BTSUQsCiAJCQkJaXB2Nl9tYXNrZWRfYWRkcl9jbXAocHNpZCwgJmFtcDtzcmhpbmZvLSZndDtwc2lkX21zaywKIAkJCQkJCSAgICAgJmFtcDtzcmhpbmZvLSZndDtwc2lkX2FkZHIpKSkKQEAgLTIyMSw4ICYjNDM7MjQxLDEwIEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJbnNpZG9mZiA9IHNyaG9mZiAmIzQzOyBzaXplb2Yoc3RydWN0IGlwdjZfc3JfaGRyKSAmIzQzOwogCQkJICAoKHNyaC0mZ3Q7c2VnbWVudHNfbGVmdCAtIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpOwogCQluc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbnNpZG9mZiwgc2l6ZW9mKF9uc2lkKSwgJmFtcDtfbnNpZCk7Ci0JCWlmICghbnNpZCkKJiM0MzsJCWlmICghbnNpZCkgewomIzQzOwkJCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiAJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQl9CiAJCWlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfTlNJRCwKIAkJCQlpcHY2X21hc2tlZF9hZGRyX2NtcChuc2lkLCAmYW1wO3NyaGluZm8tJmd0O25zaWRfbXNrLAogCQkJCQkJICAgICAmYW1wO3NyaGluZm8tJmd0O25zaWRfYWRkcikpKQpAQCAtMjMzLDggJiM0MzsyNTUsMTAgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCWlmIChzcmhpbmZvLSZndDttdF9mbGFncyAmYW1wOyBJUDZUX1NSSF9MU0lEKSB7CiAJCWxzaWRvZmYgPSBzcmhvZmYgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcik7CiAJCWxzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBsc2lkb2ZmLCBzaXplb2YoX2xzaWQpLCAmYW1wO19sc2lkKTsKLQkJaWYgKCFsc2lkKQomIzQzOwkJaWYgKCFsc2lkKSB7CiYjNDM7CQkJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKIAkJCXJldHVybiBmYWxzZTsKJiM0MzsJCX0KIAkJaWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9MU0lELAogCQkJCWlwdjZfbWFza2VkX2FkZHJfY21wKGxzaWQsICZhbXA7c3JoaW5mby0mZ3Q7bHNpZF9tc2ssCiAJCQkJCQkgICAgICZhbXA7c3JoaW5mby0mZ3Q7bHNpZF9hZGRyKSkpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUHY2IE5ldGZpbHRlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBhIGZldyBuZXRmaWx0ZXIgbW9kdWxlcyBkZWFsaW5nIHdpdGggSVB2Njogc3BlY2lmaWNhbGx5IGBpcDZ0X2hiaC5jYCwgYGlwNnRfaXB2NmhlYWRlci5jYCwgYW5kIGBpcDZ0X3NyaC5jYC4gVGhlIGNvcmUgY2hhbmdlIHNlZW1zIHRvIGJlIGhvdyB0aGV5IGhhbmRsZSBtYWxmb3JtZWQgSVB2NiBoZWFkZXJzLiBQcmV2aW91c2x5LCBpZiBzb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgdGhlIHBhcnNpbmcgcHJvY2Vzc+KAlHNheSwgYSB0cnVuY2F0ZWQgaGVhZGVyIG9yIGFuIGludmFsaWQgbGVuZ3RoIGZpZWxk4oCUdGhlIGZ1bmN0aW9ucyBqdXN0IHF1aWV0bHkgYmFpbGVkIG91dCwgcmV0dXJuaW5nIGBmYWxzZWAgb3IgYnJlYWtpbmcgYSBsb29wLiBOb3csIHRoaW5ncyBhcmUgZGlmZmVyZW50LiBUaGV5JiMzOTtyZSBzZXR0aW5nIGBwYXItJmd0O2hvdGRyb3AgPSB0cnVlO2AgKmJlZm9yZSogcmV0dXJuaW5nIGBmYWxzZWAuCgpUaGF0JiMzOTtzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZSBmcm9tIGEgcGFja2V0LXByb2Nlc3Npbmcgc3RhbmRwb2ludC4gQmFzaWNhbGx5LCBpdCYjMzk7cyB0ZWxsaW5nIG5ldGZpbHRlciB0byBpbW1lZGlhdGVseSBkcm9wIHRoZSBvZmZlbmRpbmcgcGFja2V0LCB3aGVyZWFzIGJlZm9yZSBpdCBtaWdodCBoYXZlIGNvbnRpbnVlZCBwcm9jZXNzaW5nIGluIHNvbWUgZmFzaGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLgoKRmlyc3QsIEkgd2FudCB0byBjb25maXJtIEkgdW5kZXJzdGFuZCB0aGUgY29uZmlnIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGtub3cgdGhlIEtjb25maWcgZW50cmllcyByZXF1aXJlZCB0byBlbmFibGUgdGhlc2UgbW9kdWxlcy4gU28sIEkmIzM5O2xsIGxldmVyYWdlIGBncmVwcGVyYCB0byBmaW5kIHRoZSBleGFjdCBLY29uZmlnIGVudHJpZXMgZm9yIGBpcDZ0X2hiaC5jYCwgYGlwNnRfaXB2NmhlYWRlci5jYCwgYW5kIGBpcDZ0X3NyaC5jYC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBuZXcgYmVoYXZpb3IgdG8gdGFrZSBlZmZlY3QuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZyBpcyBhbHdheXMgdGhlIGZpcnN0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXA2dF9oYmgubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU9MzY9b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgJiM0Mzs9IGlwNnRfbWgub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfT1BUUykgJiM0Mzs9IGlwNnRfaGJoLm9cbm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfSVA2X05GX01BVENIX1JQRklMVEVSKSAmIzQzOz0gaXA2dF9ycGZpbHRlci5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjA6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg4NwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIGFuZCBJUHY2IEhvcC1ieS1Ib3AgT3B0aW9ucyoqCgpBbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSBjb25uZWN0IHRoZSBkb3RzIGhlcmUuIEkgc2VlIGBDT05GSUdfSVA2X05GX01BVENIX09QVFNgIGFuZCBteSBpbW1lZGlhdGUgYXNzb2NpYXRpb24gaXMgd2l0aCB0aGUgYGlwNnRfaGJoLm9gIG1vZHVsZS4gTm8gbmVlZCB0byBkaWcgYW55IGRlZXBlciwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCYjMzk7cyB0aGUgY29ycmVjdCBtb2R1bGUgaXQmIzM5O3MgcmVsYXRlZCB0by4gSXQmIzM5O3MgYSBxdWljayBhc3NvY2lhdGlvbiBiYXNlZCBvbiBteSBleHBlcmllbmNlIHdpdGggdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCBJUHY2IG5ldGZpbHRlciBtb2R1bGVzLCBhbmQgSSBkb24mIzM5O3Qgc2VlIGFueSBvdGhlciBwb3NzaWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwNnRfaXB2NmhlYWRlci5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfSVA2X05GX01BVENIX0ZSQUcpICYjNDM7PSBpcDZ0X2ZyYWcub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUikgJiM0Mzs9IGlwNnRfaXB2NmhlYWRlci5vXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGUtMzYtb2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgJiM0Mzs9IGlwNnRfbWgub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxOTEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBBbmFseXNpczogSVB2NiBIZWFkZXIgTWF0Y2hpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgQ09ORklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIHRoaXMgZW5hYmxlcyB0aGUgYGlwNnRfaXB2NmhlYWRlci5vYCBtb2R1bGUuJiMzNDsgSXQmIzM5O3MgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGRlcGVuZGVuY3ksIG5vdCBwYXJ0aWN1bGFybHkgY29tcGxleC4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGxpa2VseSBjb250cm9scyB0aGUgY29tcGlsYXRpb24gYW5kIGluY2x1c2lvbiBvZiB0aGUgSVB2NiBoZWFkZXIgbWF0Y2hpbmcgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIG92ZXJhbGwgSVB2NiBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBTZWVtcyBsaWtlIHN0YW5kYXJkIGtlcm5lbCBtb2R1bGUgbG9naWMgYXQgcGxheS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGlmIHRoZXJlIGFyZSBudWFuY2VzLCBidXQgb24gdGhlIHN1cmZhY2UsIGl0JiMzOTtzIGp1c3QgYWJvdXQgZW5hYmxpbmcgdGhlIG1vZHVsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHRha2UgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGludG8gY29uc2lkZXJhdGlvbiAtIGFuZCBpdCYjMzk7cyBkZXBlbmRlbmN5IG9uIG90aGVyIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXA2dF9zcmgubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU9Mzk9b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9SVCkgJiM0Mzs9IGlwNnRfcnQub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfU1JIKSAmIzQzOz0gaXA2dF9zcmgub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlLTQxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDIwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MjMKCQkJCQkJCW91dHB1dDogMTY5CgkJCQkJCQl0aG91Z2h0czogNDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFRoaXMgTmV0ZmlsdGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyBzb21lIElQdjYgbmV0ZmlsdGVyIG1hdGNoIG1vZHVsZXMuIFNwZWNpZmljYWxseSwgdGhlIG1vZHVsZXMgYWZmZWN0ZWQgYXJlIGBpcDZ0X3NyaC5vYCwgd2hpY2ggaXMgY29udHJvbGxlZCBieSBgQ09ORklHX0lQNl9ORl9NQVRDSF9TUkhgLiBUaGUgY29kZSB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQsIGFuZCB0aGVyZWZvcmUgbmVlZHMgbXkgYXR0ZW50aW9uLCBpbmNsdWRlcyB0aGUgYGhiaF9tdDZgLCBgaXB2NmhlYWRlcl9tdDZgLCBgc3JoX210NmAsIGFuZCBgc3JoMV9tdDZgIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGFsbCB0aGUgbmV0ZmlsdGVyIG1hdGNoIGZ1bmN0aW9ucywgc28gdGhleSYjMzk7cmUgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHRlc3RhYmxlLgoKVGhlIG1lYXQgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBzZXR0aW5nIGBwYXItJmd0O2hvdGRyb3AgPSB0cnVlYC4gSW5zdGVhZCBvZiBqdXN0IGZhaWxpbmcgdGhlIG1hdGNoIHdoZW4gYSBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXIgaXMgZW5jb3VudGVyZWQsIHRoZSBwYXRjaCBjYXVzZXMgdGhlIHBhY2tldCB0byBiZSAqZHJvcHBlZCouIFRoaXMgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgdGhlIG5ldGZpbHRlciBoYW5kbGVzIHRoZXNlIHR5cGVzIG9mIHBhY2tldHM7IHRoaXMgY291bGQgaGF2ZSBzZXJpb3VzIGltcGxpY2F0aW9ucyBmb3IgZXhpc3RpbmcgcnVsZXNldHMuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBzb21lIHRob3JvdWdoIGZ1enppbmcuCgpJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBjb25maWcgZGVwZW5kZW5jaWVzIHRvIGJlIHN1cmUgSSYjMzk7dmUgZ290IGV2ZXJ5dGhpbmcgY292ZXJlZC4gSSYjMzk7bSBhc3N1bWluZyB3ZSYjMzk7bGwgbmVlZCBgSVA2X05GX0lQVEFCTEVTYCwgYnV0IEkmIzM5O2xsIGZvY3VzIG9uIGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAsIGFuZCBgSVA2X05GX01BVENIX1NSSGAsIGFzIHRoZXkgYXJlIGV4cGxpY2l0bHkgcmVsYXRlZCB0byB0aGUgbW9kdWxlcyBJJiMzOTttIGZvY3VzZWQgb24uCgpTbywganVzdCB0byBiZSBleHBsaWNpdCwgdGhlIGltcG9ydGFudCBjb25maWdzIGFyZToKKiAgIGBJUDZfTkZfTUFUQ0hfT1BUU2AKKiAgIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAKKiAgIGBJUDZfTkZfTUFUQ0hfU1JIYAoKQW5kLCBhcyBhIHJlbWluZGVyLCB0aGUga2V5IHN5bWJvbHMgaGVyZSBhcmU6CiogICBgaGJoX210NmAKKiAgIGBpcHY2aGVhZGVyX210NmAKKiAgIGBzcmhfbXQ2YAoqICAgYHNyaDFfbXQ2YAoKVGhlIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBiZWhhdmlvciBmcm9tIGEgc2ltcGxlIG1hdGNoIGZhaWx1cmUgdG8gYSBwYWNrZXQgZHJvcCwgd2hpY2ggY291bGQgaGF2ZSBzb21lIG5hc3R5IHNpZGUtZWZmZWN0cyBpZiB1bmV4cGVjdGVkIGJ5IGFkbWluaXN0cmF0b3JzLiBUaGlzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZnV6emVyLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhpcyBpbmZvcm1hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDkgMjA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9PUFRTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9TUkgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoYmhfbXQ2JiMzNDssCiAgICAmIzM0O2lwdjZoZWFkZXJfbXQ2JiMzNDssCiAgICAmIzM0O3NyaF9tdDYmIzM0OywKICAgICYjMzQ7c3JoMV9tdDYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVB2NiBuZXRmaWx0ZXIgbWF0Y2ggbW9kdWxlcyAoaGJoLCBpcHY2aGVhZGVyLCBzcmgpIHRvIHNldCBgcGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlYCB3aGVuIGVuY291bnRlcmluZyBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXJzLiBUaGlzIGNhdXNlcyB0aGUgcGFja2V0IHRvIGJlIGRyb3BwZWQgcmF0aGVyIHRoYW4ganVzdCBmYWlsaW5nIHRoZSBtYXRjaCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9PUFRTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9TUkgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoYmhfbXQ2JiMzNDssCiAgICAmIzM0O2lwdjZoZWFkZXJfbXQ2JiMzNDssCiAgICAmIzM0O3NyaF9tdDYmIzM0OywKICAgICYjMzQ7c3JoMV9tdDYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVB2NiBuZXRmaWx0ZXIgbWF0Y2ggbW9kdWxlcyAoaGJoLCBpcHY2aGVhZGVyLCBzcmgpIHRvIHNldCBgcGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlYCB3aGVuIGVuY291bnRlcmluZyBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXJzLiBUaGlzIGNhdXNlcyB0aGUgcGFja2V0IHRvIGJlIGRyb3BwZWQgcmF0aGVyIHRoYW4ganVzdCBmYWlsaW5nIHRoZSBtYXRjaCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMDo1MDowMi4yNTgwMDAyNjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDU0OTMxMjM1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICAgIFwiSVA2X05GX01BVENIX0lQVjZIRUFERVJcIixcbiAgICBcIklQNl9ORl9NQVRDSF9TUkhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoYmhfbXQ2XCIsXG4gICAgXCJpcHY2aGVhZGVyX210NlwiLFxuICAgIFwic3JoX210NlwiLFxuICAgIFwic3JoMV9tdDZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUHY2IG5ldGZpbHRlciBtYXRjaCBtb2R1bGVzIChoYmgsIGlwdjZoZWFkZXIsIHNyaCkgdG8gc2V0IGBwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlYCB3aGVuIGVuY291bnRlcmluZyBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXJzLiBUaGlzIGNhdXNlcyB0aGUgcGFja2V0IHRvIGJlIGRyb3BwZWQgcmF0aGVyIHRoYW4ganVzdCBmYWlsaW5nIHRoZSBtYXRjaCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIwOjUwOjAyLjI1ODAwNjU4N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQwNDM3NzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOWMwMTIwNmFkZDNjYTBhOWJhOTdhYTM4ZWNjMGQyYjAxZTY4MzVhNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCA5IDIwOjUwOjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcXG5pbmRleCA2ZDFhNWQyMDI2YTY3OC4uYTY3ZjdkMGZlOTNmZTIgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xcbkBAIC0xMDQsOCArMTA0LDEwIEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbiBcXHRcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0XFx0dHAgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIsIHNpemVvZihfb3B0dHlwZSksXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZfb3B0dHlwZSk7XFxuLVxcdFxcdFxcdGlmICh0cCA9PSBOVUxMKVxcbi1cXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0aWYgKCF0cCkge1xcbitcXHRcXHRcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbitcXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdFxcdH1cXG4gXFxuIFxcdFxcdFxcdC8qIFR5cGUgY2hlY2sgKi9cXG4gXFx0XFx0XFx0aWYgKCp0cCAhPSAob3B0aW5mby1cXHUwMDNlb3B0c1t0ZW1wXSBcXHUwMDI2IDB4RkYwMCkgXFx1MDAzZVxcdTAwM2UgOCkge1xcbkBAIC0xMjAsMTMgKzEyMiwxNyBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0XFx0dTE2IHNwZWNfbGVuO1xcbiBcXG4gXFx0XFx0XFx0XFx0LyogbGVuZ3RoIGZpZWxkIGV4aXN0cyA/ICovXFxuLVxcdFxcdFxcdFxcdGlmIChoZHJsZW4gXFx1MDAzYyAyKVxcbi1cXHRcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0XFx0aWYgKGhkcmxlbiBcXHUwMDNjIDIpIHtcXG4rXFx0XFx0XFx0XFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4rXFx0XFx0XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdFxcdGxwID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgcHRyICsgMSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2l6ZW9mKF9vcHRsZW4pLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2X29wdGxlbik7XFxuLVxcdFxcdFxcdFxcdGlmIChscCA9PSBOVUxMKVxcbi1cXHRcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0XFx0aWYgKCFscCkge1xcbitcXHRcXHRcXHRcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbitcXHRcXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0XFx0c3BlY19sZW4gPSBvcHRpbmZvLVxcdTAwM2VvcHRzW3RlbXBdIFxcdTAwMjYgMHgwMEZGO1xcbiBcXG4gXFx0XFx0XFx0XFx0aWYgKHNwZWNfbGVuICE9IDB4MDBGRiBcXHUwMDI2XFx1MDAyNiBzcGVjX2xlbiAhPSAqbHApIHtcXG5AQCAtMTQ3LDcgKzE1Myw4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbiBcXHRcXHRcXHRpZiAoKHB0ciBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuIC0gb3B0bGVuIHx8IGhkcmxlbiBcXHUwMDNjIG9wdGxlbikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIHRlbXAgXFx1MDAzYyBvcHRpbmZvLVxcdTAwM2VvcHRzbnIgLSAxKSB7XFxuIFxcdFxcdFxcdFxcdHByX2RlYnVnKFxcXCJuZXcgcG9pbnRlciBpcyB0b28gbGFyZ2UhXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdFxcdHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWU7XFxuK1xcdFxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRwdHIgKz0gb3B0bGVuO1xcbiBcXHRcXHRcXHRoZHJsZW4gLT0gb3B0bGVuO1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcXG5pbmRleCBjNTJmZjkyOWM5M2IzNi4uMDU2OGViOTllYjFjMGEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jXFxuKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jXFxuQEAgLTUzLDggKzUzLDEwIEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4gXFx0XFx0LyogSXMgdGhlcmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgbmV4dCBleHQgaGVhZGVyPyAqL1xcbi1cXHRcXHRpZiAobGVuIFxcdTAwM2MgKGludClzaXplb2Yoc3RydWN0IGlwdjZfb3B0X2hkcikpXFxuK1xcdFxcdGlmIChsZW4gXFx1MDAzYyAoaW50KXNpemVvZihzdHJ1Y3QgaXB2Nl9vcHRfaGRyKSkge1xcbitcXHRcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbiBcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdH1cXG4gXFx0XFx0LyogRVNQIC1cXHUwMDNlIGV2YWx1YXRlICovXFxuIFxcdFxcdGlmIChuZXh0aGRyID09IE5FWFRIRFJfRVNQKSB7XFxuIFxcdFxcdFxcdHRlbXAgfD0gTUFTS19FU1A7XFxuQEAgLTk5LDggKzEwMSwxMCBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdFxcdG5leHRoZHIgPSBocC1cXHUwMDNlbmV4dGhkcjtcXG4gXFx0XFx0bGVuIC09IGhkcmxlbjtcXG4gXFx0XFx0cHRyICs9IGhkcmxlbjtcXG4tXFx0XFx0aWYgKHB0ciBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKVxcbi1cXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0aWYgKHB0ciBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKSB7XFxuK1xcdFxcdFxcdHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWU7XFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRpZiAobmV4dGhkciAhPSBORVhUSERSX05PTkUgXFx1MDAyNlxcdTAwMjYgbmV4dGhkciAhPSBORVhUSERSX0VTUClcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xcbmluZGV4IGRiMGZkNjRkODk4NjI3Li4zM2E2NTliOWIwZTM3ZSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jXFxuQEAgLTI3LDE2ICsyNywyNSBAQCBzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XFxuIFxcdHN0cnVjdCBpcHY2X3NyX2hkciBfc3JoO1xcbiBcXHRpbnQgaGRybGVuLCBzcmhvZmYgPSAwO1xcbitcXHRpbnQgZXJyO1xcbiBcXG4tXFx0aWYgKGlwdjZfZmluZF9oZHIoc2tiLCBcXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpIFxcdTAwM2MgMClcXG4rXFx0ZXJyID0gaXB2Nl9maW5kX2hkcihza2IsIFxcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCk7XFxuK1xcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdGlmIChlcnIgIT0gLUVOT0VOVClcXG4rXFx0XFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuIFxcdHNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCBcXHUwMDI2X3NyaCk7XFxuLVxcdGlmICghc3JoKVxcbitcXHRpZiAoIXNyaCkge1xcbitcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4gXFxuIFxcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKHNyaCk7XFxuLVxcdGlmIChza2ItXFx1MDAzZWxlbiAtIHNyaG9mZiBcXHUwMDNjIGhkcmxlbilcXG4rXFx0aWYgKHNrYi1cXHUwMDNlbGVuIC0gc3Job2ZmIFxcdTAwM2MgaGRybGVuKSB7XFxuK1xcdFxcdHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWU7XFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKHNyaC1cXHUwMDNldHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNClcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbkBAIC0xMjEsMTYgKzEzMCwyNSBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdHN0cnVjdCBpbjZfYWRkciBfcHNpZCwgX25zaWQsIF9sc2lkO1xcbiBcXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgKnNyaDtcXG4gXFx0c3RydWN0IGlwdjZfc3JfaGRyIF9zcmg7XFxuK1xcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoaXB2Nl9maW5kX2hkcihza2IsIFxcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCkgXFx1MDAzYyAwKVxcbitcXHRlcnIgPSBpcHY2X2ZpbmRfaGRyKHNrYiwgXFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTtcXG4rXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4rXFx0XFx0aWYgKGVyciAhPSAtRU5PRU5UKVxcbitcXHRcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4gXFx0c3JoID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgc3Job2ZmLCBzaXplb2YoX3NyaCksIFxcdTAwMjZfc3JoKTtcXG4tXFx0aWYgKCFzcmgpXFxuK1xcdGlmICghc3JoKSB7XFxuK1xcdFxcdHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWU7XFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbiBcXG4gXFx0aGRybGVuID0gaXB2Nl9vcHRsZW4oc3JoKTtcXG4tXFx0aWYgKHNrYi1cXHUwMDNlbGVuIC0gc3Job2ZmIFxcdTAwM2MgaGRybGVuKVxcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gLSBzcmhvZmYgXFx1MDAzYyBoZHJsZW4pIHtcXG4rXFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoc3JoLVxcdTAwM2V0eXBlICE9IElQVjZfU1JDUlRfVFlQRV80KVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuQEAgLTIwNiw4ICsyMjQsMTAgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbiBcXHRcXHRwc2lkb2ZmID0gc3Job2ZmICsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcikgK1xcbiBcXHRcXHRcXHQgICgoc3JoLVxcdTAwM2VzZWdtZW50c19sZWZ0ICsgMSkgKiBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSk7XFxuIFxcdFxcdHBzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwc2lkb2ZmLCBzaXplb2YoX3BzaWQpLCBcXHUwMDI2X3BzaWQpO1xcbi1cXHRcXHRpZiAoIXBzaWQpXFxuK1xcdFxcdGlmICghcHNpZCkge1xcbitcXHRcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbiBcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdH1cXG4gXFx0XFx0aWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9QU0lELFxcbiBcXHRcXHRcXHRcXHRpcHY2X21hc2tlZF9hZGRyX2NtcChwc2lkLCBcXHUwMDI2c3JoaW5mby1cXHUwMDNlcHNpZF9tc2ssXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnNyaGluZm8tXFx1MDAzZXBzaWRfYWRkcikpKVxcbkBAIC0yMjEsOCArMjQxLDEwIEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0bnNpZG9mZiA9IHNyaG9mZiArIHNpemVvZihzdHJ1Y3QgaXB2Nl9zcl9oZHIpICtcXG4gXFx0XFx0XFx0ICAoKHNyaC1cXHUwMDNlc2VnbWVudHNfbGVmdCAtIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpO1xcbiBcXHRcXHRuc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbnNpZG9mZiwgc2l6ZW9mKF9uc2lkKSwgXFx1MDAyNl9uc2lkKTtcXG4tXFx0XFx0aWYgKCFuc2lkKVxcbitcXHRcXHRpZiAoIW5zaWQpIHtcXG4rXFx0XFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHR9XFxuIFxcdFxcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfTlNJRCxcXG4gXFx0XFx0XFx0XFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAobnNpZCwgXFx1MDAyNnNyaGluZm8tXFx1MDAzZW5zaWRfbXNrLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZzcmhpbmZvLVxcdTAwM2Vuc2lkX2FkZHIpKSlcXG5AQCAtMjMzLDggKzI1NSwxMCBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdGlmIChzcmhpbmZvLVxcdTAwM2VtdF9mbGFncyBcXHUwMDI2IElQNlRfU1JIX0xTSUQpIHtcXG4gXFx0XFx0bHNpZG9mZiA9IHNyaG9mZiArIHNpemVvZihzdHJ1Y3QgaXB2Nl9zcl9oZHIpO1xcbiBcXHRcXHRsc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbHNpZG9mZiwgc2l6ZW9mKF9sc2lkKSwgXFx1MDAyNl9sc2lkKTtcXG4tXFx0XFx0aWYgKCFsc2lkKVxcbitcXHRcXHRpZiAoIWxzaWQpIHtcXG4rXFx0XFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHR9XFxuIFxcdFxcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfTFNJRCxcXG4gXFx0XFx0XFx0XFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAobHNpZCwgXFx1MDAyNnNyaGluZm8tXFx1MDAzZWxzaWRfbXNrLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZzcmhpbmZvLVxcdTAwM2Vsc2lkX2FkZHIpKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMjA6NTA6MDMuMDk5MTE1NzA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTcwODE4ODU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICAgIFwiSVA2X05GX01BVENIX0lQVjZIRUFERVJcIixcbiAgICBcIklQNl9ORl9NQVRDSF9TUkhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoYmhfbXQ2XCIsXG4gICAgXCJpcHY2aGVhZGVyX210NlwiLFxuICAgIFwic3JoX210NlwiLFxuICAgIFwic3JoMV9tdDZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUHY2IG5ldGZpbHRlciBtYXRjaCBtb2R1bGVzIChoYmgsIGlwdjZoZWFkZXIsIHNyaCkgdG8gc2V0IGBwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlYCB3aGVuIGVuY291bnRlcmluZyBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXJzLiBUaGlzIGNhdXNlcyB0aGUgcGFja2V0IHRvIGJlIGRyb3BwZWQgcmF0aGVyIHRoYW4ganVzdCBmYWlsaW5nIHRoZSBtYXRjaCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWMwMTIwNmFkZDNjYTBhOWJhOTdhYTM4ZWNjMGQyYjAxZTY4MzVhNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMjA6NTA6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXG5pbmRleCA2ZDFhNWQyMDI2YTY3OC4uYTY3ZjdkMGZlOTNmZTIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xuKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcbkBAIC0xMDQsOCArMTA0LDEwIEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0dHAgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIsIHNpemVvZihfb3B0dHlwZSksXG4gXHRcdFx0XHRcdFx0XHUwMDI2X29wdHR5cGUpO1xuLVx0XHRcdGlmICh0cCA9PSBOVUxMKVxuLVx0XHRcdFx0YnJlYWs7XG4rXHRcdFx0aWYgKCF0cCkge1xuK1x0XHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuK1x0XHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHRcdH1cbiBcbiBcdFx0XHQvKiBUeXBlIGNoZWNrICovXG4gXHRcdFx0aWYgKCp0cCAhPSAob3B0aW5mby1cdTAwM2VvcHRzW3RlbXBdIFx1MDAyNiAweEZGMDApIFx1MDAzZVx1MDAzZSA4KSB7XG5AQCAtMTIwLDEzICsxMjIsMTcgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0XHR1MTYgc3BlY19sZW47XG4gXG4gXHRcdFx0XHQvKiBsZW5ndGggZmllbGQgZXhpc3RzID8gKi9cbi1cdFx0XHRcdGlmIChoZHJsZW4gXHUwMDNjIDIpXG4tXHRcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0aWYgKGhkcmxlbiBcdTAwM2MgMikge1xuK1x0XHRcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4rXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0XHRcdH1cbiBcdFx0XHRcdGxwID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgcHRyICsgMSxcbiBcdFx0XHRcdFx0XHRcdHNpemVvZihfb3B0bGVuKSxcbiBcdFx0XHRcdFx0XHRcdFx1MDAyNl9vcHRsZW4pO1xuLVx0XHRcdFx0aWYgKGxwID09IE5VTEwpXG4tXHRcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0aWYgKCFscCkge1xuK1x0XHRcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4rXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0XHRcdH1cbiBcdFx0XHRcdHNwZWNfbGVuID0gb3B0aW5mby1cdTAwM2VvcHRzW3RlbXBdIFx1MDAyNiAweDAwRkY7XG4gXG4gXHRcdFx0XHRpZiAoc3BlY19sZW4gIT0gMHgwMEZGIFx1MDAyNlx1MDAyNiBzcGVjX2xlbiAhPSAqbHApIHtcbkBAIC0xNDcsNyArMTUzLDggQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0aWYgKChwdHIgXHUwMDNlIHNrYi1cdTAwM2VsZW4gLSBvcHRsZW4gfHwgaGRybGVuIFx1MDAzYyBvcHRsZW4pIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB0ZW1wIFx1MDAzYyBvcHRpbmZvLVx1MDAzZW9wdHNuciAtIDEpIHtcbiBcdFx0XHRcdHByX2RlYnVnKFwibmV3IHBvaW50ZXIgaXMgdG9vIGxhcmdlIVxcblwiKTtcbi1cdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuK1x0XHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHRcdH1cbiBcdFx0XHRwdHIgKz0gb3B0bGVuO1xuIFx0XHRcdGhkcmxlbiAtPSBvcHRsZW47XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jXG5pbmRleCBjNTJmZjkyOWM5M2IzNi4uMDU2OGViOTllYjFjMGEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuY1xuQEAgLTUzLDggKzUzLDEwIEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFx0XHQvKiBJcyB0aGVyZSBlbm91Z2ggc3BhY2UgZm9yIHRoZSBuZXh0IGV4dCBoZWFkZXI/ICovXG4tXHRcdGlmIChsZW4gXHUwMDNjIChpbnQpc2l6ZW9mKHN0cnVjdCBpcHY2X29wdF9oZHIpKVxuK1x0XHRpZiAobGVuIFx1MDAzYyAoaW50KXNpemVvZihzdHJ1Y3QgaXB2Nl9vcHRfaGRyKSkge1xuK1x0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdH1cbiBcdFx0LyogRVNQIC1cdTAwM2UgZXZhbHVhdGUgKi9cbiBcdFx0aWYgKG5leHRoZHIgPT0gTkVYVEhEUl9FU1ApIHtcbiBcdFx0XHR0ZW1wIHw9IE1BU0tfRVNQO1xuQEAgLTk5LDggKzEwMSwxMCBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdG5leHRoZHIgPSBocC1cdTAwM2VuZXh0aGRyO1xuIFx0XHRsZW4gLT0gaGRybGVuO1xuIFx0XHRwdHIgKz0gaGRybGVuO1xuLVx0XHRpZiAocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuKVxuLVx0XHRcdGJyZWFrO1xuK1x0XHRpZiAocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuKSB7XG4rXHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0aWYgKG5leHRoZHIgIT0gTkVYVEhEUl9OT05FIFx1MDAyNlx1MDAyNiBuZXh0aGRyICE9IE5FWFRIRFJfRVNQKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmNcbmluZGV4IGRiMGZkNjRkODk4NjI3Li4zM2E2NTliOWIwZTM3ZSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xuQEAgLTI3LDE2ICsyNywyNSBAQCBzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdHN0cnVjdCBpcHY2X3NyX2hkciAqc3JoO1xuIFx0c3RydWN0IGlwdjZfc3JfaGRyIF9zcmg7XG4gXHRpbnQgaGRybGVuLCBzcmhvZmYgPSAwO1xuK1x0aW50IGVycjtcbiBcbi1cdGlmIChpcHY2X2ZpbmRfaGRyKHNrYiwgXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpIFx1MDAzYyAwKVxuK1x0ZXJyID0gaXB2Nl9maW5kX2hkcihza2IsIFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTtcbitcdGlmIChlcnIgXHUwMDNjIDApIHtcbitcdFx0aWYgKGVyciAhPSAtRU5PRU5UKVxuK1x0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuIFx0c3JoID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgc3Job2ZmLCBzaXplb2YoX3NyaCksIFx1MDAyNl9zcmgpO1xuLVx0aWYgKCFzcmgpXG4rXHRpZiAoIXNyaCkge1xuK1x0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbiBcbiBcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKHNyaCk7XG4tXHRpZiAoc2tiLVx1MDAzZWxlbiAtIHNyaG9mZiBcdTAwM2MgaGRybGVuKVxuK1x0aWYgKHNrYi1cdTAwM2VsZW4gLSBzcmhvZmYgXHUwMDNjIGhkcmxlbikge1xuK1x0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbiBcbiBcdGlmIChzcmgtXHUwMDNldHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTEyMSwxNiArMTMwLDI1IEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdHN0cnVjdCBpbjZfYWRkciBfcHNpZCwgX25zaWQsIF9sc2lkO1xuIFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XG4gXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgX3NyaDtcbitcdGludCBlcnI7XG4gXG4tXHRpZiAoaXB2Nl9maW5kX2hkcihza2IsIFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKSBcdTAwM2MgMClcbitcdGVyciA9IGlwdjZfZmluZF9oZHIoc2tiLCBcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCk7XG4rXHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4rXHRcdGlmIChlcnIgIT0gLUVOT0VOVClcbitcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbiBcdHNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCBcdTAwMjZfc3JoKTtcbi1cdGlmICghc3JoKVxuK1x0aWYgKCFzcmgpIHtcbitcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4gXG4gXHRoZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpO1xuLVx0aWYgKHNrYi1cdTAwM2VsZW4gLSBzcmhvZmYgXHUwMDNjIGhkcmxlbilcbitcdGlmIChza2ItXHUwMDNlbGVuIC0gc3Job2ZmIFx1MDAzYyBoZHJsZW4pIHtcbitcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4gXG4gXHRpZiAoc3JoLVx1MDAzZXR5cGUgIT0gSVBWNl9TUkNSVF9UWVBFXzQpXG4gXHRcdHJldHVybiBmYWxzZTtcbkBAIC0yMDYsOCArMjI0LDEwIEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdFx0cHNpZG9mZiA9IHNyaG9mZiArIHNpemVvZihzdHJ1Y3QgaXB2Nl9zcl9oZHIpICtcbiBcdFx0XHQgICgoc3JoLVx1MDAzZXNlZ21lbnRzX2xlZnQgKyAxKSAqIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTtcbiBcdFx0cHNpZCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHBzaWRvZmYsIHNpemVvZihfcHNpZCksIFx1MDAyNl9wc2lkKTtcbi1cdFx0aWYgKCFwc2lkKVxuK1x0XHRpZiAoIXBzaWQpIHtcbitcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHR9XG4gXHRcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfUFNJRCxcbiBcdFx0XHRcdGlwdjZfbWFza2VkX2FkZHJfY21wKHBzaWQsIFx1MDAyNnNyaGluZm8tXHUwMDNlcHNpZF9tc2ssXG4gXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZzcmhpbmZvLVx1MDAzZXBzaWRfYWRkcikpKVxuQEAgLTIyMSw4ICsyNDEsMTAgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRuc2lkb2ZmID0gc3Job2ZmICsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcikgK1xuIFx0XHRcdCAgKChzcmgtXHUwMDNlc2VnbWVudHNfbGVmdCAtIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpO1xuIFx0XHRuc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbnNpZG9mZiwgc2l6ZW9mKF9uc2lkKSwgXHUwMDI2X25zaWQpO1xuLVx0XHRpZiAoIW5zaWQpXG4rXHRcdGlmICghbnNpZCkge1xuK1x0XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdH1cbiBcdFx0aWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9OU0lELFxuIFx0XHRcdFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAobnNpZCwgXHUwMDI2c3JoaW5mby1cdTAwM2Vuc2lkX21zayxcbiBcdFx0XHRcdFx0XHQgICAgIFx1MDAyNnNyaGluZm8tXHUwMDNlbnNpZF9hZGRyKSkpXG5AQCAtMjMzLDggKzI1NSwxMCBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRpZiAoc3JoaW5mby1cdTAwM2VtdF9mbGFncyBcdTAwMjYgSVA2VF9TUkhfTFNJRCkge1xuIFx0XHRsc2lkb2ZmID0gc3Job2ZmICsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcik7XG4gXHRcdGxzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBsc2lkb2ZmLCBzaXplb2YoX2xzaWQpLCBcdTAwMjZfbHNpZCk7XG4tXHRcdGlmICghbHNpZClcbitcdFx0aWYgKCFsc2lkKSB7XG4rXHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0fVxuIFx0XHRpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX0xTSUQsXG4gXHRcdFx0XHRpcHY2X21hc2tlZF9hZGRyX2NtcChsc2lkLCBcdTAwMjZzcmhpbmZvLVx1MDAzZWxzaWRfbXNrLFxuIFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2c3JoaW5mby1cdTAwM2Vsc2lkX2FkZHIpKSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIwOjUwOjAzLjA5OTExNjg4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyOTUwMjczMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJUHY2IE5ldGZpbHRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYSBmZXcgbmV0ZmlsdGVyIG1vZHVsZXMgZGVhbGluZyB3aXRoIElQdjY6IHNwZWNpZmljYWxseSBgaXA2dF9oYmguY2AsIGBpcDZ0X2lwdjZoZWFkZXIuY2AsIGFuZCBgaXA2dF9zcmguY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSBob3cgdGhleSBoYW5kbGUgbWFsZm9ybWVkIElQdjYgaGVhZGVycy4gUHJldmlvdXNseSwgaWYgc29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIHRoZSBwYXJzaW5nIHByb2Nlc3PigJRzYXksIGEgdHJ1bmNhdGVkIGhlYWRlciBvciBhbiBpbnZhbGlkIGxlbmd0aCBmaWVsZOKAlHRoZSBmdW5jdGlvbnMganVzdCBxdWlldGx5IGJhaWxlZCBvdXQsIHJldHVybmluZyBgZmFsc2VgIG9yIGJyZWFraW5nIGEgbG9vcC4gTm93LCB0aGluZ3MgYXJlIGRpZmZlcmVudC4gVGhleSdyZSBzZXR0aW5nIGBwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7YCAqYmVmb3JlKiByZXR1cm5pbmcgYGZhbHNlYC5cblxuVGhhdCdzIGEgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZSBmcm9tIGEgcGFja2V0LXByb2Nlc3Npbmcgc3RhbmRwb2ludC4gQmFzaWNhbGx5LCBpdCdzIHRlbGxpbmcgbmV0ZmlsdGVyIHRvIGltbWVkaWF0ZWx5IGRyb3AgdGhlIG9mZmVuZGluZyBwYWNrZXQsIHdoZXJlYXMgYmVmb3JlIGl0IG1pZ2h0IGhhdmUgY29udGludWVkIHByb2Nlc3NpbmcgaW4gc29tZSBmYXNoaW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuXG5cbkZpcnN0LCBJIHdhbnQgdG8gY29uZmlybSBJIHVuZGVyc3RhbmQgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBrbm93IHRoZSBLY29uZmlnIGVudHJpZXMgcmVxdWlyZWQgdG8gZW5hYmxlIHRoZXNlIG1vZHVsZXMuIFNvLCBJJ2xsIGxldmVyYWdlIGBncmVwcGVyYCB0byBmaW5kIHRoZSBleGFjdCBLY29uZmlnIGVudHJpZXMgZm9yIGBpcDZ0X2hiaC5jYCwgYGlwNnRfaXB2NmhlYWRlci5jYCwgYW5kIGBpcDZ0X3NyaC5jYC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBuZXcgYmVoYXZpb3IgdG8gdGFrZSBlZmZlY3QuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZyBpcyBhbHdheXMgdGhlIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTIsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMDo1MDowOC4zOTQxNDY3NDhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzgzNDc1NTA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcDZ0X2hiaC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZT0zNj1vYmotJChDT05GSUdfSVA2X05GX01BVENIX01IKSArPSBpcDZ0X21oLm9cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9PUFRTKSArPSBpcDZ0X2hiaC5vXFxubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlLTM4LW9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfUlBGSUxURVIpICs9IGlwNnRfcnBmaWx0ZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMDo1MDoxMi4yMjg5MDc5OTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzEyMTk2ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgQ29uZmlndXJhdGlvbiBhbmQgSVB2NiBIb3AtYnktSG9wIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSBjb25uZWN0IHRoZSBkb3RzIGhlcmUuIEkgc2VlIGBDT05GSUdfSVA2X05GX01BVENIX09QVFNgIGFuZCBteSBpbW1lZGlhdGUgYXNzb2NpYXRpb24gaXMgd2l0aCB0aGUgYGlwNnRfaGJoLm9gIG1vZHVsZS4gTm8gbmVlZCB0byBkaWcgYW55IGRlZXBlciwgSSdtIGNvbmZpZGVudCB0aGF0J3MgdGhlIGNvcnJlY3QgbW9kdWxlIGl0J3MgcmVsYXRlZCB0by4gSXQncyBhIHF1aWNrIGFzc29jaWF0aW9uIGJhc2VkIG9uIG15IGV4cGVyaWVuY2Ugd2l0aCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kIElQdjYgbmV0ZmlsdGVyIG1vZHVsZXMsIGFuZCBJIGRvbid0IHNlZSBhbnkgb3RoZXIgcG9zc2liaWxpdGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg4NywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIwOjUwOjE0Ljk0MTEwNzE2NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTk3ODExMjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwNnRfaXB2NmhlYWRlci5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfSVA2X05GX01BVENIX0ZSQUcpICs9IGlwNnRfZnJhZy5vXFxubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUikgKz0gaXA2dF9pcHY2aGVhZGVyLm9cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGUtMzYtb2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgKz0gaXA2dF9taC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIwOjUwOjE3LjkzODkyNDc2NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0MDY1NDg5NDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBBbmFseXNpczogSVB2NiBIZWFkZXIgTWF0Y2hpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiwgYENPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCB0aGlzIGVuYWJsZXMgdGhlIGBpcDZ0X2lwdjZoZWFkZXIub2AgbW9kdWxlLlwiIEl0J3MgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGRlcGVuZGVuY3ksIG5vdCBwYXJ0aWN1bGFybHkgY29tcGxleC4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGxpa2VseSBjb250cm9scyB0aGUgY29tcGlsYXRpb24gYW5kIGluY2x1c2lvbiBvZiB0aGUgSVB2NiBoZWFkZXIgbWF0Y2hpbmcgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIG92ZXJhbGwgSVB2NiBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBTZWVtcyBsaWtlIHN0YW5kYXJkIGtlcm5lbCBtb2R1bGUgbG9naWMgYXQgcGxheS4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gaWYgdGhlcmUgYXJlIG51YW5jZXMsIGJ1dCBvbiB0aGUgc3VyZmFjZSwgaXQncyBqdXN0IGFib3V0IGVuYWJsaW5nIHRoZSBtb2R1bGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB0YWtlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBpbnRvIGNvbnNpZGVyYXRpb24gLSBhbmQgaXQncyBkZXBlbmRlbmN5IG9uIG90aGVyIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxOTEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMDo1MDo0Mi4wMDQ0MTYzNzhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0MjQ3Mzk3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcDZ0X3NyaC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZT0zOT1vYmotJChDT05GSUdfSVA2X05GX01BVENIX1JUKSArPSBpcDZ0X3J0Lm9cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU6NDA6b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9TUkgpICs9IGlwNnRfc3JoLm9cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGUtNDEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDIwOjUwOjQ0Ljk0Njg5NjgxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzcyNzYzNjMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIE5ldGZpbHRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgc29tZSBJUHY2IG5ldGZpbHRlciBtYXRjaCBtb2R1bGVzLiBTcGVjaWZpY2FsbHksIHRoZSBtb2R1bGVzIGFmZmVjdGVkIGFyZSBgaXA2dF9zcmgub2AsIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgYENPTkZJR19JUDZfTkZfTUFUQ0hfU1JIYC4gVGhlIGNvZGUgdGhhdCdzIGJlZW4gbW9kaWZpZWQsIGFuZCB0aGVyZWZvcmUgbmVlZHMgbXkgYXR0ZW50aW9uLCBpbmNsdWRlcyB0aGUgYGhiaF9tdDZgLCBgaXB2NmhlYWRlcl9tdDZgLCBgc3JoX210NmAsIGFuZCBgc3JoMV9tdDZgIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGFsbCB0aGUgbmV0ZmlsdGVyIG1hdGNoIGZ1bmN0aW9ucywgc28gdGhleSdyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuXG5cblRoZSBtZWF0IG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgc2V0dGluZyBgcGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlYC4gSW5zdGVhZCBvZiBqdXN0IGZhaWxpbmcgdGhlIG1hdGNoIHdoZW4gYSBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXIgaXMgZW5jb3VudGVyZWQsIHRoZSBwYXRjaCBjYXVzZXMgdGhlIHBhY2tldCB0byBiZSAqZHJvcHBlZCouIFRoaXMgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgdGhlIG5ldGZpbHRlciBoYW5kbGVzIHRoZXNlIHR5cGVzIG9mIHBhY2tldHM7IHRoaXMgY291bGQgaGF2ZSBzZXJpb3VzIGltcGxpY2F0aW9ucyBmb3IgZXhpc3RpbmcgcnVsZXNldHMuIFRoaXMgZGVmaW5pdGVseSBuZWVkcyBzb21lIHRob3JvdWdoIGZ1enppbmcuXG5cbkknbGwgcXVpY2tseSBjaGVjayB0aGUgY29uZmlnIGRlcGVuZGVuY2llcyB0byBiZSBzdXJlIEkndmUgZ290IGV2ZXJ5dGhpbmcgY292ZXJlZC4gSSdtIGFzc3VtaW5nIHdlJ2xsIG5lZWQgYElQNl9ORl9JUFRBQkxFU2AsIGJ1dCBJJ2xsIGZvY3VzIG9uIGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAsIGFuZCBgSVA2X05GX01BVENIX1NSSGAsIGFzIHRoZXkgYXJlIGV4cGxpY2l0bHkgcmVsYXRlZCB0byB0aGUgbW9kdWxlcyBJJ20gZm9jdXNlZCBvbi5cblxuU28sIGp1c3QgdG8gYmUgZXhwbGljaXQsIHRoZSBpbXBvcnRhbnQgY29uZmlncyBhcmU6XG4qICAgYElQNl9ORl9NQVRDSF9PUFRTYFxuKiAgIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmBcbiogICBgSVA2X05GX01BVENIX1NSSGBcblxuQW5kLCBhcyBhIHJlbWluZGVyLCB0aGUga2V5IHN5bWJvbHMgaGVyZSBhcmU6XG4qICAgYGhiaF9tdDZgXG4qICAgYGlwdjZoZWFkZXJfbXQ2YFxuKiAgIGBzcmhfbXQ2YFxuKiAgIGBzcmgxX210NmBcblxuVGhlIHBhdGNoIGlzIGNoYW5naW5nIHRoZSBiZWhhdmlvciBmcm9tIGEgc2ltcGxlIG1hdGNoIGZhaWx1cmUgdG8gYSBwYWNrZXQgZHJvcCwgd2hpY2ggY291bGQgaGF2ZSBzb21lIG5hc3R5IHNpZGUtZWZmZWN0cyBpZiB1bmV4cGVjdGVkIGJ5IGFkbWluaXN0cmF0b3JzLiBUaGlzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZnV6emVyLiBMZXQncyBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGlzIGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTIzLCJPdXRwdXRUb2tlbnMiOjE2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQyMDo1MDo1Mi42NzQ1MzYxMzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzI3NjI0MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQNl9ORl9NQVRDSF9PUFRTXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUlwiLFxuICAgIFwiSVA2X05GX01BVENIX1NSSFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhiaF9tdDZcIixcbiAgICBcImlwdjZoZWFkZXJfbXQ2XCIsXG4gICAgXCJzcmhfbXQ2XCIsXG4gICAgXCJzcmgxX210NlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIElQdjYgbmV0ZmlsdGVyIG1hdGNoIG1vZHVsZXMgKGhiaCwgaXB2NmhlYWRlciwgc3JoKSB0byBzZXQgYHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWVgIHdoZW4gZW5jb3VudGVyaW5nIG1hbGZvcm1lZCBvciB0cnVuY2F0ZWQgZXh0ZW5zaW9uIGhlYWRlcnMuIFRoaXMgY2F1c2VzIHRoZSBwYWNrZXQgdG8gYmUgZHJvcHBlZCByYXRoZXIgdGhhbiBqdXN0IGZhaWxpbmcgdGhlIG1hdGNoLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICAgIFwiSVA2X05GX01BVENIX0lQVjZIRUFERVJcIixcbiAgICBcIklQNl9ORl9NQVRDSF9TUkhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoYmhfbXQ2XCIsXG4gICAgXCJpcHY2aGVhZGVyX210NlwiLFxuICAgIFwic3JoX210NlwiLFxuICAgIFwic3JoMV9tdDZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUHY2IG5ldGZpbHRlciBtYXRjaCBtb2R1bGVzIChoYmgsIGlwdjZoZWFkZXIsIHNyaCkgdG8gc2V0IGBwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlYCB3aGVuIGVuY291bnRlcmluZyBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIGV4dGVuc2lvbiBoZWFkZXJzLiBUaGlzIGNhdXNlcyB0aGUgcGFja2V0IHRvIGJlIGRyb3BwZWQgcmF0aGVyIHRoYW4ganVzdCBmYWlsaW5nIHRoZSBtYXRjaCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowfkmsl[1] Phase: Succeeded StartedAt: 2026-07-09 20:51:04 +0000 UTC FinishedAt: 2026-07-09 20:51:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-09 20:51:04 +0000 UTC FinishedAt: 2026-07-09 20:51:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2] Phase: Succeeded StartedAt: 2026-07-09 20:51:04 +0000 UTC FinishedAt: 2026-07-10 01:13:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-09 20:51:04 +0000 UTC FinishedAt: 2026-07-10 01:13:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-09 20:51:04 +0000 UTC FinishedAt: 2026-07-09 20:51:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-09 20:51:04 +0000 UTC FinishedAt: 2026-07-09 20:51:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowfkmsl/series-workflowfkmsl-convert-artifact-2056963321/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-09 20:51:14 +0000 UTC FinishedAt: 2026-07-09 21:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-09 20:51:14 +0000 UTC FinishedAt: 2026-07-09 21:21:51 +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:*5462d4ee-9821-4d74-9abc-1a2ef396de57,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-workflowfkmsl/series-workflowfkmsl-convert-artifact-2056963321/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": "b951c0e1-882c-45d2-a42f-0bdecade7f79", "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-workflowfkmsl/series-workflowfkmsl-build-action-414408215/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-09 20:51:14 +0000 UTC FinishedAt: 2026-07-09 21:21:41 +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:*5462d4ee-9821-4d74-9abc-1a2ef396de57,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-workflowfkmsl/series-workflowfkmsl-convert-artifact-2056963321/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": "b951c0e1-882c-45d2-a42f-0bdecade7f79", "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-workflowfkmsl/series-workflowfkmsl-build-action-414408215/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-09 21:21:51 +0000 UTC FinishedAt: 2026-07-09 21:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-09 21:21:51 +0000 UTC FinishedAt: 2026-07-09 21:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-09 21:21:51 +0000 UTC FinishedAt: 2026-07-09 21:22:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-09 21:21:51 +0000 UTC FinishedAt: 2026-07-09 21:21:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowfkmsl/series-workflowfkmsl-convert-artifact-1668329164/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-09 21:22:01 +0000 UTC FinishedAt: 2026-07-09 21:24:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-09 21:22:01 +0000 UTC FinishedAt: 2026-07-09 21:23:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b951c0e1-882c-45d2-a42f-0bdecade7f79,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-workflowfkmsl/series-workflowfkmsl-build-action-414408215/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-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-09 21:24:00 +0000 UTC FinishedAt: 2026-07-09 21:24:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-09 21:24:00 +0000 UTC FinishedAt: 2026-07-09 21:24:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-09 21:24:00 +0000 UTC FinishedAt: 2026-07-09 22:07:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-09 21:24:00 +0000 UTC FinishedAt: 2026-07-09 22:07:14 +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:*5462d4ee-9821-4d74-9abc-1a2ef396de57,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-workflowfkmsl/series-workflowfkmsl-convert-artifact-1668329164/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": "b6a794a4-34dc-4861-94b3-3cb121c96b9d", "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-workflowfkmsl/series-workflowfkmsl-build-action-1170930920/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-09 21:24:00 +0000 UTC FinishedAt: 2026-07-09 22:07:04 +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:*5462d4ee-9821-4d74-9abc-1a2ef396de57,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-workflowfkmsl/series-workflowfkmsl-convert-artifact-1668329164/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": "b6a794a4-34dc-4861-94b3-3cb121c96b9d", "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-workflowfkmsl/series-workflowfkmsl-build-action-1170930920/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-09 22:07:14 +0000 UTC FinishedAt: 2026-07-09 22:07:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-09 22:07:14 +0000 UTC FinishedAt: 2026-07-09 22:07:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-09 22:07:14 +0000 UTC FinishedAt: 2026-07-09 22:09:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-09 22:07:14 +0000 UTC FinishedAt: 2026-07-09 22:09:10 +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:*b6a794a4-34dc-4861-94b3-3cb121c96b9d,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-workflowfkmsl/series-workflowfkmsl-build-action-1170930920/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-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-09 22:09:20 +0000 UTC FinishedAt: 2026-07-10 01:13:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-09 22:09:20 +0000 UTC FinishedAt: 2026-07-10 01:13:11 +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":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"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:*b951c0e1-882c-45d2-a42f-0bdecade7f79,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b6a794a4-34dc-4861-94b3-3cb121c96b9d,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-workflowfkmsl/series-workflowfkmsl-build-action-414408215/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-workflowfkmsl/series-workflowfkmsl-build-action-1170930920/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-09 22:09:20 +0000 UTC FinishedAt: 2026-07-09 22:09:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-09 22:09:20 +0000 UTC FinishedAt: 2026-07-09 22:09:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"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-workflowfkmsl/series-workflowfkmsl-convert-artifact-2245280565/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-09 22:09:20 +0000 UTC FinishedAt: 2026-07-09 22:09:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-09 22:09:20 +0000 UTC FinishedAt: 2026-07-09 22:09:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-09 22:09:20 +0000 UTC FinishedAt: 2026-07-09 22:09:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-09 22:09:30 +0000 UTC FinishedAt: 2026-07-10 01:13:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkmsl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24c4c88259464d38b35c3fbaecb68675de64137d","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH"],"series_id":"ff8aa86c-fe2b-42b0-b682-c8d6d766e3d0","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-09 22:09:30 +0000 UTC FinishedAt: 2026-07-10 01:13:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b951c0e1-882c-45d2-a42f-0bdecade7f79,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b6a794a4-34dc-4861-94b3-3cb121c96b9d,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-workflowfkmsl/series-workflowfkmsl-build-action-414408215/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-workflowfkmsl/series-workflowfkmsl-build-action-1170930920/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-workflowfkmsl/series-workflowfkmsl-convert-artifact-2245280565/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,}