Name: series-workflownb4xl Phase: Succeeded StartedAt: 2026-07-11 11:30:24 +0000 UTC FinishedAt: 2026-07-11 16:16:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[0] Phase: Succeeded StartedAt: 2026-07-11 11:30:24 +0000 UTC FinishedAt: 2026-07-11 11:50:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 11:30:24 +0000 UTC FinishedAt: 2026-07-11 11:50:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT" ], "series_id": "98d02238-868a-490d-8e6c-efdc8285337b" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_struct_ops_desc_init", "bpf_check_attach_target", "bpf_check_attach_btf_id_multi" ], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfc3RydWN0X29wc19kZXNjX2luaXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF90YXJnZXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGluIHRoZSBCUEYgdmVyaWZpZXIgYW5kIHN0cnVjdF9vcHMgaW5pdGlhbGl6YXRpb24gdG8gcmVqZWN0IGF0dGFjaGluZyBCUEYgcHJvZ3JhbXMgdG8gZnVuY3Rpb25zIHdpdGggcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzIChlLmcuLCBfX2ludDEyOCkgd2hlbiB0aGUgYXR0YWNoIHR5cGUgdXNlcyB0aGUgdHJhbXBvbGluZSByZXR1cm4gdmFsdWUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMTo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc3YWQ0OGJlZWI0YzBjMTk0YTMwNjcxNTcxOWY3NTM3NzhjMTU4MDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxMTo0NzoyNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMgYi9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmNcbmluZGV4IDUxYjE2ZTVmNTUzNGUwLi5iYmI0NGVmOGY4N2FhNiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jXG5AQCAtNDQ1LDYgJiM0Mzs0NDUsMTggQEAgaW50IGJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdChzdHJ1Y3QgYnBmX3N0cnVjdF9vcHNfZGVzYyAqc3Rfb3BzX2Rlc2MsXG4gXHRcdFx0Z290byBlcnJvdXQ7XG4gXHRcdH1cbiBcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBBIFx1MDAzZTggYnl0ZSByZXR1cm4gdmFsdWUgaXMgcGFzc2VkIGJhY2sgaW4gdGhlIFIwOlIyIHJlZ2lzdGVyXG4mIzQzO1x0XHQgKiBwYWlyLCB3aGljaCB0aGUgc3RydWN0X29wcyB0cmFtcG9saW5lIGRvZXMgbm90IHByZXNlcnZlIChvbmx5XG4mIzQzO1x0XHQgKiA4IGJ5dGVzIG9mIHRoZSByZXR1cm4gdmFsdWUgYXJlIHNhdmVkIGFuZCByZXN0b3JlZCkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChzdF9vcHMtXHUwMDNlZnVuY19tb2RlbHNbaV0ucmV0X3NpemUgXHUwMDNlIDgpIHtcbiYjNDM7XHRcdFx0cHJfd2FybihcJiMzNDtmdW5jIHB0ciAlcyBpbiBzdHJ1Y3QgJXMgaGFzIGEgXHUwMDNlOCBieXRlIHJldHVybiB2YWx1ZSwgd2hpY2ggaXMgbm90IHN1cHBvcnRlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRtbmFtZSwgc3Rfb3BzLVx1MDAzZW5hbWUpO1xuJiM0MztcdFx0XHRlcnIgPSAtRU9QTk9UU1VQUDtcbiYjNDM7XHRcdFx0Z290byBlcnJvdXQ7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHRzdHViX2Z1bmNfYWRkciA9ICoodm9pZCAqKikoc3Rfb3BzLVx1MDAzZWNmaV9zdHVicyAmIzQzOyBtb2ZmKTtcbiBcdFx0ZXJyID0gcHJlcGFyZV9hcmdfaW5mbyhidGYsIHN0X29wcy1cdTAwM2VuYW1lLCBtbmFtZSxcbiBcdFx0XHRcdCAgICAgICBmdW5jX3Byb3RvLCBzdHViX2Z1bmNfYWRkcixcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDY1MTVkNGQzYzAwMzJmLi4yNmQyODFiNzdhNmU3MiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTg4NzMsNiAmIzQzOzE4ODczLDIwIEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiXG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKHR5cGUpIHtcbiYjNDM7XHRjYXNlIEJQRl9NT0RJRllfUkVUVVJOOlxuJiM0MztcdGNhc2UgQlBGX1RSQUNFX0ZFWElUOlxuJiM0MztcdGNhc2UgQlBGX1RSQUNFX0ZFWElUX01VTFRJOlxuJiM0MztcdGNhc2UgQlBGX1RSQUNFX0ZTRVNTSU9OOlxuJiM0MztcdGNhc2UgQlBGX1RSQUNFX0ZTRVNTSU9OX01VTFRJOlxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbiBcdFx0XHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZyxcbkBAIC0xOTEzNyw2ICYjNDM7MTkxNTEsMTQgQEAgaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcbiYjNDM7XHRcdGlmICh0Z3RfaW5mby1cdTAwM2VmbW9kZWwucmV0X3NpemUgXHUwMDNlIDggXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgYXR0YWNoX3VzZXNfdHJhbXBvbGluZV9yZXR2YWwocHJvZy1cdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZSkpIHtcbiYjNDM7XHRcdFx0YnBmX2xvZyhsb2csXG4mIzQzO1x0XHRcdFx0XCYjMzQ7QXR0YWNoIHRvIGZ1bmN0aW9uICVzIHdpdGggYSBcdTAwM2U4IGJ5dGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgYXR0YWNoIHR5cGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0dG5hbWUpO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHQvKlxuIFx0XHQgKiAqLm11bHRpIHByb2dyYW1zIGRvbiYjMzk7dCBuZWVkIGFuIGFkZHJlc3MgZHVyaW5nIHByb2dyYW1cbiBcdFx0ICogdmVyaWZpY2F0aW9uLCB3ZSBqdXN0IHRha2UgdGhlIG1vZHVsZSByZWYgaWYgbmVlZGVkLlxuQEAgLTE5NDEzLDYgJiM0MzsxOTQzNSw5IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0XG4gXHRlcnIgPSBidGZfZGlzdGlsbF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgdCwgdG5hbWUsIFx1MDAyNnRndF9pbmZvLVx1MDAzZWZtb2RlbCk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdGlmICh0Z3RfaW5mby1cdTAwM2VmbW9kZWwucmV0X3NpemUgXHUwMDNlIDggXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKHByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpKVxuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0aWYgKGJ0Zl9pc19tb2R1bGUoYnRmKSkge1xuIFx0XHQvKiBUaGUgYnBmIHByb2dyYW0gYWxyZWFkeSBob2xkcyByZWZlcmVuY2UgdG8gbW9kdWxlLiAqL1xuIFx0XHRpZiAoV0FSTl9PTl9PTkNFKCFwcm9nLVx1MDAzZWF1eC1cdTAwM2Vtb2QpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmNcbmluZGV4IGY5ZjllMWNiODdiZjFjLi42YzE5OWY1ZmY0ZGI4YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX2ZhaWx1cmUuY1xuQEAgLTc2LDYgJiM0Mzs3NiwxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZleGl0X25vcmV0dXJucyh2b2lkKVxuIFx0XHRcdCAgICAgICBcJiMzNDtBdHRhY2hpbmcgZmV4aXQvZnNlc3Npb24vZm1vZF9yZXQgdG8gX19ub3JldHVybiBmdW5jdGlvbiAmIzM5O2RvX2V4aXQmIzM5OyBpcyByZWplY3RlZC5cJiMzNDspO1xuIH1cbiBcbiYjNDM7I2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fXG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfZmV4aXRfaW50MTI4X3JldCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0dGVzdF90cmFjaW5nX2ZhaWxfcHJvZyhcJiMzNDtmZXhpdF9pbnQxMjhfcmV0XCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgICAgXCYjMzQ7d2l0aCBhIFx1MDAzZTggYnl0ZSByZXR1cm4gdmFsdWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhdHRhY2ggdHlwZVwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7I2VuZGlmXG4mIzQzO1xuIHZvaWQgdGVzdF90cmFjaW5nX2ZhaWx1cmUodm9pZClcbiB7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDticGZfc3Bpbl9sb2NrXCYjMzQ7KSlcbkBAIC04Niw0ICYjNDM7OTQsOCBAQCB2b2lkIHRlc3RfdHJhY2luZ19mYWlsdXJlKHZvaWQpXG4gXHRcdHRlc3RfdHJhY2luZ19kZW55KCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtmZXhpdF9ub3JldHVybnNcJiMzNDspKVxuIFx0XHR0ZXN0X2ZleGl0X25vcmV0dXJucygpO1xuJiM0MzsjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X19cbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtmZXhpdF9pbnQxMjhfcmV0XCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3RfZmV4aXRfaW50MTI4X3JldCgpO1xuJiM0MzsjZW5kaWZcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfZmFpbHVyZS5jXG5pbmRleCA2NWU0ODVjNDQ2OGM2Mi4uZjdhMDk1NzY3Njc5NTQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19mYWlsdXJlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX2ZhaWx1cmUuY1xuQEAgLTMwLDMgJiM0MzszMCw5IEBAIGludCBCUEZfUFJPRyhmZXhpdF9ub3JldHVybnMpXG4ge1xuIFx0cmV0dXJuIDA7XG4gfVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0Oz9mZXhpdC9icGZfdGVzdG1vZF90ZXN0X2ludDEyOF9yZXRcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyhmZXhpdF9pbnQxMjhfcmV0KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xuaW5kZXggMzBmMWNkMjMwOTNjYmUuLjkwMmRiZjY1ODI1MDZmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xuQEAgLTE2MSw2ICYjNDM7MTYxLDE1IEBAIGJwZl90ZXN0bW9kX3Rlc3RfYXJnX3B0cl90b19zdHJ1Y3Qoc3RydWN0IGJwZl90ZXN0bW9kX3N0cnVjdF9hcmdfMSAqYSkge1xuIFx0cmV0dXJuIGJwZl90ZXN0bW9kX3Rlc3Rfc3RydWN0X2FyZ19yZXN1bHQ7XG4gfVxuIFxuJiM0MzsjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X19cbiYjNDM7bm9pbmxpbmUgX19pbnQxMjhcbiYjNDM7YnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KGludCBhKVxuJiM0Mzt7XG4mIzQzO1x0YnBmX3Rlc3Rtb2RfdGVzdF9zdHJ1Y3RfYXJnX3Jlc3VsdCA9IGE7XG4mIzQzO1x0cmV0dXJuIChfX2ludDEyOClhO1xuJiM0Mzt9XG4mIzQzOyNlbmRpZlxuJiM0MztcbiBfX3dlYWsgbm9pbmxpbmUgdm9pZCBicGZfdGVzdG1vZF9sb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb25nX25hbWUodm9pZClcbiB7XG4gfVxuQEAgLTUxNCw2ICYjNDM7NTIzLDEwIEBAIGJwZl90ZXN0bW9kX3Rlc3RfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosXG4gXG4gXHQodm9pZClicGZfdGVzdG1vZF90ZXN0X2FyZ19wdHJfdG9fc3RydWN0KFx1MDAyNnN0cnVjdF9hcmcxXzIpO1xuIFxuJiM0MzsjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X19cbiYjNDM7XHQodm9pZClicGZfdGVzdG1vZF90ZXN0X2ludDEyOF9yZXQoaSk7XG4mIzQzOyNlbmRpZlxuJiM0MztcbiBcdCh2b2lkKXRyYWNlX2JwZl90ZXN0bW9kX3Rlc3RfcmF3X3RwX251bGxfdHAoTlVMTCk7XG4gXG4gXHRicGZfdGVzdG1vZF90ZXN0X3N0cnVjdF9vcHMzKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgc3RydWN0X29wcyBpbml0aWFsaXphdGlvbiB0byByZWplY3QgYXR0YWNoaW5nIEJQRiBwcm9ncmFtcyB0byBmdW5jdGlvbnMgd2l0aCByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgKGUuZy4sIF9faW50MTI4KSB3aGVuIHRoZSBhdHRhY2ggdHlwZSB1c2VzIHRoZSB0cmFtcG9saW5lIHJldHVybiB2YWx1ZS4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3N2FkNDhiZWViNGMwYzE5NGEzMDY3MTU3MTlmNzUzNzc4YzE1ODA2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTEgMTE6NDc6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMgYi9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMKaW5kZXggNTFiMTZlNWY1NTM0ZTAuLmJiYjQ0ZWY4Zjg3YWE2IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jCkBAIC00NDUsNiAmIzQzOzQ0NSwxOCBAQCBpbnQgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0KHN0cnVjdCBicGZfc3RydWN0X29wc19kZXNjICpzdF9vcHNfZGVzYywKIAkJCWdvdG8gZXJyb3V0OwogCQl9CiAKJiM0MzsJCS8qCiYjNDM7CQkgKiBBICZndDs4IGJ5dGUgcmV0dXJuIHZhbHVlIGlzIHBhc3NlZCBiYWNrIGluIHRoZSBSMDpSMiByZWdpc3RlcgomIzQzOwkJICogcGFpciwgd2hpY2ggdGhlIHN0cnVjdF9vcHMgdHJhbXBvbGluZSBkb2VzIG5vdCBwcmVzZXJ2ZSAob25seQomIzQzOwkJICogOCBieXRlcyBvZiB0aGUgcmV0dXJuIHZhbHVlIGFyZSBzYXZlZCBhbmQgcmVzdG9yZWQpLgomIzQzOwkJICovCiYjNDM7CQlpZiAoc3Rfb3BzLSZndDtmdW5jX21vZGVsc1tpXS5yZXRfc2l6ZSAmZ3Q7IDgpIHsKJiM0MzsJCQlwcl93YXJuKCYjMzQ7ZnVuYyBwdHIgJXMgaW4gc3RydWN0ICVzIGhhcyBhICZndDs4IGJ5dGUgcmV0dXJuIHZhbHVlLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkXG4mIzM0OywKJiM0MzsJCQkJbW5hbWUsIHN0X29wcy0mZ3Q7bmFtZSk7CiYjNDM7CQkJZXJyID0gLUVPUE5PVFNVUFA7CiYjNDM7CQkJZ290byBlcnJvdXQ7CiYjNDM7CQl9CiYjNDM7CiAJCXN0dWJfZnVuY19hZGRyID0gKih2b2lkICoqKShzdF9vcHMtJmd0O2NmaV9zdHVicyAmIzQzOyBtb2ZmKTsKIAkJZXJyID0gcHJlcGFyZV9hcmdfaW5mbyhidGYsIHN0X29wcy0mZ3Q7bmFtZSwgbW5hbWUsCiAJCQkJICAgICAgIGZ1bmNfcHJvdG8sIHN0dWJfZnVuY19hZGRyLApkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDY1MTVkNGQzYzAwMzJmLi4yNmQyODFiNzdhNmU3MiAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTg4NzMsNiAmIzQzOzE4ODczLDIwIEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiCiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbChlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKQomIzQzO3sKJiM0MzsJc3dpdGNoICh0eXBlKSB7CiYjNDM7CWNhc2UgQlBGX01PRElGWV9SRVRVUk46CiYjNDM7CWNhc2UgQlBGX1RSQUNFX0ZFWElUOgomIzQzOwljYXNlIEJQRl9UUkFDRV9GRVhJVF9NVUxUSToKJiM0MzsJY2FzZSBCUEZfVFJBQ0VfRlNFU1NJT046CiYjNDM7CWNhc2UgQlBGX1RSQUNFX0ZTRVNTSU9OX01VTFRJOgomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywKIAkJCSAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csCiAJCQkgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZywKQEAgLTE5MTM3LDYgJiM0MzsxOTE1MSwxNCBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywKIAkJaWYgKHJldCAmbHQ7IDApCiAJCQlyZXR1cm4gcmV0OwogCiYjNDM7CQlpZiAodGd0X2luZm8tJmd0O2Ztb2RlbC5yZXRfc2l6ZSAmZ3Q7IDggJmFtcDsmYW1wOwomIzQzOwkJICAgIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKHByb2ctJmd0O2V4cGVjdGVkX2F0dGFjaF90eXBlKSkgewomIzQzOwkJCWJwZl9sb2cobG9nLAomIzQzOwkJCQkmIzM0O0F0dGFjaCB0byBmdW5jdGlvbiAlcyB3aXRoIGEgJmd0OzggYnl0ZSByZXR1cm4gdmFsdWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhdHRhY2ggdHlwZVxuJiMzNDssCiYjNDM7CQkJCXRuYW1lKTsKJiM0MzsJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CQl9CiYjNDM7CiAJCS8qCiAJCSAqICoubXVsdGkgcHJvZ3JhbXMgZG9uJiMzOTt0IG5lZWQgYW4gYWRkcmVzcyBkdXJpbmcgcHJvZ3JhbQogCQkgKiB2ZXJpZmljYXRpb24sIHdlIGp1c3QgdGFrZSB0aGUgbW9kdWxlIHJlZiBpZiBuZWVkZWQuCkBAIC0xOTQxMyw2ICYjNDM7MTk0MzUsOSBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidAogCWVyciA9IGJ0Zl9kaXN0aWxsX2Z1bmNfcHJvdG8oTlVMTCwgYnRmLCB0LCB0bmFtZSwgJmFtcDt0Z3RfaW5mby0mZ3Q7Zm1vZGVsKTsKIAlpZiAoZXJyICZsdDsgMCkKIAkJcmV0dXJuIGVycjsKJiM0MzsJaWYgKHRndF9pbmZvLSZndDtmbW9kZWwucmV0X3NpemUgJmd0OyA4ICZhbXA7JmFtcDsKJiM0MzsJICAgIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKHByb2ctJmd0O2V4cGVjdGVkX2F0dGFjaF90eXBlKSkKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKIAlpZiAoYnRmX2lzX21vZHVsZShidGYpKSB7CiAJCS8qIFRoZSBicGYgcHJvZ3JhbSBhbHJlYWR5IGhvbGRzIHJlZmVyZW5jZSB0byBtb2R1bGUuICovCiAJCWlmIChXQVJOX09OX09OQ0UoIXByb2ctJmd0O2F1eC0mZ3Q7bW9kKSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmMKaW5kZXggZjlmOWUxY2I4N2JmMWMuLjZjMTk5ZjVmZjRkYjhhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX2ZhaWx1cmUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX2ZhaWx1cmUuYwpAQCAtNzYsNiAmIzQzOzc2LDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RfZmV4aXRfbm9yZXR1cm5zKHZvaWQpCiAJCQkgICAgICAgJiMzNDtBdHRhY2hpbmcgZmV4aXQvZnNlc3Npb24vZm1vZF9yZXQgdG8gX19ub3JldHVybiBmdW5jdGlvbiAmIzM5O2RvX2V4aXQmIzM5OyBpcyByZWplY3RlZC4mIzM0Oyk7CiB9CiAKJiM0MzsjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18KJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2ZleGl0X2ludDEyOF9yZXQodm9pZCkKJiM0Mzt7CiYjNDM7CXRlc3RfdHJhY2luZ19mYWlsX3Byb2coJiMzNDtmZXhpdF9pbnQxMjhfcmV0JiMzNDssCiYjNDM7CQkJICAgICAgICYjMzQ7d2l0aCBhICZndDs4IGJ5dGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgYXR0YWNoIHR5cGUmIzM0Oyk7CiYjNDM7fQomIzQzOyNlbmRpZgomIzQzOwogdm9pZCB0ZXN0X3RyYWNpbmdfZmFpbHVyZSh2b2lkKQogewogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7YnBmX3NwaW5fbG9jayYjMzQ7KSkKQEAgLTg2LDQgJiM0Mzs5NCw4IEBAIHZvaWQgdGVzdF90cmFjaW5nX2ZhaWx1cmUodm9pZCkKIAkJdGVzdF90cmFjaW5nX2RlbnkoKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O2ZleGl0X25vcmV0dXJucyYjMzQ7KSkKIAkJdGVzdF9mZXhpdF9ub3JldHVybnMoKTsKJiM0MzsjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18KJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtmZXhpdF9pbnQxMjhfcmV0JiMzNDspKQomIzQzOwkJdGVzdF9mZXhpdF9pbnQxMjhfcmV0KCk7CiYjNDM7I2VuZGlmCiB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19mYWlsdXJlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19mYWlsdXJlLmMKaW5kZXggNjVlNDg1YzQ0NjhjNjIuLmY3YTA5NTc2NzY3OTU0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19mYWlsdXJlLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfZmFpbHVyZS5jCkBAIC0zMCwzICYjNDM7MzAsOSBAQCBpbnQgQlBGX1BST0coZmV4aXRfbm9yZXR1cm5zKQogewogCXJldHVybiAwOwogfQomIzQzOwomIzQzO1NFQygmIzM0Oz9mZXhpdC9icGZfdGVzdG1vZF90ZXN0X2ludDEyOF9yZXQmIzM0OykKJiM0MztpbnQgQlBGX1BST0coZmV4aXRfaW50MTI4X3JldCkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jCmluZGV4IDMwZjFjZDIzMDkzY2JlLi45MDJkYmY2NTgyNTA2ZiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jCkBAIC0xNjEsNiAmIzQzOzE2MSwxNSBAQCBicGZfdGVzdG1vZF90ZXN0X2FyZ19wdHJfdG9fc3RydWN0KHN0cnVjdCBicGZfdGVzdG1vZF9zdHJ1Y3RfYXJnXzEgKmEpIHsKIAlyZXR1cm4gYnBmX3Rlc3Rtb2RfdGVzdF9zdHJ1Y3RfYXJnX3Jlc3VsdDsKIH0KIAomIzQzOyNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfXwomIzQzO25vaW5saW5lIF9faW50MTI4CiYjNDM7YnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KGludCBhKQomIzQzO3sKJiM0MzsJYnBmX3Rlc3Rtb2RfdGVzdF9zdHJ1Y3RfYXJnX3Jlc3VsdCA9IGE7CiYjNDM7CXJldHVybiAoX19pbnQxMjgpYTsKJiM0Mzt9CiYjNDM7I2VuZGlmCiYjNDM7CiBfX3dlYWsgbm9pbmxpbmUgdm9pZCBicGZfdGVzdG1vZF9sb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb25nX25hbWUodm9pZCkKIHsKIH0KQEAgLTUxNCw2ICYjNDM7NTIzLDEwIEBAIGJwZl90ZXN0bW9kX3Rlc3RfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosCiAKIAkodm9pZClicGZfdGVzdG1vZF90ZXN0X2FyZ19wdHJfdG9fc3RydWN0KCZhbXA7c3RydWN0X2FyZzFfMik7CiAKJiM0MzsjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18KJiM0MzsJKHZvaWQpYnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KGkpOwomIzQzOyNlbmRpZgomIzQzOwogCSh2b2lkKXRyYWNlX2JwZl90ZXN0bW9kX3Rlc3RfcmF3X3RwX251bGxfdHAoTlVMTCk7CiAKIAlicGZfdGVzdG1vZF90ZXN0X3N0cnVjdF9vcHMzKCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MjUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFJldHVybiBWYWx1ZSBTaXplIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtYWtpbmcgYSBzcGVjaWZpYyBjaGFuZ2UgaW4gaG93IHdlIGhhbmRsZSByZXR1cm4gdmFsdWVzIGluIEJQRiBwcm9ncmFtcywgc3BlY2lmaWNhbGx5IHRob3NlIGxhcmdlciB0aGFuIDggYnl0ZXMuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIGBicGZfc3RydWN0X29wcy5jYCBhbmQgdGhlIHZlcmlmaWVyIChgdmVyaWZpZXIuY2ApLgoKRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGNoZWNrcyB0byAqcmVqZWN0KiBCUEYgcHJvZ3JhbXMgdGhhdCBhcmUgdHJ5aW5nIHRvIGF0dGFjaCB0byBmdW5jdGlvbnMgcmV0dXJuaW5nIHZhbHVlcyBncmVhdGVyIHRoYW4gOCBieXRlcywgbGlrZSBgX19pbnQxMjhgLiBJdCYjMzk7cyBkb2luZyB0aGlzIHRocm91Z2ggYSBmZXcga2V5IGFkZGl0aW9uczoKCiogICBJbiBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCwgaXQmIzM5O3Mgbm93IGNoZWNraW5nIGBzdF9vcHMtJmd0O2Z1bmNfbW9kZWxzW2ldLnJldF9zaXplYCBhZ2FpbnN0IDggYnl0ZXMsIGFuZCBpZiBpdCYjMzk7cyB0b28gbGFyZ2UsIGl0IHRocm93cyBhbiBgLUVPUE5PVFNVUFBgIGVycm9yLgoqICAgVGhlIHZlcmlmaWVyIGdldHMgYSBuZXcgZnVuY3Rpb24sIGBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbCgpYCwgbGlrZWx5IHRvIGRldGVybWluZSBpZiBhIHRyYW1wb2xpbmUgaXMgYmVpbmcgdXNlZC4KKiAgIFdpdGhpbiBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLCB0aGVyZSBhcmUgY2hlY2tzIHVzaW5nIGB0Z3RfaW5mby0mZ3Q7Zm1vZGVsLnJldF9zaXplYCBpbiBjb25qdW5jdGlvbiB3aXRoIGBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbCgpYCB0byBlbmZvcmNlIHRoaXMgc2l6ZSBsaW1pdCBiZWZvcmUgYWxsb3dpbmcgdGhlIHByb2dyYW0gdG8gYXR0YWNoLgoKVGhpcyBpcyBhICoqZnVuY3Rpb25hbCBjaGFuZ2UqKi4gSXQgbW9kaWZpZXMgZXhpc3RpbmcgbG9naWMgaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgdGhlIHN0cnVjdFxfb3BzIGluaXRpYWxpemF0aW9uLiBCZWZvcmUgdGhpcywgdGhlc2UgcHJvZ3JhbXMgbWlnaHQgaGF2ZSBiZWVuIGFsbG93ZWQsIGJ1dCBwcm9iYWJseSB3ZXJlIGJyb2tlbiBkdWUgdG8gdGhlIGxpbWl0YXRpb25zIG9mIHRoZSB0cmFtcG9saW5lIG1lY2hhbmlzbSBpbiBoYW5kbGluZyByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMuCgpHaXZlbiB0aGF0IGl0IG1vZGlmaWVzIHRoZSB2ZXJpZmllciBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMsIEkgZGVmaW5pdGVseSB0aGluayBmdXp6aW5nIGlzIHdhcnJhbnRlZCBoZXJlLiBXZSBuZWVkIHRvIGZvY3VzIG9uIHRob3NlIGtleSBzeW1ib2xzOiBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCwgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCwgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuCgpOb3csIHRvIGFzc2VzcyB0aGUgZnV6emluZyBzdHJhdGVneSwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgYGJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdGAgaXMgcmVhY2hhYmxlLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIGFyZSBwYXJ0IG9mIHRoZSB2ZXJpZmllciBjb2RlLCB3aGljaCBJICprbm93KiBpcyByZWFjaGFibGUuIEl0JiMzOTtzIGluIHRoZSBjb250cm9sIHBsYW5lLCBub3QgdGhlIGRhdGEgcGF0aCwgc28gaXQgaXNuJiMzOTt0IHBlcmZvcm1hbmNlLWNyaXRpY2FsIGNvZGUuCgpJJiMzOTttIGdvaW5nIHRvIGRvIGEgcXVpY2sgZ3JlcCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCByZWdhcmRpbmcgdGhvc2Ugc3ltYm9scyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oPTIyNjI9aW50IGJwZl9zdHJ1Y3Rfb3BzX3Rlc3RfcnVuKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmthdHRyLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMjI2NC0jZW5kaWZcbmluY2x1ZGUvbGludXgvYnBmLmg6MjI2NTppbnQgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0KHN0cnVjdCBicGZfc3RydWN0X29wc19kZXNjICpzdF9vcHNfZGVzYyxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjI2Ni1cdFx0XHQgICAgIHN0cnVjdCBidGYgKmJ0Zixcbi0tXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmM9MzI0PWludCBicGZfc3RydWN0X29wc19zdXBwb3J0ZWQoY29uc3Qgc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzICpzdF9vcHMsIHUzMiBtb2ZmKVxuLS1cbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYy0zMzAtXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmM6MzMxOmludCBicGZfc3RydWN0X29wc19kZXNjX2luaXQoc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzX2Rlc2MgKnN0X29wc19kZXNjLFxua2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jLTMzMi1cdFx0XHQgICAgIHN0cnVjdCBidGYgKmJ0Zixcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTk4MzU9YnRmX2FkZF9zdHJ1Y3Rfb3BzKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzICpzdF9vcHMsXG4tLVxua2VybmVsL2JwZi9idGYuYy05ODY2LVxua2VybmVsL2JwZi9idGYuYzo5ODY3Olx0ZXJyID0gYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0KFx1MDAyNnRhYi1cdTAwM2VvcHNbYnRmLVx1MDAzZXN0cnVjdF9vcHNfdGFiLVx1MDAzZWNudF0sIGJ0ZiwgbG9nKTtcbmtlcm5lbC9icGYvYnRmLmMtOTg2OC1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIyOQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKktlcm5lbCBCUEYgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGRpdmluZyBpbnRvIGtlcm5lbCBCUEYgY29uZmlndXJhdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgYEJQRl9TWVNDQUxMYCBpcyAqdGhlKiBrZXkgZW5hYmxlciBoZXJlLiBXaXRob3V0IHRoYXQsIHdlJiMzOTtyZSBub3QgZ29pbmcgYW55d2hlcmUuIEl0JiMzOTtzIHRoZSBseW5jaHBpbiBmb3IgZXZlcnl0aGluZy4gTm93LCB0byByZWFsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBpbXBhY3RzIHRoZSBzeXN0ZW0sIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IGJ5IGV4YW1pbmluZyB0d28gZmlsZXM6IGBrZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmNgIGFuZCBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gYGJwZl9zdHJ1Y3Rfb3BzLmNgIHdpbGwgc2hvdyBtZSBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgc3RydWN0dXJlcyB3aXRoaW4gdGhlIEJQRiBzeXN0ZW0gYW5kIG9wZXJhdGlvbnMsIHdoaWxlIGB2ZXJpZmllci5jYCBpcyBnb2luZyB0byBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjcnVjaWFsIHNlY3VyaXR5IGNoZWNrcyBhbmQgdmFsaWRhdGlvbiBzdGVwcy4gVW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGVzZSB0d28gaXMga2V5IHRvIHJlYWxseSBncmFzcGluZyB0aGUgY29uZmlndXJhdGlvbiYjMzk7cyBpbXBsaWNhdGlvbnMuIEl0IHdpbGwgcmVhbGx5IGxldCBtZSB1bmRlcnN0YW5kIGlmIGFueSBpbXBvcnRhbnQgbnVhbmNlcyBvciBsaW1pdGF0aW9ucyBhcmUgcHJlc2VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfQlBGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTI9b2JqLXkgOj0gY29yZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM6aWZuZXEgKCQoQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZS00LSMgX19fYnBmX3Byb2dfcnVuKCkgbmVlZHMgR0NTRSBkaXNhYmxlZCBvbiB4ODY7IHNlZSAzMTkzYzA4MzZmMjAzIGZvciBkZXRhaWxzXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGZpeHVwcy5vIGNmZy5vIHN0YXRlcy5vIGJhY2t0cmFjay5vIGNoZWNrX2J0Zi5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE1Om9iai0ke0NPTkZJR19CUEZfTFNNfVx0ICAmIzQzOz0gYnBmX2lub2RlX3N0b3JhZ2Uub1xua2VybmVsL2JwZi9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkaXNhc20ubyBtcHJvZy5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gdHJhbXBvbGluZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE5LWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGFyZW5hLm8gcmFuZ2VfdHJlZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIxLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gZGlzcGF0Y2hlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIzLWlmZXEgKCQoQ09ORklHX05FVCkseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gZGV2bWFwLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gY3B1bWFwLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gb2ZmbG9hZC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IG5ldF9uYW1lc3BhY2Uub1xua2VybmVsL2JwZi9NYWtlZmlsZToyODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSB0Y3gub1xua2VybmVsL2JwZi9NYWtlZmlsZS0yOS1lbmRpZlxua2VybmVsL2JwZi9NYWtlZmlsZT0zMD1pZmVxICgkKENPTkZJR19QRVJGX0VWRU5UUykseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc3RhY2ttYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZS0zMi1lbmRpZlxua2VybmVsL2JwZi9NYWtlZmlsZT0zMz1pZmVxICgkKENPTkZJR19DR1JPVVBTKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjZ3JvdXBfaXRlci5vIGJwZl9jZ3JwX3N0b3JhZ2Uub1xua2VybmVsL2JwZi9NYWtlZmlsZS0zNS1lbmRpZlxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9Mzc9aWZlcSAoJChDT05GSUdfSU5FVCkseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gcmV1c2Vwb3J0X2FycmF5Lm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMzktZW5kaWZcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTQyPWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQzOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9zdHJ1Y3Rfb3BzLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gY3B1bWFzay5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQ2LSMgYnBmX2xzbV9wcm90by5vIG11c3QgcHJlY2VkZSBicGZfbHNtLm8uIFRoZSBjdXJyZW50IHBhaG9sZSBsb2dpY1xuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGUtNTUtIyBzZW1hbnRpY3Mgd2l0aGluIHBhaG9sZSBhcmUgcmV2aXNpdGVkIGFjY29yZGluZ2x5Llxua2VybmVsL2JwZi9NYWtlZmlsZTo1NjpvYmotJHtDT05GSUdfQlBGX0xTTX0gJiM0Mzs9IGJwZl9sc21fcHJvdG8ubyBicGZfbHNtLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNTctZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU9NTg9aWZuZXEgKCQoQ09ORklHX0NSWVBUTyksKVxua2VybmVsL2JwZi9NYWtlZmlsZTo1OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcnlwdG8ub1xua2VybmVsL2JwZi9NYWtlZmlsZS02MC1lbmRpZlxua2VybmVsL2JwZi9NYWtlZmlsZTo2MTpvYmotJChDT05GSUdfQlBGX1BSRUxPQUQpICYjNDM7PSBwcmVsb2FkL1xua2VybmVsL2JwZi9NYWtlZmlsZS02Mi1cbmtlcm5lbC9icGYvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gcmVsb19jb3JlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnRmX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZTo2NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBidGZfcmVsb2NhdGUub1xua2VybmVsL2JwZi9NYWtlZmlsZTo2NjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBrbWVtX2NhY2hlX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZS02Ny1pZmVxICgkKENPTkZJR19ETUFfU0hBUkVEX0JVRkZFUikseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6Njg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gZG1hYnVmX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZS02OS1lbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNzQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBNb2R1bGUgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgQlBGIHBhdGNoIGFuZCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19CUEZfSklUYCBhcmUgZ29pbmcgdG8gYmUgcmVxdWlyZWQsIGVzcGVjaWFsbHkgc2luY2UgdGhleSYjMzk7cmUgbmVlZGVkIGZvciBgYnBmX3N0cnVjdF9vcHMub2AuIFRoZSB2ZXJpZmllciBpdHNlbGYgaXMsIG9mIGNvdXJzZSwgYnVpbHQgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgc28gdGhhdCYjMzk7cyBhIGdpdmVuLgoKTm93LCBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgKnNwZWNpZmljKiBjb25maWd1cmF0aW9ucyB0aWVkIHRvIHRoaXMgdGVzdCBtb2R1bGUuIFRoZSB0ZXN0IG1vZHVsZSBpbiBxdWVzdGlvbiBpcyBgYnBmX3Rlc3Rtb2QuY2AuIEkmIzM5O2QgdHlwaWNhbGx5IGV4cGVjdCB0byBzZWUgc29tZXRoaW5nIGxpa2UgYENPTkZJR19CUEZfS1BST0JFX09WRVJSSURFYCBvciBhIHNpbWlsYXIgZmxhZyBpbnZvbHZlZCBpbiBpdHMgYnVpbGQsIGJ1dCBzaW5jZSB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGNvcmUgQlBGIGxvZ2ljLCBpdCBtaWdodCBiZSBkaWZmZXJlbnQuCgpMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUga2V5IHN5bWJvbHMgdGhlIHBhdGNoIGZvY3VzZXMgb246IGBicGZfc3RydWN0X29wc19kZXNjX2luaXRgLCBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgLCBhbmQgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYC4gUmlnaHQsIHRoZSBmaXJzdCB0aGluZyBpcyB0byB2ZXJpZnkgaWYgYGJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdGAgaXMgZXZlbiByZWFjaGFibGUuIExvb2tpbmcgYXQgdGhlIGNvZGUsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBidGZfYWRkX3N0cnVjdF9vcHNgLCB3aGljaCBtYWtlcyBzZW5zZS4gYGJ0Zl9hZGRfc3RydWN0X29wc2AsIGluIHR1cm4sIGlzIGludm9rZWQgd2hlbiBCVEYgaXMgYmVpbmcgbG9hZGVkLiBHb29kLiBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGlzIGNhbGxlZCBkdXJpbmcgQlBGIHByb2dyYW0gYXR0YWNobWVudC4gQW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgaXMgc3BlY2lmaWNhbGx5IGZvciBtdWx0aS1wcm9ncmFtIGF0dGFjaG1lbnRzLgoKT2theSwgc28gYWxsIG9mIHRoZXNlIGFyZSBjbGVhcmx5IHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdGhyb3VnaCB0aGUgYGJwZigpYCBzeXNjYWxsLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgY29uZmlybXMgdGhhdCB0aGVzZSBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlci1zcGFjZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQmIzM5O3MgY2lyY2xlIGJhY2sgdG8gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyBhZ2Fpbi4gV2UgaGF2ZSB0byBjb25maXJtIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfQlBGX0pJVGAgYXJlIHRoZSBvbmx5ICpjcml0aWNhbCogb25lcywgYXQgbGVhc3QgZm9yIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkuCgpGaW5hbGx5LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgaG93IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgYmVpbmcgdXNlZCwgc3BlY2lmaWNhbGx5IGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIGxvb2sgZm9yIGFueXRoaW5nIEkmIzM5O3ZlIG1pc3NlZC4gSXQgcGF5cyB0byBiZSB0aG9yb3VnaCB3aXRoIHRoZSB2ZXJpZmllci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE4ODg9c3RhdGljIGludCBwcm9jZXNzX2tmX2FyZ19wdHJfdG9fcmJ0cmVlX25vZGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4OTktICogTFNNIGhvb2tzIGFuZCBpdGVycyAoYm90aCBzbGVlcGFibGUgYW5kIG5vbi1zbGVlcGFibGUpIGFyZSBzYWZlLlxua2VybmVsL2JwZi92ZXJpZmllci5jOjExOTAwOiAqIEFueSBzbGVlcGFibGUgcHJvZ3MgYXJlIGFsc28gc2FmZSBzaW5jZSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCgpIGVuZm9yY2Vcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTkwMS0gKiB0aGVtIGNhbiBvbmx5IGJlIGF0dGFjaGVkIHRvIHNvbWUgc3BlY2lmaWMgaG9vayBwb2ludHMuXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4ODc2PXN0YXRpYyBib29sIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODg5LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4ODkwOmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODkxLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzAzPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzMy1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTMzNDpcdHJldCA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KFx1MDAyNmVudi1cdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFx1MDAyNnRndF9pbmZvKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzNS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM1MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkRlbHZpbmcgaW50byBlQlBGIEF0dGFjaG1lbnQgVmFsaWRhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGF0dGFjaG1lbnQgdmFsaWRhdGlvbiBwcm9jZXNzLiBJdCYjMzk7cyBjbGVhciB0aGF0IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgZ2V0cyBpbnZva2VkIGZyb20gYGNoZWNrX2F0dGFjaF9idGZfaWRgLCB3aGljaCBpcyBhIGtleSBjb21wb25lbnQgb2YgdGhlIHZlcmlmaWVyLiBUaGF0IGNvbmZpcm1zIG15IGluaXRpYWwgdW5kZXJzdGFuZGluZy4gTm93IEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBtdWx0aXBsZSBhdHRhY2htZW50IHBvaW50cy4gSSYjMzk7bSBnb2luZyB0byBsb29rIG1vcmUgY2xvc2VseSBhdCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIHRvIHVuZGVyc3RhbmQgaG93IHRoYXQgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTMwMz1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MDItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk0MDM6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDA0LVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MzYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgYW5kIHRoaXMgaXMgdGhlIGNvbnRleHQ6CgoqKkludmVzdGlnYXRpbmcgRnVuY3Rpb24gVXNhZ2UqKgoKQWxyaWdodCwgdGhpcyBmdW5jdGlvbi4uLiBpdCYjMzk7cyBlaXRoZXIgZXhwb3J0ZWQgb3IgdXNlZCBvdXRzaWRlIG9mIGl0cyBjdXJyZW50IHNjb3BlLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgYnJvYWRlciBpbXBhY3QuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiBVbmRlcnN0YW5kaW5nIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHRoZSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIHRoYXQgcmVseSBvbiBpdCBpcyBhYnNvbHV0ZWx5IGNydWNpYWwuIEkgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UgdG8gZ2FpbiBhIGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcgb2YgaXRzIGltcGxpY2F0aW9ucy4gVGhhdCYjMzk7cyB0aGUgcHJpb3JpdHkgcmlnaHQgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oPTE1OTI9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE1OTUtLyogRnVuY3Rpb25zIGV4cG9ydGVkIGZyb20gdmVyaWZpZXIuYywgdXNlZCBieSB0cmFtcG9saW5lLmMgKi9cbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg6MTU5NjppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE1OTctXHRcdFx0XHQgIHN0cnVjdCBicGZfYXR0YWNoX3RhcmdldF9pbmZvICp0Z3RfaW5mbyk7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTYxMT1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTYyNC1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2MjU6XHRcdGVyciA9IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKGJ0ZiwgcHJvZywgaWRzW2ldLCBcdTAwMjZ0Z3RfaW5mbyk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjI2LVx0XHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTMwMz1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MDItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk0MDM6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDA0LVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNDkKCQkJCQkJCW91dHB1dDogMTQ4CgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBUcmFtcG9saW5lIFJldHVybiBWYWx1ZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIG9yaWdpbmF0ZXMgZnJvbSBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoYC4gVGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2UgZm9jdXNlcyBvbiBwcmV2ZW50aW5nIGEgQlBGIHByb2dyYW0gZnJvbSBiZWluZyBhdHRhY2hlZCB0byBmdW5jdGlvbnMgdGhhdCByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMsIHNwZWNpZmljYWxseSB0aG9zZSBsaWtlIGBfX2ludDEyOGAsIHdoZW4gdXNpbmcgdGhlIHRyYW1wb2xpbmUgcmV0dXJuIHZhbHVlIGF0dGFjaCB0eXBlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBgYnBmKClgIHN5c2NhbGwsIHdoaWNoIGlzIGltcG9ydGFudCB0byBjb25zaWRlciBpbiB0aGUgb3ZlcmFsbCBzZWN1cml0eSBwcm9maWxlLgoKRnJvbSBhbiBhbmFseXNpcyBwZXJzcGVjdGl2ZSwgaXQgbG9va3MgbGlrZSBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0pJVGAgYXJlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgdG8gZXhwb3NlIHRoaXMgZnVuY3Rpb25hbGl0eS4gVGhlIGNoYW5nZSB0b3VjaGVzIGtleSBhcmVhcywgd2hpY2ggbWVhbnMgaXQgc2hvdWxkIGJlIHNjcnV0aW5pemVkOiAgc3BlY2lmaWNhbGx5LCBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCwgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCwgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuIFRoZXNlIHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgcG9pbnRzIG9mIHZhbGlkYXRpb24gYW5kIGNoZWNraW5nIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyIGFuZCBzdHJ1Y3Rfb3BzIGluaXRpYWxpemF0aW9uIHJlbGF0ZWQgdG8gdGhpcyBjb25zdHJhaW50LgoKQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyB0aGUgcmVzdWx0czogYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGB0cnVlYCwgYmVjYXVzZSB0aGUgY2hhbmdlcyBoZXJlIGRlYWwgd2l0aCB0aGUgdmFsaWRhdGlvbiBvZiByZXR1cm4gdmFsdWUgc2l6ZXMsIGFuZCBzeXNjYWxscyBhcmUgYWx3YXlzIGEgZ29vZCBhcmVhIHRvIGZvY3VzIG9uLiBFbmFibGVDb25maWdzIGFyZSBjbGVhcmx5IGBbJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LCAmIzM0O0JQRl9KSVQmIzM0O11gLCBhbmQgdGhlIGNyaXRpY2FsIGBGb2N1c1N5bWJvbHNgIGFyZSBgWyYjMzQ7YnBmX3N0cnVjdF9vcHNfZGVzY19pbml0JiMzNDssICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF90YXJnZXQmIzM0OywgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7XWAuIFRoZSByZWFzb25pbmcgc2hvdWxkIGJlOiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgc3RydWN0X29wcyBpbml0aWFsaXphdGlvbiB0byByZWplY3QgYXR0YWNoaW5nIEJQRiBwcm9ncmFtcyB0byBmdW5jdGlvbnMgd2l0aCByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgKGUuZy4sIF9faW50MTI4KSB3aGVuIHRoZSBhdHRhY2ggdHlwZSB1c2VzIHRoZSB0cmFtcG9saW5lIHJldHVybiB2YWx1ZS4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsLiYjMzQ7CgpOb3cgSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIHZhbHVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfc3RydWN0X29wc19kZXNjX2luaXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF90YXJnZXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGluIHRoZSBCUEYgdmVyaWZpZXIgYW5kIHN0cnVjdF9vcHMgaW5pdGlhbGl6YXRpb24gdG8gcmVqZWN0IGF0dGFjaGluZyBCUEYgcHJvZ3JhbXMgdG8gZnVuY3Rpb25zIHdpdGggcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzIChlLmcuLCBfX2ludDEyOCkgd2hlbiB0aGUgYXR0YWNoIHR5cGUgdXNlcyB0aGUgdHJhbXBvbGluZSByZXR1cm4gdmFsdWUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgc3RydWN0X29wcyBpbml0aWFsaXphdGlvbiB0byByZWplY3QgYXR0YWNoaW5nIEJQRiBwcm9ncmFtcyB0byBmdW5jdGlvbnMgd2l0aCByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgKGUuZy4sIF9faW50MTI4KSB3aGVuIHRoZSBhdHRhY2ggdHlwZSB1c2VzIHRoZSB0cmFtcG9saW5lIHJldHVybiB2YWx1ZS4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6MjguNTE1MTI0MzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTIyNDIzOTQzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdFwiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGluIHRoZSBCUEYgdmVyaWZpZXIgYW5kIHN0cnVjdF9vcHMgaW5pdGlhbGl6YXRpb24gdG8gcmVqZWN0IGF0dGFjaGluZyBCUEYgcHJvZ3JhbXMgdG8gZnVuY3Rpb25zIHdpdGggcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzIChlLmcuLCBfX2ludDEyOCkgd2hlbiB0aGUgYXR0YWNoIHR5cGUgdXNlcyB0aGUgdHJhbXBvbGluZSByZXR1cm4gdmFsdWUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6MjguNTE1MTMxMTRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODkyODY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDc3YWQ0OGJlZWI0YzBjMTk0YTMwNjcxNTcxOWY3NTM3NzhjMTU4MDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTE6NDc6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jIGIva2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jXFxuaW5kZXggNTFiMTZlNWY1NTM0ZTAuLmJiYjQ0ZWY4Zjg3YWE2IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuY1xcbisrKyBiL2tlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuY1xcbkBAIC00NDUsNiArNDQ1LDE4IEBAIGludCBicGZfc3RydWN0X29wc19kZXNjX2luaXQoc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzX2Rlc2MgKnN0X29wc19kZXNjLFxcbiBcXHRcXHRcXHRnb3RvIGVycm91dDtcXG4gXFx0XFx0fVxcbiBcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogQSBcXHUwMDNlOCBieXRlIHJldHVybiB2YWx1ZSBpcyBwYXNzZWQgYmFjayBpbiB0aGUgUjA6UjIgcmVnaXN0ZXJcXG4rXFx0XFx0ICogcGFpciwgd2hpY2ggdGhlIHN0cnVjdF9vcHMgdHJhbXBvbGluZSBkb2VzIG5vdCBwcmVzZXJ2ZSAob25seVxcbitcXHRcXHQgKiA4IGJ5dGVzIG9mIHRoZSByZXR1cm4gdmFsdWUgYXJlIHNhdmVkIGFuZCByZXN0b3JlZCkuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoc3Rfb3BzLVxcdTAwM2VmdW5jX21vZGVsc1tpXS5yZXRfc2l6ZSBcXHUwMDNlIDgpIHtcXG4rXFx0XFx0XFx0cHJfd2FybihcXFwiZnVuYyBwdHIgJXMgaW4gc3RydWN0ICVzIGhhcyBhIFxcdTAwM2U4IGJ5dGUgcmV0dXJuIHZhbHVlLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRtbmFtZSwgc3Rfb3BzLVxcdTAwM2VuYW1lKTtcXG4rXFx0XFx0XFx0ZXJyID0gLUVPUE5PVFNVUFA7XFxuK1xcdFxcdFxcdGdvdG8gZXJyb3V0O1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRzdHViX2Z1bmNfYWRkciA9ICoodm9pZCAqKikoc3Rfb3BzLVxcdTAwM2VjZmlfc3R1YnMgKyBtb2ZmKTtcXG4gXFx0XFx0ZXJyID0gcHJlcGFyZV9hcmdfaW5mbyhidGYsIHN0X29wcy1cXHUwMDNlbmFtZSwgbW5hbWUsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBmdW5jX3Byb3RvLCBzdHViX2Z1bmNfYWRkcixcXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggNjUxNWQ0ZDNjMDAzMmYuLjI2ZDI4MWI3N2E2ZTcyIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC0xODg3Myw2ICsxODg3MywyMCBAQCBzdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYlxcbiBcXHRyZXR1cm4gLUVJTlZBTDtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgYXR0YWNoX3VzZXNfdHJhbXBvbGluZV9yZXR2YWwoZW51bSBicGZfYXR0YWNoX3R5cGUgdHlwZSlcXG4re1xcbitcXHRzd2l0Y2ggKHR5cGUpIHtcXG4rXFx0Y2FzZSBCUEZfTU9ESUZZX1JFVFVSTjpcXG4rXFx0Y2FzZSBCUEZfVFJBQ0VfRkVYSVQ6XFxuK1xcdGNhc2UgQlBGX1RSQUNFX0ZFWElUX01VTFRJOlxcbitcXHRjYXNlIEJQRl9UUkFDRV9GU0VTU0lPTjpcXG4rXFx0Y2FzZSBCUEZfVFJBQ0VfRlNFU1NJT05fTVVMVEk6XFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rfVxcbitcXG4gaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuIFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuIFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnRndF9wcm9nLFxcbkBAIC0xOTEzNyw2ICsxOTE1MSwxNCBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4gXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbitcXHRcXHRpZiAodGd0X2luZm8tXFx1MDAzZWZtb2RlbC5yZXRfc2l6ZSBcXHUwMDNlIDggXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKHByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKSkge1xcbitcXHRcXHRcXHRicGZfbG9nKGxvZyxcXG4rXFx0XFx0XFx0XFx0XFxcIkF0dGFjaCB0byBmdW5jdGlvbiAlcyB3aXRoIGEgXFx1MDAzZTggYnl0ZSByZXR1cm4gdmFsdWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhdHRhY2ggdHlwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0dG5hbWUpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdFxcdH1cXG4rXFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqICoubXVsdGkgcHJvZ3JhbXMgZG9uJ3QgbmVlZCBhbiBhZGRyZXNzIGR1cmluZyBwcm9ncmFtXFxuIFxcdFxcdCAqIHZlcmlmaWNhdGlvbiwgd2UganVzdCB0YWtlIHRoZSBtb2R1bGUgcmVmIGlmIG5lZWRlZC5cXG5AQCAtMTk0MTMsNiArMTk0MzUsOSBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidFxcbiBcXHRlcnIgPSBidGZfZGlzdGlsbF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgdCwgdG5hbWUsIFxcdTAwMjZ0Z3RfaW5mby1cXHUwMDNlZm1vZGVsKTtcXG4gXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdGlmICh0Z3RfaW5mby1cXHUwMDNlZm1vZGVsLnJldF9zaXplIFxcdTAwM2UgOCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgYXR0YWNoX3VzZXNfdHJhbXBvbGluZV9yZXR2YWwocHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpKVxcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcdGlmIChidGZfaXNfbW9kdWxlKGJ0ZikpIHtcXG4gXFx0XFx0LyogVGhlIGJwZiBwcm9ncmFtIGFscmVhZHkgaG9sZHMgcmVmZXJlbmNlIHRvIG1vZHVsZS4gKi9cXG4gXFx0XFx0aWYgKFdBUk5fT05fT05DRSghcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2Vtb2QpKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX2ZhaWx1cmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jXFxuaW5kZXggZjlmOWUxY2I4N2JmMWMuLjZjMTk5ZjVmZjRkYjhhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmNcXG5AQCAtNzYsNiArNzYsMTQgQEAgc3RhdGljIHZvaWQgdGVzdF9mZXhpdF9ub3JldHVybnModm9pZClcXG4gXFx0XFx0XFx0ICAgICAgIFxcXCJBdHRhY2hpbmcgZmV4aXQvZnNlc3Npb24vZm1vZF9yZXQgdG8gX19ub3JldHVybiBmdW5jdGlvbiAnZG9fZXhpdCcgaXMgcmVqZWN0ZWQuXFxcIik7XFxuIH1cXG4gXFxuKyNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfX1xcbitzdGF0aWMgdm9pZCB0ZXN0X2ZleGl0X2ludDEyOF9yZXQodm9pZClcXG4re1xcbitcXHR0ZXN0X3RyYWNpbmdfZmFpbF9wcm9nKFxcXCJmZXhpdF9pbnQxMjhfcmV0XFxcIixcXG4rXFx0XFx0XFx0ICAgICAgIFxcXCJ3aXRoIGEgXFx1MDAzZTggYnl0ZSByZXR1cm4gdmFsdWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhdHRhY2ggdHlwZVxcXCIpO1xcbit9XFxuKyNlbmRpZlxcbitcXG4gdm9pZCB0ZXN0X3RyYWNpbmdfZmFpbHVyZSh2b2lkKVxcbiB7XFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJicGZfc3Bpbl9sb2NrXFxcIikpXFxuQEAgLTg2LDQgKzk0LDggQEAgdm9pZCB0ZXN0X3RyYWNpbmdfZmFpbHVyZSh2b2lkKVxcbiBcXHRcXHR0ZXN0X3RyYWNpbmdfZGVueSgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwiZmV4aXRfbm9yZXR1cm5zXFxcIikpXFxuIFxcdFxcdHRlc3RfZmV4aXRfbm9yZXR1cm5zKCk7XFxuKyNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfX1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwiZmV4aXRfaW50MTI4X3JldFxcXCIpKVxcbitcXHRcXHR0ZXN0X2ZleGl0X2ludDEyOF9yZXQoKTtcXG4rI2VuZGlmXFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfZmFpbHVyZS5jXFxuaW5kZXggNjVlNDg1YzQ0NjhjNjIuLmY3YTA5NTc2NzY3OTU0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX2ZhaWx1cmUuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX2ZhaWx1cmUuY1xcbkBAIC0zMCwzICszMCw5IEBAIGludCBCUEZfUFJPRyhmZXhpdF9ub3JldHVybnMpXFxuIHtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4rXFxuK1NFQyhcXFwiP2ZleGl0L2JwZl90ZXN0bW9kX3Rlc3RfaW50MTI4X3JldFxcXCIpXFxuK2ludCBCUEZfUFJPRyhmZXhpdF9pbnQxMjhfcmV0KVxcbit7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXFxuaW5kZXggMzBmMWNkMjMwOTNjYmUuLjkwMmRiZjY1ODI1MDZmIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXFxuQEAgLTE2MSw2ICsxNjEsMTUgQEAgYnBmX3Rlc3Rtb2RfdGVzdF9hcmdfcHRyX3RvX3N0cnVjdChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfc3RydWN0X2FyZ18xICphKSB7XFxuIFxcdHJldHVybiBicGZfdGVzdG1vZF90ZXN0X3N0cnVjdF9hcmdfcmVzdWx0O1xcbiB9XFxuIFxcbisjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X19cXG4rbm9pbmxpbmUgX19pbnQxMjhcXG4rYnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KGludCBhKVxcbit7XFxuK1xcdGJwZl90ZXN0bW9kX3Rlc3Rfc3RydWN0X2FyZ19yZXN1bHQgPSBhO1xcbitcXHRyZXR1cm4gKF9faW50MTI4KWE7XFxuK31cXG4rI2VuZGlmXFxuK1xcbiBfX3dlYWsgbm9pbmxpbmUgdm9pZCBicGZfdGVzdG1vZF9sb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb25nX25hbWUodm9pZClcXG4ge1xcbiB9XFxuQEAgLTUxNCw2ICs1MjMsMTAgQEAgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4gXFxuIFxcdCh2b2lkKWJwZl90ZXN0bW9kX3Rlc3RfYXJnX3B0cl90b19zdHJ1Y3QoXFx1MDAyNnN0cnVjdF9hcmcxXzIpO1xcbiBcXG4rI2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fXFxuK1xcdCh2b2lkKWJwZl90ZXN0bW9kX3Rlc3RfaW50MTI4X3JldChpKTtcXG4rI2VuZGlmXFxuK1xcbiBcXHQodm9pZCl0cmFjZV9icGZfdGVzdG1vZF90ZXN0X3Jhd190cF9udWxsX3RwKE5VTEwpO1xcbiBcXG4gXFx0YnBmX3Rlc3Rtb2RfdGVzdF9zdHJ1Y3Rfb3BzMygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMTo0NzoyOC45MzQ5NjQ0MTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODA0MzkxMDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0XCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgc3RydWN0X29wcyBpbml0aWFsaXphdGlvbiB0byByZWplY3QgYXR0YWNoaW5nIEJQRiBwcm9ncmFtcyB0byBmdW5jdGlvbnMgd2l0aCByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgKGUuZy4sIF9faW50MTI4KSB3aGVuIHRoZSBhdHRhY2ggdHlwZSB1c2VzIHRoZSB0cmFtcG9saW5lIHJldHVybiB2YWx1ZS4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc3YWQ0OGJlZWI0YzBjMTk0YTMwNjcxNTcxOWY3NTM3NzhjMTU4MDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxMTo0NzoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYyBiL2tlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuY1xuaW5kZXggNTFiMTZlNWY1NTM0ZTAuLmJiYjQ0ZWY4Zjg3YWE2IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jXG4rKysgYi9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmNcbkBAIC00NDUsNiArNDQ1LDE4IEBAIGludCBicGZfc3RydWN0X29wc19kZXNjX2luaXQoc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzX2Rlc2MgKnN0X29wc19kZXNjLFxuIFx0XHRcdGdvdG8gZXJyb3V0O1xuIFx0XHR9XG4gXG4rXHRcdC8qXG4rXHRcdCAqIEEgXHUwMDNlOCBieXRlIHJldHVybiB2YWx1ZSBpcyBwYXNzZWQgYmFjayBpbiB0aGUgUjA6UjIgcmVnaXN0ZXJcbitcdFx0ICogcGFpciwgd2hpY2ggdGhlIHN0cnVjdF9vcHMgdHJhbXBvbGluZSBkb2VzIG5vdCBwcmVzZXJ2ZSAob25seVxuK1x0XHQgKiA4IGJ5dGVzIG9mIHRoZSByZXR1cm4gdmFsdWUgYXJlIHNhdmVkIGFuZCByZXN0b3JlZCkuXG4rXHRcdCAqL1xuK1x0XHRpZiAoc3Rfb3BzLVx1MDAzZWZ1bmNfbW9kZWxzW2ldLnJldF9zaXplIFx1MDAzZSA4KSB7XG4rXHRcdFx0cHJfd2FybihcImZ1bmMgcHRyICVzIGluIHN0cnVjdCAlcyBoYXMgYSBcdTAwM2U4IGJ5dGUgcmV0dXJuIHZhbHVlLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkXFxuXCIsXG4rXHRcdFx0XHRtbmFtZSwgc3Rfb3BzLVx1MDAzZW5hbWUpO1xuK1x0XHRcdGVyciA9IC1FT1BOT1RTVVBQO1xuK1x0XHRcdGdvdG8gZXJyb3V0O1xuK1x0XHR9XG4rXG4gXHRcdHN0dWJfZnVuY19hZGRyID0gKih2b2lkICoqKShzdF9vcHMtXHUwMDNlY2ZpX3N0dWJzICsgbW9mZik7XG4gXHRcdGVyciA9IHByZXBhcmVfYXJnX2luZm8oYnRmLCBzdF9vcHMtXHUwMDNlbmFtZSwgbW5hbWUsXG4gXHRcdFx0XHQgICAgICAgZnVuY19wcm90bywgc3R1Yl9mdW5jX2FkZHIsXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA2NTE1ZDRkM2MwMDMyZi4uMjZkMjgxYjc3YTZlNzIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTE4ODczLDYgKzE4ODczLDIwIEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiXG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG4gXG4rc3RhdGljIGJvb2wgYXR0YWNoX3VzZXNfdHJhbXBvbGluZV9yZXR2YWwoZW51bSBicGZfYXR0YWNoX3R5cGUgdHlwZSlcbit7XG4rXHRzd2l0Y2ggKHR5cGUpIHtcbitcdGNhc2UgQlBGX01PRElGWV9SRVRVUk46XG4rXHRjYXNlIEJQRl9UUkFDRV9GRVhJVDpcbitcdGNhc2UgQlBGX1RSQUNFX0ZFWElUX01VTFRJOlxuK1x0Y2FzZSBCUEZfVFJBQ0VfRlNFU1NJT046XG4rXHRjYXNlIEJQRl9UUkFDRV9GU0VTU0lPTl9NVUxUSTpcbitcdFx0cmV0dXJuIHRydWU7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rfVxuK1xuIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXG5AQCAtMTkxMzcsNiArMTkxNTEsMTQgQEAgaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcbitcdFx0aWYgKHRndF9pbmZvLVx1MDAzZWZtb2RlbC5yZXRfc2l6ZSBcdTAwM2UgOCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKHByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpKSB7XG4rXHRcdFx0YnBmX2xvZyhsb2csXG4rXHRcdFx0XHRcIkF0dGFjaCB0byBmdW5jdGlvbiAlcyB3aXRoIGEgXHUwMDNlOCBieXRlIHJldHVybiB2YWx1ZSBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGF0dGFjaCB0eXBlXFxuXCIsXG4rXHRcdFx0XHR0bmFtZSk7XG4rXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0XHR9XG4rXG4gXHRcdC8qXG4gXHRcdCAqICoubXVsdGkgcHJvZ3JhbXMgZG9uJ3QgbmVlZCBhbiBhZGRyZXNzIGR1cmluZyBwcm9ncmFtXG4gXHRcdCAqIHZlcmlmaWNhdGlvbiwgd2UganVzdCB0YWtlIHRoZSBtb2R1bGUgcmVmIGlmIG5lZWRlZC5cbkBAIC0xOTQxMyw2ICsxOTQzNSw5IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0XG4gXHRlcnIgPSBidGZfZGlzdGlsbF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgdCwgdG5hbWUsIFx1MDAyNnRndF9pbmZvLVx1MDAzZWZtb2RlbCk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuK1x0aWYgKHRndF9pbmZvLVx1MDAzZWZtb2RlbC5yZXRfc2l6ZSBcdTAwM2UgOCBcdTAwMjZcdTAwMjZcbitcdCAgICBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbChwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKSlcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0aWYgKGJ0Zl9pc19tb2R1bGUoYnRmKSkge1xuIFx0XHQvKiBUaGUgYnBmIHByb2dyYW0gYWxyZWFkeSBob2xkcyByZWZlcmVuY2UgdG8gbW9kdWxlLiAqL1xuIFx0XHRpZiAoV0FSTl9PTl9PTkNFKCFwcm9nLVx1MDAzZWF1eC1cdTAwM2Vtb2QpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmNcbmluZGV4IGY5ZjllMWNiODdiZjFjLi42YzE5OWY1ZmY0ZGI4YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX2ZhaWx1cmUuY1xuQEAgLTc2LDYgKzc2LDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RfZmV4aXRfbm9yZXR1cm5zKHZvaWQpXG4gXHRcdFx0ICAgICAgIFwiQXR0YWNoaW5nIGZleGl0L2ZzZXNzaW9uL2Ztb2RfcmV0IHRvIF9fbm9yZXR1cm4gZnVuY3Rpb24gJ2RvX2V4aXQnIGlzIHJlamVjdGVkLlwiKTtcbiB9XG4gXG4rI2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fXG4rc3RhdGljIHZvaWQgdGVzdF9mZXhpdF9pbnQxMjhfcmV0KHZvaWQpXG4re1xuK1x0dGVzdF90cmFjaW5nX2ZhaWxfcHJvZyhcImZleGl0X2ludDEyOF9yZXRcIixcbitcdFx0XHQgICAgICAgXCJ3aXRoIGEgXHUwMDNlOCBieXRlIHJldHVybiB2YWx1ZSBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGF0dGFjaCB0eXBlXCIpO1xuK31cbisjZW5kaWZcbitcbiB2b2lkIHRlc3RfdHJhY2luZ19mYWlsdXJlKHZvaWQpXG4ge1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJicGZfc3Bpbl9sb2NrXCIpKVxuQEAgLTg2LDQgKzk0LDggQEAgdm9pZCB0ZXN0X3RyYWNpbmdfZmFpbHVyZSh2b2lkKVxuIFx0XHR0ZXN0X3RyYWNpbmdfZGVueSgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJmZXhpdF9ub3JldHVybnNcIikpXG4gXHRcdHRlc3RfZmV4aXRfbm9yZXR1cm5zKCk7XG4rI2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fXG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcImZleGl0X2ludDEyOF9yZXRcIikpXG4rXHRcdHRlc3RfZmV4aXRfaW50MTI4X3JldCgpO1xuKyNlbmRpZlxuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19mYWlsdXJlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19mYWlsdXJlLmNcbmluZGV4IDY1ZTQ4NWM0NDY4YzYyLi5mN2EwOTU3Njc2Nzk1NCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX2ZhaWx1cmUuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfZmFpbHVyZS5jXG5AQCAtMzAsMyArMzAsOSBAQCBpbnQgQlBGX1BST0coZmV4aXRfbm9yZXR1cm5zKVxuIHtcbiBcdHJldHVybiAwO1xuIH1cbitcbitTRUMoXCI/ZmV4aXQvYnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0XCIpXG4raW50IEJQRl9QUk9HKGZleGl0X2ludDEyOF9yZXQpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG5pbmRleCAzMGYxY2QyMzA5M2NiZS4uOTAyZGJmNjU4MjUwNmYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG5AQCAtMTYxLDYgKzE2MSwxNSBAQCBicGZfdGVzdG1vZF90ZXN0X2FyZ19wdHJfdG9fc3RydWN0KHN0cnVjdCBicGZfdGVzdG1vZF9zdHJ1Y3RfYXJnXzEgKmEpIHtcbiBcdHJldHVybiBicGZfdGVzdG1vZF90ZXN0X3N0cnVjdF9hcmdfcmVzdWx0O1xuIH1cbiBcbisjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X19cbitub2lubGluZSBfX2ludDEyOFxuK2JwZl90ZXN0bW9kX3Rlc3RfaW50MTI4X3JldChpbnQgYSlcbit7XG4rXHRicGZfdGVzdG1vZF90ZXN0X3N0cnVjdF9hcmdfcmVzdWx0ID0gYTtcbitcdHJldHVybiAoX19pbnQxMjgpYTtcbit9XG4rI2VuZGlmXG4rXG4gX193ZWFrIG5vaW5saW5lIHZvaWQgYnBmX3Rlc3Rtb2RfbG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZ19uYW1lKHZvaWQpXG4ge1xuIH1cbkBAIC01MTQsNiArNTIzLDEwIEBAIGJwZl90ZXN0bW9kX3Rlc3RfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosXG4gXG4gXHQodm9pZClicGZfdGVzdG1vZF90ZXN0X2FyZ19wdHJfdG9fc3RydWN0KFx1MDAyNnN0cnVjdF9hcmcxXzIpO1xuIFxuKyNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfX1xuK1x0KHZvaWQpYnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KGkpO1xuKyNlbmRpZlxuK1xuIFx0KHZvaWQpdHJhY2VfYnBmX3Rlc3Rtb2RfdGVzdF9yYXdfdHBfbnVsbF90cChOVUxMKTtcbiBcbiBcdGJwZl90ZXN0bW9kX3Rlc3Rfc3RydWN0X29wczMoKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjQ3OjI4LjkzNDk2NjU5NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MTExNzk4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFJldHVybiBWYWx1ZSBTaXplIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtYWtpbmcgYSBzcGVjaWZpYyBjaGFuZ2UgaW4gaG93IHdlIGhhbmRsZSByZXR1cm4gdmFsdWVzIGluIEJQRiBwcm9ncmFtcywgc3BlY2lmaWNhbGx5IHRob3NlIGxhcmdlciB0aGFuIDggYnl0ZXMuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIGBicGZfc3RydWN0X29wcy5jYCBhbmQgdGhlIHZlcmlmaWVyIChgdmVyaWZpZXIuY2ApLlxuXG5Fc3NlbnRpYWxseSwgdGhlIHBhdGNoIGludHJvZHVjZXMgY2hlY2tzIHRvICpyZWplY3QqIEJQRiBwcm9ncmFtcyB0aGF0IGFyZSB0cnlpbmcgdG8gYXR0YWNoIHRvIGZ1bmN0aW9ucyByZXR1cm5pbmcgdmFsdWVzIGdyZWF0ZXIgdGhhbiA4IGJ5dGVzLCBsaWtlIGBfX2ludDEyOGAuIEl0J3MgZG9pbmcgdGhpcyB0aHJvdWdoIGEgZmV3IGtleSBhZGRpdGlvbnM6XG5cbiogICBJbiBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCwgaXQncyBub3cgY2hlY2tpbmcgYHN0X29wcy1cdTAwM2VmdW5jX21vZGVsc1tpXS5yZXRfc2l6ZWAgYWdhaW5zdCA4IGJ5dGVzLCBhbmQgaWYgaXQncyB0b28gbGFyZ2UsIGl0IHRocm93cyBhbiBgLUVPUE5PVFNVUFBgIGVycm9yLlxuKiAgIFRoZSB2ZXJpZmllciBnZXRzIGEgbmV3IGZ1bmN0aW9uLCBgYXR0YWNoX3VzZXNfdHJhbXBvbGluZV9yZXR2YWwoKWAsIGxpa2VseSB0byBkZXRlcm1pbmUgaWYgYSB0cmFtcG9saW5lIGlzIGJlaW5nIHVzZWQuXG4qICAgV2l0aGluIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAsIHRoZXJlIGFyZSBjaGVja3MgdXNpbmcgYHRndF9pbmZvLVx1MDAzZWZtb2RlbC5yZXRfc2l6ZWAgaW4gY29uanVuY3Rpb24gd2l0aCBgYXR0YWNoX3VzZXNfdHJhbXBvbGluZV9yZXR2YWwoKWAgdG8gZW5mb3JjZSB0aGlzIHNpemUgbGltaXQgYmVmb3JlIGFsbG93aW5nIHRoZSBwcm9ncmFtIHRvIGF0dGFjaC5cblxuVGhpcyBpcyBhICoqZnVuY3Rpb25hbCBjaGFuZ2UqKi4gSXQgbW9kaWZpZXMgZXhpc3RpbmcgbG9naWMgaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgdGhlIHN0cnVjdFxcX29wcyBpbml0aWFsaXphdGlvbi4gQmVmb3JlIHRoaXMsIHRoZXNlIHByb2dyYW1zIG1pZ2h0IGhhdmUgYmVlbiBhbGxvd2VkLCBidXQgcHJvYmFibHkgd2VyZSBicm9rZW4gZHVlIHRvIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgdHJhbXBvbGluZSBtZWNoYW5pc20gaW4gaGFuZGxpbmcgcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzLlxuXG5HaXZlbiB0aGF0IGl0IG1vZGlmaWVzIHRoZSB2ZXJpZmllciBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMsIEkgZGVmaW5pdGVseSB0aGluayBmdXp6aW5nIGlzIHdhcnJhbnRlZCBoZXJlLiBXZSBuZWVkIHRvIGZvY3VzIG9uIHRob3NlIGtleSBzeW1ib2xzOiBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCwgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCwgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuXG5cbk5vdywgdG8gYXNzZXNzIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSBpZiBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCBpcyByZWFjaGFibGUuIEkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGF0IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgYXJlIHBhcnQgb2YgdGhlIHZlcmlmaWVyIGNvZGUsIHdoaWNoIEkgKmtub3cqIGlzIHJlYWNoYWJsZS4gSXQncyBpbiB0aGUgY29udHJvbCBwbGFuZSwgbm90IHRoZSBkYXRhIHBhdGgsIHNvIGl0IGlzbid0IHBlcmZvcm1hbmNlLWNyaXRpY2FsIGNvZGUuXG5cbkknbSBnb2luZyB0byBkbyBhIHF1aWNrIGdyZXAgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCByZWdhcmRpbmcgdGhvc2Ugc3ltYm9scyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODI1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6MzUuODQ2MTQ3ODY0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjk1Nzc2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9MjI2Mj1pbnQgYnBmX3N0cnVjdF9vcHNfdGVzdF9ydW4oc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqa2F0dHIsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIyNjQtI2VuZGlmXFxuaW5jbHVkZS9saW51eC9icGYuaDoyMjY1OmludCBicGZfc3RydWN0X29wc19kZXNjX2luaXQoc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzX2Rlc2MgKnN0X29wc19kZXNjLFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjI2Ni1cXHRcXHRcXHQgICAgIHN0cnVjdCBidGYgKmJ0ZixcXG4tLVxcbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYz0zMjQ9aW50IGJwZl9zdHJ1Y3Rfb3BzX3N1cHBvcnRlZChjb25zdCBzdHJ1Y3QgYnBmX3N0cnVjdF9vcHMgKnN0X29wcywgdTMyIG1vZmYpXFxuLS1cXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMtMzMwLVxcbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYzozMzE6aW50IGJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdChzdHJ1Y3QgYnBmX3N0cnVjdF9vcHNfZGVzYyAqc3Rfb3BzX2Rlc2MsXFxua2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jLTMzMi1cXHRcXHRcXHQgICAgIHN0cnVjdCBidGYgKmJ0ZixcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9OTgzNT1idGZfYWRkX3N0cnVjdF9vcHMoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3N0cnVjdF9vcHMgKnN0X29wcyxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtOTg2Ni1cXG5rZXJuZWwvYnBmL2J0Zi5jOjk4Njc6XFx0ZXJyID0gYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0KFxcdTAwMjZ0YWItXFx1MDAzZW9wc1tidGYtXFx1MDAzZXN0cnVjdF9vcHNfdGFiLVxcdTAwM2VjbnRdLCBidGYsIGxvZyk7XFxua2VybmVsL2JwZi9idGYuYy05ODY4LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjQ3OjM4LjE3NTcyOTU2MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDI1Mjk4ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBvd24gZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKktlcm5lbCBCUEYgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBkaXZpbmcgaW50byBrZXJuZWwgQlBGIGNvbmZpZ3VyYXRpb24uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBCUEZfU1lTQ0FMTGAgaXMgKnRoZSoga2V5IGVuYWJsZXIgaGVyZS4gV2l0aG91dCB0aGF0LCB3ZSdyZSBub3QgZ29pbmcgYW55d2hlcmUuIEl0J3MgdGhlIGx5bmNocGluIGZvciBldmVyeXRoaW5nLiBOb3csIHRvIHJlYWxseSB1bmRlcnN0YW5kIGhvdyB0aGlzIGltcGFjdHMgdGhlIHN5c3RlbSwgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBJIHNob3VsZCBzdGFydCBieSBleGFtaW5pbmcgdHdvIGZpbGVzOiBga2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jYCBhbmQgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIGBicGZfc3RydWN0X29wcy5jYCB3aWxsIHNob3cgbWUgaG93IHRoZXkncmUgaGFuZGxpbmcgc3RydWN0dXJlcyB3aXRoaW4gdGhlIEJQRiBzeXN0ZW0gYW5kIG9wZXJhdGlvbnMsIHdoaWxlIGB2ZXJpZmllci5jYCBpcyBnb2luZyB0byBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjcnVjaWFsIHNlY3VyaXR5IGNoZWNrcyBhbmQgdmFsaWRhdGlvbiBzdGVwcy4gVW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGVzZSB0d28gaXMga2V5IHRvIHJlYWxseSBncmFzcGluZyB0aGUgY29uZmlndXJhdGlvbidzIGltcGxpY2F0aW9ucy4gSXQgd2lsbCByZWFsbHkgbGV0IG1lIHVuZGVyc3RhbmQgaWYgYW55IGltcG9ydGFudCBudWFuY2VzIG9yIGxpbWl0YXRpb25zIGFyZSBwcmVzZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjI5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6NDEuNzc4MjYwOTkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NDI5NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CUEZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlPTI9b2JqLXkgOj0gY29yZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTozOmlmbmVxICgkKENPTkZJR19CUEZfSklUX0FMV0FZU19PTikseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQtIyBfX19icGZfcHJvZ19ydW4oKSBuZWVkcyBHQ1NFIGRpc2FibGVkIG9uIHg4Njsgc2VlIDMxOTNjMDgzNmYyMDMgZm9yIGRldGFpbHNcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gbG9jYWxfc3RvcmFnZS5vIHF1ZXVlX3N0YWNrX21hcHMubyByaW5nYnVmLm8gYnBmX2luc25fYXJyYXkub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfbG9jYWxfc3RvcmFnZS5vIGJwZl90YXNrX3N0b3JhZ2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBmaXh1cHMubyBjZmcubyBzdGF0ZXMubyBiYWNrdHJhY2subyBjaGVja19idGYub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTU6b2JqLSR7Q09ORklHX0JQRl9MU019XFx0ICArPSBicGZfaW5vZGVfc3RvcmFnZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGRpc2FzbS5vIG1wcm9nLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19CUEZfSklUKSArPSB0cmFtcG9saW5lLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE5LWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGFyZW5hLm8gcmFuZ2VfdHJlZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0yMS1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGRpc3BhdGNoZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMjMtaWZlcSAoJChDT05GSUdfTkVUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBkZXZtYXAub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBjcHVtYXAub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBvZmZsb2FkLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gbmV0X25hbWVzcGFjZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToyODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHRjeC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0yOS1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU9MzA9aWZlcSAoJChDT05GSUdfUEVSRl9FVkVOVFMpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN0YWNrbWFwLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTMyLWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZT0zMz1pZmVxICgkKENPTkZJR19DR1JPVVBTKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBjZ3JvdXBfaXRlci5vIGJwZl9jZ3JwX3N0b3JhZ2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMzUtZW5kaWZcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9Mzc9aWZlcSAoJChDT05GSUdfSU5FVCkseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gcmV1c2Vwb3J0X2FycmF5Lm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM5LWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTQyPWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0MzppZmVxICgkKENPTkZJR19CUEZfSklUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfc3RydWN0X29wcy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNwdW1hc2sub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTU1LSMgc2VtYW50aWNzIHdpdGhpbiBwYWhvbGUgYXJlIHJldmlzaXRlZCBhY2NvcmRpbmdseS5cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU2Om9iai0ke0NPTkZJR19CUEZfTFNNfSArPSBicGZfbHNtX3Byb3RvLm8gYnBmX2xzbS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS01Ny1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU9NTg9aWZuZXEgKCQoQ09ORklHX0NSWVBUTyksKVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NTk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBjcnlwdG8ub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjAtZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19CUEZfUFJFTE9BRCkgKz0gcHJlbG9hZC9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYyLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSByZWxvX2NvcmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGZfaXRlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJ0Zl9yZWxvY2F0ZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2NjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGttZW1fY2FjaGVfaXRlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS02Ny1pZmVxICgkKENPTkZJR19ETUFfU0hBUkVEX0JVRkZFUikseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZG1hYnVmX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjktZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6NDEuODM3Njk0NTM5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQxNDgzMzg3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIE1vZHVsZSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgQlBGIHBhdGNoIGFuZCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJdCdzIHByZXR0eSBjbGVhciB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX0JQRl9KSVRgIGFyZSBnb2luZyB0byBiZSByZXF1aXJlZCwgZXNwZWNpYWxseSBzaW5jZSB0aGV5J3JlIG5lZWRlZCBmb3IgYGJwZl9zdHJ1Y3Rfb3BzLm9gLiBUaGUgdmVyaWZpZXIgaXRzZWxmIGlzLCBvZiBjb3Vyc2UsIGJ1aWx0IHdpdGggYENPTkZJR19CUEZfU1lTQ0FMTGAsIHNvIHRoYXQncyBhIGdpdmVuLlxuXG5Ob3csIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSAqc3BlY2lmaWMqIGNvbmZpZ3VyYXRpb25zIHRpZWQgdG8gdGhpcyB0ZXN0IG1vZHVsZS4gVGhlIHRlc3QgbW9kdWxlIGluIHF1ZXN0aW9uIGlzIGBicGZfdGVzdG1vZC5jYC4gSSdkIHR5cGljYWxseSBleHBlY3QgdG8gc2VlIHNvbWV0aGluZyBsaWtlIGBDT05GSUdfQlBGX0tQUk9CRV9PVkVSUklERWAgb3IgYSBzaW1pbGFyIGZsYWcgaW52b2x2ZWQgaW4gaXRzIGJ1aWxkLCBidXQgc2luY2UgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBjb3JlIEJQRiBsb2dpYywgaXQgbWlnaHQgYmUgZGlmZmVyZW50LlxuXG5MZXQncyBicmVhayBkb3duIHRoZSBrZXkgc3ltYm9scyB0aGUgcGF0Y2ggZm9jdXNlcyBvbjogYGJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdGAsIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAsIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBSaWdodCwgdGhlIGZpcnN0IHRoaW5nIGlzIHRvIHZlcmlmeSBpZiBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCBpcyBldmVuIHJlYWNoYWJsZS4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQncyBjYWxsZWQgZnJvbSBgYnRmX2FkZF9zdHJ1Y3Rfb3BzYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIGBidGZfYWRkX3N0cnVjdF9vcHNgLCBpbiB0dXJuLCBpcyBpbnZva2VkIHdoZW4gQlRGIGlzIGJlaW5nIGxvYWRlZC4gR29vZC4gYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBpcyBjYWxsZWQgZHVyaW5nIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQuIEFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIGlzIHNwZWNpZmljYWxseSBmb3IgbXVsdGktcHJvZ3JhbSBhdHRhY2htZW50cy5cblxuT2theSwgc28gYWxsIG9mIHRoZXNlIGFyZSBjbGVhcmx5IHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdGhyb3VnaCB0aGUgYGJwZigpYCBzeXNjYWxsLiBUaGF0J3MgZ29vZCwgdGhhdCBjb25maXJtcyB0aGF0IHRoZXNlIGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2VyLXNwYWNlLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgY2lyY2xlIGJhY2sgdG8gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyBhZ2Fpbi4gV2UgaGF2ZSB0byBjb25maXJtIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfQlBGX0pJVGAgYXJlIHRoZSBvbmx5ICpjcml0aWNhbCogb25lcywgYXQgbGVhc3QgZm9yIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkuXG5cbkZpbmFsbHksIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBob3cgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBpcyBiZWluZyB1c2VkLCBzcGVjaWZpY2FsbHkgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgdG8gbG9vayBmb3IgYW55dGhpbmcgSSd2ZSBtaXNzZWQuIEl0IHBheXMgdG8gYmUgdGhvcm91Z2ggd2l0aCB0aGUgdmVyaWZpZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwNzQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6NDguMjUyNTMwMzk4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODM1MzUyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTExODg4PXN0YXRpYyBpbnQgcHJvY2Vzc19rZl9hcmdfcHRyX3RvX3JidHJlZV9ub2RlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4OTktICogTFNNIGhvb2tzIGFuZCBpdGVycyAoYm90aCBzbGVlcGFibGUgYW5kIG5vbi1zbGVlcGFibGUpIGFyZSBzYWZlLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTkwMDogKiBBbnkgc2xlZXBhYmxlIHByb2dzIGFyZSBhbHNvIHNhZmUgc2luY2UgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoKSBlbmZvcmNlXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTAxLSAqIHRoZW0gY2FuIG9ubHkgYmUgYXR0YWNoZWQgdG8gc29tZSBzcGVjaWZpYyBob29rIHBvaW50cy5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODg3Nj1zdGF0aWMgYm9vbCBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbChlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODg5LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODg5MDppbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg4OTEtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTMwMz1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzMy1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkzMzQ6XFx0cmV0ID0gYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoXFx1MDAyNmVudi1cXHUwMDNlbG9nLCBwcm9nLCB0Z3RfcHJvZywgYnRmX2lkLCBcXHUwMDI2dGd0X2luZm8pO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzNS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMTo0Nzo0OC40MDA4ODkwNDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODEzOTA1Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipEZWx2aW5nIGludG8gZUJQRiBBdHRhY2htZW50IFZhbGlkYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgYXR0YWNobWVudCB2YWxpZGF0aW9uIHByb2Nlc3MuIEl0J3MgY2xlYXIgdGhhdCBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGdldHMgaW52b2tlZCBmcm9tIGBjaGVja19hdHRhY2hfYnRmX2lkYCwgd2hpY2ggaXMgYSBrZXkgY29tcG9uZW50IG9mIHRoZSB2ZXJpZmllci4gVGhhdCBjb25maXJtcyBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcuIE5vdyBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgbXVsdGlwbGUgYXR0YWNobWVudCBwb2ludHMuIEknbSBnb2luZyB0byBsb29rIG1vcmUgY2xvc2VseSBhdCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIHRvIHVuZGVyc3RhbmQgaG93IHRoYXQgd29ya3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzNTIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMTo0Nzo1MS4yMTQ4MDI2MjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTYyNDgzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzAzPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDAyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTQwMzppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDA0LVxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMTo0Nzo1MS4zNTQ0MzgyODlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwNDEyMDU3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGFuZCB0aGlzIGlzIHRoZSBjb250ZXh0OlxuXG4qKkludmVzdGlnYXRpbmcgRnVuY3Rpb24gVXNhZ2UqKlxuXG5BbHJpZ2h0LCB0aGlzIGZ1bmN0aW9uLi4uIGl0J3MgZWl0aGVyIGV4cG9ydGVkIG9yIHVzZWQgb3V0c2lkZSBvZiBpdHMgY3VycmVudCBzY29wZS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIGJyb2FkZXIgaW1wYWN0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gVW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzIGFuZCB0aGUgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSB0aGF0IHJlbHkgb24gaXQgaXMgYWJzb2x1dGVseSBjcnVjaWFsLiBJIG5lZWQgdG8gdHJhY2UgaXRzIHVzYWdlIHRvIGdhaW4gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBpbXBsaWNhdGlvbnMuIFRoYXQncyB0aGUgcHJpb3JpdHkgcmlnaHQgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzM2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6NTQuMTU4NTYwNTc5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDE4ODg2MzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTU5Mj1pbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNTk1LS8qIEZ1bmN0aW9ucyBleHBvcnRlZCBmcm9tIHZlcmlmaWVyLmMsIHVzZWQgYnkgdHJhbXBvbGluZS5jICovXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaDoxNTk2OmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE1OTctXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTYxMT1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjI0LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2MjU6XFx0XFx0ZXJyID0gYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoYnRmLCBwcm9nLCBpZHNbaV0sIFxcdTAwMjZ0Z3RfaW5mbyk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTYyNi1cXHRcXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzAzPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDAyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTQwMzppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDA0LVxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMTo0Nzo1Ny41Nzc0NTI5OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDc4MzM1MTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBUcmFtcG9saW5lIFJldHVybiBWYWx1ZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggb3JpZ2luYXRlcyBmcm9tIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hgLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBmb2N1c2VzIG9uIHByZXZlbnRpbmcgYSBCUEYgcHJvZ3JhbSBmcm9tIGJlaW5nIGF0dGFjaGVkIHRvIGZ1bmN0aW9ucyB0aGF0IHJldHVybiB2YWx1ZXMgbGFyZ2VyIHRoYW4gOCBieXRlcywgc3BlY2lmaWNhbGx5IHRob3NlIGxpa2UgYF9faW50MTI4YCwgd2hlbiB1c2luZyB0aGUgdHJhbXBvbGluZSByZXR1cm4gdmFsdWUgYXR0YWNoIHR5cGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgcmVhY2hhYmxlIHRocm91Z2ggdGhlIGBicGYoKWAgc3lzY2FsbCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGNvbnNpZGVyIGluIHRoZSBvdmVyYWxsIHNlY3VyaXR5IHByb2ZpbGUuXG5cbkZyb20gYW4gYW5hbHlzaXMgcGVyc3BlY3RpdmUsIGl0IGxvb2tzIGxpa2UgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9KSVRgIGFyZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIHRvIGV4cG9zZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIFRoZSBjaGFuZ2UgdG91Y2hlcyBrZXkgYXJlYXMsIHdoaWNoIG1lYW5zIGl0IHNob3VsZCBiZSBzY3J1dGluaXplZDogIHNwZWNpZmljYWxseSwgYGJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdGAsIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAsIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBUaGVzZSBzZWVtIHRvIGJlIHRoZSBwcmltYXJ5IHBvaW50cyBvZiB2YWxpZGF0aW9uIGFuZCBjaGVja2luZyB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgc3RydWN0X29wcyBpbml0aWFsaXphdGlvbiByZWxhdGVkIHRvIHRoaXMgY29uc3RyYWludC5cblxuQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIHRoZSByZXN1bHRzOiBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYHRydWVgLCBiZWNhdXNlIHRoZSBjaGFuZ2VzIGhlcmUgZGVhbCB3aXRoIHRoZSB2YWxpZGF0aW9uIG9mIHJldHVybiB2YWx1ZSBzaXplcywgYW5kIHN5c2NhbGxzIGFyZSBhbHdheXMgYSBnb29kIGFyZWEgdG8gZm9jdXMgb24uIEVuYWJsZUNvbmZpZ3MgYXJlIGNsZWFybHkgYFtcIkJQRl9TWVNDQUxMXCIsIFwiQlBGX0pJVFwiXWAsIGFuZCB0aGUgY3JpdGljYWwgYEZvY3VzU3ltYm9sc2AgYXJlIGBbXCJicGZfc3RydWN0X29wc19kZXNjX2luaXRcIiwgXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLCBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJdYC4gVGhlIHJlYXNvbmluZyBzaG91bGQgYmU6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBpbiB0aGUgQlBGIHZlcmlmaWVyIGFuZCBzdHJ1Y3Rfb3BzIGluaXRpYWxpemF0aW9uIHRvIHJlamVjdCBhdHRhY2hpbmcgQlBGIHByb2dyYW1zIHRvIGZ1bmN0aW9ucyB3aXRoIHJldHVybiB2YWx1ZXMgbGFyZ2VyIHRoYW4gOCBieXRlcyAoZS5nLiwgX19pbnQxMjgpIHdoZW4gdGhlIGF0dGFjaCB0eXBlIHVzZXMgdGhlIHRyYW1wb2xpbmUgcmV0dXJuIHZhbHVlLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwuXCJcblxuTm93IEkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGVzZSB2YWx1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzNDksIk91dHB1dFRva2VucyI6MTQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjQ4OjAzLjY1NTc5MDQzMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNTYxMTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdFwiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGluIHRoZSBCUEYgdmVyaWZpZXIgYW5kIHN0cnVjdF9vcHMgaW5pdGlhbGl6YXRpb24gdG8gcmVqZWN0IGF0dGFjaGluZyBCUEYgcHJvZ3JhbXMgdG8gZnVuY3Rpb25zIHdpdGggcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzIChlLmcuLCBfX2ludDEyOCkgd2hlbiB0aGUgYXR0YWNoIHR5cGUgdXNlcyB0aGUgdHJhbXBvbGluZSByZXR1cm4gdmFsdWUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdFwiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGluIHRoZSBCUEYgdmVyaWZpZXIgYW5kIHN0cnVjdF9vcHMgaW5pdGlhbGl6YXRpb24gdG8gcmVqZWN0IGF0dGFjaGluZyBCUEYgcHJvZ3JhbXMgdG8gZnVuY3Rpb25zIHdpdGggcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzIChlLmcuLCBfX2ludDEyOCkgd2hlbiB0aGUgYXR0YWNoIHR5cGUgdXNlcyB0aGUgdHJhbXBvbGluZSByZXR1cm4gdmFsdWUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflownb4xl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 11:30:24 +0000 UTC FinishedAt: 2026-07-11 11:48:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT" ], "series_id": "98d02238-868a-490d-8e6c-efdc8285337b" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_struct_ops_desc_init", "bpf_check_attach_target", "bpf_check_attach_btf_id_multi" ], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfc3RydWN0X29wc19kZXNjX2luaXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF90YXJnZXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGluIHRoZSBCUEYgdmVyaWZpZXIgYW5kIHN0cnVjdF9vcHMgaW5pdGlhbGl6YXRpb24gdG8gcmVqZWN0IGF0dGFjaGluZyBCUEYgcHJvZ3JhbXMgdG8gZnVuY3Rpb25zIHdpdGggcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzIChlLmcuLCBfX2ludDEyOCkgd2hlbiB0aGUgYXR0YWNoIHR5cGUgdXNlcyB0aGUgdHJhbXBvbGluZSByZXR1cm4gdmFsdWUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMTo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc3YWQ0OGJlZWI0YzBjMTk0YTMwNjcxNTcxOWY3NTM3NzhjMTU4MDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxMTo0NzoyNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMgYi9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmNcbmluZGV4IDUxYjE2ZTVmNTUzNGUwLi5iYmI0NGVmOGY4N2FhNiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jXG5AQCAtNDQ1LDYgJiM0Mzs0NDUsMTggQEAgaW50IGJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdChzdHJ1Y3QgYnBmX3N0cnVjdF9vcHNfZGVzYyAqc3Rfb3BzX2Rlc2MsXG4gXHRcdFx0Z290byBlcnJvdXQ7XG4gXHRcdH1cbiBcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBBIFx1MDAzZTggYnl0ZSByZXR1cm4gdmFsdWUgaXMgcGFzc2VkIGJhY2sgaW4gdGhlIFIwOlIyIHJlZ2lzdGVyXG4mIzQzO1x0XHQgKiBwYWlyLCB3aGljaCB0aGUgc3RydWN0X29wcyB0cmFtcG9saW5lIGRvZXMgbm90IHByZXNlcnZlIChvbmx5XG4mIzQzO1x0XHQgKiA4IGJ5dGVzIG9mIHRoZSByZXR1cm4gdmFsdWUgYXJlIHNhdmVkIGFuZCByZXN0b3JlZCkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChzdF9vcHMtXHUwMDNlZnVuY19tb2RlbHNbaV0ucmV0X3NpemUgXHUwMDNlIDgpIHtcbiYjNDM7XHRcdFx0cHJfd2FybihcJiMzNDtmdW5jIHB0ciAlcyBpbiBzdHJ1Y3QgJXMgaGFzIGEgXHUwMDNlOCBieXRlIHJldHVybiB2YWx1ZSwgd2hpY2ggaXMgbm90IHN1cHBvcnRlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRtbmFtZSwgc3Rfb3BzLVx1MDAzZW5hbWUpO1xuJiM0MztcdFx0XHRlcnIgPSAtRU9QTk9UU1VQUDtcbiYjNDM7XHRcdFx0Z290byBlcnJvdXQ7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHRzdHViX2Z1bmNfYWRkciA9ICoodm9pZCAqKikoc3Rfb3BzLVx1MDAzZWNmaV9zdHVicyAmIzQzOyBtb2ZmKTtcbiBcdFx0ZXJyID0gcHJlcGFyZV9hcmdfaW5mbyhidGYsIHN0X29wcy1cdTAwM2VuYW1lLCBtbmFtZSxcbiBcdFx0XHRcdCAgICAgICBmdW5jX3Byb3RvLCBzdHViX2Z1bmNfYWRkcixcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDY1MTVkNGQzYzAwMzJmLi4yNmQyODFiNzdhNmU3MiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTg4NzMsNiAmIzQzOzE4ODczLDIwIEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiXG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKHR5cGUpIHtcbiYjNDM7XHRjYXNlIEJQRl9NT0RJRllfUkVUVVJOOlxuJiM0MztcdGNhc2UgQlBGX1RSQUNFX0ZFWElUOlxuJiM0MztcdGNhc2UgQlBGX1RSQUNFX0ZFWElUX01VTFRJOlxuJiM0MztcdGNhc2UgQlBGX1RSQUNFX0ZTRVNTSU9OOlxuJiM0MztcdGNhc2UgQlBGX1RSQUNFX0ZTRVNTSU9OX01VTFRJOlxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbiBcdFx0XHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZyxcbkBAIC0xOTEzNyw2ICYjNDM7MTkxNTEsMTQgQEAgaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcbiYjNDM7XHRcdGlmICh0Z3RfaW5mby1cdTAwM2VmbW9kZWwucmV0X3NpemUgXHUwMDNlIDggXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgYXR0YWNoX3VzZXNfdHJhbXBvbGluZV9yZXR2YWwocHJvZy1cdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZSkpIHtcbiYjNDM7XHRcdFx0YnBmX2xvZyhsb2csXG4mIzQzO1x0XHRcdFx0XCYjMzQ7QXR0YWNoIHRvIGZ1bmN0aW9uICVzIHdpdGggYSBcdTAwM2U4IGJ5dGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgYXR0YWNoIHR5cGVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0dG5hbWUpO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHQvKlxuIFx0XHQgKiAqLm11bHRpIHByb2dyYW1zIGRvbiYjMzk7dCBuZWVkIGFuIGFkZHJlc3MgZHVyaW5nIHByb2dyYW1cbiBcdFx0ICogdmVyaWZpY2F0aW9uLCB3ZSBqdXN0IHRha2UgdGhlIG1vZHVsZSByZWYgaWYgbmVlZGVkLlxuQEAgLTE5NDEzLDYgJiM0MzsxOTQzNSw5IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0XG4gXHRlcnIgPSBidGZfZGlzdGlsbF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgdCwgdG5hbWUsIFx1MDAyNnRndF9pbmZvLVx1MDAzZWZtb2RlbCk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuJiM0MztcdGlmICh0Z3RfaW5mby1cdTAwM2VmbW9kZWwucmV0X3NpemUgXHUwMDNlIDggXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKHByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpKVxuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0aWYgKGJ0Zl9pc19tb2R1bGUoYnRmKSkge1xuIFx0XHQvKiBUaGUgYnBmIHByb2dyYW0gYWxyZWFkeSBob2xkcyByZWZlcmVuY2UgdG8gbW9kdWxlLiAqL1xuIFx0XHRpZiAoV0FSTl9PTl9PTkNFKCFwcm9nLVx1MDAzZWF1eC1cdTAwM2Vtb2QpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmNcbmluZGV4IGY5ZjllMWNiODdiZjFjLi42YzE5OWY1ZmY0ZGI4YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX2ZhaWx1cmUuY1xuQEAgLTc2LDYgJiM0Mzs3NiwxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ZleGl0X25vcmV0dXJucyh2b2lkKVxuIFx0XHRcdCAgICAgICBcJiMzNDtBdHRhY2hpbmcgZmV4aXQvZnNlc3Npb24vZm1vZF9yZXQgdG8gX19ub3JldHVybiBmdW5jdGlvbiAmIzM5O2RvX2V4aXQmIzM5OyBpcyByZWplY3RlZC5cJiMzNDspO1xuIH1cbiBcbiYjNDM7I2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fXG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfZmV4aXRfaW50MTI4X3JldCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0dGVzdF90cmFjaW5nX2ZhaWxfcHJvZyhcJiMzNDtmZXhpdF9pbnQxMjhfcmV0XCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgICAgXCYjMzQ7d2l0aCBhIFx1MDAzZTggYnl0ZSByZXR1cm4gdmFsdWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhdHRhY2ggdHlwZVwmIzM0Oyk7XG4mIzQzO31cbiYjNDM7I2VuZGlmXG4mIzQzO1xuIHZvaWQgdGVzdF90cmFjaW5nX2ZhaWx1cmUodm9pZClcbiB7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDticGZfc3Bpbl9sb2NrXCYjMzQ7KSlcbkBAIC04Niw0ICYjNDM7OTQsOCBAQCB2b2lkIHRlc3RfdHJhY2luZ19mYWlsdXJlKHZvaWQpXG4gXHRcdHRlc3RfdHJhY2luZ19kZW55KCk7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtmZXhpdF9ub3JldHVybnNcJiMzNDspKVxuIFx0XHR0ZXN0X2ZleGl0X25vcmV0dXJucygpO1xuJiM0MzsjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X19cbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtmZXhpdF9pbnQxMjhfcmV0XCYjMzQ7KSlcbiYjNDM7XHRcdHRlc3RfZmV4aXRfaW50MTI4X3JldCgpO1xuJiM0MzsjZW5kaWZcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfZmFpbHVyZS5jXG5pbmRleCA2NWU0ODVjNDQ2OGM2Mi4uZjdhMDk1NzY3Njc5NTQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19mYWlsdXJlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX2ZhaWx1cmUuY1xuQEAgLTMwLDMgJiM0MzszMCw5IEBAIGludCBCUEZfUFJPRyhmZXhpdF9ub3JldHVybnMpXG4ge1xuIFx0cmV0dXJuIDA7XG4gfVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0Oz9mZXhpdC9icGZfdGVzdG1vZF90ZXN0X2ludDEyOF9yZXRcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyhmZXhpdF9pbnQxMjhfcmV0KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xuaW5kZXggMzBmMWNkMjMwOTNjYmUuLjkwMmRiZjY1ODI1MDZmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xuQEAgLTE2MSw2ICYjNDM7MTYxLDE1IEBAIGJwZl90ZXN0bW9kX3Rlc3RfYXJnX3B0cl90b19zdHJ1Y3Qoc3RydWN0IGJwZl90ZXN0bW9kX3N0cnVjdF9hcmdfMSAqYSkge1xuIFx0cmV0dXJuIGJwZl90ZXN0bW9kX3Rlc3Rfc3RydWN0X2FyZ19yZXN1bHQ7XG4gfVxuIFxuJiM0MzsjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X19cbiYjNDM7bm9pbmxpbmUgX19pbnQxMjhcbiYjNDM7YnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KGludCBhKVxuJiM0Mzt7XG4mIzQzO1x0YnBmX3Rlc3Rtb2RfdGVzdF9zdHJ1Y3RfYXJnX3Jlc3VsdCA9IGE7XG4mIzQzO1x0cmV0dXJuIChfX2ludDEyOClhO1xuJiM0Mzt9XG4mIzQzOyNlbmRpZlxuJiM0MztcbiBfX3dlYWsgbm9pbmxpbmUgdm9pZCBicGZfdGVzdG1vZF9sb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb25nX25hbWUodm9pZClcbiB7XG4gfVxuQEAgLTUxNCw2ICYjNDM7NTIzLDEwIEBAIGJwZl90ZXN0bW9kX3Rlc3RfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosXG4gXG4gXHQodm9pZClicGZfdGVzdG1vZF90ZXN0X2FyZ19wdHJfdG9fc3RydWN0KFx1MDAyNnN0cnVjdF9hcmcxXzIpO1xuIFxuJiM0MzsjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X19cbiYjNDM7XHQodm9pZClicGZfdGVzdG1vZF90ZXN0X2ludDEyOF9yZXQoaSk7XG4mIzQzOyNlbmRpZlxuJiM0MztcbiBcdCh2b2lkKXRyYWNlX2JwZl90ZXN0bW9kX3Rlc3RfcmF3X3RwX251bGxfdHAoTlVMTCk7XG4gXG4gXHRicGZfdGVzdG1vZF90ZXN0X3N0cnVjdF9vcHMzKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgc3RydWN0X29wcyBpbml0aWFsaXphdGlvbiB0byByZWplY3QgYXR0YWNoaW5nIEJQRiBwcm9ncmFtcyB0byBmdW5jdGlvbnMgd2l0aCByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgKGUuZy4sIF9faW50MTI4KSB3aGVuIHRoZSBhdHRhY2ggdHlwZSB1c2VzIHRoZSB0cmFtcG9saW5lIHJldHVybiB2YWx1ZS4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3N2FkNDhiZWViNGMwYzE5NGEzMDY3MTU3MTlmNzUzNzc4YzE1ODA2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdWwgMTEgMTE6NDc6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMgYi9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMKaW5kZXggNTFiMTZlNWY1NTM0ZTAuLmJiYjQ0ZWY4Zjg3YWE2IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jCkBAIC00NDUsNiAmIzQzOzQ0NSwxOCBAQCBpbnQgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0KHN0cnVjdCBicGZfc3RydWN0X29wc19kZXNjICpzdF9vcHNfZGVzYywKIAkJCWdvdG8gZXJyb3V0OwogCQl9CiAKJiM0MzsJCS8qCiYjNDM7CQkgKiBBICZndDs4IGJ5dGUgcmV0dXJuIHZhbHVlIGlzIHBhc3NlZCBiYWNrIGluIHRoZSBSMDpSMiByZWdpc3RlcgomIzQzOwkJICogcGFpciwgd2hpY2ggdGhlIHN0cnVjdF9vcHMgdHJhbXBvbGluZSBkb2VzIG5vdCBwcmVzZXJ2ZSAob25seQomIzQzOwkJICogOCBieXRlcyBvZiB0aGUgcmV0dXJuIHZhbHVlIGFyZSBzYXZlZCBhbmQgcmVzdG9yZWQpLgomIzQzOwkJICovCiYjNDM7CQlpZiAoc3Rfb3BzLSZndDtmdW5jX21vZGVsc1tpXS5yZXRfc2l6ZSAmZ3Q7IDgpIHsKJiM0MzsJCQlwcl93YXJuKCYjMzQ7ZnVuYyBwdHIgJXMgaW4gc3RydWN0ICVzIGhhcyBhICZndDs4IGJ5dGUgcmV0dXJuIHZhbHVlLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkXG4mIzM0OywKJiM0MzsJCQkJbW5hbWUsIHN0X29wcy0mZ3Q7bmFtZSk7CiYjNDM7CQkJZXJyID0gLUVPUE5PVFNVUFA7CiYjNDM7CQkJZ290byBlcnJvdXQ7CiYjNDM7CQl9CiYjNDM7CiAJCXN0dWJfZnVuY19hZGRyID0gKih2b2lkICoqKShzdF9vcHMtJmd0O2NmaV9zdHVicyAmIzQzOyBtb2ZmKTsKIAkJZXJyID0gcHJlcGFyZV9hcmdfaW5mbyhidGYsIHN0X29wcy0mZ3Q7bmFtZSwgbW5hbWUsCiAJCQkJICAgICAgIGZ1bmNfcHJvdG8sIHN0dWJfZnVuY19hZGRyLApkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDY1MTVkNGQzYzAwMzJmLi4yNmQyODFiNzdhNmU3MiAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTg4NzMsNiAmIzQzOzE4ODczLDIwIEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiCiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbChlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKQomIzQzO3sKJiM0MzsJc3dpdGNoICh0eXBlKSB7CiYjNDM7CWNhc2UgQlBGX01PRElGWV9SRVRVUk46CiYjNDM7CWNhc2UgQlBGX1RSQUNFX0ZFWElUOgomIzQzOwljYXNlIEJQRl9UUkFDRV9GRVhJVF9NVUxUSToKJiM0MzsJY2FzZSBCUEZfVFJBQ0VfRlNFU1NJT046CiYjNDM7CWNhc2UgQlBGX1RSQUNFX0ZTRVNTSU9OX01VTFRJOgomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywKIAkJCSAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csCiAJCQkgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZywKQEAgLTE5MTM3LDYgJiM0MzsxOTE1MSwxNCBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywKIAkJaWYgKHJldCAmbHQ7IDApCiAJCQlyZXR1cm4gcmV0OwogCiYjNDM7CQlpZiAodGd0X2luZm8tJmd0O2Ztb2RlbC5yZXRfc2l6ZSAmZ3Q7IDggJmFtcDsmYW1wOwomIzQzOwkJICAgIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKHByb2ctJmd0O2V4cGVjdGVkX2F0dGFjaF90eXBlKSkgewomIzQzOwkJCWJwZl9sb2cobG9nLAomIzQzOwkJCQkmIzM0O0F0dGFjaCB0byBmdW5jdGlvbiAlcyB3aXRoIGEgJmd0OzggYnl0ZSByZXR1cm4gdmFsdWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhdHRhY2ggdHlwZVxuJiMzNDssCiYjNDM7CQkJCXRuYW1lKTsKJiM0MzsJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CQl9CiYjNDM7CiAJCS8qCiAJCSAqICoubXVsdGkgcHJvZ3JhbXMgZG9uJiMzOTt0IG5lZWQgYW4gYWRkcmVzcyBkdXJpbmcgcHJvZ3JhbQogCQkgKiB2ZXJpZmljYXRpb24sIHdlIGp1c3QgdGFrZSB0aGUgbW9kdWxlIHJlZiBpZiBuZWVkZWQuCkBAIC0xOTQxMyw2ICYjNDM7MTk0MzUsOSBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidAogCWVyciA9IGJ0Zl9kaXN0aWxsX2Z1bmNfcHJvdG8oTlVMTCwgYnRmLCB0LCB0bmFtZSwgJmFtcDt0Z3RfaW5mby0mZ3Q7Zm1vZGVsKTsKIAlpZiAoZXJyICZsdDsgMCkKIAkJcmV0dXJuIGVycjsKJiM0MzsJaWYgKHRndF9pbmZvLSZndDtmbW9kZWwucmV0X3NpemUgJmd0OyA4ICZhbXA7JmFtcDsKJiM0MzsJICAgIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKHByb2ctJmd0O2V4cGVjdGVkX2F0dGFjaF90eXBlKSkKJiM0MzsJCXJldHVybiAtRU9QTk9UU1VQUDsKIAlpZiAoYnRmX2lzX21vZHVsZShidGYpKSB7CiAJCS8qIFRoZSBicGYgcHJvZ3JhbSBhbHJlYWR5IGhvbGRzIHJlZmVyZW5jZSB0byBtb2R1bGUuICovCiAJCWlmIChXQVJOX09OX09OQ0UoIXByb2ctJmd0O2F1eC0mZ3Q7bW9kKSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmMKaW5kZXggZjlmOWUxY2I4N2JmMWMuLjZjMTk5ZjVmZjRkYjhhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX2ZhaWx1cmUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX2ZhaWx1cmUuYwpAQCAtNzYsNiAmIzQzOzc2LDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RfZmV4aXRfbm9yZXR1cm5zKHZvaWQpCiAJCQkgICAgICAgJiMzNDtBdHRhY2hpbmcgZmV4aXQvZnNlc3Npb24vZm1vZF9yZXQgdG8gX19ub3JldHVybiBmdW5jdGlvbiAmIzM5O2RvX2V4aXQmIzM5OyBpcyByZWplY3RlZC4mIzM0Oyk7CiB9CiAKJiM0MzsjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18KJiM0MztzdGF0aWMgdm9pZCB0ZXN0X2ZleGl0X2ludDEyOF9yZXQodm9pZCkKJiM0Mzt7CiYjNDM7CXRlc3RfdHJhY2luZ19mYWlsX3Byb2coJiMzNDtmZXhpdF9pbnQxMjhfcmV0JiMzNDssCiYjNDM7CQkJICAgICAgICYjMzQ7d2l0aCBhICZndDs4IGJ5dGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgYXR0YWNoIHR5cGUmIzM0Oyk7CiYjNDM7fQomIzQzOyNlbmRpZgomIzQzOwogdm9pZCB0ZXN0X3RyYWNpbmdfZmFpbHVyZSh2b2lkKQogewogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7YnBmX3NwaW5fbG9jayYjMzQ7KSkKQEAgLTg2LDQgJiM0Mzs5NCw4IEBAIHZvaWQgdGVzdF90cmFjaW5nX2ZhaWx1cmUodm9pZCkKIAkJdGVzdF90cmFjaW5nX2RlbnkoKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O2ZleGl0X25vcmV0dXJucyYjMzQ7KSkKIAkJdGVzdF9mZXhpdF9ub3JldHVybnMoKTsKJiM0MzsjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18KJiM0MzsJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDtmZXhpdF9pbnQxMjhfcmV0JiMzNDspKQomIzQzOwkJdGVzdF9mZXhpdF9pbnQxMjhfcmV0KCk7CiYjNDM7I2VuZGlmCiB9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19mYWlsdXJlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19mYWlsdXJlLmMKaW5kZXggNjVlNDg1YzQ0NjhjNjIuLmY3YTA5NTc2NzY3OTU0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19mYWlsdXJlLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfZmFpbHVyZS5jCkBAIC0zMCwzICYjNDM7MzAsOSBAQCBpbnQgQlBGX1BST0coZmV4aXRfbm9yZXR1cm5zKQogewogCXJldHVybiAwOwogfQomIzQzOwomIzQzO1NFQygmIzM0Oz9mZXhpdC9icGZfdGVzdG1vZF90ZXN0X2ludDEyOF9yZXQmIzM0OykKJiM0MztpbnQgQlBGX1BST0coZmV4aXRfaW50MTI4X3JldCkKJiM0Mzt7CiYjNDM7CXJldHVybiAwOwomIzQzO30KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jCmluZGV4IDMwZjFjZDIzMDkzY2JlLi45MDJkYmY2NTgyNTA2ZiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jCkBAIC0xNjEsNiAmIzQzOzE2MSwxNSBAQCBicGZfdGVzdG1vZF90ZXN0X2FyZ19wdHJfdG9fc3RydWN0KHN0cnVjdCBicGZfdGVzdG1vZF9zdHJ1Y3RfYXJnXzEgKmEpIHsKIAlyZXR1cm4gYnBmX3Rlc3Rtb2RfdGVzdF9zdHJ1Y3RfYXJnX3Jlc3VsdDsKIH0KIAomIzQzOyNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfXwomIzQzO25vaW5saW5lIF9faW50MTI4CiYjNDM7YnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KGludCBhKQomIzQzO3sKJiM0MzsJYnBmX3Rlc3Rtb2RfdGVzdF9zdHJ1Y3RfYXJnX3Jlc3VsdCA9IGE7CiYjNDM7CXJldHVybiAoX19pbnQxMjgpYTsKJiM0Mzt9CiYjNDM7I2VuZGlmCiYjNDM7CiBfX3dlYWsgbm9pbmxpbmUgdm9pZCBicGZfdGVzdG1vZF9sb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb25nX25hbWUodm9pZCkKIHsKIH0KQEAgLTUxNCw2ICYjNDM7NTIzLDEwIEBAIGJwZl90ZXN0bW9kX3Rlc3RfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosCiAKIAkodm9pZClicGZfdGVzdG1vZF90ZXN0X2FyZ19wdHJfdG9fc3RydWN0KCZhbXA7c3RydWN0X2FyZzFfMik7CiAKJiM0MzsjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X18KJiM0MzsJKHZvaWQpYnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KGkpOwomIzQzOyNlbmRpZgomIzQzOwogCSh2b2lkKXRyYWNlX2JwZl90ZXN0bW9kX3Rlc3RfcmF3X3RwX251bGxfdHAoTlVMTCk7CiAKIAlicGZfdGVzdG1vZF90ZXN0X3N0cnVjdF9vcHMzKCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MjUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFJldHVybiBWYWx1ZSBTaXplIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtYWtpbmcgYSBzcGVjaWZpYyBjaGFuZ2UgaW4gaG93IHdlIGhhbmRsZSByZXR1cm4gdmFsdWVzIGluIEJQRiBwcm9ncmFtcywgc3BlY2lmaWNhbGx5IHRob3NlIGxhcmdlciB0aGFuIDggYnl0ZXMuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIGBicGZfc3RydWN0X29wcy5jYCBhbmQgdGhlIHZlcmlmaWVyIChgdmVyaWZpZXIuY2ApLgoKRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGNoZWNrcyB0byAqcmVqZWN0KiBCUEYgcHJvZ3JhbXMgdGhhdCBhcmUgdHJ5aW5nIHRvIGF0dGFjaCB0byBmdW5jdGlvbnMgcmV0dXJuaW5nIHZhbHVlcyBncmVhdGVyIHRoYW4gOCBieXRlcywgbGlrZSBgX19pbnQxMjhgLiBJdCYjMzk7cyBkb2luZyB0aGlzIHRocm91Z2ggYSBmZXcga2V5IGFkZGl0aW9uczoKCiogICBJbiBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCwgaXQmIzM5O3Mgbm93IGNoZWNraW5nIGBzdF9vcHMtJmd0O2Z1bmNfbW9kZWxzW2ldLnJldF9zaXplYCBhZ2FpbnN0IDggYnl0ZXMsIGFuZCBpZiBpdCYjMzk7cyB0b28gbGFyZ2UsIGl0IHRocm93cyBhbiBgLUVPUE5PVFNVUFBgIGVycm9yLgoqICAgVGhlIHZlcmlmaWVyIGdldHMgYSBuZXcgZnVuY3Rpb24sIGBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbCgpYCwgbGlrZWx5IHRvIGRldGVybWluZSBpZiBhIHRyYW1wb2xpbmUgaXMgYmVpbmcgdXNlZC4KKiAgIFdpdGhpbiBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLCB0aGVyZSBhcmUgY2hlY2tzIHVzaW5nIGB0Z3RfaW5mby0mZ3Q7Zm1vZGVsLnJldF9zaXplYCBpbiBjb25qdW5jdGlvbiB3aXRoIGBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbCgpYCB0byBlbmZvcmNlIHRoaXMgc2l6ZSBsaW1pdCBiZWZvcmUgYWxsb3dpbmcgdGhlIHByb2dyYW0gdG8gYXR0YWNoLgoKVGhpcyBpcyBhICoqZnVuY3Rpb25hbCBjaGFuZ2UqKi4gSXQgbW9kaWZpZXMgZXhpc3RpbmcgbG9naWMgaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgdGhlIHN0cnVjdFxfb3BzIGluaXRpYWxpemF0aW9uLiBCZWZvcmUgdGhpcywgdGhlc2UgcHJvZ3JhbXMgbWlnaHQgaGF2ZSBiZWVuIGFsbG93ZWQsIGJ1dCBwcm9iYWJseSB3ZXJlIGJyb2tlbiBkdWUgdG8gdGhlIGxpbWl0YXRpb25zIG9mIHRoZSB0cmFtcG9saW5lIG1lY2hhbmlzbSBpbiBoYW5kbGluZyByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMuCgpHaXZlbiB0aGF0IGl0IG1vZGlmaWVzIHRoZSB2ZXJpZmllciBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMsIEkgZGVmaW5pdGVseSB0aGluayBmdXp6aW5nIGlzIHdhcnJhbnRlZCBoZXJlLiBXZSBuZWVkIHRvIGZvY3VzIG9uIHRob3NlIGtleSBzeW1ib2xzOiBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCwgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCwgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuCgpOb3csIHRvIGFzc2VzcyB0aGUgZnV6emluZyBzdHJhdGVneSwgSSBzaG91bGQgcXVpY2tseSB2ZXJpZnkgaWYgYGJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdGAgaXMgcmVhY2hhYmxlLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIGFyZSBwYXJ0IG9mIHRoZSB2ZXJpZmllciBjb2RlLCB3aGljaCBJICprbm93KiBpcyByZWFjaGFibGUuIEl0JiMzOTtzIGluIHRoZSBjb250cm9sIHBsYW5lLCBub3QgdGhlIGRhdGEgcGF0aCwgc28gaXQgaXNuJiMzOTt0IHBlcmZvcm1hbmNlLWNyaXRpY2FsIGNvZGUuCgpJJiMzOTttIGdvaW5nIHRvIGRvIGEgcXVpY2sgZ3JlcCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCByZWdhcmRpbmcgdGhvc2Ugc3ltYm9scyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oPTIyNjI9aW50IGJwZl9zdHJ1Y3Rfb3BzX3Rlc3RfcnVuKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmthdHRyLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMjI2NC0jZW5kaWZcbmluY2x1ZGUvbGludXgvYnBmLmg6MjI2NTppbnQgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0KHN0cnVjdCBicGZfc3RydWN0X29wc19kZXNjICpzdF9vcHNfZGVzYyxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjI2Ni1cdFx0XHQgICAgIHN0cnVjdCBidGYgKmJ0Zixcbi0tXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmM9MzI0PWludCBicGZfc3RydWN0X29wc19zdXBwb3J0ZWQoY29uc3Qgc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzICpzdF9vcHMsIHUzMiBtb2ZmKVxuLS1cbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYy0zMzAtXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmM6MzMxOmludCBicGZfc3RydWN0X29wc19kZXNjX2luaXQoc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzX2Rlc2MgKnN0X29wc19kZXNjLFxua2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jLTMzMi1cdFx0XHQgICAgIHN0cnVjdCBidGYgKmJ0Zixcbi0tXG5rZXJuZWwvYnBmL2J0Zi5jPTk4MzU9YnRmX2FkZF9zdHJ1Y3Rfb3BzKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzICpzdF9vcHMsXG4tLVxua2VybmVsL2JwZi9idGYuYy05ODY2LVxua2VybmVsL2JwZi9idGYuYzo5ODY3Olx0ZXJyID0gYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0KFx1MDAyNnRhYi1cdTAwM2VvcHNbYnRmLVx1MDAzZXN0cnVjdF9vcHNfdGFiLVx1MDAzZWNudF0sIGJ0ZiwgbG9nKTtcbmtlcm5lbC9icGYvYnRmLmMtOTg2OC1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIyOQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBleHBlcnQgcGVyc3BlY3RpdmU6CgoqKktlcm5lbCBCUEYgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGRpdmluZyBpbnRvIGtlcm5lbCBCUEYgY29uZmlndXJhdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgYEJQRl9TWVNDQUxMYCBpcyAqdGhlKiBrZXkgZW5hYmxlciBoZXJlLiBXaXRob3V0IHRoYXQsIHdlJiMzOTtyZSBub3QgZ29pbmcgYW55d2hlcmUuIEl0JiMzOTtzIHRoZSBseW5jaHBpbiBmb3IgZXZlcnl0aGluZy4gTm93LCB0byByZWFsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBpbXBhY3RzIHRoZSBzeXN0ZW0sIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IGJ5IGV4YW1pbmluZyB0d28gZmlsZXM6IGBrZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmNgIGFuZCBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gYGJwZl9zdHJ1Y3Rfb3BzLmNgIHdpbGwgc2hvdyBtZSBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgc3RydWN0dXJlcyB3aXRoaW4gdGhlIEJQRiBzeXN0ZW0gYW5kIG9wZXJhdGlvbnMsIHdoaWxlIGB2ZXJpZmllci5jYCBpcyBnb2luZyB0byBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjcnVjaWFsIHNlY3VyaXR5IGNoZWNrcyBhbmQgdmFsaWRhdGlvbiBzdGVwcy4gVW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGVzZSB0d28gaXMga2V5IHRvIHJlYWxseSBncmFzcGluZyB0aGUgY29uZmlndXJhdGlvbiYjMzk7cyBpbXBsaWNhdGlvbnMuIEl0IHdpbGwgcmVhbGx5IGxldCBtZSB1bmRlcnN0YW5kIGlmIGFueSBpbXBvcnRhbnQgbnVhbmNlcyBvciBsaW1pdGF0aW9ucyBhcmUgcHJlc2VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfQlBGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTI9b2JqLXkgOj0gY29yZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM6aWZuZXEgKCQoQ09ORklHX0JQRl9KSVRfQUxXQVlTX09OKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZS00LSMgX19fYnBmX3Byb2dfcnVuKCkgbmVlZHMgR0NTRSBkaXNhYmxlZCBvbiB4ODY7IHNlZSAzMTkzYzA4MzZmMjAzIGZvciBkZXRhaWxzXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGZpeHVwcy5vIGNmZy5vIHN0YXRlcy5vIGJhY2t0cmFjay5vIGNoZWNrX2J0Zi5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE1Om9iai0ke0NPTkZJR19CUEZfTFNNfVx0ICAmIzQzOz0gYnBmX2lub2RlX3N0b3JhZ2Uub1xua2VybmVsL2JwZi9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkaXNhc20ubyBtcHJvZy5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gdHJhbXBvbGluZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE5LWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGFyZW5hLm8gcmFuZ2VfdHJlZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIxLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIyOm9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gZGlzcGF0Y2hlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIzLWlmZXEgKCQoQ09ORklHX05FVCkseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gZGV2bWFwLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gY3B1bWFwLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gb2ZmbG9hZC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IG5ldF9uYW1lc3BhY2Uub1xua2VybmVsL2JwZi9NYWtlZmlsZToyODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSB0Y3gub1xua2VybmVsL2JwZi9NYWtlZmlsZS0yOS1lbmRpZlxua2VybmVsL2JwZi9NYWtlZmlsZT0zMD1pZmVxICgkKENPTkZJR19QRVJGX0VWRU5UUykseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc3RhY2ttYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZS0zMi1lbmRpZlxua2VybmVsL2JwZi9NYWtlZmlsZT0zMz1pZmVxICgkKENPTkZJR19DR1JPVVBTKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjZ3JvdXBfaXRlci5vIGJwZl9jZ3JwX3N0b3JhZ2Uub1xua2VybmVsL2JwZi9NYWtlZmlsZS0zNS1lbmRpZlxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9Mzc9aWZlcSAoJChDT05GSUdfSU5FVCkseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gcmV1c2Vwb3J0X2FycmF5Lm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMzktZW5kaWZcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTQyPWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQzOmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9zdHJ1Y3Rfb3BzLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gY3B1bWFzay5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQ2LSMgYnBmX2xzbV9wcm90by5vIG11c3QgcHJlY2VkZSBicGZfbHNtLm8uIFRoZSBjdXJyZW50IHBhaG9sZSBsb2dpY1xuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGUtNTUtIyBzZW1hbnRpY3Mgd2l0aGluIHBhaG9sZSBhcmUgcmV2aXNpdGVkIGFjY29yZGluZ2x5Llxua2VybmVsL2JwZi9NYWtlZmlsZTo1NjpvYmotJHtDT05GSUdfQlBGX0xTTX0gJiM0Mzs9IGJwZl9sc21fcHJvdG8ubyBicGZfbHNtLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNTctZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU9NTg9aWZuZXEgKCQoQ09ORklHX0NSWVBUTyksKVxua2VybmVsL2JwZi9NYWtlZmlsZTo1OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcnlwdG8ub1xua2VybmVsL2JwZi9NYWtlZmlsZS02MC1lbmRpZlxua2VybmVsL2JwZi9NYWtlZmlsZTo2MTpvYmotJChDT05GSUdfQlBGX1BSRUxPQUQpICYjNDM7PSBwcmVsb2FkL1xua2VybmVsL2JwZi9NYWtlZmlsZS02Mi1cbmtlcm5lbC9icGYvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gcmVsb19jb3JlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnRmX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZTo2NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBidGZfcmVsb2NhdGUub1xua2VybmVsL2JwZi9NYWtlZmlsZTo2NjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBrbWVtX2NhY2hlX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZS02Ny1pZmVxICgkKENPTkZJR19ETUFfU0hBUkVEX0JVRkZFUikseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6Njg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gZG1hYnVmX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZS02OS1lbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNzQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBNb2R1bGUgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgQlBGIHBhdGNoIGFuZCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19CUEZfSklUYCBhcmUgZ29pbmcgdG8gYmUgcmVxdWlyZWQsIGVzcGVjaWFsbHkgc2luY2UgdGhleSYjMzk7cmUgbmVlZGVkIGZvciBgYnBmX3N0cnVjdF9vcHMub2AuIFRoZSB2ZXJpZmllciBpdHNlbGYgaXMsIG9mIGNvdXJzZSwgYnVpbHQgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgc28gdGhhdCYjMzk7cyBhIGdpdmVuLgoKTm93LCBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgKnNwZWNpZmljKiBjb25maWd1cmF0aW9ucyB0aWVkIHRvIHRoaXMgdGVzdCBtb2R1bGUuIFRoZSB0ZXN0IG1vZHVsZSBpbiBxdWVzdGlvbiBpcyBgYnBmX3Rlc3Rtb2QuY2AuIEkmIzM5O2QgdHlwaWNhbGx5IGV4cGVjdCB0byBzZWUgc29tZXRoaW5nIGxpa2UgYENPTkZJR19CUEZfS1BST0JFX09WRVJSSURFYCBvciBhIHNpbWlsYXIgZmxhZyBpbnZvbHZlZCBpbiBpdHMgYnVpbGQsIGJ1dCBzaW5jZSB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGNvcmUgQlBGIGxvZ2ljLCBpdCBtaWdodCBiZSBkaWZmZXJlbnQuCgpMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUga2V5IHN5bWJvbHMgdGhlIHBhdGNoIGZvY3VzZXMgb246IGBicGZfc3RydWN0X29wc19kZXNjX2luaXRgLCBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgLCBhbmQgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYC4gUmlnaHQsIHRoZSBmaXJzdCB0aGluZyBpcyB0byB2ZXJpZnkgaWYgYGJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdGAgaXMgZXZlbiByZWFjaGFibGUuIExvb2tpbmcgYXQgdGhlIGNvZGUsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBidGZfYWRkX3N0cnVjdF9vcHNgLCB3aGljaCBtYWtlcyBzZW5zZS4gYGJ0Zl9hZGRfc3RydWN0X29wc2AsIGluIHR1cm4sIGlzIGludm9rZWQgd2hlbiBCVEYgaXMgYmVpbmcgbG9hZGVkLiBHb29kLiBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGlzIGNhbGxlZCBkdXJpbmcgQlBGIHByb2dyYW0gYXR0YWNobWVudC4gQW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgaXMgc3BlY2lmaWNhbGx5IGZvciBtdWx0aS1wcm9ncmFtIGF0dGFjaG1lbnRzLgoKT2theSwgc28gYWxsIG9mIHRoZXNlIGFyZSBjbGVhcmx5IHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdGhyb3VnaCB0aGUgYGJwZigpYCBzeXNjYWxsLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgY29uZmlybXMgdGhhdCB0aGVzZSBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlci1zcGFjZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQmIzM5O3MgY2lyY2xlIGJhY2sgdG8gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyBhZ2Fpbi4gV2UgaGF2ZSB0byBjb25maXJtIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfQlBGX0pJVGAgYXJlIHRoZSBvbmx5ICpjcml0aWNhbCogb25lcywgYXQgbGVhc3QgZm9yIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkuCgpGaW5hbGx5LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgaG93IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgYmVpbmcgdXNlZCwgc3BlY2lmaWNhbGx5IGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIGxvb2sgZm9yIGFueXRoaW5nIEkmIzM5O3ZlIG1pc3NlZC4gSXQgcGF5cyB0byBiZSB0aG9yb3VnaCB3aXRoIHRoZSB2ZXJpZmllci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE4ODg9c3RhdGljIGludCBwcm9jZXNzX2tmX2FyZ19wdHJfdG9fcmJ0cmVlX25vZGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4OTktICogTFNNIGhvb2tzIGFuZCBpdGVycyAoYm90aCBzbGVlcGFibGUgYW5kIG5vbi1zbGVlcGFibGUpIGFyZSBzYWZlLlxua2VybmVsL2JwZi92ZXJpZmllci5jOjExOTAwOiAqIEFueSBzbGVlcGFibGUgcHJvZ3MgYXJlIGFsc28gc2FmZSBzaW5jZSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCgpIGVuZm9yY2Vcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTkwMS0gKiB0aGVtIGNhbiBvbmx5IGJlIGF0dGFjaGVkIHRvIHNvbWUgc3BlY2lmaWMgaG9vayBwb2ludHMuXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4ODc2PXN0YXRpYyBib29sIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODg5LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4ODkwOmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODkxLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzAzPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzMy1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTMzNDpcdHJldCA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KFx1MDAyNmVudi1cdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFx1MDAyNnRndF9pbmZvKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzNS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM1MgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkRlbHZpbmcgaW50byBlQlBGIEF0dGFjaG1lbnQgVmFsaWRhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGF0dGFjaG1lbnQgdmFsaWRhdGlvbiBwcm9jZXNzLiBJdCYjMzk7cyBjbGVhciB0aGF0IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgZ2V0cyBpbnZva2VkIGZyb20gYGNoZWNrX2F0dGFjaF9idGZfaWRgLCB3aGljaCBpcyBhIGtleSBjb21wb25lbnQgb2YgdGhlIHZlcmlmaWVyLiBUaGF0IGNvbmZpcm1zIG15IGluaXRpYWwgdW5kZXJzdGFuZGluZy4gTm93IEkgbmVlZCB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBtdWx0aXBsZSBhdHRhY2htZW50IHBvaW50cy4gSSYjMzk7bSBnb2luZyB0byBsb29rIG1vcmUgY2xvc2VseSBhdCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIHRvIHVuZGVyc3RhbmQgaG93IHRoYXQgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTMwMz1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MDItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk0MDM6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDA0LVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MzYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgYW5kIHRoaXMgaXMgdGhlIGNvbnRleHQ6CgoqKkludmVzdGlnYXRpbmcgRnVuY3Rpb24gVXNhZ2UqKgoKQWxyaWdodCwgdGhpcyBmdW5jdGlvbi4uLiBpdCYjMzk7cyBlaXRoZXIgZXhwb3J0ZWQgb3IgdXNlZCBvdXRzaWRlIG9mIGl0cyBjdXJyZW50IHNjb3BlLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgYnJvYWRlciBpbXBhY3QuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiBVbmRlcnN0YW5kaW5nIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHRoZSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIHRoYXQgcmVseSBvbiBpdCBpcyBhYnNvbHV0ZWx5IGNydWNpYWwuIEkgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UgdG8gZ2FpbiBhIGNvbXBsZXRlIHVuZGVyc3RhbmRpbmcgb2YgaXRzIGltcGxpY2F0aW9ucy4gVGhhdCYjMzk7cyB0aGUgcHJpb3JpdHkgcmlnaHQgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxMTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oPTE1OTI9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE1OTUtLyogRnVuY3Rpb25zIGV4cG9ydGVkIGZyb20gdmVyaWZpZXIuYywgdXNlZCBieSB0cmFtcG9saW5lLmMgKi9cbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg6MTU5NjppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE1OTctXHRcdFx0XHQgIHN0cnVjdCBicGZfYXR0YWNoX3RhcmdldF9pbmZvICp0Z3RfaW5mbyk7XG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTYxMT1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTYyNC1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2MjU6XHRcdGVyciA9IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKGJ0ZiwgcHJvZywgaWRzW2ldLCBcdTAwMjZ0Z3RfaW5mbyk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjI2LVx0XHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTMwMz1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MDItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk0MDM6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDA0LVx0XHRcdFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNDkKCQkJCQkJCW91dHB1dDogMTQ4CgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBUcmFtcG9saW5lIFJldHVybiBWYWx1ZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIG9yaWdpbmF0ZXMgZnJvbSBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoYC4gVGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2UgZm9jdXNlcyBvbiBwcmV2ZW50aW5nIGEgQlBGIHByb2dyYW0gZnJvbSBiZWluZyBhdHRhY2hlZCB0byBmdW5jdGlvbnMgdGhhdCByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMsIHNwZWNpZmljYWxseSB0aG9zZSBsaWtlIGBfX2ludDEyOGAsIHdoZW4gdXNpbmcgdGhlIHRyYW1wb2xpbmUgcmV0dXJuIHZhbHVlIGF0dGFjaCB0eXBlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBgYnBmKClgIHN5c2NhbGwsIHdoaWNoIGlzIGltcG9ydGFudCB0byBjb25zaWRlciBpbiB0aGUgb3ZlcmFsbCBzZWN1cml0eSBwcm9maWxlLgoKRnJvbSBhbiBhbmFseXNpcyBwZXJzcGVjdGl2ZSwgaXQgbG9va3MgbGlrZSBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0pJVGAgYXJlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgdG8gZXhwb3NlIHRoaXMgZnVuY3Rpb25hbGl0eS4gVGhlIGNoYW5nZSB0b3VjaGVzIGtleSBhcmVhcywgd2hpY2ggbWVhbnMgaXQgc2hvdWxkIGJlIHNjcnV0aW5pemVkOiAgc3BlY2lmaWNhbGx5LCBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCwgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCwgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuIFRoZXNlIHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgcG9pbnRzIG9mIHZhbGlkYXRpb24gYW5kIGNoZWNraW5nIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyIGFuZCBzdHJ1Y3Rfb3BzIGluaXRpYWxpemF0aW9uIHJlbGF0ZWQgdG8gdGhpcyBjb25zdHJhaW50LgoKQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyB0aGUgcmVzdWx0czogYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGB0cnVlYCwgYmVjYXVzZSB0aGUgY2hhbmdlcyBoZXJlIGRlYWwgd2l0aCB0aGUgdmFsaWRhdGlvbiBvZiByZXR1cm4gdmFsdWUgc2l6ZXMsIGFuZCBzeXNjYWxscyBhcmUgYWx3YXlzIGEgZ29vZCBhcmVhIHRvIGZvY3VzIG9uLiBFbmFibGVDb25maWdzIGFyZSBjbGVhcmx5IGBbJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LCAmIzM0O0JQRl9KSVQmIzM0O11gLCBhbmQgdGhlIGNyaXRpY2FsIGBGb2N1c1N5bWJvbHNgIGFyZSBgWyYjMzQ7YnBmX3N0cnVjdF9vcHNfZGVzY19pbml0JiMzNDssICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF90YXJnZXQmIzM0OywgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7XWAuIFRoZSByZWFzb25pbmcgc2hvdWxkIGJlOiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgc3RydWN0X29wcyBpbml0aWFsaXphdGlvbiB0byByZWplY3QgYXR0YWNoaW5nIEJQRiBwcm9ncmFtcyB0byBmdW5jdGlvbnMgd2l0aCByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgKGUuZy4sIF9faW50MTI4KSB3aGVuIHRoZSBhdHRhY2ggdHlwZSB1c2VzIHRoZSB0cmFtcG9saW5lIHJldHVybiB2YWx1ZS4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsLiYjMzQ7CgpOb3cgSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIHZhbHVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfc3RydWN0X29wc19kZXNjX2luaXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF90YXJnZXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGluIHRoZSBCUEYgdmVyaWZpZXIgYW5kIHN0cnVjdF9vcHMgaW5pdGlhbGl6YXRpb24gdG8gcmVqZWN0IGF0dGFjaGluZyBCUEYgcHJvZ3JhbXMgdG8gZnVuY3Rpb25zIHdpdGggcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzIChlLmcuLCBfX2ludDEyOCkgd2hlbiB0aGUgYXR0YWNoIHR5cGUgdXNlcyB0aGUgdHJhbXBvbGluZSByZXR1cm4gdmFsdWUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgc3RydWN0X29wcyBpbml0aWFsaXphdGlvbiB0byByZWplY3QgYXR0YWNoaW5nIEJQRiBwcm9ncmFtcyB0byBmdW5jdGlvbnMgd2l0aCByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgKGUuZy4sIF9faW50MTI4KSB3aGVuIHRoZSBhdHRhY2ggdHlwZSB1c2VzIHRoZSB0cmFtcG9saW5lIHJldHVybiB2YWx1ZS4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6MjguNTE1MTI0MzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTIyNDIzOTQzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdFwiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGluIHRoZSBCUEYgdmVyaWZpZXIgYW5kIHN0cnVjdF9vcHMgaW5pdGlhbGl6YXRpb24gdG8gcmVqZWN0IGF0dGFjaGluZyBCUEYgcHJvZ3JhbXMgdG8gZnVuY3Rpb25zIHdpdGggcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzIChlLmcuLCBfX2ludDEyOCkgd2hlbiB0aGUgYXR0YWNoIHR5cGUgdXNlcyB0aGUgdHJhbXBvbGluZSByZXR1cm4gdmFsdWUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6MjguNTE1MTMxMTRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODkyODY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDc3YWQ0OGJlZWI0YzBjMTk0YTMwNjcxNTcxOWY3NTM3NzhjMTU4MDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTE6NDc6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jIGIva2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jXFxuaW5kZXggNTFiMTZlNWY1NTM0ZTAuLmJiYjQ0ZWY4Zjg3YWE2IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuY1xcbisrKyBiL2tlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuY1xcbkBAIC00NDUsNiArNDQ1LDE4IEBAIGludCBicGZfc3RydWN0X29wc19kZXNjX2luaXQoc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzX2Rlc2MgKnN0X29wc19kZXNjLFxcbiBcXHRcXHRcXHRnb3RvIGVycm91dDtcXG4gXFx0XFx0fVxcbiBcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogQSBcXHUwMDNlOCBieXRlIHJldHVybiB2YWx1ZSBpcyBwYXNzZWQgYmFjayBpbiB0aGUgUjA6UjIgcmVnaXN0ZXJcXG4rXFx0XFx0ICogcGFpciwgd2hpY2ggdGhlIHN0cnVjdF9vcHMgdHJhbXBvbGluZSBkb2VzIG5vdCBwcmVzZXJ2ZSAob25seVxcbitcXHRcXHQgKiA4IGJ5dGVzIG9mIHRoZSByZXR1cm4gdmFsdWUgYXJlIHNhdmVkIGFuZCByZXN0b3JlZCkuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoc3Rfb3BzLVxcdTAwM2VmdW5jX21vZGVsc1tpXS5yZXRfc2l6ZSBcXHUwMDNlIDgpIHtcXG4rXFx0XFx0XFx0cHJfd2FybihcXFwiZnVuYyBwdHIgJXMgaW4gc3RydWN0ICVzIGhhcyBhIFxcdTAwM2U4IGJ5dGUgcmV0dXJuIHZhbHVlLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRtbmFtZSwgc3Rfb3BzLVxcdTAwM2VuYW1lKTtcXG4rXFx0XFx0XFx0ZXJyID0gLUVPUE5PVFNVUFA7XFxuK1xcdFxcdFxcdGdvdG8gZXJyb3V0O1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRzdHViX2Z1bmNfYWRkciA9ICoodm9pZCAqKikoc3Rfb3BzLVxcdTAwM2VjZmlfc3R1YnMgKyBtb2ZmKTtcXG4gXFx0XFx0ZXJyID0gcHJlcGFyZV9hcmdfaW5mbyhidGYsIHN0X29wcy1cXHUwMDNlbmFtZSwgbW5hbWUsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBmdW5jX3Byb3RvLCBzdHViX2Z1bmNfYWRkcixcXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggNjUxNWQ0ZDNjMDAzMmYuLjI2ZDI4MWI3N2E2ZTcyIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC0xODg3Myw2ICsxODg3MywyMCBAQCBzdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYlxcbiBcXHRyZXR1cm4gLUVJTlZBTDtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgYXR0YWNoX3VzZXNfdHJhbXBvbGluZV9yZXR2YWwoZW51bSBicGZfYXR0YWNoX3R5cGUgdHlwZSlcXG4re1xcbitcXHRzd2l0Y2ggKHR5cGUpIHtcXG4rXFx0Y2FzZSBCUEZfTU9ESUZZX1JFVFVSTjpcXG4rXFx0Y2FzZSBCUEZfVFJBQ0VfRkVYSVQ6XFxuK1xcdGNhc2UgQlBGX1RSQUNFX0ZFWElUX01VTFRJOlxcbitcXHRjYXNlIEJQRl9UUkFDRV9GU0VTU0lPTjpcXG4rXFx0Y2FzZSBCUEZfVFJBQ0VfRlNFU1NJT05fTVVMVEk6XFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rfVxcbitcXG4gaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuIFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuIFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnRndF9wcm9nLFxcbkBAIC0xOTEzNyw2ICsxOTE1MSwxNCBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4gXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbitcXHRcXHRpZiAodGd0X2luZm8tXFx1MDAzZWZtb2RlbC5yZXRfc2l6ZSBcXHUwMDNlIDggXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKHByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKSkge1xcbitcXHRcXHRcXHRicGZfbG9nKGxvZyxcXG4rXFx0XFx0XFx0XFx0XFxcIkF0dGFjaCB0byBmdW5jdGlvbiAlcyB3aXRoIGEgXFx1MDAzZTggYnl0ZSByZXR1cm4gdmFsdWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhdHRhY2ggdHlwZVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0dG5hbWUpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdFxcdH1cXG4rXFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqICoubXVsdGkgcHJvZ3JhbXMgZG9uJ3QgbmVlZCBhbiBhZGRyZXNzIGR1cmluZyBwcm9ncmFtXFxuIFxcdFxcdCAqIHZlcmlmaWNhdGlvbiwgd2UganVzdCB0YWtlIHRoZSBtb2R1bGUgcmVmIGlmIG5lZWRlZC5cXG5AQCAtMTk0MTMsNiArMTk0MzUsOSBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidFxcbiBcXHRlcnIgPSBidGZfZGlzdGlsbF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgdCwgdG5hbWUsIFxcdTAwMjZ0Z3RfaW5mby1cXHUwMDNlZm1vZGVsKTtcXG4gXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdGlmICh0Z3RfaW5mby1cXHUwMDNlZm1vZGVsLnJldF9zaXplIFxcdTAwM2UgOCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgYXR0YWNoX3VzZXNfdHJhbXBvbGluZV9yZXR2YWwocHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpKVxcbitcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcdGlmIChidGZfaXNfbW9kdWxlKGJ0ZikpIHtcXG4gXFx0XFx0LyogVGhlIGJwZiBwcm9ncmFtIGFscmVhZHkgaG9sZHMgcmVmZXJlbmNlIHRvIG1vZHVsZS4gKi9cXG4gXFx0XFx0aWYgKFdBUk5fT05fT05DRSghcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2Vtb2QpKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX2ZhaWx1cmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jXFxuaW5kZXggZjlmOWUxY2I4N2JmMWMuLjZjMTk5ZjVmZjRkYjhhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmNcXG5AQCAtNzYsNiArNzYsMTQgQEAgc3RhdGljIHZvaWQgdGVzdF9mZXhpdF9ub3JldHVybnModm9pZClcXG4gXFx0XFx0XFx0ICAgICAgIFxcXCJBdHRhY2hpbmcgZmV4aXQvZnNlc3Npb24vZm1vZF9yZXQgdG8gX19ub3JldHVybiBmdW5jdGlvbiAnZG9fZXhpdCcgaXMgcmVqZWN0ZWQuXFxcIik7XFxuIH1cXG4gXFxuKyNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfX1xcbitzdGF0aWMgdm9pZCB0ZXN0X2ZleGl0X2ludDEyOF9yZXQodm9pZClcXG4re1xcbitcXHR0ZXN0X3RyYWNpbmdfZmFpbF9wcm9nKFxcXCJmZXhpdF9pbnQxMjhfcmV0XFxcIixcXG4rXFx0XFx0XFx0ICAgICAgIFxcXCJ3aXRoIGEgXFx1MDAzZTggYnl0ZSByZXR1cm4gdmFsdWUgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhdHRhY2ggdHlwZVxcXCIpO1xcbit9XFxuKyNlbmRpZlxcbitcXG4gdm9pZCB0ZXN0X3RyYWNpbmdfZmFpbHVyZSh2b2lkKVxcbiB7XFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJicGZfc3Bpbl9sb2NrXFxcIikpXFxuQEAgLTg2LDQgKzk0LDggQEAgdm9pZCB0ZXN0X3RyYWNpbmdfZmFpbHVyZSh2b2lkKVxcbiBcXHRcXHR0ZXN0X3RyYWNpbmdfZGVueSgpO1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwiZmV4aXRfbm9yZXR1cm5zXFxcIikpXFxuIFxcdFxcdHRlc3RfZmV4aXRfbm9yZXR1cm5zKCk7XFxuKyNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfX1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwiZmV4aXRfaW50MTI4X3JldFxcXCIpKVxcbitcXHRcXHR0ZXN0X2ZleGl0X2ludDEyOF9yZXQoKTtcXG4rI2VuZGlmXFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfZmFpbHVyZS5jXFxuaW5kZXggNjVlNDg1YzQ0NjhjNjIuLmY3YTA5NTc2NzY3OTU0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX2ZhaWx1cmUuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX2ZhaWx1cmUuY1xcbkBAIC0zMCwzICszMCw5IEBAIGludCBCUEZfUFJPRyhmZXhpdF9ub3JldHVybnMpXFxuIHtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4rXFxuK1NFQyhcXFwiP2ZleGl0L2JwZl90ZXN0bW9kX3Rlc3RfaW50MTI4X3JldFxcXCIpXFxuK2ludCBCUEZfUFJPRyhmZXhpdF9pbnQxMjhfcmV0KVxcbit7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXFxuaW5kZXggMzBmMWNkMjMwOTNjYmUuLjkwMmRiZjY1ODI1MDZmIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXFxuQEAgLTE2MSw2ICsxNjEsMTUgQEAgYnBmX3Rlc3Rtb2RfdGVzdF9hcmdfcHRyX3RvX3N0cnVjdChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfc3RydWN0X2FyZ18xICphKSB7XFxuIFxcdHJldHVybiBicGZfdGVzdG1vZF90ZXN0X3N0cnVjdF9hcmdfcmVzdWx0O1xcbiB9XFxuIFxcbisjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X19cXG4rbm9pbmxpbmUgX19pbnQxMjhcXG4rYnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KGludCBhKVxcbit7XFxuK1xcdGJwZl90ZXN0bW9kX3Rlc3Rfc3RydWN0X2FyZ19yZXN1bHQgPSBhO1xcbitcXHRyZXR1cm4gKF9faW50MTI4KWE7XFxuK31cXG4rI2VuZGlmXFxuK1xcbiBfX3dlYWsgbm9pbmxpbmUgdm9pZCBicGZfdGVzdG1vZF9sb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb25nX25hbWUodm9pZClcXG4ge1xcbiB9XFxuQEAgLTUxNCw2ICs1MjMsMTAgQEAgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4gXFxuIFxcdCh2b2lkKWJwZl90ZXN0bW9kX3Rlc3RfYXJnX3B0cl90b19zdHJ1Y3QoXFx1MDAyNnN0cnVjdF9hcmcxXzIpO1xcbiBcXG4rI2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fXFxuK1xcdCh2b2lkKWJwZl90ZXN0bW9kX3Rlc3RfaW50MTI4X3JldChpKTtcXG4rI2VuZGlmXFxuK1xcbiBcXHQodm9pZCl0cmFjZV9icGZfdGVzdG1vZF90ZXN0X3Jhd190cF9udWxsX3RwKE5VTEwpO1xcbiBcXG4gXFx0YnBmX3Rlc3Rtb2RfdGVzdF9zdHJ1Y3Rfb3BzMygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMTo0NzoyOC45MzQ5NjQ0MTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODA0MzkxMDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0XCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgc3RydWN0X29wcyBpbml0aWFsaXphdGlvbiB0byByZWplY3QgYXR0YWNoaW5nIEJQRiBwcm9ncmFtcyB0byBmdW5jdGlvbnMgd2l0aCByZXR1cm4gdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMgKGUuZy4sIF9faW50MTI4KSB3aGVuIHRoZSBhdHRhY2ggdHlwZSB1c2VzIHRoZSB0cmFtcG9saW5lIHJldHVybiB2YWx1ZS4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc3YWQ0OGJlZWI0YzBjMTk0YTMwNjcxNTcxOWY3NTM3NzhjMTU4MDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxMTo0NzoyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYyBiL2tlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuY1xuaW5kZXggNTFiMTZlNWY1NTM0ZTAuLmJiYjQ0ZWY4Zjg3YWE2IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jXG4rKysgYi9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmNcbkBAIC00NDUsNiArNDQ1LDE4IEBAIGludCBicGZfc3RydWN0X29wc19kZXNjX2luaXQoc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzX2Rlc2MgKnN0X29wc19kZXNjLFxuIFx0XHRcdGdvdG8gZXJyb3V0O1xuIFx0XHR9XG4gXG4rXHRcdC8qXG4rXHRcdCAqIEEgXHUwMDNlOCBieXRlIHJldHVybiB2YWx1ZSBpcyBwYXNzZWQgYmFjayBpbiB0aGUgUjA6UjIgcmVnaXN0ZXJcbitcdFx0ICogcGFpciwgd2hpY2ggdGhlIHN0cnVjdF9vcHMgdHJhbXBvbGluZSBkb2VzIG5vdCBwcmVzZXJ2ZSAob25seVxuK1x0XHQgKiA4IGJ5dGVzIG9mIHRoZSByZXR1cm4gdmFsdWUgYXJlIHNhdmVkIGFuZCByZXN0b3JlZCkuXG4rXHRcdCAqL1xuK1x0XHRpZiAoc3Rfb3BzLVx1MDAzZWZ1bmNfbW9kZWxzW2ldLnJldF9zaXplIFx1MDAzZSA4KSB7XG4rXHRcdFx0cHJfd2FybihcImZ1bmMgcHRyICVzIGluIHN0cnVjdCAlcyBoYXMgYSBcdTAwM2U4IGJ5dGUgcmV0dXJuIHZhbHVlLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkXFxuXCIsXG4rXHRcdFx0XHRtbmFtZSwgc3Rfb3BzLVx1MDAzZW5hbWUpO1xuK1x0XHRcdGVyciA9IC1FT1BOT1RTVVBQO1xuK1x0XHRcdGdvdG8gZXJyb3V0O1xuK1x0XHR9XG4rXG4gXHRcdHN0dWJfZnVuY19hZGRyID0gKih2b2lkICoqKShzdF9vcHMtXHUwMDNlY2ZpX3N0dWJzICsgbW9mZik7XG4gXHRcdGVyciA9IHByZXBhcmVfYXJnX2luZm8oYnRmLCBzdF9vcHMtXHUwMDNlbmFtZSwgbW5hbWUsXG4gXHRcdFx0XHQgICAgICAgZnVuY19wcm90bywgc3R1Yl9mdW5jX2FkZHIsXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA2NTE1ZDRkM2MwMDMyZi4uMjZkMjgxYjc3YTZlNzIgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTE4ODczLDYgKzE4ODczLDIwIEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiXG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG4gXG4rc3RhdGljIGJvb2wgYXR0YWNoX3VzZXNfdHJhbXBvbGluZV9yZXR2YWwoZW51bSBicGZfYXR0YWNoX3R5cGUgdHlwZSlcbit7XG4rXHRzd2l0Y2ggKHR5cGUpIHtcbitcdGNhc2UgQlBGX01PRElGWV9SRVRVUk46XG4rXHRjYXNlIEJQRl9UUkFDRV9GRVhJVDpcbitcdGNhc2UgQlBGX1RSQUNFX0ZFWElUX01VTFRJOlxuK1x0Y2FzZSBCUEZfVFJBQ0VfRlNFU1NJT046XG4rXHRjYXNlIEJQRl9UUkFDRV9GU0VTU0lPTl9NVUxUSTpcbitcdFx0cmV0dXJuIHRydWU7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rfVxuK1xuIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXG5AQCAtMTkxMzcsNiArMTkxNTEsMTQgQEAgaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcbitcdFx0aWYgKHRndF9pbmZvLVx1MDAzZWZtb2RlbC5yZXRfc2l6ZSBcdTAwM2UgOCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKHByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpKSB7XG4rXHRcdFx0YnBmX2xvZyhsb2csXG4rXHRcdFx0XHRcIkF0dGFjaCB0byBmdW5jdGlvbiAlcyB3aXRoIGEgXHUwMDNlOCBieXRlIHJldHVybiB2YWx1ZSBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGF0dGFjaCB0eXBlXFxuXCIsXG4rXHRcdFx0XHR0bmFtZSk7XG4rXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0XHR9XG4rXG4gXHRcdC8qXG4gXHRcdCAqICoubXVsdGkgcHJvZ3JhbXMgZG9uJ3QgbmVlZCBhbiBhZGRyZXNzIGR1cmluZyBwcm9ncmFtXG4gXHRcdCAqIHZlcmlmaWNhdGlvbiwgd2UganVzdCB0YWtlIHRoZSBtb2R1bGUgcmVmIGlmIG5lZWRlZC5cbkBAIC0xOTQxMyw2ICsxOTQzNSw5IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0XG4gXHRlcnIgPSBidGZfZGlzdGlsbF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgdCwgdG5hbWUsIFx1MDAyNnRndF9pbmZvLVx1MDAzZWZtb2RlbCk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuK1x0aWYgKHRndF9pbmZvLVx1MDAzZWZtb2RlbC5yZXRfc2l6ZSBcdTAwM2UgOCBcdTAwMjZcdTAwMjZcbitcdCAgICBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbChwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlKSlcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFx0aWYgKGJ0Zl9pc19tb2R1bGUoYnRmKSkge1xuIFx0XHQvKiBUaGUgYnBmIHByb2dyYW0gYWxyZWFkeSBob2xkcyByZWZlcmVuY2UgdG8gbW9kdWxlLiAqL1xuIFx0XHRpZiAoV0FSTl9PTl9PTkNFKCFwcm9nLVx1MDAzZWF1eC1cdTAwM2Vtb2QpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdHJhY2luZ19mYWlsdXJlLmNcbmluZGV4IGY5ZjllMWNiODdiZjFjLi42YzE5OWY1ZmY0ZGI4YSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RyYWNpbmdfZmFpbHVyZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90cmFjaW5nX2ZhaWx1cmUuY1xuQEAgLTc2LDYgKzc2LDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RfZmV4aXRfbm9yZXR1cm5zKHZvaWQpXG4gXHRcdFx0ICAgICAgIFwiQXR0YWNoaW5nIGZleGl0L2ZzZXNzaW9uL2Ztb2RfcmV0IHRvIF9fbm9yZXR1cm4gZnVuY3Rpb24gJ2RvX2V4aXQnIGlzIHJlamVjdGVkLlwiKTtcbiB9XG4gXG4rI2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fXG4rc3RhdGljIHZvaWQgdGVzdF9mZXhpdF9pbnQxMjhfcmV0KHZvaWQpXG4re1xuK1x0dGVzdF90cmFjaW5nX2ZhaWxfcHJvZyhcImZleGl0X2ludDEyOF9yZXRcIixcbitcdFx0XHQgICAgICAgXCJ3aXRoIGEgXHUwMDNlOCBieXRlIHJldHVybiB2YWx1ZSBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGF0dGFjaCB0eXBlXCIpO1xuK31cbisjZW5kaWZcbitcbiB2b2lkIHRlc3RfdHJhY2luZ19mYWlsdXJlKHZvaWQpXG4ge1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJicGZfc3Bpbl9sb2NrXCIpKVxuQEAgLTg2LDQgKzk0LDggQEAgdm9pZCB0ZXN0X3RyYWNpbmdfZmFpbHVyZSh2b2lkKVxuIFx0XHR0ZXN0X3RyYWNpbmdfZGVueSgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJmZXhpdF9ub3JldHVybnNcIikpXG4gXHRcdHRlc3RfZmV4aXRfbm9yZXR1cm5zKCk7XG4rI2lmZGVmIF9fU0laRU9GX0lOVDEyOF9fXG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcImZleGl0X2ludDEyOF9yZXRcIikpXG4rXHRcdHRlc3RfZmV4aXRfaW50MTI4X3JldCgpO1xuKyNlbmRpZlxuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19mYWlsdXJlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdHJhY2luZ19mYWlsdXJlLmNcbmluZGV4IDY1ZTQ4NWM0NDY4YzYyLi5mN2EwOTU3Njc2Nzk1NCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90cmFjaW5nX2ZhaWx1cmUuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RyYWNpbmdfZmFpbHVyZS5jXG5AQCAtMzAsMyArMzAsOSBAQCBpbnQgQlBGX1BST0coZmV4aXRfbm9yZXR1cm5zKVxuIHtcbiBcdHJldHVybiAwO1xuIH1cbitcbitTRUMoXCI/ZmV4aXQvYnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0XCIpXG4raW50IEJQRl9QUk9HKGZleGl0X2ludDEyOF9yZXQpXG4re1xuK1x0cmV0dXJuIDA7XG4rfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG5pbmRleCAzMGYxY2QyMzA5M2NiZS4uOTAyZGJmNjU4MjUwNmYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jXG5AQCAtMTYxLDYgKzE2MSwxNSBAQCBicGZfdGVzdG1vZF90ZXN0X2FyZ19wdHJfdG9fc3RydWN0KHN0cnVjdCBicGZfdGVzdG1vZF9zdHJ1Y3RfYXJnXzEgKmEpIHtcbiBcdHJldHVybiBicGZfdGVzdG1vZF90ZXN0X3N0cnVjdF9hcmdfcmVzdWx0O1xuIH1cbiBcbisjaWZkZWYgX19TSVpFT0ZfSU5UMTI4X19cbitub2lubGluZSBfX2ludDEyOFxuK2JwZl90ZXN0bW9kX3Rlc3RfaW50MTI4X3JldChpbnQgYSlcbit7XG4rXHRicGZfdGVzdG1vZF90ZXN0X3N0cnVjdF9hcmdfcmVzdWx0ID0gYTtcbitcdHJldHVybiAoX19pbnQxMjgpYTtcbit9XG4rI2VuZGlmXG4rXG4gX193ZWFrIG5vaW5saW5lIHZvaWQgYnBmX3Rlc3Rtb2RfbG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29uZ19uYW1lKHZvaWQpXG4ge1xuIH1cbkBAIC01MTQsNiArNTIzLDEwIEBAIGJwZl90ZXN0bW9kX3Rlc3RfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosXG4gXG4gXHQodm9pZClicGZfdGVzdG1vZF90ZXN0X2FyZ19wdHJfdG9fc3RydWN0KFx1MDAyNnN0cnVjdF9hcmcxXzIpO1xuIFxuKyNpZmRlZiBfX1NJWkVPRl9JTlQxMjhfX1xuK1x0KHZvaWQpYnBmX3Rlc3Rtb2RfdGVzdF9pbnQxMjhfcmV0KGkpO1xuKyNlbmRpZlxuK1xuIFx0KHZvaWQpdHJhY2VfYnBmX3Rlc3Rtb2RfdGVzdF9yYXdfdHBfbnVsbF90cChOVUxMKTtcbiBcbiBcdGJwZl90ZXN0bW9kX3Rlc3Rfc3RydWN0X29wczMoKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjQ3OjI4LjkzNDk2NjU5NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MTExNzk4MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFJldHVybiBWYWx1ZSBTaXplIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyBtYWtpbmcgYSBzcGVjaWZpYyBjaGFuZ2UgaW4gaG93IHdlIGhhbmRsZSByZXR1cm4gdmFsdWVzIGluIEJQRiBwcm9ncmFtcywgc3BlY2lmaWNhbGx5IHRob3NlIGxhcmdlciB0aGFuIDggYnl0ZXMuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIGBicGZfc3RydWN0X29wcy5jYCBhbmQgdGhlIHZlcmlmaWVyIChgdmVyaWZpZXIuY2ApLlxuXG5Fc3NlbnRpYWxseSwgdGhlIHBhdGNoIGludHJvZHVjZXMgY2hlY2tzIHRvICpyZWplY3QqIEJQRiBwcm9ncmFtcyB0aGF0IGFyZSB0cnlpbmcgdG8gYXR0YWNoIHRvIGZ1bmN0aW9ucyByZXR1cm5pbmcgdmFsdWVzIGdyZWF0ZXIgdGhhbiA4IGJ5dGVzLCBsaWtlIGBfX2ludDEyOGAuIEl0J3MgZG9pbmcgdGhpcyB0aHJvdWdoIGEgZmV3IGtleSBhZGRpdGlvbnM6XG5cbiogICBJbiBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCwgaXQncyBub3cgY2hlY2tpbmcgYHN0X29wcy1cdTAwM2VmdW5jX21vZGVsc1tpXS5yZXRfc2l6ZWAgYWdhaW5zdCA4IGJ5dGVzLCBhbmQgaWYgaXQncyB0b28gbGFyZ2UsIGl0IHRocm93cyBhbiBgLUVPUE5PVFNVUFBgIGVycm9yLlxuKiAgIFRoZSB2ZXJpZmllciBnZXRzIGEgbmV3IGZ1bmN0aW9uLCBgYXR0YWNoX3VzZXNfdHJhbXBvbGluZV9yZXR2YWwoKWAsIGxpa2VseSB0byBkZXRlcm1pbmUgaWYgYSB0cmFtcG9saW5lIGlzIGJlaW5nIHVzZWQuXG4qICAgV2l0aGluIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAsIHRoZXJlIGFyZSBjaGVja3MgdXNpbmcgYHRndF9pbmZvLVx1MDAzZWZtb2RlbC5yZXRfc2l6ZWAgaW4gY29uanVuY3Rpb24gd2l0aCBgYXR0YWNoX3VzZXNfdHJhbXBvbGluZV9yZXR2YWwoKWAgdG8gZW5mb3JjZSB0aGlzIHNpemUgbGltaXQgYmVmb3JlIGFsbG93aW5nIHRoZSBwcm9ncmFtIHRvIGF0dGFjaC5cblxuVGhpcyBpcyBhICoqZnVuY3Rpb25hbCBjaGFuZ2UqKi4gSXQgbW9kaWZpZXMgZXhpc3RpbmcgbG9naWMgaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgdGhlIHN0cnVjdFxcX29wcyBpbml0aWFsaXphdGlvbi4gQmVmb3JlIHRoaXMsIHRoZXNlIHByb2dyYW1zIG1pZ2h0IGhhdmUgYmVlbiBhbGxvd2VkLCBidXQgcHJvYmFibHkgd2VyZSBicm9rZW4gZHVlIHRvIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgdHJhbXBvbGluZSBtZWNoYW5pc20gaW4gaGFuZGxpbmcgcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzLlxuXG5HaXZlbiB0aGF0IGl0IG1vZGlmaWVzIHRoZSB2ZXJpZmllciBhbmQgaW5pdGlhbGl6YXRpb24gbG9naWMsIEkgZGVmaW5pdGVseSB0aGluayBmdXp6aW5nIGlzIHdhcnJhbnRlZCBoZXJlLiBXZSBuZWVkIHRvIGZvY3VzIG9uIHRob3NlIGtleSBzeW1ib2xzOiBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCwgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCwgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuXG5cbk5vdywgdG8gYXNzZXNzIHRoZSBmdXp6aW5nIHN0cmF0ZWd5LCBJIHNob3VsZCBxdWlja2x5IHZlcmlmeSBpZiBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCBpcyByZWFjaGFibGUuIEkgYWxzbyBuZWVkIHRvIHZlcmlmeSB0aGF0IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgYXJlIHBhcnQgb2YgdGhlIHZlcmlmaWVyIGNvZGUsIHdoaWNoIEkgKmtub3cqIGlzIHJlYWNoYWJsZS4gSXQncyBpbiB0aGUgY29udHJvbCBwbGFuZSwgbm90IHRoZSBkYXRhIHBhdGgsIHNvIGl0IGlzbid0IHBlcmZvcm1hbmNlLWNyaXRpY2FsIGNvZGUuXG5cbkknbSBnb2luZyB0byBkbyBhIHF1aWNrIGdyZXAgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCByZWdhcmRpbmcgdGhvc2Ugc3ltYm9scyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODI1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6MzUuODQ2MTQ3ODY0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjk1Nzc2NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9MjI2Mj1pbnQgYnBmX3N0cnVjdF9vcHNfdGVzdF9ydW4oc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqa2F0dHIsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIyNjQtI2VuZGlmXFxuaW5jbHVkZS9saW51eC9icGYuaDoyMjY1OmludCBicGZfc3RydWN0X29wc19kZXNjX2luaXQoc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzX2Rlc2MgKnN0X29wc19kZXNjLFxcbmluY2x1ZGUvbGludXgvYnBmLmgtMjI2Ni1cXHRcXHRcXHQgICAgIHN0cnVjdCBidGYgKmJ0ZixcXG4tLVxcbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYz0zMjQ9aW50IGJwZl9zdHJ1Y3Rfb3BzX3N1cHBvcnRlZChjb25zdCBzdHJ1Y3QgYnBmX3N0cnVjdF9vcHMgKnN0X29wcywgdTMyIG1vZmYpXFxuLS1cXG5rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzLmMtMzMwLVxcbmtlcm5lbC9icGYvYnBmX3N0cnVjdF9vcHMuYzozMzE6aW50IGJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdChzdHJ1Y3QgYnBmX3N0cnVjdF9vcHNfZGVzYyAqc3Rfb3BzX2Rlc2MsXFxua2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jLTMzMi1cXHRcXHRcXHQgICAgIHN0cnVjdCBidGYgKmJ0ZixcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9OTgzNT1idGZfYWRkX3N0cnVjdF9vcHMoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3N0cnVjdF9vcHMgKnN0X29wcyxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtOTg2Ni1cXG5rZXJuZWwvYnBmL2J0Zi5jOjk4Njc6XFx0ZXJyID0gYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0KFxcdTAwMjZ0YWItXFx1MDAzZW9wc1tidGYtXFx1MDAzZXN0cnVjdF9vcHNfdGFiLVxcdTAwM2VjbnRdLCBidGYsIGxvZyk7XFxua2VybmVsL2JwZi9idGYuYy05ODY4LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjQ3OjM4LjE3NTcyOTU2MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDI1Mjk4ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBvd24gZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKktlcm5lbCBCUEYgQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBkaXZpbmcgaW50byBrZXJuZWwgQlBGIGNvbmZpZ3VyYXRpb24uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBCUEZfU1lTQ0FMTGAgaXMgKnRoZSoga2V5IGVuYWJsZXIgaGVyZS4gV2l0aG91dCB0aGF0LCB3ZSdyZSBub3QgZ29pbmcgYW55d2hlcmUuIEl0J3MgdGhlIGx5bmNocGluIGZvciBldmVyeXRoaW5nLiBOb3csIHRvIHJlYWxseSB1bmRlcnN0YW5kIGhvdyB0aGlzIGltcGFjdHMgdGhlIHN5c3RlbSwgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBJIHNob3VsZCBzdGFydCBieSBleGFtaW5pbmcgdHdvIGZpbGVzOiBga2VybmVsL2JwZi9icGZfc3RydWN0X29wcy5jYCBhbmQgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIGBicGZfc3RydWN0X29wcy5jYCB3aWxsIHNob3cgbWUgaG93IHRoZXkncmUgaGFuZGxpbmcgc3RydWN0dXJlcyB3aXRoaW4gdGhlIEJQRiBzeXN0ZW0gYW5kIG9wZXJhdGlvbnMsIHdoaWxlIGB2ZXJpZmllci5jYCBpcyBnb2luZyB0byBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBjcnVjaWFsIHNlY3VyaXR5IGNoZWNrcyBhbmQgdmFsaWRhdGlvbiBzdGVwcy4gVW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGVzZSB0d28gaXMga2V5IHRvIHJlYWxseSBncmFzcGluZyB0aGUgY29uZmlndXJhdGlvbidzIGltcGxpY2F0aW9ucy4gSXQgd2lsbCByZWFsbHkgbGV0IG1lIHVuZGVyc3RhbmQgaWYgYW55IGltcG9ydGFudCBudWFuY2VzIG9yIGxpbWl0YXRpb25zIGFyZSBwcmVzZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjI5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6NDEuNzc4MjYwOTkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NDI5NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19CUEZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlPTI9b2JqLXkgOj0gY29yZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTozOmlmbmVxICgkKENPTkZJR19CUEZfSklUX0FMV0FZU19PTikseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTQtIyBfX19icGZfcHJvZ19ydW4oKSBuZWVkcyBHQ1NFIGRpc2FibGVkIG9uIHg4Njsgc2VlIDMxOTNjMDgzNmYyMDMgZm9yIGRldGFpbHNcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gbG9jYWxfc3RvcmFnZS5vIHF1ZXVlX3N0YWNrX21hcHMubyByaW5nYnVmLm8gYnBmX2luc25fYXJyYXkub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfbG9jYWxfc3RvcmFnZS5vIGJwZl90YXNrX3N0b3JhZ2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBmaXh1cHMubyBjZmcubyBzdGF0ZXMubyBiYWNrdHJhY2subyBjaGVja19idGYub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTU6b2JqLSR7Q09ORklHX0JQRl9MU019XFx0ICArPSBicGZfaW5vZGVfc3RvcmFnZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGRpc2FzbS5vIG1wcm9nLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19CUEZfSklUKSArPSB0cmFtcG9saW5lLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE5LWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGFyZW5hLm8gcmFuZ2VfdHJlZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0yMS1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGRpc3BhdGNoZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMjMtaWZlcSAoJChDT05GSUdfTkVUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBkZXZtYXAub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBjcHVtYXAub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBvZmZsb2FkLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI3Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gbmV0X25hbWVzcGFjZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToyODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHRjeC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0yOS1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU9MzA9aWZlcSAoJChDT05GSUdfUEVSRl9FVkVOVFMpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN0YWNrbWFwLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTMyLWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZT0zMz1pZmVxICgkKENPTkZJR19DR1JPVVBTKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBjZ3JvdXBfaXRlci5vIGJwZl9jZ3JwX3N0b3JhZ2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMzUtZW5kaWZcXG4tLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU9Mzc9aWZlcSAoJChDT05GSUdfSU5FVCkseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gcmV1c2Vwb3J0X2FycmF5Lm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM5LWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTQyPWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0MzppZmVxICgkKENPTkZJR19CUEZfSklUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfc3RydWN0X29wcy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNwdW1hc2sub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTU1LSMgc2VtYW50aWNzIHdpdGhpbiBwYWhvbGUgYXJlIHJldmlzaXRlZCBhY2NvcmRpbmdseS5cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU2Om9iai0ke0NPTkZJR19CUEZfTFNNfSArPSBicGZfbHNtX3Byb3RvLm8gYnBmX2xzbS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS01Ny1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU9NTg9aWZuZXEgKCQoQ09ORklHX0NSWVBUTyksKVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NTk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBjcnlwdG8ub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjAtZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYxOm9iai0kKENPTkZJR19CUEZfUFJFTE9BRCkgKz0gcHJlbG9hZC9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYyLVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjM6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSByZWxvX2NvcmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGZfaXRlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJ0Zl9yZWxvY2F0ZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2NjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGttZW1fY2FjaGVfaXRlci5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS02Ny1pZmVxICgkKENPTkZJR19ETUFfU0hBUkVEX0JVRkZFUikseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZG1hYnVmX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjktZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6NDEuODM3Njk0NTM5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQxNDgzMzg3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQlBGIE1vZHVsZSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgQlBGIHBhdGNoIGFuZCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJdCdzIHByZXR0eSBjbGVhciB0aGF0IGBDT05GSUdfQlBGX1NZU0NBTExgIGFuZCBgQ09ORklHX0JQRl9KSVRgIGFyZSBnb2luZyB0byBiZSByZXF1aXJlZCwgZXNwZWNpYWxseSBzaW5jZSB0aGV5J3JlIG5lZWRlZCBmb3IgYGJwZl9zdHJ1Y3Rfb3BzLm9gLiBUaGUgdmVyaWZpZXIgaXRzZWxmIGlzLCBvZiBjb3Vyc2UsIGJ1aWx0IHdpdGggYENPTkZJR19CUEZfU1lTQ0FMTGAsIHNvIHRoYXQncyBhIGdpdmVuLlxuXG5Ob3csIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSAqc3BlY2lmaWMqIGNvbmZpZ3VyYXRpb25zIHRpZWQgdG8gdGhpcyB0ZXN0IG1vZHVsZS4gVGhlIHRlc3QgbW9kdWxlIGluIHF1ZXN0aW9uIGlzIGBicGZfdGVzdG1vZC5jYC4gSSdkIHR5cGljYWxseSBleHBlY3QgdG8gc2VlIHNvbWV0aGluZyBsaWtlIGBDT05GSUdfQlBGX0tQUk9CRV9PVkVSUklERWAgb3IgYSBzaW1pbGFyIGZsYWcgaW52b2x2ZWQgaW4gaXRzIGJ1aWxkLCBidXQgc2luY2UgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBjb3JlIEJQRiBsb2dpYywgaXQgbWlnaHQgYmUgZGlmZmVyZW50LlxuXG5MZXQncyBicmVhayBkb3duIHRoZSBrZXkgc3ltYm9scyB0aGUgcGF0Y2ggZm9jdXNlcyBvbjogYGJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdGAsIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAsIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBSaWdodCwgdGhlIGZpcnN0IHRoaW5nIGlzIHRvIHZlcmlmeSBpZiBgYnBmX3N0cnVjdF9vcHNfZGVzY19pbml0YCBpcyBldmVuIHJlYWNoYWJsZS4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQncyBjYWxsZWQgZnJvbSBgYnRmX2FkZF9zdHJ1Y3Rfb3BzYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIGBidGZfYWRkX3N0cnVjdF9vcHNgLCBpbiB0dXJuLCBpcyBpbnZva2VkIHdoZW4gQlRGIGlzIGJlaW5nIGxvYWRlZC4gR29vZC4gYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBpcyBjYWxsZWQgZHVyaW5nIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQuIEFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIGlzIHNwZWNpZmljYWxseSBmb3IgbXVsdGktcHJvZ3JhbSBhdHRhY2htZW50cy5cblxuT2theSwgc28gYWxsIG9mIHRoZXNlIGFyZSBjbGVhcmx5IHJlYWNoYWJsZSBmcm9tIHVzZXItc3BhY2UgdGhyb3VnaCB0aGUgYGJwZigpYCBzeXNjYWxsLiBUaGF0J3MgZ29vZCwgdGhhdCBjb25maXJtcyB0aGF0IHRoZXNlIGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2VyLXNwYWNlLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgY2lyY2xlIGJhY2sgdG8gdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyBhZ2Fpbi4gV2UgaGF2ZSB0byBjb25maXJtIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfQlBGX0pJVGAgYXJlIHRoZSBvbmx5ICpjcml0aWNhbCogb25lcywgYXQgbGVhc3QgZm9yIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkuXG5cbkZpbmFsbHksIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBob3cgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBpcyBiZWluZyB1c2VkLCBzcGVjaWZpY2FsbHkgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgdG8gbG9vayBmb3IgYW55dGhpbmcgSSd2ZSBtaXNzZWQuIEl0IHBheXMgdG8gYmUgdGhvcm91Z2ggd2l0aCB0aGUgdmVyaWZpZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwNzQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6NDguMjUyNTMwMzk4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODM1MzUyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTExODg4PXN0YXRpYyBpbnQgcHJvY2Vzc19rZl9hcmdfcHRyX3RvX3JidHJlZV9ub2RlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4OTktICogTFNNIGhvb2tzIGFuZCBpdGVycyAoYm90aCBzbGVlcGFibGUgYW5kIG5vbi1zbGVlcGFibGUpIGFyZSBzYWZlLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTkwMDogKiBBbnkgc2xlZXBhYmxlIHByb2dzIGFyZSBhbHNvIHNhZmUgc2luY2UgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoKSBlbmZvcmNlXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTAxLSAqIHRoZW0gY2FuIG9ubHkgYmUgYXR0YWNoZWQgdG8gc29tZSBzcGVjaWZpYyBob29rIHBvaW50cy5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODg3Nj1zdGF0aWMgYm9vbCBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbChlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODg5LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODg5MDppbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg4OTEtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTMwMz1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzMy1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkzMzQ6XFx0cmV0ID0gYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoXFx1MDAyNmVudi1cXHUwMDNlbG9nLCBwcm9nLCB0Z3RfcHJvZywgYnRmX2lkLCBcXHUwMDI2dGd0X2luZm8pO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzNS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMTo0Nzo0OC40MDA4ODkwNDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODEzOTA1Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipEZWx2aW5nIGludG8gZUJQRiBBdHRhY2htZW50IFZhbGlkYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgYXR0YWNobWVudCB2YWxpZGF0aW9uIHByb2Nlc3MuIEl0J3MgY2xlYXIgdGhhdCBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGdldHMgaW52b2tlZCBmcm9tIGBjaGVja19hdHRhY2hfYnRmX2lkYCwgd2hpY2ggaXMgYSBrZXkgY29tcG9uZW50IG9mIHRoZSB2ZXJpZmllci4gVGhhdCBjb25maXJtcyBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcuIE5vdyBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgbXVsdGlwbGUgYXR0YWNobWVudCBwb2ludHMuIEknbSBnb2luZyB0byBsb29rIG1vcmUgY2xvc2VseSBhdCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIHRvIHVuZGVyc3RhbmQgaG93IHRoYXQgd29ya3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzNTIsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMTo0Nzo1MS4yMTQ4MDI2MjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTYyNDgzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzAzPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDAyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTQwMzppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDA0LVxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMTo0Nzo1MS4zNTQ0MzgyODlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwNDEyMDU3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGFuZCB0aGlzIGlzIHRoZSBjb250ZXh0OlxuXG4qKkludmVzdGlnYXRpbmcgRnVuY3Rpb24gVXNhZ2UqKlxuXG5BbHJpZ2h0LCB0aGlzIGZ1bmN0aW9uLi4uIGl0J3MgZWl0aGVyIGV4cG9ydGVkIG9yIHVzZWQgb3V0c2lkZSBvZiBpdHMgY3VycmVudCBzY29wZS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIGJyb2FkZXIgaW1wYWN0LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gVW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzIGFuZCB0aGUgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSB0aGF0IHJlbHkgb24gaXQgaXMgYWJzb2x1dGVseSBjcnVjaWFsLiBJIG5lZWQgdG8gdHJhY2UgaXRzIHVzYWdlIHRvIGdhaW4gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIGl0cyBpbXBsaWNhdGlvbnMuIFRoYXQncyB0aGUgcHJpb3JpdHkgcmlnaHQgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzM2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6NDc6NTQuMTU4NTYwNTc5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDE4ODg2MzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTU5Mj1pbnQgYnBmX2ZpeHVwX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xNTk1LS8qIEZ1bmN0aW9ucyBleHBvcnRlZCBmcm9tIHZlcmlmaWVyLmMsIHVzZWQgYnkgdHJhbXBvbGluZS5jICovXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaDoxNTk2OmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTE1OTctXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pO1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTYxMT1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjI0LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2MjU6XFx0XFx0ZXJyID0gYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoYnRmLCBwcm9nLCBpZHNbaV0sIFxcdTAwMjZ0Z3RfaW5mbyk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTYyNi1cXHRcXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzAzPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDAyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTQwMzppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDA0LVxcdFxcdFxcdFxcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMTo0Nzo1Ny41Nzc0NTI5OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDc4MzM1MTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBUcmFtcG9saW5lIFJldHVybiBWYWx1ZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggb3JpZ2luYXRlcyBmcm9tIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hgLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBmb2N1c2VzIG9uIHByZXZlbnRpbmcgYSBCUEYgcHJvZ3JhbSBmcm9tIGJlaW5nIGF0dGFjaGVkIHRvIGZ1bmN0aW9ucyB0aGF0IHJldHVybiB2YWx1ZXMgbGFyZ2VyIHRoYW4gOCBieXRlcywgc3BlY2lmaWNhbGx5IHRob3NlIGxpa2UgYF9faW50MTI4YCwgd2hlbiB1c2luZyB0aGUgdHJhbXBvbGluZSByZXR1cm4gdmFsdWUgYXR0YWNoIHR5cGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgcmVhY2hhYmxlIHRocm91Z2ggdGhlIGBicGYoKWAgc3lzY2FsbCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGNvbnNpZGVyIGluIHRoZSBvdmVyYWxsIHNlY3VyaXR5IHByb2ZpbGUuXG5cbkZyb20gYW4gYW5hbHlzaXMgcGVyc3BlY3RpdmUsIGl0IGxvb2tzIGxpa2UgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9KSVRgIGFyZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIHRvIGV4cG9zZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIFRoZSBjaGFuZ2UgdG91Y2hlcyBrZXkgYXJlYXMsIHdoaWNoIG1lYW5zIGl0IHNob3VsZCBiZSBzY3J1dGluaXplZDogIHNwZWNpZmljYWxseSwgYGJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdGAsIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAsIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBUaGVzZSBzZWVtIHRvIGJlIHRoZSBwcmltYXJ5IHBvaW50cyBvZiB2YWxpZGF0aW9uIGFuZCBjaGVja2luZyB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllciBhbmQgc3RydWN0X29wcyBpbml0aWFsaXphdGlvbiByZWxhdGVkIHRvIHRoaXMgY29uc3RyYWludC5cblxuQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIHRoZSByZXN1bHRzOiBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYHRydWVgLCBiZWNhdXNlIHRoZSBjaGFuZ2VzIGhlcmUgZGVhbCB3aXRoIHRoZSB2YWxpZGF0aW9uIG9mIHJldHVybiB2YWx1ZSBzaXplcywgYW5kIHN5c2NhbGxzIGFyZSBhbHdheXMgYSBnb29kIGFyZWEgdG8gZm9jdXMgb24uIEVuYWJsZUNvbmZpZ3MgYXJlIGNsZWFybHkgYFtcIkJQRl9TWVNDQUxMXCIsIFwiQlBGX0pJVFwiXWAsIGFuZCB0aGUgY3JpdGljYWwgYEZvY3VzU3ltYm9sc2AgYXJlIGBbXCJicGZfc3RydWN0X29wc19kZXNjX2luaXRcIiwgXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLCBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJdYC4gVGhlIHJlYXNvbmluZyBzaG91bGQgYmU6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBpbiB0aGUgQlBGIHZlcmlmaWVyIGFuZCBzdHJ1Y3Rfb3BzIGluaXRpYWxpemF0aW9uIHRvIHJlamVjdCBhdHRhY2hpbmcgQlBGIHByb2dyYW1zIHRvIGZ1bmN0aW9ucyB3aXRoIHJldHVybiB2YWx1ZXMgbGFyZ2VyIHRoYW4gOCBieXRlcyAoZS5nLiwgX19pbnQxMjgpIHdoZW4gdGhlIGF0dGFjaCB0eXBlIHVzZXMgdGhlIHRyYW1wb2xpbmUgcmV0dXJuIHZhbHVlLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwuXCJcblxuTm93IEkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGVzZSB2YWx1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzNDksIk91dHB1dFRva2VucyI6MTQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjQ4OjAzLjY1NTc5MDQzMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNTYxMTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdFwiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGluIHRoZSBCUEYgdmVyaWZpZXIgYW5kIHN0cnVjdF9vcHMgaW5pdGlhbGl6YXRpb24gdG8gcmVqZWN0IGF0dGFjaGluZyBCUEYgcHJvZ3JhbXMgdG8gZnVuY3Rpb25zIHdpdGggcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzIChlLmcuLCBfX2ludDEyOCkgd2hlbiB0aGUgYXR0YWNoIHR5cGUgdXNlcyB0aGUgdHJhbXBvbGluZSByZXR1cm4gdmFsdWUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9zdHJ1Y3Rfb3BzX2Rlc2NfaW5pdFwiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGluIHRoZSBCUEYgdmVyaWZpZXIgYW5kIHN0cnVjdF9vcHMgaW5pdGlhbGl6YXRpb24gdG8gcmVqZWN0IGF0dGFjaGluZyBCUEYgcHJvZ3JhbXMgdG8gZnVuY3Rpb25zIHdpdGggcmV0dXJuIHZhbHVlcyBsYXJnZXIgdGhhbiA4IGJ5dGVzIChlLmcuLCBfX2ludDEyOCkgd2hlbiB0aGUgYXR0YWNoIHR5cGUgdXNlcyB0aGUgdHJhbXBvbGluZSByZXR1cm4gdmFsdWUuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflownb4xl[1] Phase: Succeeded StartedAt: 2026-07-11 11:50:01 +0000 UTC FinishedAt: 2026-07-11 11:50:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-11 11:50:01 +0000 UTC FinishedAt: 2026-07-11 11:50:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2] Phase: Succeeded StartedAt: 2026-07-11 11:50:01 +0000 UTC FinishedAt: 2026-07-11 16:16:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-11 11:50:01 +0000 UTC FinishedAt: 2026-07-11 16:16:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-11 11:50:01 +0000 UTC FinishedAt: 2026-07-11 11:50:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-11 11:50:01 +0000 UTC FinishedAt: 2026-07-11 11:50:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflownb4xl/series-workflownb4xl-convert-artifact-4191207608/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-11 11:50:11 +0000 UTC FinishedAt: 2026-07-11 12:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-11 11:50:11 +0000 UTC FinishedAt: 2026-07-11 12:42:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*aef92d4f-a230-4129-afae-e4c626e83ee0,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-workflownb4xl/series-workflownb4xl-convert-artifact-4191207608/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": "f8168af8-9d83-43f5-b926-522c2435634f", "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-workflownb4xl/series-workflownb4xl-build-action-2281834094/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-11 11:50:11 +0000 UTC FinishedAt: 2026-07-11 12:41:52 +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:*aef92d4f-a230-4129-afae-e4c626e83ee0,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-workflownb4xl/series-workflownb4xl-convert-artifact-4191207608/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": "f8168af8-9d83-43f5-b926-522c2435634f", "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-workflownb4xl/series-workflownb4xl-build-action-2281834094/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-11 12:42:51 +0000 UTC FinishedAt: 2026-07-11 12:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-11 12:42:51 +0000 UTC FinishedAt: 2026-07-11 12:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-11 12:42:51 +0000 UTC FinishedAt: 2026-07-11 12:43:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-11 12:42:51 +0000 UTC FinishedAt: 2026-07-11 12:42:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflownb4xl/series-workflownb4xl-convert-artifact-4275506463/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-11 12:43:01 +0000 UTC FinishedAt: 2026-07-11 12:45:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-11 12:43:01 +0000 UTC FinishedAt: 2026-07-11 12:45:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f8168af8-9d83-43f5-b926-522c2435634f,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-workflownb4xl/series-workflownb4xl-build-action-2281834094/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-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-11 12:45:19 +0000 UTC FinishedAt: 2026-07-11 12:45:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-11 12:45:19 +0000 UTC FinishedAt: 2026-07-11 12:45:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-11 12:45:19 +0000 UTC FinishedAt: 2026-07-11 13:10:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-11 12:45:19 +0000 UTC FinishedAt: 2026-07-11 13:10:58 +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:*aef92d4f-a230-4129-afae-e4c626e83ee0,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-workflownb4xl/series-workflownb4xl-convert-artifact-4275506463/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": "b0f2a507-7eb9-476e-a53a-2fda8b6b090c", "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-workflownb4xl/series-workflownb4xl-build-action-1675812787/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-11 12:45:19 +0000 UTC FinishedAt: 2026-07-11 13:10:48 +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:*aef92d4f-a230-4129-afae-e4c626e83ee0,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-workflownb4xl/series-workflownb4xl-convert-artifact-4275506463/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": "b0f2a507-7eb9-476e-a53a-2fda8b6b090c", "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-workflownb4xl/series-workflownb4xl-build-action-1675812787/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-11 13:10:58 +0000 UTC FinishedAt: 2026-07-11 13:10:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-11 13:10:58 +0000 UTC FinishedAt: 2026-07-11 13:10:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-11 13:10:58 +0000 UTC FinishedAt: 2026-07-11 13:13:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-11 13:10:58 +0000 UTC FinishedAt: 2026-07-11 13:13:00 +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:*b0f2a507-7eb9-476e-a53a-2fda8b6b090c,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-workflownb4xl/series-workflownb4xl-build-action-1675812787/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-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-11 13:13:10 +0000 UTC FinishedAt: 2026-07-11 16:16:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-11 13:13:10 +0000 UTC FinishedAt: 2026-07-11 16:16:05 +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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"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:*f8168af8-9d83-43f5-b926-522c2435634f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b0f2a507-7eb9-476e-a53a-2fda8b6b090c,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-workflownb4xl/series-workflownb4xl-build-action-2281834094/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-workflownb4xl/series-workflownb4xl-build-action-1675812787/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-11 13:13:10 +0000 UTC FinishedAt: 2026-07-11 13:13:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-11 13:13:10 +0000 UTC FinishedAt: 2026-07-11 13:13:14 +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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"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-workflownb4xl/series-workflownb4xl-convert-artifact-3301131320/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-11 13:13:10 +0000 UTC FinishedAt: 2026-07-11 13:13:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-11 13:13:10 +0000 UTC FinishedAt: 2026-07-11 13:13:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-11 13:13:10 +0000 UTC FinishedAt: 2026-07-11 13:13:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-11 13:13:20 +0000 UTC FinishedAt: 2026-07-11 16:16:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflownb4xl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_struct_ops_desc_init","bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"98d02238-868a-490d-8e6c-efdc8285337b","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-11 13:13:20 +0000 UTC FinishedAt: 2026-07-11 16:15:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f8168af8-9d83-43f5-b926-522c2435634f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b0f2a507-7eb9-476e-a53a-2fda8b6b090c,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-workflownb4xl/series-workflownb4xl-build-action-2281834094/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-workflownb4xl/series-workflownb4xl-build-action-1675812787/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-workflownb4xl/series-workflownb4xl-convert-artifact-3301131320/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}