Name: series-workflowxnqrj Phase: Succeeded StartedAt: 2026-08-04 08:52:20 +0000 UTC FinishedAt: 2026-08-04 11:51:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[0] Phase: Succeeded StartedAt: 2026-08-04 08:52:20 +0000 UTC FinishedAt: 2026-08-04 09:09:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 08:52:20 +0000 UTC FinishedAt: 2026-08-04 09:09:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "fd79e425-6fbb-4870-983b-2fa4124aa9ac" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_check" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gYWxsb3cga2Z1bmNzIHdpdGggdGhlIEtGX1NQSU5fTE9DSyBmbGFnIHRvIGJlIGNhbGxlZCBpbnNpZGUgYSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB2ZXJpZmllciYjMzk7cyBpbnN0cnVjdGlvbiBjaGVja2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOTowODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJkNjJmMTM1NDE0YTUwNzllMWZjMTgyMDIxM2Y3ZmVjY2FlNmY1YTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDA5OjA4OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXG5pbmRleCBjMDliNzk5NGRlNGViLi4zODBkYzEwYjY3NTAyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9idGYuaFxuQEAgLTc5LDYgJiM0Mzs3OSw3IEBAXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcxICAgKDEgXHUwMDNjXHUwMDNjIDE0KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAqL1xuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFx1MDAzY1x1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXG4gI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cbiYjNDM7I2RlZmluZSBLRl9TUElOX0xPQ0sgICAgKDEgXHUwMDNjXHUwMDNjIDE3KSAvKiBrZnVuYyBpcyBhbGxvd2VkIGluc2lkZSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbiAqL1xuIFxuIC8qXG4gICogVGFnIG1hcmtpbmcgYSBrZXJuZWwgZnVuY3Rpb24gYXMgYSBrZnVuYy4gVGhpcyBpcyBtZWFudCB0byBtaW5pbWl6ZSB0aGVcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDdhYTQ3MzQyZGM2NTkuLjlmM2ZlYmEzYzJmZTYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTExNjU3LDExICYjNDM7MTE2NTcsMjEgQEAgc3RhdGljIGJvb2wgaXNfYnBmX3N0cmVhbV9rZnVuYyh1MzIgYnRmX2lkKVxuIFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja107XG4gfVxuIFxuLXN0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZCh1MzIgYnRmX2lkKVxuJiM0MztzdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczMyIGZ1bmNfaWQsIHMxNiBvZmZzZXQpXG4ge1xuLVx0cmV0dXJuIGlzX2JwZl9ncmFwaF9hcGlfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKGJ0Zl9pZCkgfHxcbi1cdCAgICAgICBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9hcmVuYV9rZnVuYyhidGZfaWQpIHx8XG4tXHQgICAgICAgaXNfYnBmX3N0cmVhbV9rZnVuYyhidGZfaWQpO1xuJiM0MztcdHN0cnVjdCBicGZfa2Z1bmNfbWV0YSBrZnVuYztcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRpZiAoaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhmdW5jX2lkKSB8fCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKGZ1bmNfaWQpIHx8XG4mIzQzO1x0ICAgIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKGZ1bmNfaWQpIHx8IGlzX2JwZl9hcmVuYV9rZnVuYyhmdW5jX2lkKSB8fFxuJiM0MztcdCAgICBpc19icGZfc3RyZWFtX2tmdW5jKGZ1bmNfaWQpKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdGVyciA9IGZldGNoX2tmdW5jX21ldGEoZW52LCBmdW5jX2lkLCBvZmZzZXQsIFx1MDAyNmtmdW5jKTtcbiYjNDM7XHRpZiAoZXJyIHx8ICFrZnVuYy5mbGFncylcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuICprZnVuYy5mbGFncyBcdTAwMjYgS0ZfU1BJTl9MT0NLO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBpc19zeW5jX2NhbGxiYWNrX2NhbGxpbmdfa2Z1bmModTMyIGJ0Zl9pZClcbkBAIC0xNzI4OSw3ICYjNDM7MTcyOTksNyBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXG4gXHRcdFx0XHQgICAgIGluc24tXHUwMDNlaW1tICE9IEJQRl9GVU5DX3NwaW5fdW5sb2NrIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgICBpbnNuLVx1MDAzZWltbSAhPSBCUEZfRlVOQ19rcHRyX3hjaGcpIHx8XG4gXHRcdFx0XHQgICAgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQgICAgIChpbnNuLVx1MDAzZW9mZiAhPSAwIHx8ICFrZnVuY19zcGluX2FsbG93ZWQoaW5zbi1cdTAwM2VpbW0pKSkpIHtcbiYjNDM7XHRcdFx0XHQgICAgICFrZnVuY19zcGluX2FsbG93ZWQoZW52LCBpbnNuLVx1MDAzZWltbSwgaW5zbi1cdTAwM2VvZmYpKSkge1xuIFx0XHRcdFx0XHR2ZXJib3NlKGVudixcbiBcdFx0XHRcdFx0XHRcJiMzNDtmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcXG5cJiMzNDspO1xuIFx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOTowODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBhbGxvdyBrZnVuY3Mgd2l0aCB0aGUgS0ZfU1BJTl9MT0NLIGZsYWcgdG8gYmUgY2FsbGVkIGluc2lkZSBhIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHZlcmlmaWVyJiMzOTtzIGluc3RydWN0aW9uIGNoZWNraW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmQ2MmYxMzU0MTRhNTA3OWUxZmMxODIwMjEzZjdmZWNjYWU2ZjVhNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMDk6MDg6NTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaAppbmRleCBjMDliNzk5NGRlNGViLi4zODBkYzEwYjY3NTAyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2J0Zi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYnRmLmgKQEAgLTc5LDYgJiM0Mzs3OSw3IEBACiAjZGVmaW5lIEtGX0FSRU5BX0FSRzEgICAoMSAmbHQ7Jmx0OyAxNCkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgZmlyc3QgYXJndW1lbnQgKi8KICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxICZsdDsmbHQ7IDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi8KICNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSAmbHQ7Jmx0OyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi8KJiM0MzsjZGVmaW5lIEtGX1NQSU5fTE9DSyAgICAoMSAmbHQ7Jmx0OyAxNykgLyoga2Z1bmMgaXMgYWxsb3dlZCBpbnNpZGUgYnBmX3NwaW5fbG9jay1lZCByZWdpb24gKi8KIAogLyoKICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggN2FhNDczNDJkYzY1OS4uOWYzZmViYTNjMmZlNiAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTE2NTcsMTEgJiM0MzsxMTY1NywyMSBAQCBzdGF0aWMgYm9vbCBpc19icGZfc3RyZWFtX2tmdW5jKHUzMiBidGZfaWQpCiAJICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja107CiB9CiAKLXN0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZCh1MzIgYnRmX2lkKQomIzQzO3N0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMzIgZnVuY19pZCwgczE2IG9mZnNldCkKIHsKLQlyZXR1cm4gaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9pdGVyX251bV9hcGlfa2Z1bmMoYnRmX2lkKSB8fAotCSAgICAgICBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9hcmVuYV9rZnVuYyhidGZfaWQpIHx8Ci0JICAgICAgIGlzX2JwZl9zdHJlYW1fa2Z1bmMoYnRmX2lkKTsKJiM0MzsJc3RydWN0IGJwZl9rZnVuY19tZXRhIGtmdW5jOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwlpZiAoaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhmdW5jX2lkKSB8fCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKGZ1bmNfaWQpIHx8CiYjNDM7CSAgICBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyhmdW5jX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoZnVuY19pZCkgfHwKJiM0MzsJICAgIGlzX2JwZl9zdHJlYW1fa2Z1bmMoZnVuY19pZCkpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgJmFtcDtrZnVuYyk7CiYjNDM7CWlmIChlcnIgfHwgIWtmdW5jLmZsYWdzKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlyZXR1cm4gKmtmdW5jLmZsYWdzICZhbXA7IEtGX1NQSU5fTE9DSzsKIH0KIAogc3RhdGljIGJvb2wgaXNfc3luY19jYWxsYmFja19jYWxsaW5nX2tmdW5jKHUzMiBidGZfaWQpCkBAIC0xNzI4OSw3ICYjNDM7MTcyOTksNyBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpCiAJCQkJICAgICBpbnNuLSZndDtpbW0gIT0gQlBGX0ZVTkNfc3Bpbl91bmxvY2sgJmFtcDsmYW1wOwogCQkJCSAgICAgaW5zbi0mZ3Q7aW1tICE9IEJQRl9GVU5DX2twdHJfeGNoZykgfHwKIAkJCQkgICAgKGluc24tJmd0O3NyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMICZhbXA7JmFtcDsKLQkJCQkgICAgIChpbnNuLSZndDtvZmYgIT0gMCB8fCAha2Z1bmNfc3Bpbl9hbGxvd2VkKGluc24tJmd0O2ltbSkpKSkgewomIzQzOwkJCQkgICAgICFrZnVuY19zcGluX2FsbG93ZWQoZW52LCBpbnNuLSZndDtpbW0sIGluc24tJmd0O29mZikpKSB7CiAJCQkJCXZlcmJvc2UoZW52LAogCQkJCQkJJiMzNDtmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcbiYjMzQ7KTsKIAkJCQkJcmV0dXJuIC1FSU5WQUw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTcKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBCUEYgdmVyaWZpZXIsIHNwZWNpZmljYWxseSB0b3VjaGluZyBgaW5jbHVkZS9saW51eC9idGYuaGAgYW5kIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBuZXcgYEtGX1NQSU5fTE9DS2AgZmxhZyBpbiBgYnRmLmhgIGFuZCB0aGVuIHVwZGF0aW5nIGBrZnVuY19zcGluX2FsbG93ZWRgIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIHRha2UgdGhhdCBmbGFnIGludG8gYWNjb3VudC4gRnJvbSB0aGUgZGVzY3JpcHRpb24sIGl0IGxvb2tzIGZ1bmN0aW9uYWwgYW5kLCBpbiBlc3NlbmNlLCBpcyBleHBhbmRpbmcgd2hhdCYjMzk7cyBhbGxvd2VkIGluIGEgYGJwZl9zcGluX2xvY2tgLXByb3RlY3RlZCByZWdpb24gYnkgcGVybWl0dGluZyBrZnVuY3MgdGFnZ2VkIHdpdGggYEtGX1NQSU5fTE9DS2AgdG8gYmUgY2FsbGVkIGZyb20gd2l0aGluIGl0LgoKTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBzZWUgaG93IGBmZXRjaF9rZnVuY19tZXRhYCB3b3JrcywgYW5kIHRoZW4gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBga2Z1bmNfc3Bpbl9hbGxvd2VkYCBpcyBsZXZlcmFnZWQuIEkgbmVlZCB0byBzZWUgdGhlIGNhbGxpbmcgY29udGV4dC4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgYGtmdW5jX3NwaW5fYWxsb3dlZGAgaXMgY2FsbGVkIGZyb20gYGRvX2NoZWNrX2luc25gLgoKTmV4dCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgd2hpY2ggY29uZmlnIG9wdGlvbnMgdHlwaWNhbGx5IGNvbnRyb2wgdGhlIEJQRiB2ZXJpZmllci4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYENPTkZJR19CUEZfU1lTQ0FMTGAsIHRoYXQgc2hvdWxkIGJlIGl0LgoKRmluYWxseSwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgZW5zdXJlIHRoaXMgZG9lc24mIzM5O3QgaGF2ZSBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMsIEkmIzM5O2xsIHJ1biBhIHF1aWNrIGBkZWZhdWx0X2FwaTpncmVwcGVyYCBzZWFyY2ggZm9yIGBLRl9TUElOX0xPQ0tgIHRvIHNlZSBpZiB0aGlzIGZsYWcgaXMgYmVpbmcgdXNlZCBlbHNld2hlcmUgaW4gdGhlIGtlcm5lbC4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgSSYjMzk7bSBtaXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tGX1NQSU5fTE9DSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2J0Zi5oLTgxLSNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSBcdTAwM2NcdTAwM2MgMTYpIC8qIGtmdW5jIGhhcyBpbXBsaWNpdCBhcmd1bWVudHMgc3VwcGxpZWQgYnkgdGhlIHZlcmlmaWVyICovXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjgyOiNkZWZpbmUgS0ZfU1BJTl9MT0NLICAgICgxIFx1MDAzY1x1MDAzYyAxNykgLyoga2Z1bmMgaXMgYWxsb3dlZCBpbnNpZGUgYnBmX3NwaW5fbG9jay1lZCByZWdpb24gKi9cbmluY2x1ZGUvbGludXgvYnRmLmgtODMtXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNjYwPXN0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMzIgZnVuY19pZCwgczE2IG9mZnNldClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE2NzMtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2NzQ6XHRyZXR1cm4gKmtmdW5jLmZsYWdzIFx1MDAyNiBLRl9TUElOX0xPQ0s7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE2NzUtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NDYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgS0ZfU1BJTl9MT0NLYCBhbmQgdHdlYWtzIGBrZnVuY19zcGluX2FsbG93ZWRgLiBGdW5jdGlvbmFsbHksIGl0IGxvb2tzIHNvdW5kLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIGFic29sdXRlbHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZy4gVGhlIGdvYWwgaGVyZSBpcyB0byBpZGVudGlmeSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKTm93LCB3aGVyZSBkbyBJIGZvY3VzIHRoZSBmdXp6ZXI/IE15IGluaXRpYWwgdGhvdWdodCBpcyBgZG9fY2hlY2tfaW5zbmAgb3IgZXZlbiBga2Z1bmNfc3Bpbl9hbGxvd2VkYC4gVGhlIGNoYWxsZW5nZSBpcywgdGhleSYjMzk7cmUgYm90aCBkZWNsYXJlZCBhcyBzdGF0aWMsIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncyBpbiB0ZXJtcyBvZiBzeW1ib2wgdmlzaWJpbGl0eSBmb3IgdGhlIGZ1enplci4gQSBzdGF0aWMgZnVuY3Rpb24gbWlnaHQgYmUgbW9yZSBkaWZmaWN1bHQgdG8gaG9vayB0aGFuIGEgbm9uIHN0YXRpYyBvbmUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgcGl2b3QuIFNpbmNlIHRob3NlIGFyZSBzdGF0aWMsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBNeSB0aGlua2luZyBpcyB0aGF0IHRoZXJlICptdXN0KiBiZSBzb21lIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIEJQRiB2ZXJpZmllciB0aGF0IHRoaXMgbWlnaHQgaW50ZXJhY3Qgd2l0aC4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBmaW5kIGEgZ29vZCBlbnRyeSBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteaW50IGJwZl9jaGVjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg5MDE9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4OTM2OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM3LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzQxPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQ0MC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTQ0MTppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0NDItXHRcdFx0XHQgIHN0cnVjdCBicGZfYXR0YWNoX3RhcmdldF9pbmZvICp0Z3RfaW5mbylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2Mzg9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3ODEtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3ODI6aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3ODMtXHQgICAgICBzdHJ1Y3QgYnBmX2xvZ19hdHRyICphdHRyX2xvZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDEzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIEVudHJ5IFBvaW50KioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBCUEYgdmVyaWZpZXIgY29kZS4gVGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIHRoZSBmaXJzdCBmdW5jdGlvbiB0aGUgdmVyaWZpZXIgaGl0cywgaXMgYGJwZl9jaGVja2AsIHJpZ2h0PyBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gYmUgdGhvcm91Z2ggdGhvdWdoLCBzbyBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIga2V5IGZ1bmN0aW9ucyBsdXJraW5nIGFyb3VuZC4gYGJwZl9jaGVja2AgaXMgdGhlIG9idmlvdXMgZm9jdXMsIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgdG8gYmUgY29tcGxldGUuCgpIbW0sIHdoYXQgYWJvdXQgYGtmdW5jX3NwaW5fYWxsb3dlZGA/IFRoYXQmIzM5O3Mgc3RhdGljLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLCBtYWtpbmcgaXQgaGFyZGVyIHRvIHRyYWNrIGRpcmVjdGx5LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgYW55IHN0YXRpYyBmdW5jdGlvbnMgdGhhdCBjb3VsZCBiZSBjcml0aWNhbC4KCkFscmlnaHQsIGBicGZfY2hlY2tgIGlzIHByb2JhYmx5IHRvbyBnZW5lcmljIGZvciBpbi1kZXB0aCBhbmFseXNpcyBvbiBpdHMgb3duLiBJdCYjMzk7cyBib3VuZCB0byBiZSBhIG1hc3NpdmUgZnVuY3Rpb24uIEkgbmVlZCB0byBicmVhayB0aGlzIGRvd24gaW50byBzbWFsbGVyLCBtb3JlIG1hbmFnZWFibGUgcGllY2VzLiBTbywgaXMgdGhlcmUgYW55dGhpbmcgZWxzZT8gQWgsIGBkb19jaGVja19pbnNuYCBpcyBhbHNvIHN0YXRpYy4gTm93IHdlIGFyZSBnZXR0aW5nIHNvbWV3aGVyZSwgaXQgbWlnaHQgYmUgaW5saW5lZCB0b28uIExldCBtZSBjaGVjayBgZG9fY2hlY2tfY29tbW9uYC4KCk9rYXksIHRoZSBtb3N0IGxvZ2ljYWwgbW92ZSBpcyB0byBsb29rIGNsb3NlbHkgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYXJvdW5kIGBkb19jaGVja19pbnNuYC4gSSBzdXNwZWN0IGl0JiMzOTtzIGhlcmUgd2hlcmUgdGhlIHJlYWwgd29yayBvZiBpbnN0cnVjdGlvbiB2ZXJpZmljYXRpb24gaXMgcGVyZm9ybWVkLiBUaGlzIHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IGFyZWEgdG8gc3RhcnQgbXkgZGVlcCBkaXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RvX2NoZWNrX2luc24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE3MTg3PXN0YXRpYyBpbnQgY2hlY2tfaW5kaXJlY3RfanVtcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3MjQ0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3MjQ1OnN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzI0Ni17XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3MzUxPXN0YXRpYyBpbnQgZG9fY2hlY2soc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc0NzYtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTc0Nzc6XHRcdGVyciA9IGRvX2NoZWNrX2luc24oZW52LCBcdTAwMjZkb19wcmludF9zdGF0ZSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc0NzgtXHRcdGlmIChlcnJvcl9yZWNvdmVyYWJsZV93aXRoX25vc3BlYyhlcnIpIFx1MDAyNlx1MDAyNiBzdGF0ZS1cdTAwM2VzcGVjdWxhdGl2ZSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpY2F0aW9uIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgQlBGIHZlcmlmaWNhdGlvbiBjb2RlLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBhY3R1YWxseS4gVGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBpcyBgYnBmX2NoZWNrYCwgd2hpY2gsIGFzIEkgY2FuIHNlZSwgaXMgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3MgZXZlcnl0aGluZyBvZmYuIE5vdywgYGJwZl9jaGVja2AgdGhlbiBjYWxscyBgZG9fY2hlY2tgLCBhbmQgYGRvX2NoZWNrYCBzdWJzZXF1ZW50bHkgY2FsbHMgYGRvX2NoZWNrX2luc25gLiBUaGUgd2F5IGl0JiMzOTtzIHN0cnVjdHVyZWQsIHdpdGggYGRvX2NoZWNrX2luc25gIGFuZCBgZG9fY2hlY2tgIGJlaW5nIHN0YXRpYyBmdW5jdGlvbnMsIGNsZWFybHkgbWVhbnMgYGJwZl9jaGVja2AgaXMgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnQuIEFuZCB0aGF0IG1ha2VzIHNlbnNlLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBpbnN0cnVjdHMgdXMgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28sIHllYWgsIGBicGZfY2hlY2tgIGlzIHRoZSByaWdodCBmdW5jdGlvbiB0byBmb2N1cyBvbiBoZXJlLCBnb29kLgoKTm93LCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWluIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZ29pbmcgdG8gYmUgYSBoYXJkIHJlcXVpcmVtZW50IGZvciB0aGlzIHRvIGZ1bmN0aW9uLiBXZSYjMzk7bGwgbmVlZCB0aGF0IGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfU1lTQ0FMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcJiMzNDtCUEYgc3Vic3lzdGVtXCYjMzQ7XG5rZXJuZWwvYnBmL0tjb25maWctMjYtXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXHRib29sIFwmIzM0O0VuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjE4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IGZpcnN0IHRob3VnaHQgaXM6ICoqRXhwbG9yaW5nIHRoZSBDb250ZXh0IG9mIGEgS2VybmVsIFBhdGNoKiouIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIFRoZSB0ZXh0IG1lbnRpb25zIGEgcGF0Y2ggdGhhdCBzcGVjaWZpY2FsbHkgdG91Y2hlcyBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gIEJlZm9yZSBJIGRpdmUgaW50byB0aGUgY29kZSBpdHNlbGYsIEkgbmVlZCBhIGJyb2FkZXIgdW5kZXJzdGFuZGluZy4gSXMgdGhpcyBmaWxlIGFsd2F5cyBjb21waWxlZCwgb3IgaXMgaXQgY29udGluZ2VudCBvbiBzb21lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWcgZmlsZXMgb3IgcmVsYXRlZCBjb2RlIHRoYXQgY291bGQgYmUgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2U/IEkgaGF2ZSB0byBjb25zaWRlciB0aGUgcG90ZW50aWFsIGRvd25zdHJlYW0gZWZmZWN0cyB0byBmdWxseSBncmFzcCB0aGUgc2NvcGUuIEkgbmVlZCB0byBrbm93IHdoZXJlIEkgY2FuIGZpbmQgdGhlIGtlcm5lbCBjb25maWcgb3B0aW9ucyB0byBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmVyaWZpZXJcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTc9Q0ZMQUdTX2NvcmUubyAmIzQzOz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcbmtlcm5lbC9icGYvTWFrZWZpbGUtOC1cbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NzYKCQkJCQkJCW91dHB1dDogOTYKCQkJCQkJCXRob3VnaHRzOiAyMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIHRocm91Z2ggdGhlIGRldGFpbHMsIGFuZCB5ZXMsIGl0JiMzOTtzIGNsZWFyOiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIG1ha2luZyBzb21lIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQlBGIHZlcmlmaWVyLCBhbmQgdGhhdCYjMzk7cyB3aGVyZSBteSBmb2N1cyBuZWVkcyB0byBiZS4KCkxldCBtZSBicmVhayBkb3duIHdoYXQgSSYjMzk7bSBzZWVpbmcuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBLRl9TUElOX0xPQ0tgIGludG8gYGluY2x1ZGUvbGludXgvYnRmLmhgLCB3aGljaCBpcyBhIGtleSBmbGFnLiBUaGVuLCB0aGUgbWVhdCBvZiBpdCBpcyBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgc3BlY2lmaWNhbGx5IHRoZSBtb2RpZmljYXRpb24gdG8gYGtmdW5jX3NwaW5fYWxsb3dlZGAuIEl0IGxvb2tzIGxpa2UgdGhlIGBmZXRjaF9rZnVuY19tZXRhYCBmdW5jdGlvbiBpcyBiZWluZyB1c2VkIHRvIHJldHJpZXZlIHRoZSBrZnVuYyBtZXRhZGF0YSwgYXMgZXhwZWN0ZWQuIE5vdywgaWYgYSBrZnVuYyBoYXMgdGhhdCBgS0ZfU1BJTl9MT0NLYCBmbGFnIHNldCwgdGhlIHZlcmlmaWVyIHdpbGwgcGVybWl0IGl0cyB1c2UgKndpdGhpbiogYSBzcGluIGxvY2sgcmVnaW9uLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGFsdGVyYXRpb24gdG8gaG93IHRoZSB2ZXJpZmllciBoYW5kbGVzIGluc3RydWN0aW9uIGNoZWNraW5nLCBwYXJ0aWN1bGFybHkgcmVnYXJkaW5nIHRoZSBjb250ZXh0IGluIHdoaWNoIGEgQlBGIGZ1bmN0aW9uIGNhbiBleGVjdXRlLgoKU28sIGJhc2VkIG9uIHRoaXMgdGhvcm91Z2ggcmV2aWV3IGFuZCBteSBleHBlcmllbmNlLCB0aGlzIHNob3VsZCBiZSBjb25zaWRlcmVkIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBrZWVwIHRoZSBmb2N1cyBvbiB0aGUgYGJwZl9jaGVja2Agc2VjdGlvbiBmb3IgbWF4aW11bSBlZmZlY3RpdmVuZXNzLCBzbyBJJiMzOTtsbCBwdXQgdGhhdCBpbiBteSBgRm9jdXNTeW1ib2xzYCBhcnJheS4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIGVuYWJsZSBgQlBGX1NZU0NBTExgIHNvIHRoZSByZWxldmFudCBjb2RlIGlzIGF2YWlsYWJsZS4gSSYjMzk7bGwgc3VtbWFyaXplIG15IHJhdGlvbmFsZTogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBhbGxvdyBrZnVuY3Mgd2l0aCB0aGUgS0ZfU1BJTl9MT0NLIGZsYWcgdG8gYmUgY2FsbGVkIGluc2lkZSBhIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHZlcmlmaWVyJiMzOTtzIGluc3RydWN0aW9uIGNoZWNraW5nIGxvZ2ljLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGFsbG93IGtmdW5jcyB3aXRoIHRoZSBLRl9TUElOX0xPQ0sgZmxhZyB0byBiZSBjYWxsZWQgaW5zaWRlIGEgYnBmX3NwaW5fbG9jay1lZCByZWdpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgdmVyaWZpZXImIzM5O3MgaW5zdHJ1Y3Rpb24gY2hlY2tpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gYWxsb3cga2Z1bmNzIHdpdGggdGhlIEtGX1NQSU5fTE9DSyBmbGFnIHRvIGJlIGNhbGxlZCBpbnNpZGUgYSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB2ZXJpZmllciYjMzk7cyBpbnN0cnVjdGlvbiBjaGVja2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjA4OjU3LjMzNzU0MTg1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NzQzOTEzOTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBhbGxvdyBrZnVuY3Mgd2l0aCB0aGUgS0ZfU1BJTl9MT0NLIGZsYWcgdG8gYmUgY2FsbGVkIGluc2lkZSBhIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHZlcmlmaWVyJ3MgaW5zdHJ1Y3Rpb24gY2hlY2tpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjA4OjU3LjMzNzU0OTE2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc1MzQ5MzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYmQ2MmYxMzU0MTRhNTA3OWUxZmMxODIwMjEzZjdmZWNjYWU2ZjVhNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDA5OjA4OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXFxuaW5kZXggYzA5Yjc5OTRkZTRlYi4uMzgwZGMxMGI2NzUwMiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2J0Zi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9idGYuaFxcbkBAIC03OSw2ICs3OSw3IEBAXFxuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMSAgICgxIFxcdTAwM2NcXHUwMDNjIDE0KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAqL1xcbiAjZGVmaW5lIEtGX0FSRU5BX0FSRzIgICAoMSBcXHUwMDNjXFx1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXFxuICNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSBcXHUwMDNjXFx1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cXG4rI2RlZmluZSBLRl9TUElOX0xPQ0sgICAgKDEgXFx1MDAzY1xcdTAwM2MgMTcpIC8qIGtmdW5jIGlzIGFsbG93ZWQgaW5zaWRlIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uICovXFxuIFxcbiAvKlxcbiAgKiBUYWcgbWFya2luZyBhIGtlcm5lbCBmdW5jdGlvbiBhcyBhIGtmdW5jLiBUaGlzIGlzIG1lYW50IHRvIG1pbmltaXplIHRoZVxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCA3YWE0NzM0MmRjNjU5Li45ZjNmZWJhM2MyZmU2IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC0xMTY1NywxMSArMTE2NTcsMjEgQEAgc3RhdGljIGJvb2wgaXNfYnBmX3N0cmVhbV9rZnVuYyh1MzIgYnRmX2lkKVxcbiBcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrXTtcXG4gfVxcbiBcXG4tc3RhdGljIGJvb2wga2Z1bmNfc3Bpbl9hbGxvd2VkKHUzMiBidGZfaWQpXFxuK3N0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMzIgZnVuY19pZCwgczE2IG9mZnNldClcXG4ge1xcbi1cXHRyZXR1cm4gaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9pdGVyX251bV9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxcbi1cXHQgICAgICAgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoYnRmX2lkKSB8fFxcbi1cXHQgICAgICAgaXNfYnBmX3N0cmVhbV9rZnVuYyhidGZfaWQpO1xcbitcXHRzdHJ1Y3QgYnBmX2tmdW5jX21ldGEga2Z1bmM7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRpZiAoaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhmdW5jX2lkKSB8fCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKGZ1bmNfaWQpIHx8XFxuK1xcdCAgICBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyhmdW5jX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoZnVuY19pZCkgfHxcXG4rXFx0ICAgIGlzX2JwZl9zdHJlYW1fa2Z1bmMoZnVuY19pZCkpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXFx1MDAyNmtmdW5jKTtcXG4rXFx0aWYgKGVyciB8fCAha2Z1bmMuZmxhZ3MpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdHJldHVybiAqa2Z1bmMuZmxhZ3MgXFx1MDAyNiBLRl9TUElOX0xPQ0s7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sIGlzX3N5bmNfY2FsbGJhY2tfY2FsbGluZ19rZnVuYyh1MzIgYnRmX2lkKVxcbkBAIC0xNzI4OSw3ICsxNzI5OSw3IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcXG4gXFx0XFx0XFx0XFx0ICAgICBpbnNuLVxcdTAwM2VpbW0gIT0gQlBGX0ZVTkNfc3Bpbl91bmxvY2sgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0ICAgICBpbnNuLVxcdTAwM2VpbW0gIT0gQlBGX0ZVTkNfa3B0cl94Y2hnKSB8fFxcbiBcXHRcXHRcXHRcXHQgICAgKGluc24tXFx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdFxcdCAgICAgKGluc24tXFx1MDAzZW9mZiAhPSAwIHx8ICFrZnVuY19zcGluX2FsbG93ZWQoaW5zbi1cXHUwMDNlaW1tKSkpKSB7XFxuK1xcdFxcdFxcdFxcdCAgICAgIWtmdW5jX3NwaW5fYWxsb3dlZChlbnYsIGluc24tXFx1MDAzZWltbSwgaW5zbi1cXHUwMDNlb2ZmKSkpIHtcXG4gXFx0XFx0XFx0XFx0XFx0dmVyYm9zZShlbnYsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcXCJmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcXFxcblxcXCIpO1xcbiBcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MDg6NTcuNzEzNjg5Mzg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDgzNjc3NTkxOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGFsbG93IGtmdW5jcyB3aXRoIHRoZSBLRl9TUElOX0xPQ0sgZmxhZyB0byBiZSBjYWxsZWQgaW5zaWRlIGEgYnBmX3NwaW5fbG9jay1lZCByZWdpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgdmVyaWZpZXIncyBpbnN0cnVjdGlvbiBjaGVja2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYmQ2MmYxMzU0MTRhNTA3OWUxZmMxODIwMjEzZjdmZWNjYWU2ZjVhNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMDk6MDg6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxuaW5kZXggYzA5Yjc5OTRkZTRlYi4uMzgwZGMxMGI2NzUwMiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYnRmLmhcbkBAIC03OSw2ICs3OSw3IEBAXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcxICAgKDEgXHUwMDNjXHUwMDNjIDE0KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAqL1xuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFx1MDAzY1x1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXG4gI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cbisjZGVmaW5lIEtGX1NQSU5fTE9DSyAgICAoMSBcdTAwM2NcdTAwM2MgMTcpIC8qIGtmdW5jIGlzIGFsbG93ZWQgaW5zaWRlIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uICovXG4gXG4gLypcbiAgKiBUYWcgbWFya2luZyBhIGtlcm5lbCBmdW5jdGlvbiBhcyBhIGtmdW5jLiBUaGlzIGlzIG1lYW50IHRvIG1pbmltaXplIHRoZVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggN2FhNDczNDJkYzY1OS4uOWYzZmViYTNjMmZlNiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTE2NTcsMTEgKzExNjU3LDIxIEBAIHN0YXRpYyBib29sIGlzX2JwZl9zdHJlYW1fa2Z1bmModTMyIGJ0Zl9pZClcbiBcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2tdO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQodTMyIGJ0Zl9pZClcbitzdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczMyIGZ1bmNfaWQsIHMxNiBvZmZzZXQpXG4ge1xuLVx0cmV0dXJuIGlzX2JwZl9ncmFwaF9hcGlfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKGJ0Zl9pZCkgfHxcbi1cdCAgICAgICBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9hcmVuYV9rZnVuYyhidGZfaWQpIHx8XG4tXHQgICAgICAgaXNfYnBmX3N0cmVhbV9rZnVuYyhidGZfaWQpO1xuK1x0c3RydWN0IGJwZl9rZnVuY19tZXRhIGtmdW5jO1xuK1x0aW50IGVycjtcbitcbitcdGlmIChpc19icGZfZ3JhcGhfYXBpX2tmdW5jKGZ1bmNfaWQpIHx8IGlzX2JwZl9pdGVyX251bV9hcGlfa2Z1bmMoZnVuY19pZCkgfHxcbitcdCAgICBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyhmdW5jX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoZnVuY19pZCkgfHxcbitcdCAgICBpc19icGZfc3RyZWFtX2tmdW5jKGZ1bmNfaWQpKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdGVyciA9IGZldGNoX2tmdW5jX21ldGEoZW52LCBmdW5jX2lkLCBvZmZzZXQsIFx1MDAyNmtmdW5jKTtcbitcdGlmIChlcnIgfHwgIWtmdW5jLmZsYWdzKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRyZXR1cm4gKmtmdW5jLmZsYWdzIFx1MDAyNiBLRl9TUElOX0xPQ0s7XG4gfVxuIFxuIHN0YXRpYyBib29sIGlzX3N5bmNfY2FsbGJhY2tfY2FsbGluZ19rZnVuYyh1MzIgYnRmX2lkKVxuQEAgLTE3Mjg5LDcgKzE3Mjk5LDcgQEAgc3RhdGljIGludCBkb19jaGVja19pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGJvb2wgKmRvX3ByaW50X3N0YXRlKVxuIFx0XHRcdFx0ICAgICBpbnNuLVx1MDAzZWltbSAhPSBCUEZfRlVOQ19zcGluX3VubG9jayBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdCAgICAgaW5zbi1cdTAwM2VpbW0gIT0gQlBGX0ZVTkNfa3B0cl94Y2hnKSB8fFxuIFx0XHRcdFx0ICAgIChpbnNuLVx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMIFx1MDAyNlx1MDAyNlxuLVx0XHRcdFx0ICAgICAoaW5zbi1cdTAwM2VvZmYgIT0gMCB8fCAha2Z1bmNfc3Bpbl9hbGxvd2VkKGluc24tXHUwMDNlaW1tKSkpKSB7XG4rXHRcdFx0XHQgICAgICFrZnVuY19zcGluX2FsbG93ZWQoZW52LCBpbnNuLVx1MDAzZWltbSwgaW5zbi1cdTAwM2VvZmYpKSkge1xuIFx0XHRcdFx0XHR2ZXJib3NlKGVudixcbiBcdFx0XHRcdFx0XHRcImZ1bmN0aW9uIGNhbGxzIGFyZSBub3QgYWxsb3dlZCB3aGlsZSBob2xkaW5nIGEgbG9ja1xcblwiKTtcbiBcdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOTowODo1Ny43MTM2OTE1MThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTkwOTYxMDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgY2hhbmdlcyB0byB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYGluY2x1ZGUvbGludXgvYnRmLmhgIGFuZCBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGEgbmV3IGBLRl9TUElOX0xPQ0tgIGZsYWcgaW4gYGJ0Zi5oYCBhbmQgdGhlbiB1cGRhdGluZyBga2Z1bmNfc3Bpbl9hbGxvd2VkYCBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byB0YWtlIHRoYXQgZmxhZyBpbnRvIGFjY291bnQuIEZyb20gdGhlIGRlc2NyaXB0aW9uLCBpdCBsb29rcyBmdW5jdGlvbmFsIGFuZCwgaW4gZXNzZW5jZSwgaXMgZXhwYW5kaW5nIHdoYXQncyBhbGxvd2VkIGluIGEgYGJwZl9zcGluX2xvY2tgLXByb3RlY3RlZCByZWdpb24gYnkgcGVybWl0dGluZyBrZnVuY3MgdGFnZ2VkIHdpdGggYEtGX1NQSU5fTE9DS2AgdG8gYmUgY2FsbGVkIGZyb20gd2l0aGluIGl0LlxuXG5NeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIHNlZSBob3cgYGZldGNoX2tmdW5jX21ldGFgIHdvcmtzLCBhbmQgdGhlbiB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGBrZnVuY19zcGluX2FsbG93ZWRgIGlzIGxldmVyYWdlZC4gSSBuZWVkIHRvIHNlZSB0aGUgY2FsbGluZyBjb250ZXh0LiBSaWdodCwgaXQgbG9va3MgbGlrZSBga2Z1bmNfc3Bpbl9hbGxvd2VkYCBpcyBjYWxsZWQgZnJvbSBgZG9fY2hlY2tfaW5zbmAuXG5cbk5leHQsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHdoaWNoIGNvbmZpZyBvcHRpb25zIHR5cGljYWxseSBjb250cm9sIHRoZSBCUEYgdmVyaWZpZXIuIExldCdzIHN0YXJ0IHdpdGggYENPTkZJR19CUEZfU1lTQ0FMTGAsIHRoYXQgc2hvdWxkIGJlIGl0LlxuXG5GaW5hbGx5LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBlbnN1cmUgdGhpcyBkb2Vzbid0IGhhdmUgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzLCBJJ2xsIHJ1biBhIHF1aWNrIGBkZWZhdWx0X2FwaTpncmVwcGVyYCBzZWFyY2ggZm9yIGBLRl9TUElOX0xPQ0tgIHRvIHNlZSBpZiB0aGlzIGZsYWcgaXMgYmVpbmcgdXNlZCBlbHNld2hlcmUgaW4gdGhlIGtlcm5lbC4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgcG90ZW50aWFsIGludGVyYWN0aW9ucyBJJ20gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5NywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjA5OjA0LjcwNDY1NTczMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc5ODgzNDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktGX1NQSU5fTE9DS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2J0Zi5oLTgxLSNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSBcXHUwMDNjXFx1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjgyOiNkZWZpbmUgS0ZfU1BJTl9MT0NLICAgICgxIFxcdTAwM2NcXHUwMDNjIDE3KSAvKiBrZnVuYyBpcyBhbGxvd2VkIGluc2lkZSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbiAqL1xcbmluY2x1ZGUvbGludXgvYnRmLmgtODMtXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE2NjA9c3RhdGljIGJvb2wga2Z1bmNfc3Bpbl9hbGxvd2VkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMzMiBmdW5jX2lkLCBzMTYgb2Zmc2V0KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjczLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY3NDpcXHRyZXR1cm4gKmtmdW5jLmZsYWdzIFxcdTAwMjYgS0ZfU1BJTl9MT0NLO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTY3NS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjA5OjA2LjU4NDU0NzM3NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NzI4NTkxMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgS0ZfU1BJTl9MT0NLYCBhbmQgdHdlYWtzIGBrZnVuY19zcGluX2FsbG93ZWRgLiBGdW5jdGlvbmFsbHksIGl0IGxvb2tzIHNvdW5kLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIGFic29sdXRlbHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZy4gVGhlIGdvYWwgaGVyZSBpcyB0byBpZGVudGlmeSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5Ob3csIHdoZXJlIGRvIEkgZm9jdXMgdGhlIGZ1enplcj8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGBkb19jaGVja19pbnNuYCBvciBldmVuIGBrZnVuY19zcGluX2FsbG93ZWRgLiBUaGUgY2hhbGxlbmdlIGlzLCB0aGV5J3JlIGJvdGggZGVjbGFyZWQgYXMgc3RhdGljLCB3aGljaCBjb21wbGljYXRlcyB0aGluZ3MgaW4gdGVybXMgb2Ygc3ltYm9sIHZpc2liaWxpdHkgZm9yIHRoZSBmdXp6ZXIuIEEgc3RhdGljIGZ1bmN0aW9uIG1pZ2h0IGJlIG1vcmUgZGlmZmljdWx0IHRvIGhvb2sgdGhhbiBhIG5vbiBzdGF0aWMgb25lLlxuXG5BbHJpZ2h0LCBsZXQncyBwaXZvdC4gU2luY2UgdGhvc2UgYXJlIHN0YXRpYywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IHRoaW5raW5nIGlzIHRoYXQgdGhlcmUgKm11c3QqIGJlIHNvbWUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgdGhpcyBtaWdodCBpbnRlcmFjdCB3aXRoLiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gZmluZCBhIGdvb2QgZW50cnkgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOTowOToxMS40NTc0MDk4MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU4NDg2ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmludCBicGZfY2hlY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODkwMT1idGZfYXR0YWNoX2Z1bmNfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgZnVuY19pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODkzNS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTg5MzY6aW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM3LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTkzNDE9c3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0NDAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NDQxOmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0NDItXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2Mzg9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc4MS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3ODI6aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzgzLVxcdCAgICAgIHN0cnVjdCBicGZfbG9nX2F0dHIgKmF0dHJfbG9nKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOTowOToxMS41MDMyNjYwNDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDEyNTkyODM2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBFbnRyeSBQb2ludCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEJQRiB2ZXJpZmllciBjb2RlLiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCwgdGhlIGZpcnN0IGZ1bmN0aW9uIHRoZSB2ZXJpZmllciBoaXRzLCBpcyBgYnBmX2NoZWNrYCwgcmlnaHQ/IFRoYXQncyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGJlIHRob3JvdWdoIHRob3VnaCwgc28gbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIga2V5IGZ1bmN0aW9ucyBsdXJraW5nIGFyb3VuZC4gYGJwZl9jaGVja2AgaXMgdGhlIG9idmlvdXMgZm9jdXMsIGJ1dCBpdCdzIGltcG9ydGFudCB0byBiZSBjb21wbGV0ZS5cblxuSG1tLCB3aGF0IGFib3V0IGBrZnVuY19zcGluX2FsbG93ZWRgPyBUaGF0J3Mgc3RhdGljLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLCBtYWtpbmcgaXQgaGFyZGVyIHRvIHRyYWNrIGRpcmVjdGx5LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgYW55IHN0YXRpYyBmdW5jdGlvbnMgdGhhdCBjb3VsZCBiZSBjcml0aWNhbC5cblxuQWxyaWdodCwgYGJwZl9jaGVja2AgaXMgcHJvYmFibHkgdG9vIGdlbmVyaWMgZm9yIGluLWRlcHRoIGFuYWx5c2lzIG9uIGl0cyBvd24uIEl0J3MgYm91bmQgdG8gYmUgYSBtYXNzaXZlIGZ1bmN0aW9uLiBJIG5lZWQgdG8gYnJlYWsgdGhpcyBkb3duIGludG8gc21hbGxlciwgbW9yZSBtYW5hZ2VhYmxlIHBpZWNlcy4gU28sIGlzIHRoZXJlIGFueXRoaW5nIGVsc2U/IEFoLCBgZG9fY2hlY2tfaW5zbmAgaXMgYWxzbyBzdGF0aWMuIE5vdyB3ZSBhcmUgZ2V0dGluZyBzb21ld2hlcmUsIGl0IG1pZ2h0IGJlIGlubGluZWQgdG9vLiBMZXQgbWUgY2hlY2sgYGRvX2NoZWNrX2NvbW1vbmAuXG5cbk9rYXksIHRoZSBtb3N0IGxvZ2ljYWwgbW92ZSBpcyB0byBsb29rIGNsb3NlbHkgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYXJvdW5kIGBkb19jaGVja19pbnNuYC4gSSBzdXNwZWN0IGl0J3MgaGVyZSB3aGVyZSB0aGUgcmVhbCB3b3JrIG9mIGluc3RydWN0aW9uIHZlcmlmaWNhdGlvbiBpcyBwZXJmb3JtZWQuIFRoaXMgc2VlbXMgbGlrZSB0aGUgbW9zdCBsaWtlbHkgYXJlYSB0byBzdGFydCBteSBkZWVwIGRpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MTMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MDk6MjUuNjI5MTk2OTI2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTQ0NjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX2NoZWNrX2luc25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzE4Nz1zdGF0aWMgaW50IGNoZWNrX2luZGlyZWN0X2p1bXAoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3MjQ0LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzI0NTpzdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3MjQ2LXtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzM1MT1zdGF0aWMgaW50IGRvX2NoZWNrKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc0NzYtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3NDc3OlxcdFxcdGVyciA9IGRvX2NoZWNrX2luc24oZW52LCBcXHUwMDI2ZG9fcHJpbnRfc3RhdGUpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzQ3OC1cXHRcXHRpZiAoZXJyb3JfcmVjb3ZlcmFibGVfd2l0aF9ub3NwZWMoZXJyKSBcXHUwMDI2XFx1MDAyNiBzdGF0ZS1cXHUwMDNlc3BlY3VsYXRpdmUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MDk6MjUuNjczNzQ1ODcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwOTMxMjM0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmljYXRpb24gQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgQlBGIHZlcmlmaWNhdGlvbiBjb2RlLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBhY3R1YWxseS4gVGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBpcyBgYnBmX2NoZWNrYCwgd2hpY2gsIGFzIEkgY2FuIHNlZSwgaXMgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3MgZXZlcnl0aGluZyBvZmYuIE5vdywgYGJwZl9jaGVja2AgdGhlbiBjYWxscyBgZG9fY2hlY2tgLCBhbmQgYGRvX2NoZWNrYCBzdWJzZXF1ZW50bHkgY2FsbHMgYGRvX2NoZWNrX2luc25gLiBUaGUgd2F5IGl0J3Mgc3RydWN0dXJlZCwgd2l0aCBgZG9fY2hlY2tfaW5zbmAgYW5kIGBkb19jaGVja2AgYmVpbmcgc3RhdGljIGZ1bmN0aW9ucywgY2xlYXJseSBtZWFucyBgYnBmX2NoZWNrYCBpcyB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludC4gQW5kIHRoYXQgbWFrZXMgc2Vuc2UuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGluc3RydWN0cyB1cyB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBTbywgeWVhaCwgYGJwZl9jaGVja2AgaXMgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGhlcmUsIGdvb2QuXG5cbk5vdywgbGV0J3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEl0J3MgYWxtb3N0IGNlcnRhaW4gdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBnb2luZyB0byBiZSBhIGhhcmQgcmVxdWlyZW1lbnQgZm9yIHRoaXMgdG8gZnVuY3Rpb24uIFdlJ2xsIG5lZWQgdGhhdCBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQ0LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjA5OjMwLjg4MzA2MDk1OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMDE3MjM2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MDk6MzIuNTkzMjM4MzUyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MzI4NzQ1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipFeHBsb3JpbmcgdGhlIENvbnRleHQgb2YgYSBLZXJuZWwgUGF0Y2gqKi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gVGhlIHRleHQgbWVudGlvbnMgYSBwYXRjaCB0aGF0IHNwZWNpZmljYWxseSB0b3VjaGVzIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiAgQmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSBuZWVkIGEgYnJvYWRlciB1bmRlcnN0YW5kaW5nLiBJcyB0aGlzIGZpbGUgYWx3YXlzIGNvbXBpbGVkLCBvciBpcyBpdCBjb250aW5nZW50IG9uIHNvbWUgY29uZmlndXJhdGlvbiBvcHRpb25zPyBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZyBmaWxlcyBvciByZWxhdGVkIGNvZGUgdGhhdCBjb3VsZCBiZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZT8gSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBwb3RlbnRpYWwgZG93bnN0cmVhbSBlZmZlY3RzIHRvIGZ1bGx5IGdyYXNwIHRoZSBzY29wZS4gSSBuZWVkIHRvIGtub3cgd2hlcmUgSSBjYW4gZmluZCB0aGUga2VybmVsIGNvbmZpZyBvcHRpb25zIHRvIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjE4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MDk6NDAuMTI2MTE1NTg4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQ3ODkwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZXJpZmllclxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MDk6NDAuMTcwNTk5MDc0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4Mzc5NjE5MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCB0aHJvdWdoIHRoZSBkZXRhaWxzLCBhbmQgeWVzLCBpdCdzIGNsZWFyOiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIG1ha2luZyBzb21lIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQlBGIHZlcmlmaWVyLCBhbmQgdGhhdCdzIHdoZXJlIG15IGZvY3VzIG5lZWRzIHRvIGJlLlxuXG5MZXQgbWUgYnJlYWsgZG93biB3aGF0IEknbSBzZWVpbmcuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBLRl9TUElOX0xPQ0tgIGludG8gYGluY2x1ZGUvbGludXgvYnRmLmhgLCB3aGljaCBpcyBhIGtleSBmbGFnLiBUaGVuLCB0aGUgbWVhdCBvZiBpdCBpcyBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgc3BlY2lmaWNhbGx5IHRoZSBtb2RpZmljYXRpb24gdG8gYGtmdW5jX3NwaW5fYWxsb3dlZGAuIEl0IGxvb2tzIGxpa2UgdGhlIGBmZXRjaF9rZnVuY19tZXRhYCBmdW5jdGlvbiBpcyBiZWluZyB1c2VkIHRvIHJldHJpZXZlIHRoZSBrZnVuYyBtZXRhZGF0YSwgYXMgZXhwZWN0ZWQuIE5vdywgaWYgYSBrZnVuYyBoYXMgdGhhdCBgS0ZfU1BJTl9MT0NLYCBmbGFnIHNldCwgdGhlIHZlcmlmaWVyIHdpbGwgcGVybWl0IGl0cyB1c2UgKndpdGhpbiogYSBzcGluIGxvY2sgcmVnaW9uLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGFsdGVyYXRpb24gdG8gaG93IHRoZSB2ZXJpZmllciBoYW5kbGVzIGluc3RydWN0aW9uIGNoZWNraW5nLCBwYXJ0aWN1bGFybHkgcmVnYXJkaW5nIHRoZSBjb250ZXh0IGluIHdoaWNoIGEgQlBGIGZ1bmN0aW9uIGNhbiBleGVjdXRlLlxuXG5TbywgYmFzZWQgb24gdGhpcyB0aG9yb3VnaCByZXZpZXcgYW5kIG15IGV4cGVyaWVuY2UsIHRoaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIGtlZXAgdGhlIGZvY3VzIG9uIHRoZSBgYnBmX2NoZWNrYCBzZWN0aW9uIGZvciBtYXhpbXVtIGVmZmVjdGl2ZW5lc3MsIHNvIEknbGwgcHV0IHRoYXQgaW4gbXkgYEZvY3VzU3ltYm9sc2AgYXJyYXkuIEknbGwgbWFrZSBzdXJlIHRvIGVuYWJsZSBgQlBGX1NZU0NBTExgIHNvIHRoZSByZWxldmFudCBjb2RlIGlzIGF2YWlsYWJsZS4gSSdsbCBzdW1tYXJpemUgbXkgcmF0aW9uYWxlOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGFsbG93IGtmdW5jcyB3aXRoIHRoZSBLRl9TUElOX0xPQ0sgZmxhZyB0byBiZSBjYWxsZWQgaW5zaWRlIGEgYnBmX3NwaW5fbG9jay1lZCByZWdpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgdmVyaWZpZXIncyBpbnN0cnVjdGlvbiBjaGVja2luZyBsb2dpYy5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTc2LCJPdXRwdXRUb2tlbnMiOjk2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjA5OjQ2LjAwODU2MzQ1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyODgzMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gYWxsb3cga2Z1bmNzIHdpdGggdGhlIEtGX1NQSU5fTE9DSyBmbGFnIHRvIGJlIGNhbGxlZCBpbnNpZGUgYSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB2ZXJpZmllcidzIGluc3RydWN0aW9uIGNoZWNraW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBhbGxvdyBrZnVuY3Mgd2l0aCB0aGUgS0ZfU1BJTl9MT0NLIGZsYWcgdG8gYmUgY2FsbGVkIGluc2lkZSBhIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHZlcmlmaWVyJ3MgaW5zdHJ1Y3Rpb24gY2hlY2tpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowxnqrj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 08:52:20 +0000 UTC FinishedAt: 2026-08-04 09:09:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "0ce37745d4bfbc493f718169c3974898ffec8ee7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "fd79e425-6fbb-4870-983b-2fa4124aa9ac" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_check" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gYWxsb3cga2Z1bmNzIHdpdGggdGhlIEtGX1NQSU5fTE9DSyBmbGFnIHRvIGJlIGNhbGxlZCBpbnNpZGUgYSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB2ZXJpZmllciYjMzk7cyBpbnN0cnVjdGlvbiBjaGVja2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOTowODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJkNjJmMTM1NDE0YTUwNzllMWZjMTgyMDIxM2Y3ZmVjY2FlNmY1YTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDA5OjA4OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXG5pbmRleCBjMDliNzk5NGRlNGViLi4zODBkYzEwYjY3NTAyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9idGYuaFxuQEAgLTc5LDYgJiM0Mzs3OSw3IEBAXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcxICAgKDEgXHUwMDNjXHUwMDNjIDE0KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAqL1xuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFx1MDAzY1x1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXG4gI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cbiYjNDM7I2RlZmluZSBLRl9TUElOX0xPQ0sgICAgKDEgXHUwMDNjXHUwMDNjIDE3KSAvKiBrZnVuYyBpcyBhbGxvd2VkIGluc2lkZSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbiAqL1xuIFxuIC8qXG4gICogVGFnIG1hcmtpbmcgYSBrZXJuZWwgZnVuY3Rpb24gYXMgYSBrZnVuYy4gVGhpcyBpcyBtZWFudCB0byBtaW5pbWl6ZSB0aGVcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDdhYTQ3MzQyZGM2NTkuLjlmM2ZlYmEzYzJmZTYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTExNjU3LDExICYjNDM7MTE2NTcsMjEgQEAgc3RhdGljIGJvb2wgaXNfYnBmX3N0cmVhbV9rZnVuYyh1MzIgYnRmX2lkKVxuIFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja107XG4gfVxuIFxuLXN0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZCh1MzIgYnRmX2lkKVxuJiM0MztzdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczMyIGZ1bmNfaWQsIHMxNiBvZmZzZXQpXG4ge1xuLVx0cmV0dXJuIGlzX2JwZl9ncmFwaF9hcGlfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKGJ0Zl9pZCkgfHxcbi1cdCAgICAgICBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9hcmVuYV9rZnVuYyhidGZfaWQpIHx8XG4tXHQgICAgICAgaXNfYnBmX3N0cmVhbV9rZnVuYyhidGZfaWQpO1xuJiM0MztcdHN0cnVjdCBicGZfa2Z1bmNfbWV0YSBrZnVuYztcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRpZiAoaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhmdW5jX2lkKSB8fCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKGZ1bmNfaWQpIHx8XG4mIzQzO1x0ICAgIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKGZ1bmNfaWQpIHx8IGlzX2JwZl9hcmVuYV9rZnVuYyhmdW5jX2lkKSB8fFxuJiM0MztcdCAgICBpc19icGZfc3RyZWFtX2tmdW5jKGZ1bmNfaWQpKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdGVyciA9IGZldGNoX2tmdW5jX21ldGEoZW52LCBmdW5jX2lkLCBvZmZzZXQsIFx1MDAyNmtmdW5jKTtcbiYjNDM7XHRpZiAoZXJyIHx8ICFrZnVuYy5mbGFncylcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuICprZnVuYy5mbGFncyBcdTAwMjYgS0ZfU1BJTl9MT0NLO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCBpc19zeW5jX2NhbGxiYWNrX2NhbGxpbmdfa2Z1bmModTMyIGJ0Zl9pZClcbkBAIC0xNzI4OSw3ICYjNDM7MTcyOTksNyBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXG4gXHRcdFx0XHQgICAgIGluc24tXHUwMDNlaW1tICE9IEJQRl9GVU5DX3NwaW5fdW5sb2NrIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0ICAgICBpbnNuLVx1MDAzZWltbSAhPSBCUEZfRlVOQ19rcHRyX3hjaGcpIHx8XG4gXHRcdFx0XHQgICAgKGluc24tXHUwMDNlc3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQgICAgIChpbnNuLVx1MDAzZW9mZiAhPSAwIHx8ICFrZnVuY19zcGluX2FsbG93ZWQoaW5zbi1cdTAwM2VpbW0pKSkpIHtcbiYjNDM7XHRcdFx0XHQgICAgICFrZnVuY19zcGluX2FsbG93ZWQoZW52LCBpbnNuLVx1MDAzZWltbSwgaW5zbi1cdTAwM2VvZmYpKSkge1xuIFx0XHRcdFx0XHR2ZXJib3NlKGVudixcbiBcdFx0XHRcdFx0XHRcJiMzNDtmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcXG5cJiMzNDspO1xuIFx0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOTowODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBhbGxvdyBrZnVuY3Mgd2l0aCB0aGUgS0ZfU1BJTl9MT0NLIGZsYWcgdG8gYmUgY2FsbGVkIGluc2lkZSBhIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHZlcmlmaWVyJiMzOTtzIGluc3RydWN0aW9uIGNoZWNraW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmQ2MmYxMzU0MTRhNTA3OWUxZmMxODIwMjEzZjdmZWNjYWU2ZjVhNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMDk6MDg6NTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaAppbmRleCBjMDliNzk5NGRlNGViLi4zODBkYzEwYjY3NTAyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2J0Zi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYnRmLmgKQEAgLTc5LDYgJiM0Mzs3OSw3IEBACiAjZGVmaW5lIEtGX0FSRU5BX0FSRzEgICAoMSAmbHQ7Jmx0OyAxNCkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgZmlyc3QgYXJndW1lbnQgKi8KICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxICZsdDsmbHQ7IDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi8KICNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSAmbHQ7Jmx0OyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi8KJiM0MzsjZGVmaW5lIEtGX1NQSU5fTE9DSyAgICAoMSAmbHQ7Jmx0OyAxNykgLyoga2Z1bmMgaXMgYWxsb3dlZCBpbnNpZGUgYnBmX3NwaW5fbG9jay1lZCByZWdpb24gKi8KIAogLyoKICAqIFRhZyBtYXJraW5nIGEga2VybmVsIGZ1bmN0aW9uIGFzIGEga2Z1bmMuIFRoaXMgaXMgbWVhbnQgdG8gbWluaW1pemUgdGhlCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggN2FhNDczNDJkYzY1OS4uOWYzZmViYTNjMmZlNiAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTE2NTcsMTEgJiM0MzsxMTY1NywyMSBAQCBzdGF0aWMgYm9vbCBpc19icGZfc3RyZWFtX2tmdW5jKHUzMiBidGZfaWQpCiAJICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja107CiB9CiAKLXN0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZCh1MzIgYnRmX2lkKQomIzQzO3N0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMzIgZnVuY19pZCwgczE2IG9mZnNldCkKIHsKLQlyZXR1cm4gaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9pdGVyX251bV9hcGlfa2Z1bmMoYnRmX2lkKSB8fAotCSAgICAgICBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9hcmVuYV9rZnVuYyhidGZfaWQpIHx8Ci0JICAgICAgIGlzX2JwZl9zdHJlYW1fa2Z1bmMoYnRmX2lkKTsKJiM0MzsJc3RydWN0IGJwZl9rZnVuY19tZXRhIGtmdW5jOwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwlpZiAoaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhmdW5jX2lkKSB8fCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKGZ1bmNfaWQpIHx8CiYjNDM7CSAgICBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyhmdW5jX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoZnVuY19pZCkgfHwKJiM0MzsJICAgIGlzX2JwZl9zdHJlYW1fa2Z1bmMoZnVuY19pZCkpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgJmFtcDtrZnVuYyk7CiYjNDM7CWlmIChlcnIgfHwgIWtmdW5jLmZsYWdzKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlyZXR1cm4gKmtmdW5jLmZsYWdzICZhbXA7IEtGX1NQSU5fTE9DSzsKIH0KIAogc3RhdGljIGJvb2wgaXNfc3luY19jYWxsYmFja19jYWxsaW5nX2tmdW5jKHUzMiBidGZfaWQpCkBAIC0xNzI4OSw3ICYjNDM7MTcyOTksNyBAQCBzdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpCiAJCQkJICAgICBpbnNuLSZndDtpbW0gIT0gQlBGX0ZVTkNfc3Bpbl91bmxvY2sgJmFtcDsmYW1wOwogCQkJCSAgICAgaW5zbi0mZ3Q7aW1tICE9IEJQRl9GVU5DX2twdHJfeGNoZykgfHwKIAkJCQkgICAgKGluc24tJmd0O3NyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMICZhbXA7JmFtcDsKLQkJCQkgICAgIChpbnNuLSZndDtvZmYgIT0gMCB8fCAha2Z1bmNfc3Bpbl9hbGxvd2VkKGluc24tJmd0O2ltbSkpKSkgewomIzQzOwkJCQkgICAgICFrZnVuY19zcGluX2FsbG93ZWQoZW52LCBpbnNuLSZndDtpbW0sIGluc24tJmd0O29mZikpKSB7CiAJCQkJCXZlcmJvc2UoZW52LAogCQkJCQkJJiMzNDtmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcbiYjMzQ7KTsKIAkJCQkJcmV0dXJuIC1FSU5WQUw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTcKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBCUEYgdmVyaWZpZXIsIHNwZWNpZmljYWxseSB0b3VjaGluZyBgaW5jbHVkZS9saW51eC9idGYuaGAgYW5kIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBuZXcgYEtGX1NQSU5fTE9DS2AgZmxhZyBpbiBgYnRmLmhgIGFuZCB0aGVuIHVwZGF0aW5nIGBrZnVuY19zcGluX2FsbG93ZWRgIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIHRha2UgdGhhdCBmbGFnIGludG8gYWNjb3VudC4gRnJvbSB0aGUgZGVzY3JpcHRpb24sIGl0IGxvb2tzIGZ1bmN0aW9uYWwgYW5kLCBpbiBlc3NlbmNlLCBpcyBleHBhbmRpbmcgd2hhdCYjMzk7cyBhbGxvd2VkIGluIGEgYGJwZl9zcGluX2xvY2tgLXByb3RlY3RlZCByZWdpb24gYnkgcGVybWl0dGluZyBrZnVuY3MgdGFnZ2VkIHdpdGggYEtGX1NQSU5fTE9DS2AgdG8gYmUgY2FsbGVkIGZyb20gd2l0aGluIGl0LgoKTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBzZWUgaG93IGBmZXRjaF9rZnVuY19tZXRhYCB3b3JrcywgYW5kIHRoZW4gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBga2Z1bmNfc3Bpbl9hbGxvd2VkYCBpcyBsZXZlcmFnZWQuIEkgbmVlZCB0byBzZWUgdGhlIGNhbGxpbmcgY29udGV4dC4gUmlnaHQsIGl0IGxvb2tzIGxpa2UgYGtmdW5jX3NwaW5fYWxsb3dlZGAgaXMgY2FsbGVkIGZyb20gYGRvX2NoZWNrX2luc25gLgoKTmV4dCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgd2hpY2ggY29uZmlnIG9wdGlvbnMgdHlwaWNhbGx5IGNvbnRyb2wgdGhlIEJQRiB2ZXJpZmllci4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYENPTkZJR19CUEZfU1lTQ0FMTGAsIHRoYXQgc2hvdWxkIGJlIGl0LgoKRmluYWxseSwganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgZW5zdXJlIHRoaXMgZG9lc24mIzM5O3QgaGF2ZSBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMsIEkmIzM5O2xsIHJ1biBhIHF1aWNrIGBkZWZhdWx0X2FwaTpncmVwcGVyYCBzZWFyY2ggZm9yIGBLRl9TUElOX0xPQ0tgIHRvIHNlZSBpZiB0aGlzIGZsYWcgaXMgYmVpbmcgdXNlZCBlbHNld2hlcmUgaW4gdGhlIGtlcm5lbC4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgSSYjMzk7bSBtaXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tGX1NQSU5fTE9DSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2J0Zi5oLTgxLSNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSBcdTAwM2NcdTAwM2MgMTYpIC8qIGtmdW5jIGhhcyBpbXBsaWNpdCBhcmd1bWVudHMgc3VwcGxpZWQgYnkgdGhlIHZlcmlmaWVyICovXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjgyOiNkZWZpbmUgS0ZfU1BJTl9MT0NLICAgICgxIFx1MDAzY1x1MDAzYyAxNykgLyoga2Z1bmMgaXMgYWxsb3dlZCBpbnNpZGUgYnBmX3NwaW5fbG9jay1lZCByZWdpb24gKi9cbmluY2x1ZGUvbGludXgvYnRmLmgtODMtXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNjYwPXN0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMzIgZnVuY19pZCwgczE2IG9mZnNldClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE2NzMtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2NzQ6XHRyZXR1cm4gKmtmdW5jLmZsYWdzIFx1MDAyNiBLRl9TUElOX0xPQ0s7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE2NzUtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NDYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIENvZGUgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgS0ZfU1BJTl9MT0NLYCBhbmQgdHdlYWtzIGBrZnVuY19zcGluX2FsbG93ZWRgLiBGdW5jdGlvbmFsbHksIGl0IGxvb2tzIHNvdW5kLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIGFic29sdXRlbHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZy4gVGhlIGdvYWwgaGVyZSBpcyB0byBpZGVudGlmeSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKTm93LCB3aGVyZSBkbyBJIGZvY3VzIHRoZSBmdXp6ZXI/IE15IGluaXRpYWwgdGhvdWdodCBpcyBgZG9fY2hlY2tfaW5zbmAgb3IgZXZlbiBga2Z1bmNfc3Bpbl9hbGxvd2VkYC4gVGhlIGNoYWxsZW5nZSBpcywgdGhleSYjMzk7cmUgYm90aCBkZWNsYXJlZCBhcyBzdGF0aWMsIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncyBpbiB0ZXJtcyBvZiBzeW1ib2wgdmlzaWJpbGl0eSBmb3IgdGhlIGZ1enplci4gQSBzdGF0aWMgZnVuY3Rpb24gbWlnaHQgYmUgbW9yZSBkaWZmaWN1bHQgdG8gaG9vayB0aGFuIGEgbm9uIHN0YXRpYyBvbmUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgcGl2b3QuIFNpbmNlIHRob3NlIGFyZSBzdGF0aWMsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBNeSB0aGlua2luZyBpcyB0aGF0IHRoZXJlICptdXN0KiBiZSBzb21lIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIEJQRiB2ZXJpZmllciB0aGF0IHRoaXMgbWlnaHQgaW50ZXJhY3Qgd2l0aC4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBmaW5kIGEgZ29vZCBlbnRyeSBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteaW50IGJwZl9jaGVjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg5MDE9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4OTM2OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM3LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzQxPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQ0MC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTQ0MTppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0NDItXHRcdFx0XHQgIHN0cnVjdCBicGZfYXR0YWNoX3RhcmdldF9pbmZvICp0Z3RfaW5mbylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2Mzg9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3ODEtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3ODI6aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3ODMtXHQgICAgICBzdHJ1Y3QgYnBmX2xvZ19hdHRyICphdHRyX2xvZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDEzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIEVudHJ5IFBvaW50KioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBCUEYgdmVyaWZpZXIgY29kZS4gVGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIHRoZSBmaXJzdCBmdW5jdGlvbiB0aGUgdmVyaWZpZXIgaGl0cywgaXMgYGJwZl9jaGVja2AsIHJpZ2h0PyBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gYmUgdGhvcm91Z2ggdGhvdWdoLCBzbyBsZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIga2V5IGZ1bmN0aW9ucyBsdXJraW5nIGFyb3VuZC4gYGJwZl9jaGVja2AgaXMgdGhlIG9idmlvdXMgZm9jdXMsIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgdG8gYmUgY29tcGxldGUuCgpIbW0sIHdoYXQgYWJvdXQgYGtmdW5jX3NwaW5fYWxsb3dlZGA/IFRoYXQmIzM5O3Mgc3RhdGljLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLCBtYWtpbmcgaXQgaGFyZGVyIHRvIHRyYWNrIGRpcmVjdGx5LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgYW55IHN0YXRpYyBmdW5jdGlvbnMgdGhhdCBjb3VsZCBiZSBjcml0aWNhbC4KCkFscmlnaHQsIGBicGZfY2hlY2tgIGlzIHByb2JhYmx5IHRvbyBnZW5lcmljIGZvciBpbi1kZXB0aCBhbmFseXNpcyBvbiBpdHMgb3duLiBJdCYjMzk7cyBib3VuZCB0byBiZSBhIG1hc3NpdmUgZnVuY3Rpb24uIEkgbmVlZCB0byBicmVhayB0aGlzIGRvd24gaW50byBzbWFsbGVyLCBtb3JlIG1hbmFnZWFibGUgcGllY2VzLiBTbywgaXMgdGhlcmUgYW55dGhpbmcgZWxzZT8gQWgsIGBkb19jaGVja19pbnNuYCBpcyBhbHNvIHN0YXRpYy4gTm93IHdlIGFyZSBnZXR0aW5nIHNvbWV3aGVyZSwgaXQgbWlnaHQgYmUgaW5saW5lZCB0b28uIExldCBtZSBjaGVjayBgZG9fY2hlY2tfY29tbW9uYC4KCk9rYXksIHRoZSBtb3N0IGxvZ2ljYWwgbW92ZSBpcyB0byBsb29rIGNsb3NlbHkgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYXJvdW5kIGBkb19jaGVja19pbnNuYC4gSSBzdXNwZWN0IGl0JiMzOTtzIGhlcmUgd2hlcmUgdGhlIHJlYWwgd29yayBvZiBpbnN0cnVjdGlvbiB2ZXJpZmljYXRpb24gaXMgcGVyZm9ybWVkLiBUaGlzIHNlZW1zIGxpa2UgdGhlIG1vc3QgbGlrZWx5IGFyZWEgdG8gc3RhcnQgbXkgZGVlcCBkaXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RvX2NoZWNrX2luc24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE3MTg3PXN0YXRpYyBpbnQgY2hlY2tfaW5kaXJlY3RfanVtcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3MjQ0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3MjQ1OnN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzI0Ni17XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3MzUxPXN0YXRpYyBpbnQgZG9fY2hlY2soc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc0NzYtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTc0Nzc6XHRcdGVyciA9IGRvX2NoZWNrX2luc24oZW52LCBcdTAwMjZkb19wcmludF9zdGF0ZSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc0NzgtXHRcdGlmIChlcnJvcl9yZWNvdmVyYWJsZV93aXRoX25vc3BlYyhlcnIpIFx1MDAyNlx1MDAyNiBzdGF0ZS1cdTAwM2VzcGVjdWxhdGl2ZSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpY2F0aW9uIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgQlBGIHZlcmlmaWNhdGlvbiBjb2RlLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBhY3R1YWxseS4gVGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBpcyBgYnBmX2NoZWNrYCwgd2hpY2gsIGFzIEkgY2FuIHNlZSwgaXMgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3MgZXZlcnl0aGluZyBvZmYuIE5vdywgYGJwZl9jaGVja2AgdGhlbiBjYWxscyBgZG9fY2hlY2tgLCBhbmQgYGRvX2NoZWNrYCBzdWJzZXF1ZW50bHkgY2FsbHMgYGRvX2NoZWNrX2luc25gLiBUaGUgd2F5IGl0JiMzOTtzIHN0cnVjdHVyZWQsIHdpdGggYGRvX2NoZWNrX2luc25gIGFuZCBgZG9fY2hlY2tgIGJlaW5nIHN0YXRpYyBmdW5jdGlvbnMsIGNsZWFybHkgbWVhbnMgYGJwZl9jaGVja2AgaXMgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnQuIEFuZCB0aGF0IG1ha2VzIHNlbnNlLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBpbnN0cnVjdHMgdXMgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28sIHllYWgsIGBicGZfY2hlY2tgIGlzIHRoZSByaWdodCBmdW5jdGlvbiB0byBmb2N1cyBvbiBoZXJlLCBnb29kLgoKTm93LCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWluIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZ29pbmcgdG8gYmUgYSBoYXJkIHJlcXVpcmVtZW50IGZvciB0aGlzIHRvIGZ1bmN0aW9uLiBXZSYjMzk7bGwgbmVlZCB0aGF0IGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfU1lTQ0FMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcJiMzNDtCUEYgc3Vic3lzdGVtXCYjMzQ7XG5rZXJuZWwvYnBmL0tjb25maWctMjYtXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXHRib29sIFwmIzM0O0VuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwOTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjE4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIE15IGZpcnN0IHRob3VnaHQgaXM6ICoqRXhwbG9yaW5nIHRoZSBDb250ZXh0IG9mIGEgS2VybmVsIFBhdGNoKiouIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIFRoZSB0ZXh0IG1lbnRpb25zIGEgcGF0Y2ggdGhhdCBzcGVjaWZpY2FsbHkgdG91Y2hlcyBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gIEJlZm9yZSBJIGRpdmUgaW50byB0aGUgY29kZSBpdHNlbGYsIEkgbmVlZCBhIGJyb2FkZXIgdW5kZXJzdGFuZGluZy4gSXMgdGhpcyBmaWxlIGFsd2F5cyBjb21waWxlZCwgb3IgaXMgaXQgY29udGluZ2VudCBvbiBzb21lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gQXJlIHRoZXJlIGFueSBvdGhlciBjb25maWcgZmlsZXMgb3IgcmVsYXRlZCBjb2RlIHRoYXQgY291bGQgYmUgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2U/IEkgaGF2ZSB0byBjb25zaWRlciB0aGUgcG90ZW50aWFsIGRvd25zdHJlYW0gZWZmZWN0cyB0byBmdWxseSBncmFzcCB0aGUgc2NvcGUuIEkgbmVlZCB0byBrbm93IHdoZXJlIEkgY2FuIGZpbmQgdGhlIGtlcm5lbCBjb25maWcgb3B0aW9ucyB0byBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDk6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmVyaWZpZXJcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTc9Q0ZMQUdTX2NvcmUubyAmIzQzOz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcbmtlcm5lbC9icGYvTWFrZWZpbGUtOC1cbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzeXNjYWxsLm8gdmVyaWZpZXIubyBpbm9kZS5vIGhlbHBlcnMubyB0bnVtLm8gY251bS5vIGxvZy5vIHRva2VuLm8gbGl2ZW5lc3MubyBjb25zdF9mb2xkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX2l0ZXIubyBtYXBfaXRlci5vIHRhc2tfaXRlci5vIHByb2dfaXRlci5vIGxpbmtfaXRlci5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NzYKCQkJCQkJCW91dHB1dDogOTYKCQkJCQkJCXRob3VnaHRzOiAyMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIHRocm91Z2ggdGhlIGRldGFpbHMsIGFuZCB5ZXMsIGl0JiMzOTtzIGNsZWFyOiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIG1ha2luZyBzb21lIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQlBGIHZlcmlmaWVyLCBhbmQgdGhhdCYjMzk7cyB3aGVyZSBteSBmb2N1cyBuZWVkcyB0byBiZS4KCkxldCBtZSBicmVhayBkb3duIHdoYXQgSSYjMzk7bSBzZWVpbmcuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBLRl9TUElOX0xPQ0tgIGludG8gYGluY2x1ZGUvbGludXgvYnRmLmhgLCB3aGljaCBpcyBhIGtleSBmbGFnLiBUaGVuLCB0aGUgbWVhdCBvZiBpdCBpcyBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgc3BlY2lmaWNhbGx5IHRoZSBtb2RpZmljYXRpb24gdG8gYGtmdW5jX3NwaW5fYWxsb3dlZGAuIEl0IGxvb2tzIGxpa2UgdGhlIGBmZXRjaF9rZnVuY19tZXRhYCBmdW5jdGlvbiBpcyBiZWluZyB1c2VkIHRvIHJldHJpZXZlIHRoZSBrZnVuYyBtZXRhZGF0YSwgYXMgZXhwZWN0ZWQuIE5vdywgaWYgYSBrZnVuYyBoYXMgdGhhdCBgS0ZfU1BJTl9MT0NLYCBmbGFnIHNldCwgdGhlIHZlcmlmaWVyIHdpbGwgcGVybWl0IGl0cyB1c2UgKndpdGhpbiogYSBzcGluIGxvY2sgcmVnaW9uLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGFsdGVyYXRpb24gdG8gaG93IHRoZSB2ZXJpZmllciBoYW5kbGVzIGluc3RydWN0aW9uIGNoZWNraW5nLCBwYXJ0aWN1bGFybHkgcmVnYXJkaW5nIHRoZSBjb250ZXh0IGluIHdoaWNoIGEgQlBGIGZ1bmN0aW9uIGNhbiBleGVjdXRlLgoKU28sIGJhc2VkIG9uIHRoaXMgdGhvcm91Z2ggcmV2aWV3IGFuZCBteSBleHBlcmllbmNlLCB0aGlzIHNob3VsZCBiZSBjb25zaWRlcmVkIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBrZWVwIHRoZSBmb2N1cyBvbiB0aGUgYGJwZl9jaGVja2Agc2VjdGlvbiBmb3IgbWF4aW11bSBlZmZlY3RpdmVuZXNzLCBzbyBJJiMzOTtsbCBwdXQgdGhhdCBpbiBteSBgRm9jdXNTeW1ib2xzYCBhcnJheS4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIGVuYWJsZSBgQlBGX1NZU0NBTExgIHNvIHRoZSByZWxldmFudCBjb2RlIGlzIGF2YWlsYWJsZS4gSSYjMzk7bGwgc3VtbWFyaXplIG15IHJhdGlvbmFsZTogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBhbGxvdyBrZnVuY3Mgd2l0aCB0aGUgS0ZfU1BJTl9MT0NLIGZsYWcgdG8gYmUgY2FsbGVkIGluc2lkZSBhIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHZlcmlmaWVyJiMzOTtzIGluc3RydWN0aW9uIGNoZWNraW5nIGxvZ2ljLiYjMzQ7CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA5OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGFsbG93IGtmdW5jcyB3aXRoIHRoZSBLRl9TUElOX0xPQ0sgZmxhZyB0byBiZSBjYWxsZWQgaW5zaWRlIGEgYnBmX3NwaW5fbG9jay1lZCByZWdpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgdmVyaWZpZXImIzM5O3MgaW5zdHJ1Y3Rpb24gY2hlY2tpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gYWxsb3cga2Z1bmNzIHdpdGggdGhlIEtGX1NQSU5fTE9DSyBmbGFnIHRvIGJlIGNhbGxlZCBpbnNpZGUgYSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB2ZXJpZmllciYjMzk7cyBpbnN0cnVjdGlvbiBjaGVja2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjA4OjU3LjMzNzU0MTg1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NzQzOTEzOTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBhbGxvdyBrZnVuY3Mgd2l0aCB0aGUgS0ZfU1BJTl9MT0NLIGZsYWcgdG8gYmUgY2FsbGVkIGluc2lkZSBhIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHZlcmlmaWVyJ3MgaW5zdHJ1Y3Rpb24gY2hlY2tpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjA4OjU3LjMzNzU0OTE2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc1MzQ5MzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYmQ2MmYxMzU0MTRhNTA3OWUxZmMxODIwMjEzZjdmZWNjYWU2ZjVhNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDA5OjA4OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXFxuaW5kZXggYzA5Yjc5OTRkZTRlYi4uMzgwZGMxMGI2NzUwMiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2J0Zi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9idGYuaFxcbkBAIC03OSw2ICs3OSw3IEBAXFxuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMSAgICgxIFxcdTAwM2NcXHUwMDNjIDE0KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAqL1xcbiAjZGVmaW5lIEtGX0FSRU5BX0FSRzIgICAoMSBcXHUwMDNjXFx1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXFxuICNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSBcXHUwMDNjXFx1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cXG4rI2RlZmluZSBLRl9TUElOX0xPQ0sgICAgKDEgXFx1MDAzY1xcdTAwM2MgMTcpIC8qIGtmdW5jIGlzIGFsbG93ZWQgaW5zaWRlIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uICovXFxuIFxcbiAvKlxcbiAgKiBUYWcgbWFya2luZyBhIGtlcm5lbCBmdW5jdGlvbiBhcyBhIGtmdW5jLiBUaGlzIGlzIG1lYW50IHRvIG1pbmltaXplIHRoZVxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCA3YWE0NzM0MmRjNjU5Li45ZjNmZWJhM2MyZmU2IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC0xMTY1NywxMSArMTE2NTcsMjEgQEAgc3RhdGljIGJvb2wgaXNfYnBmX3N0cmVhbV9rZnVuYyh1MzIgYnRmX2lkKVxcbiBcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrXTtcXG4gfVxcbiBcXG4tc3RhdGljIGJvb2wga2Z1bmNfc3Bpbl9hbGxvd2VkKHUzMiBidGZfaWQpXFxuK3N0YXRpYyBib29sIGtmdW5jX3NwaW5fYWxsb3dlZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMzIgZnVuY19pZCwgczE2IG9mZnNldClcXG4ge1xcbi1cXHRyZXR1cm4gaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9pdGVyX251bV9hcGlfa2Z1bmMoYnRmX2lkKSB8fFxcbi1cXHQgICAgICAgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoYnRmX2lkKSB8fFxcbi1cXHQgICAgICAgaXNfYnBmX3N0cmVhbV9rZnVuYyhidGZfaWQpO1xcbitcXHRzdHJ1Y3QgYnBmX2tmdW5jX21ldGEga2Z1bmM7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRpZiAoaXNfYnBmX2dyYXBoX2FwaV9rZnVuYyhmdW5jX2lkKSB8fCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKGZ1bmNfaWQpIHx8XFxuK1xcdCAgICBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyhmdW5jX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoZnVuY19pZCkgfHxcXG4rXFx0ICAgIGlzX2JwZl9zdHJlYW1fa2Z1bmMoZnVuY19pZCkpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXFx1MDAyNmtmdW5jKTtcXG4rXFx0aWYgKGVyciB8fCAha2Z1bmMuZmxhZ3MpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdHJldHVybiAqa2Z1bmMuZmxhZ3MgXFx1MDAyNiBLRl9TUElOX0xPQ0s7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sIGlzX3N5bmNfY2FsbGJhY2tfY2FsbGluZ19rZnVuYyh1MzIgYnRmX2lkKVxcbkBAIC0xNzI4OSw3ICsxNzI5OSw3IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcXG4gXFx0XFx0XFx0XFx0ICAgICBpbnNuLVxcdTAwM2VpbW0gIT0gQlBGX0ZVTkNfc3Bpbl91bmxvY2sgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0ICAgICBpbnNuLVxcdTAwM2VpbW0gIT0gQlBGX0ZVTkNfa3B0cl94Y2hnKSB8fFxcbiBcXHRcXHRcXHRcXHQgICAgKGluc24tXFx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdFxcdCAgICAgKGluc24tXFx1MDAzZW9mZiAhPSAwIHx8ICFrZnVuY19zcGluX2FsbG93ZWQoaW5zbi1cXHUwMDNlaW1tKSkpKSB7XFxuK1xcdFxcdFxcdFxcdCAgICAgIWtmdW5jX3NwaW5fYWxsb3dlZChlbnYsIGluc24tXFx1MDAzZWltbSwgaW5zbi1cXHUwMDNlb2ZmKSkpIHtcXG4gXFx0XFx0XFx0XFx0XFx0dmVyYm9zZShlbnYsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcXCJmdW5jdGlvbiBjYWxscyBhcmUgbm90IGFsbG93ZWQgd2hpbGUgaG9sZGluZyBhIGxvY2tcXFxcblxcXCIpO1xcbiBcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MDg6NTcuNzEzNjg5Mzg4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDgzNjc3NTkxOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGFsbG93IGtmdW5jcyB3aXRoIHRoZSBLRl9TUElOX0xPQ0sgZmxhZyB0byBiZSBjYWxsZWQgaW5zaWRlIGEgYnBmX3NwaW5fbG9jay1lZCByZWdpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgdmVyaWZpZXIncyBpbnN0cnVjdGlvbiBjaGVja2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYmQ2MmYxMzU0MTRhNTA3OWUxZmMxODIwMjEzZjdmZWNjYWU2ZjVhNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMDk6MDg6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxuaW5kZXggYzA5Yjc5OTRkZTRlYi4uMzgwZGMxMGI2NzUwMiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYnRmLmhcbkBAIC03OSw2ICs3OSw3IEBAXG4gI2RlZmluZSBLRl9BUkVOQV9BUkcxICAgKDEgXHUwMDNjXHUwMDNjIDE0KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAqL1xuICNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFx1MDAzY1x1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXG4gI2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cbisjZGVmaW5lIEtGX1NQSU5fTE9DSyAgICAoMSBcdTAwM2NcdTAwM2MgMTcpIC8qIGtmdW5jIGlzIGFsbG93ZWQgaW5zaWRlIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uICovXG4gXG4gLypcbiAgKiBUYWcgbWFya2luZyBhIGtlcm5lbCBmdW5jdGlvbiBhcyBhIGtmdW5jLiBUaGlzIGlzIG1lYW50IHRvIG1pbmltaXplIHRoZVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggN2FhNDczNDJkYzY1OS4uOWYzZmViYTNjMmZlNiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTE2NTcsMTEgKzExNjU3LDIxIEBAIHN0YXRpYyBib29sIGlzX2JwZl9zdHJlYW1fa2Z1bmModTMyIGJ0Zl9pZClcbiBcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2tdO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQodTMyIGJ0Zl9pZClcbitzdGF0aWMgYm9vbCBrZnVuY19zcGluX2FsbG93ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczMyIGZ1bmNfaWQsIHMxNiBvZmZzZXQpXG4ge1xuLVx0cmV0dXJuIGlzX2JwZl9ncmFwaF9hcGlfa2Z1bmMoYnRmX2lkKSB8fCBpc19icGZfaXRlcl9udW1fYXBpX2tmdW5jKGJ0Zl9pZCkgfHxcbi1cdCAgICAgICBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyhidGZfaWQpIHx8IGlzX2JwZl9hcmVuYV9rZnVuYyhidGZfaWQpIHx8XG4tXHQgICAgICAgaXNfYnBmX3N0cmVhbV9rZnVuYyhidGZfaWQpO1xuK1x0c3RydWN0IGJwZl9rZnVuY19tZXRhIGtmdW5jO1xuK1x0aW50IGVycjtcbitcbitcdGlmIChpc19icGZfZ3JhcGhfYXBpX2tmdW5jKGZ1bmNfaWQpIHx8IGlzX2JwZl9pdGVyX251bV9hcGlfa2Z1bmMoZnVuY19pZCkgfHxcbitcdCAgICBpc19icGZfcmVzX3NwaW5fbG9ja19rZnVuYyhmdW5jX2lkKSB8fCBpc19icGZfYXJlbmFfa2Z1bmMoZnVuY19pZCkgfHxcbitcdCAgICBpc19icGZfc3RyZWFtX2tmdW5jKGZ1bmNfaWQpKVxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcbitcdGVyciA9IGZldGNoX2tmdW5jX21ldGEoZW52LCBmdW5jX2lkLCBvZmZzZXQsIFx1MDAyNmtmdW5jKTtcbitcdGlmIChlcnIgfHwgIWtmdW5jLmZsYWdzKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRyZXR1cm4gKmtmdW5jLmZsYWdzIFx1MDAyNiBLRl9TUElOX0xPQ0s7XG4gfVxuIFxuIHN0YXRpYyBib29sIGlzX3N5bmNfY2FsbGJhY2tfY2FsbGluZ19rZnVuYyh1MzIgYnRmX2lkKVxuQEAgLTE3Mjg5LDcgKzE3Mjk5LDcgQEAgc3RhdGljIGludCBkb19jaGVja19pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGJvb2wgKmRvX3ByaW50X3N0YXRlKVxuIFx0XHRcdFx0ICAgICBpbnNuLVx1MDAzZWltbSAhPSBCUEZfRlVOQ19zcGluX3VubG9jayBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdCAgICAgaW5zbi1cdTAwM2VpbW0gIT0gQlBGX0ZVTkNfa3B0cl94Y2hnKSB8fFxuIFx0XHRcdFx0ICAgIChpbnNuLVx1MDAzZXNyY19yZWcgPT0gQlBGX1BTRVVET19LRlVOQ19DQUxMIFx1MDAyNlx1MDAyNlxuLVx0XHRcdFx0ICAgICAoaW5zbi1cdTAwM2VvZmYgIT0gMCB8fCAha2Z1bmNfc3Bpbl9hbGxvd2VkKGluc24tXHUwMDNlaW1tKSkpKSB7XG4rXHRcdFx0XHQgICAgICFrZnVuY19zcGluX2FsbG93ZWQoZW52LCBpbnNuLVx1MDAzZWltbSwgaW5zbi1cdTAwM2VvZmYpKSkge1xuIFx0XHRcdFx0XHR2ZXJib3NlKGVudixcbiBcdFx0XHRcdFx0XHRcImZ1bmN0aW9uIGNhbGxzIGFyZSBub3QgYWxsb3dlZCB3aGlsZSBob2xkaW5nIGEgbG9ja1xcblwiKTtcbiBcdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOTowODo1Ny43MTM2OTE1MThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTkwOTYxMDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyBtYWtpbmcgY2hhbmdlcyB0byB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYGluY2x1ZGUvbGludXgvYnRmLmhgIGFuZCBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGEgbmV3IGBLRl9TUElOX0xPQ0tgIGZsYWcgaW4gYGJ0Zi5oYCBhbmQgdGhlbiB1cGRhdGluZyBga2Z1bmNfc3Bpbl9hbGxvd2VkYCBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byB0YWtlIHRoYXQgZmxhZyBpbnRvIGFjY291bnQuIEZyb20gdGhlIGRlc2NyaXB0aW9uLCBpdCBsb29rcyBmdW5jdGlvbmFsIGFuZCwgaW4gZXNzZW5jZSwgaXMgZXhwYW5kaW5nIHdoYXQncyBhbGxvd2VkIGluIGEgYGJwZl9zcGluX2xvY2tgLXByb3RlY3RlZCByZWdpb24gYnkgcGVybWl0dGluZyBrZnVuY3MgdGFnZ2VkIHdpdGggYEtGX1NQSU5fTE9DS2AgdG8gYmUgY2FsbGVkIGZyb20gd2l0aGluIGl0LlxuXG5NeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIHNlZSBob3cgYGZldGNoX2tmdW5jX21ldGFgIHdvcmtzLCBhbmQgdGhlbiB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGBrZnVuY19zcGluX2FsbG93ZWRgIGlzIGxldmVyYWdlZC4gSSBuZWVkIHRvIHNlZSB0aGUgY2FsbGluZyBjb250ZXh0LiBSaWdodCwgaXQgbG9va3MgbGlrZSBga2Z1bmNfc3Bpbl9hbGxvd2VkYCBpcyBjYWxsZWQgZnJvbSBgZG9fY2hlY2tfaW5zbmAuXG5cbk5leHQsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHdoaWNoIGNvbmZpZyBvcHRpb25zIHR5cGljYWxseSBjb250cm9sIHRoZSBCUEYgdmVyaWZpZXIuIExldCdzIHN0YXJ0IHdpdGggYENPTkZJR19CUEZfU1lTQ0FMTGAsIHRoYXQgc2hvdWxkIGJlIGl0LlxuXG5GaW5hbGx5LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBlbnN1cmUgdGhpcyBkb2Vzbid0IGhhdmUgYW55IHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzLCBJJ2xsIHJ1biBhIHF1aWNrIGBkZWZhdWx0X2FwaTpncmVwcGVyYCBzZWFyY2ggZm9yIGBLRl9TUElOX0xPQ0tgIHRvIHNlZSBpZiB0aGlzIGZsYWcgaXMgYmVpbmcgdXNlZCBlbHNld2hlcmUgaW4gdGhlIGtlcm5lbC4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgcG90ZW50aWFsIGludGVyYWN0aW9ucyBJJ20gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5NywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjA5OjA0LjcwNDY1NTczMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc5ODgzNDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktGX1NQSU5fTE9DS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2J0Zi5oLTgxLSNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSBcXHUwMDNjXFx1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjgyOiNkZWZpbmUgS0ZfU1BJTl9MT0NLICAgICgxIFxcdTAwM2NcXHUwMDNjIDE3KSAvKiBrZnVuYyBpcyBhbGxvd2VkIGluc2lkZSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbiAqL1xcbmluY2x1ZGUvbGludXgvYnRmLmgtODMtXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE2NjA9c3RhdGljIGJvb2wga2Z1bmNfc3Bpbl9hbGxvd2VkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMzMiBmdW5jX2lkLCBzMTYgb2Zmc2V0KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjczLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY3NDpcXHRyZXR1cm4gKmtmdW5jLmZsYWdzIFxcdTAwMjYgS0ZfU1BJTl9MT0NLO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTY3NS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjA5OjA2LjU4NDU0NzM3NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NzI4NTkxMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgS0ZfU1BJTl9MT0NLYCBhbmQgdHdlYWtzIGBrZnVuY19zcGluX2FsbG93ZWRgLiBGdW5jdGlvbmFsbHksIGl0IGxvb2tzIHNvdW5kLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIGFic29sdXRlbHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZy4gVGhlIGdvYWwgaGVyZSBpcyB0byBpZGVudGlmeSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5Ob3csIHdoZXJlIGRvIEkgZm9jdXMgdGhlIGZ1enplcj8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGBkb19jaGVja19pbnNuYCBvciBldmVuIGBrZnVuY19zcGluX2FsbG93ZWRgLiBUaGUgY2hhbGxlbmdlIGlzLCB0aGV5J3JlIGJvdGggZGVjbGFyZWQgYXMgc3RhdGljLCB3aGljaCBjb21wbGljYXRlcyB0aGluZ3MgaW4gdGVybXMgb2Ygc3ltYm9sIHZpc2liaWxpdHkgZm9yIHRoZSBmdXp6ZXIuIEEgc3RhdGljIGZ1bmN0aW9uIG1pZ2h0IGJlIG1vcmUgZGlmZmljdWx0IHRvIGhvb2sgdGhhbiBhIG5vbiBzdGF0aWMgb25lLlxuXG5BbHJpZ2h0LCBsZXQncyBwaXZvdC4gU2luY2UgdGhvc2UgYXJlIHN0YXRpYywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IHRoaW5raW5nIGlzIHRoYXQgdGhlcmUgKm11c3QqIGJlIHNvbWUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgdGhpcyBtaWdodCBpbnRlcmFjdCB3aXRoLiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gZmluZCBhIGdvb2QgZW50cnkgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOTowOToxMS40NTc0MDk4MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU4NDg2ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmludCBicGZfY2hlY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODkwMT1idGZfYXR0YWNoX2Z1bmNfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgZnVuY19pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODkzNS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTg5MzY6aW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM3LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTkzNDE9c3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0NDAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NDQxOmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0NDItXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk2Mzg9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc4MS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3ODI6aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzgzLVxcdCAgICAgIHN0cnVjdCBicGZfbG9nX2F0dHIgKmF0dHJfbG9nKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwOTowOToxMS41MDMyNjYwNDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDEyNTkyODM2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBFbnRyeSBQb2ludCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEJQRiB2ZXJpZmllciBjb2RlLiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCwgdGhlIGZpcnN0IGZ1bmN0aW9uIHRoZSB2ZXJpZmllciBoaXRzLCBpcyBgYnBmX2NoZWNrYCwgcmlnaHQ/IFRoYXQncyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGJlIHRob3JvdWdoIHRob3VnaCwgc28gbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIga2V5IGZ1bmN0aW9ucyBsdXJraW5nIGFyb3VuZC4gYGJwZl9jaGVja2AgaXMgdGhlIG9idmlvdXMgZm9jdXMsIGJ1dCBpdCdzIGltcG9ydGFudCB0byBiZSBjb21wbGV0ZS5cblxuSG1tLCB3aGF0IGFib3V0IGBrZnVuY19zcGluX2FsbG93ZWRgPyBUaGF0J3Mgc3RhdGljLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLCBtYWtpbmcgaXQgaGFyZGVyIHRvIHRyYWNrIGRpcmVjdGx5LiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgYW55IHN0YXRpYyBmdW5jdGlvbnMgdGhhdCBjb3VsZCBiZSBjcml0aWNhbC5cblxuQWxyaWdodCwgYGJwZl9jaGVja2AgaXMgcHJvYmFibHkgdG9vIGdlbmVyaWMgZm9yIGluLWRlcHRoIGFuYWx5c2lzIG9uIGl0cyBvd24uIEl0J3MgYm91bmQgdG8gYmUgYSBtYXNzaXZlIGZ1bmN0aW9uLiBJIG5lZWQgdG8gYnJlYWsgdGhpcyBkb3duIGludG8gc21hbGxlciwgbW9yZSBtYW5hZ2VhYmxlIHBpZWNlcy4gU28sIGlzIHRoZXJlIGFueXRoaW5nIGVsc2U/IEFoLCBgZG9fY2hlY2tfaW5zbmAgaXMgYWxzbyBzdGF0aWMuIE5vdyB3ZSBhcmUgZ2V0dGluZyBzb21ld2hlcmUsIGl0IG1pZ2h0IGJlIGlubGluZWQgdG9vLiBMZXQgbWUgY2hlY2sgYGRvX2NoZWNrX2NvbW1vbmAuXG5cbk9rYXksIHRoZSBtb3N0IGxvZ2ljYWwgbW92ZSBpcyB0byBsb29rIGNsb3NlbHkgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYXJvdW5kIGBkb19jaGVja19pbnNuYC4gSSBzdXNwZWN0IGl0J3MgaGVyZSB3aGVyZSB0aGUgcmVhbCB3b3JrIG9mIGluc3RydWN0aW9uIHZlcmlmaWNhdGlvbiBpcyBwZXJmb3JtZWQuIFRoaXMgc2VlbXMgbGlrZSB0aGUgbW9zdCBsaWtlbHkgYXJlYSB0byBzdGFydCBteSBkZWVwIGRpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MTMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MDk6MjUuNjI5MTk2OTI2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTQ0NjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRvX2NoZWNrX2luc25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzE4Nz1zdGF0aWMgaW50IGNoZWNrX2luZGlyZWN0X2p1bXAoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3MjQ0LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzI0NTpzdGF0aWMgaW50IGRvX2NoZWNrX2luc24oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgYm9vbCAqZG9fcHJpbnRfc3RhdGUpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3MjQ2LXtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNzM1MT1zdGF0aWMgaW50IGRvX2NoZWNrKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTc0NzYtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE3NDc3OlxcdFxcdGVyciA9IGRvX2NoZWNrX2luc24oZW52LCBcXHUwMDI2ZG9fcHJpbnRfc3RhdGUpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNzQ3OC1cXHRcXHRpZiAoZXJyb3JfcmVjb3ZlcmFibGVfd2l0aF9ub3NwZWMoZXJyKSBcXHUwMDI2XFx1MDAyNiBzdGF0ZS1cXHUwMDNlc3BlY3VsYXRpdmUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MDk6MjUuNjczNzQ1ODcxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwOTMxMjM0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmljYXRpb24gQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgQlBGIHZlcmlmaWNhdGlvbiBjb2RlLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBhY3R1YWxseS4gVGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBpcyBgYnBmX2NoZWNrYCwgd2hpY2gsIGFzIEkgY2FuIHNlZSwgaXMgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3MgZXZlcnl0aGluZyBvZmYuIE5vdywgYGJwZl9jaGVja2AgdGhlbiBjYWxscyBgZG9fY2hlY2tgLCBhbmQgYGRvX2NoZWNrYCBzdWJzZXF1ZW50bHkgY2FsbHMgYGRvX2NoZWNrX2luc25gLiBUaGUgd2F5IGl0J3Mgc3RydWN0dXJlZCwgd2l0aCBgZG9fY2hlY2tfaW5zbmAgYW5kIGBkb19jaGVja2AgYmVpbmcgc3RhdGljIGZ1bmN0aW9ucywgY2xlYXJseSBtZWFucyBgYnBmX2NoZWNrYCBpcyB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludC4gQW5kIHRoYXQgbWFrZXMgc2Vuc2UuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGluc3RydWN0cyB1cyB0byBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzLiBTbywgeWVhaCwgYGJwZl9jaGVja2AgaXMgdGhlIHJpZ2h0IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGhlcmUsIGdvb2QuXG5cbk5vdywgbGV0J3MganVzdCBxdWlja2x5IGNvbmZpcm0gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEl0J3MgYWxtb3N0IGNlcnRhaW4gdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBnb2luZyB0byBiZSBhIGhhcmQgcmVxdWlyZW1lbnQgZm9yIHRoaXMgdG8gZnVuY3Rpb24uIFdlJ2xsIG5lZWQgdGhhdCBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQ0LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjA5OjMwLjg4MzA2MDk1OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMDE3MjM2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MDk6MzIuNTkzMjM4MzUyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MzI4NzQ1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipFeHBsb3JpbmcgdGhlIENvbnRleHQgb2YgYSBLZXJuZWwgUGF0Y2gqKi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gVGhlIHRleHQgbWVudGlvbnMgYSBwYXRjaCB0aGF0IHNwZWNpZmljYWxseSB0b3VjaGVzIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiAgQmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSBuZWVkIGEgYnJvYWRlciB1bmRlcnN0YW5kaW5nLiBJcyB0aGlzIGZpbGUgYWx3YXlzIGNvbXBpbGVkLCBvciBpcyBpdCBjb250aW5nZW50IG9uIHNvbWUgY29uZmlndXJhdGlvbiBvcHRpb25zPyBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZyBmaWxlcyBvciByZWxhdGVkIGNvZGUgdGhhdCBjb3VsZCBiZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZT8gSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBwb3RlbnRpYWwgZG93bnN0cmVhbSBlZmZlY3RzIHRvIGZ1bGx5IGdyYXNwIHRoZSBzY29wZS4gSSBuZWVkIHRvIGtub3cgd2hlcmUgSSBjYW4gZmluZCB0aGUga2VybmVsIGNvbmZpZyBvcHRpb25zIHRvIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjE4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MDk6NDAuMTI2MTE1NTg4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDQ3ODkwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZXJpZmllclxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDk6MDk6NDAuMTcwNTk5MDc0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4Mzc5NjE5MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCB0aHJvdWdoIHRoZSBkZXRhaWxzLCBhbmQgeWVzLCBpdCdzIGNsZWFyOiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlLiBUaGUgcGF0Y2ggaXRzZWxmIGlzIG1ha2luZyBzb21lIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQlBGIHZlcmlmaWVyLCBhbmQgdGhhdCdzIHdoZXJlIG15IGZvY3VzIG5lZWRzIHRvIGJlLlxuXG5MZXQgbWUgYnJlYWsgZG93biB3aGF0IEknbSBzZWVpbmcuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBLRl9TUElOX0xPQ0tgIGludG8gYGluY2x1ZGUvbGludXgvYnRmLmhgLCB3aGljaCBpcyBhIGtleSBmbGFnLiBUaGVuLCB0aGUgbWVhdCBvZiBpdCBpcyBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgc3BlY2lmaWNhbGx5IHRoZSBtb2RpZmljYXRpb24gdG8gYGtmdW5jX3NwaW5fYWxsb3dlZGAuIEl0IGxvb2tzIGxpa2UgdGhlIGBmZXRjaF9rZnVuY19tZXRhYCBmdW5jdGlvbiBpcyBiZWluZyB1c2VkIHRvIHJldHJpZXZlIHRoZSBrZnVuYyBtZXRhZGF0YSwgYXMgZXhwZWN0ZWQuIE5vdywgaWYgYSBrZnVuYyBoYXMgdGhhdCBgS0ZfU1BJTl9MT0NLYCBmbGFnIHNldCwgdGhlIHZlcmlmaWVyIHdpbGwgcGVybWl0IGl0cyB1c2UgKndpdGhpbiogYSBzcGluIGxvY2sgcmVnaW9uLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGFsdGVyYXRpb24gdG8gaG93IHRoZSB2ZXJpZmllciBoYW5kbGVzIGluc3RydWN0aW9uIGNoZWNraW5nLCBwYXJ0aWN1bGFybHkgcmVnYXJkaW5nIHRoZSBjb250ZXh0IGluIHdoaWNoIGEgQlBGIGZ1bmN0aW9uIGNhbiBleGVjdXRlLlxuXG5TbywgYmFzZWQgb24gdGhpcyB0aG9yb3VnaCByZXZpZXcgYW5kIG15IGV4cGVyaWVuY2UsIHRoaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIGtlZXAgdGhlIGZvY3VzIG9uIHRoZSBgYnBmX2NoZWNrYCBzZWN0aW9uIGZvciBtYXhpbXVtIGVmZmVjdGl2ZW5lc3MsIHNvIEknbGwgcHV0IHRoYXQgaW4gbXkgYEZvY3VzU3ltYm9sc2AgYXJyYXkuIEknbGwgbWFrZSBzdXJlIHRvIGVuYWJsZSBgQlBGX1NZU0NBTExgIHNvIHRoZSByZWxldmFudCBjb2RlIGlzIGF2YWlsYWJsZS4gSSdsbCBzdW1tYXJpemUgbXkgcmF0aW9uYWxlOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGFsbG93IGtmdW5jcyB3aXRoIHRoZSBLRl9TUElOX0xPQ0sgZmxhZyB0byBiZSBjYWxsZWQgaW5zaWRlIGEgYnBmX3NwaW5fbG9jay1lZCByZWdpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgdmVyaWZpZXIncyBpbnN0cnVjdGlvbiBjaGVja2luZyBsb2dpYy5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTc2LCJPdXRwdXRUb2tlbnMiOjk2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA5OjA5OjQ2LjAwODU2MzQ1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyODgzMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gYWxsb3cga2Z1bmNzIHdpdGggdGhlIEtGX1NQSU5fTE9DSyBmbGFnIHRvIGJlIGNhbGxlZCBpbnNpZGUgYSBicGZfc3Bpbl9sb2NrLWVkIHJlZ2lvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB2ZXJpZmllcidzIGluc3RydWN0aW9uIGNoZWNraW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBhbGxvdyBrZnVuY3Mgd2l0aCB0aGUgS0ZfU1BJTl9MT0NLIGZsYWcgdG8gYmUgY2FsbGVkIGluc2lkZSBhIGJwZl9zcGluX2xvY2stZWQgcmVnaW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHZlcmlmaWVyJ3MgaW5zdHJ1Y3Rpb24gY2hlY2tpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowxnqrj[1] Phase: Succeeded StartedAt: 2026-08-04 09:09:57 +0000 UTC FinishedAt: 2026-08-04 09:09:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 09:09:57 +0000 UTC FinishedAt: 2026-08-04 09:09:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2] Phase: Succeeded StartedAt: 2026-08-04 09:09:57 +0000 UTC FinishedAt: 2026-08-04 11:51:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-08-04 09:09:57 +0000 UTC FinishedAt: 2026-08-04 11:51:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 09:09:57 +0000 UTC FinishedAt: 2026-08-04 09:10:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 09:09:57 +0000 UTC FinishedAt: 2026-08-04 09:10:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxnqrj/series-workflowxnqrj-convert-artifact-3196890963/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 09:10:07 +0000 UTC FinishedAt: 2026-08-04 09:26:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 09:10:07 +0000 UTC FinishedAt: 2026-08-04 09:26:27 +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:*8609c7b4-6d62-48f8-bef6-e0a6c53e7a1b,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-workflowxnqrj/series-workflowxnqrj-convert-artifact-3196890963/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": "04856d44-c182-43a6-a94f-26aeddf06ace", "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-workflowxnqrj/series-workflowxnqrj-build-action-2390487681/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 09:10:07 +0000 UTC FinishedAt: 2026-08-04 09:26:17 +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:*8609c7b4-6d62-48f8-bef6-e0a6c53e7a1b,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-workflowxnqrj/series-workflowxnqrj-convert-artifact-3196890963/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": "04856d44-c182-43a6-a94f-26aeddf06ace", "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-workflowxnqrj/series-workflowxnqrj-build-action-2390487681/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 09:26:27 +0000 UTC FinishedAt: 2026-08-04 09:26:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 09:26:27 +0000 UTC FinishedAt: 2026-08-04 09:26:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 09:26:27 +0000 UTC FinishedAt: 2026-08-04 09:26:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 09:26:27 +0000 UTC FinishedAt: 2026-08-04 09:26:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowxnqrj/series-workflowxnqrj-convert-artifact-3876020554/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 09:26:38 +0000 UTC FinishedAt: 2026-08-04 09:28:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 09:26:38 +0000 UTC FinishedAt: 2026-08-04 09:28:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*04856d44-c182-43a6-a94f-26aeddf06ace,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-workflowxnqrj/series-workflowxnqrj-build-action-2390487681/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-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 09:28:41 +0000 UTC FinishedAt: 2026-08-04 09:28:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 09:28:41 +0000 UTC FinishedAt: 2026-08-04 09:28:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 09:28:41 +0000 UTC FinishedAt: 2026-08-04 09:48:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 09:28:41 +0000 UTC FinishedAt: 2026-08-04 09:48:44 +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:*8609c7b4-6d62-48f8-bef6-e0a6c53e7a1b,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-workflowxnqrj/series-workflowxnqrj-convert-artifact-3876020554/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": "691de82a-de0e-4623-ba3c-f57d2c98d54d", "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-workflowxnqrj/series-workflowxnqrj-build-action-408929646/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 09:28:41 +0000 UTC FinishedAt: 2026-08-04 09:48:19 +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:*8609c7b4-6d62-48f8-bef6-e0a6c53e7a1b,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-workflowxnqrj/series-workflowxnqrj-convert-artifact-3876020554/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": "691de82a-de0e-4623-ba3c-f57d2c98d54d", "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-workflowxnqrj/series-workflowxnqrj-build-action-408929646/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 09:48:46 +0000 UTC FinishedAt: 2026-08-04 09:48:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 09:48:46 +0000 UTC FinishedAt: 2026-08-04 09:48:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 09:48:46 +0000 UTC FinishedAt: 2026-08-04 09:50:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 09:48:46 +0000 UTC FinishedAt: 2026-08-04 09:50:41 +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:*691de82a-de0e-4623-ba3c-f57d2c98d54d,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-workflowxnqrj/series-workflowxnqrj-build-action-408929646/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-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Failed StartedAt: 2026-08-04 09:50:51 +0000 UTC FinishedAt: 2026-08-04 11:51:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Failed StartedAt: 2026-08-04 09:50:51 +0000 UTC FinishedAt: 2026-08-04 11:51:59 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"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:*04856d44-c182-43a6-a94f-26aeddf06ace,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*691de82a-de0e-4623-ba3c-f57d2c98d54d,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-workflowxnqrj/series-workflowxnqrj-build-action-2390487681/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-workflowxnqrj/series-workflowxnqrj-build-action-408929646/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 09:50:51 +0000 UTC FinishedAt: 2026-08-04 09:51:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 09:50:51 +0000 UTC FinishedAt: 2026-08-04 09:50:55 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"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-workflowxnqrj/series-workflowxnqrj-convert-artifact-1230135007/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 09:50:51 +0000 UTC FinishedAt: 2026-08-04 09:50:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 09:50:51 +0000 UTC FinishedAt: 2026-08-04 09:50:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 09:50:51 +0000 UTC FinishedAt: 2026-08-04 09:50:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Failed StartedAt: 2026-08-04 09:51:01 +0000 UTC FinishedAt: 2026-08-04 11:51:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxnqrj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ce37745d4bfbc493f718169c3974898ffec8ee7","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"fd79e425-6fbb-4870-983b-2fa4124aa9ac","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Error StartedAt: 2026-08-04 09:51:01 +0000 UTC FinishedAt: 2026-08-04 11:51:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*04856d44-c182-43a6-a94f-26aeddf06ace,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*691de82a-de0e-4623-ba3c-f57d2c98d54d,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-workflowxnqrj/series-workflowxnqrj-build-action-2390487681/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-workflowxnqrj/series-workflowxnqrj-build-action-408929646/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-workflowxnqrj/series-workflowxnqrj-convert-artifact-1230135007/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil