Name: series-workflowjwss8 Phase: Succeeded StartedAt: 2026-07-10 20:52:30 +0000 UTC FinishedAt: 2026-07-11 01:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[0] Phase: Succeeded StartedAt: 2026-07-10 20:52:30 +0000 UTC FinishedAt: 2026-07-10 21:15:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 20:52:30 +0000 UTC FinishedAt: 2026-07-10 21:15:48 +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", "DEBUG_INFO_BTF", "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", "DEBUG_INFO_BTF", "BPF_JIT" ], "series_id": "2f33c1d6-76fc-427a-ba33-e1ba85c97c83" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "btf_kfunc_accumulated_flags", "btf_attach_func_proto", "find_kfunc_impl_proto", "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+CgkJCTx0ZD4yMDI2LzA3LzEwIDIxOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MmIzM0OywKICAgICYjMzQ7YnRmX2F0dGFjaF9mdW5jX3Byb3RvJiMzNDssCiAgICAmIzM0O2ZpbmRfa2Z1bmNfaW1wbF9wcm90byYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2Yga2Z1bmNzIHdpdGggS0ZfSU1QTElDSVRfQVJHUyB3aGVuIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zIChsaWtlIGZlbnRyeS9mZXhpdCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBob3cgQlRGIHR5cGVzIGFyZSBtYXRjaGVkIGFuZCB2ZXJpZmllZCBkdXJpbmcgcHJvZ3JhbSBhdHRhY2htZW50LiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBCUEYgcHJvZ3JhbSBhdHRhY2htZW50IGFuZCBCVEYgdmVyaWZpY2F0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDIxOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzNkMDJlYzZhMWI0ODUyNTdmNTllNjYzYzVmYWEzZTNkMDQ3YWFmNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDIxOjE0OjE5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXG5pbmRleCAyNDA0MDFkOWIyNWI5ZS4uYzUyMjQ1YWUwZGY1ZDcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2J0Zi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXG5AQCAtNTc4LDYgJiM0Mzs1NzgsNyBAQCBjb25zdCBjaGFyICpidGZfc3RyX2J5X29mZnNldChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBvZmZzZXQpO1xuIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZV92bWxpbnV4KHZvaWQpO1xuIHN0cnVjdCBidGYgKmJwZl9wcm9nX2dldF90YXJnZXRfYnRmKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG4gdTMyICpidGZfa2Z1bmNfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuJiM0Mzt1MzIgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCk7XG4gYm9vbCBidGZfa2Z1bmNfaXNfYWxsb3dlZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG4gdTMyICpidGZfa2Z1bmNfaXNfbW9kaWZ5X3JldHVybihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsXG4gXHRcdFx0XHRjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYnRmLmMgYi9rZXJuZWwvYnBmL2J0Zi5jXG5pbmRleCA2NDU3MmY4NWVkYzgzMi4uMjBhZWNhNmI0Zjk1YzkgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2J0Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2J0Zi5jXG5AQCAtOTExNCw2ICYjNDM7OTExNCwyNiBAQCB1MzIgKmJ0Zl9rZnVuY19mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcFxuIFx0cmV0dXJuIGJ0Zl9rZnVuY19pZF9zZXRfY29udGFpbnMoYnRmLCBob29rLCBrZnVuY19idGZfaWQpO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogUmV0dXJuIHRoZSB1bmlvbiBvZiBhIGtmdW5jJiMzOTtzIGZsYWdzIGFjcm9zcyBhbGwgaG9va3MuXG4mIzQzOyAqIFVubGlrZSBidGZfa2Z1bmNfZmxhZ3MoKSwgbm90IHJlc3RyaWN0ZWQgdG8gYSBjYWxsaW5nXG4mIzQzOyAqIHByb2dyYW0mIzM5O3MgaG9vay4gVXNlZCB3aGVuIGF0dGFjaGluZyB0byBhIGtmdW5jIGZvciB0cmFjaW5nLlxuJiM0MzsgKi9cbiYjNDM7dTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpXG4mIzQzO3tcbiYjNDM7XHRlbnVtIGJ0Zl9rZnVuY19ob29rIGhvb2s7XG4mIzQzO1x0dTMyICpob29rX2ZsYWdzO1xuJiM0MztcdHUzMiBmbGFncyA9IDA7XG4mIzQzO1xuJiM0MztcdGZvciAoaG9vayA9IDA7IGhvb2sgXHUwMDNjIEJURl9LRlVOQ19IT09LX01BWDsgaG9vayYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGhvb2tfZmxhZ3MgPSBidGZfa2Z1bmNfaWRfc2V0X2NvbnRhaW5zKGJ0ZiwgaG9vaywga2Z1bmNfYnRmX2lkKTtcbiYjNDM7XHRcdGlmIChob29rX2ZsYWdzKVxuJiM0MztcdFx0XHRmbGFncyB8PSAqaG9va19mbGFncztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBmbGFncztcbiYjNDM7fVxuJiM0MztcbiB1MzIgKmJ0Zl9rZnVuY19pc19tb2RpZnlfcmV0dXJuKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCxcbiBcdFx0XHRcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbiB7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA2NTE1ZDRkM2MwMDMyZi4uZmRlMTFhMmY2ODY5YTYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTI1ODQsMjQgJiM0MzsyNTg0LDI0IEBAIHN0YXRpYyBzdHJ1Y3QgYnRmICpmaW5kX2tmdW5jX2Rlc2NfYnRmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMxNiBvZmZzZXQpXG4gXG4gI2RlZmluZSBLRl9JTVBMX1NVRkZJWCBcJiMzNDtfaW1wbFwmIzM0O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLVx0XHRcdFx0XHRcdCAgICBzdHJ1Y3QgYnRmICpidGYsXG4tXHRcdFx0XHRcdFx0ICAgIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSlcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXG4mIzQzO2ZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSlcbiB7XG4tXHRjaGFyICpidWYgPSBlbnYtXHUwMDNldG1wX3N0cl9idWY7XG4gXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZ1bmM7XG4mIzQzO1x0Y2hhciBidWZbS1NZTV9OQU1FX0xFTl07XG4gXHRzMzIgaW1wbF9pZDtcbiBcdGludCBsZW47XG4gXG4tXHRsZW4gPSBzbnByaW50ZihidWYsIFRNUF9TVFJfQlVGX0xFTiwgXCYjMzQ7JXMlc1wmIzM0OywgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4tXHRpZiAobGVuIFx1MDAzYyAwIHx8IGxlbiBcdTAwM2U9IFRNUF9TVFJfQlVGX0xFTikge1xuLVx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7ZnVuY3Rpb24gbmFtZSAlcyVzIGlzIHRvbyBsb25nXFxuXCYjMzQ7LCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcbiYjNDM7XHRsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBcJiMzNDslcyVzXCYjMzQ7LCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcbiYjNDM7XHRpZiAobGVuIFx1MDAzYyAwIHx8IGxlbiBcdTAwM2U9IHNpemVvZihidWYpKSB7XG4mIzQzO1x0XHRicGZfbG9nKGxvZywgXCYjMzQ7ZnVuY3Rpb24gbmFtZSAlcyVzIGlzIHRvbyBsb25nXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4gXHRpbXBsX2lkID0gYnRmX2ZpbmRfYnlfbmFtZV9raW5kKGJ0ZiwgYnVmLCBCVEZfS0lORF9GVU5DKTtcbiBcdGlmIChpbXBsX2lkIFx1MDAzYz0gMCkge1xuLVx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7Y2Fubm90IGZpbmQgZnVuY3Rpb24gJXMgaW4gQlRGXFxuXCYjMzQ7LCBidWYpO1xuJiM0MztcdFx0YnBmX2xvZyhsb2csIFwmIzM0O2Nhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxcblwmIzM0OywgYnVmKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtMjY1Myw3ICYjNDM7MjY1Myw3IEBAIHN0YXRpYyBpbnQgZmV0Y2hfa2Z1bmNfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0ICogY2FuIGJlIGZvdW5kIHRocm91Z2ggdGhlIGNvdW50ZXJwYXJ0IF9pbXBsIGtmdW5jLlxuIFx0ICovXG4gXHRpZiAoa2Z1bmNfZmxhZ3MgXHUwMDI2XHUwMDI2ICgqa2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpKVxuLVx0XHRmdW5jX3Byb3RvID0gZmluZF9rZnVuY19pbXBsX3Byb3RvKGVudiwgYnRmLCBmdW5jX25hbWUpO1xuJiM0MztcdFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhcdTAwMjZlbnYtXHUwMDNlbG9nLCBidGYsIGZ1bmNfbmFtZSk7XG4gXHRlbHNlXG4gXHRcdGZ1bmNfcHJvdG8gPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXHUwMDNldHlwZSk7XG4gXG5AQCAtMTg4NzMsNiAmIzQzOzE4ODczLDMxIEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiXG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFJlc29sdmUgdGhlIHByb3RvdHlwZSBkZXNjcmliaW5nIGEgdHJhY2UgdGFyZ2V0JiMzOTtzIHJlYWwgQUJJLiBBXG4mIzQzOyAqIEtGX0lNUExJQ0lUX0FSR1Mga2Z1bmMgaGFzIGl0cyBpbmplY3RlZCBhcmdzIHN0cmlwcGVkIGZyb20gdGhlIHB1YmxpY1xuJiM0MzsgKiBwcm90b3R5cGUsIHNvIHVzZSB0aGUgX2ltcGwgcHJvdG90eXBlOyBvdGhlciB0YXJnZXRzIHVzZSB0aGVpciBvd24uXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpcbiYjNDM7YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZ1bmM7XG4mIzQzO1x0Y29uc3QgY2hhciAqbmFtZTtcbiYjNDM7XHR1MzIga2Z1bmNfZmxhZ3M7XG4mIzQzO1xuJiM0MztcdGZ1bmMgPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmNfaWQpO1xuJiM0MztcdGlmICghZnVuYyB8fCAhYnRmX3R5cGVfaXNfZnVuYyhmdW5jKSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHRrZnVuY19mbGFncyA9IGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhidGYsIGZ1bmNfaWQpO1xuJiM0MztcdGlmIChrZnVuY19mbGFncyBcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykge1xuJiM0MztcdFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXHUwMDNlbmFtZV9vZmYpO1xuJiM0MztcdFx0cmV0dXJuIGZpbmRfa2Z1bmNfaW1wbF9wcm90byhsb2csIGJ0ZiwgbmFtZSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLVx1MDAzZXR5cGUpO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXG5AQCAtMTkxMjEsOCAmIzQzOzE5MTQ2LDggQEAgaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4gXHRcdGlmIChwcm9nX2V4dGVuc2lvbiBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGJ0Zl9jaGVja190eXBlX21hdGNoKGxvZywgcHJvZywgYnRmLCB0KSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgdC1cdTAwM2V0eXBlKTtcbi1cdFx0aWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxuJiM0MztcdFx0dCA9IGJ0Zl9hdHRhY2hfZnVuY19wcm90byhsb2csIGJ0ZiwgYnRmX2lkKTtcbiYjNDM7XHRcdGlmICghdCB8fCAhYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0aWYgKChwcm9nLVx1MDAzZWF1eC1cdTAwM2VzYXZlZF9kc3RfcHJvZ190eXBlIHx8IHByb2ctXHUwMDNlYXV4LVx1MDAzZXNhdmVkX2RzdF9hdHRhY2hfdHlwZSkgXHUwMDI2XHUwMDI2XG5AQCAtMTk0MDcsOCAmIzQzOzE5NDMyLDggQEAgaW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRpZiAoIWJ0Zl90eXBlX2lzX2Z1bmModCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuLVx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgdC1cdTAwM2V0eXBlKTtcbi1cdGlmICghYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcbiYjNDM7XHR0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgYnRmX2lkKTtcbiYjNDM7XHRpZiAoIXQgfHwgIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0ZXJyID0gYnRmX2Rpc3RpbGxfZnVuY19wcm90byhOVUxMLCBidGYsIHQsIHRuYW1lLCBcdTAwMjZ0Z3RfaW5mby1cdTAwM2VmbW9kZWwpO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjYxY2M1YWFiYTAyNTRkXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuY1xuQEAgLTAsMCAmIzQzOzEsMzYgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdGVzdF9wcm9ncy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFwmIzM0O2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5za2VsLmhcJiMzNDtcbiYjNDM7XG4mIzQzO3ZvaWQgdGVzdF9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcodm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7XG4mIzQzO1x0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTtcbiYjNDM7XHRpbnQgZXJyLCBmZDtcbiYjNDM7XG4mIzQzO1x0c2tlbCA9IGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtvcGVuX2FuZF9sb2FkXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0ZXJyID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19hdHRhY2goc2tlbCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDthdHRhY2hcJiMzNDspKVxuJiM0MztcdFx0Z290byBjbGVhbnVwO1xuJiM0MztcbiYjNDM7XHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLnRyaWdnZXJfaW1wbGljaXRfYXJnKTtcbiYjNDM7XHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKGZkLCBcdTAwMjZ0b3B0cyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDt0ZXN0X3J1blwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1xuJiM0MztcdEFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIDUsIFwmIzM0O2tmdW5jX3JldHZhbFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZlbnRyeV9hcmdfY250LCAyLCBcJiMzNDtmZW50cnlfYXJnX2NudFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX05FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VmZW50cnlfYXV4X2FyZywgMCwgXCYjMzQ7ZmVudHJ5X2F1eF9hcmdcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VmZW50cnlfcmVzdWx0LCAxLCBcJiMzNDtmZW50cnlfcmVzdWx0XCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmV4aXRfYXJnX2NudCwgMiwgXCYjMzQ7ZmV4aXRfYXJnX2NudFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX05FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VmZXhpdF9hdXhfYXJnLCAwLCBcJiMzNDtmZXhpdF9hdXhfYXJnXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmV4aXRfcmVzdWx0LCAxLCBcJiMzNDtmZXhpdF9yZXN1bHRcJiMzNDspO1xuJiM0MztcbiYjNDM7Y2xlYW51cDpcbiYjNDM7XHRrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2Rlc3Ryb3koc2tlbCk7XG4mIzQzO31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOTk1ZjhiOGI1YjllOGZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuY1xuQEAgLTAsMCAmIzQzOzEsNzcgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2Vycm5vLmhcdTAwM2VcbiYjNDM7XG4mIzQzO2V4dGVybiBpbnQgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyhpbnQgYSkgX193ZWFrIF9fa3N5bTtcbiYjNDM7XG4mIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoXCYjMzQ7bGljZW5zZVwmIzM0OykgPSBcJiMzNDtHUExcJiMzNDs7XG4mIzQzO1xuJiM0MzsvKiBTaGFyZWQgYXJnIGNoZWNrczsgcmVwb3J0cyBhcmcgY291bnQgYW5kIGF1eCwgcmV0dXJucyAxIG9uIHN1Y2Nlc3MuICovXG4mIzQzO3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgX191NjRcbiYjNDM7Y2hlY2tfaW1wbGljaXRfYXJncyh2b2lkICpjdHgsIF9fdTY0ICphcmdfY250LCBfX3U2NCAqYXV4X2FyZylcbiYjNDM7e1xuJiM0MztcdF9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDtcbiYjNDM7XHRfX3U2NCByZXN1bHQ7XG4mIzQzO1x0X19zNjQgZXJyO1xuJiM0MztcbiYjNDM7XHQqYXJnX2NudCA9IGJwZl9nZXRfZnVuY19hcmdfY250KGN0eCk7XG4mIzQzO1x0cmVzdWx0ID0gKmFyZ19jbnQgPT0gMjtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDAsIFx1MDAyNmEpO1xuJiM0MztcdHJlc3VsdCBcdTAwMjY9IGVyciA9PSAwIFx1MDAyNlx1MDAyNiAoaW50KWEgPT0gNTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDEsIFx1MDAyNmF1eCk7XG4mIzQzO1x0KmF1eF9hcmcgPSBhdXg7XG4mIzQzO1x0cmVzdWx0IFx1MDAyNj0gZXJyID09IDAgXHUwMDI2XHUwMDI2IGF1eCAhPSAwO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMiwgXHUwMDI2eik7XG4mIzQzO1x0cmVzdWx0IFx1MDAyNj0gZXJyID09IC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXN1bHQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fdTY0IGZlbnRyeV9yZXN1bHQ7XG4mIzQzO19fdTY0IGZlbnRyeV9hcmdfY250O1xuJiM0MztfX3U2NCBmZW50cnlfYXV4X2FyZztcbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtmZW50cnkvYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ1wmIzM0OylcbiYjNDM7aW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZW50cnkpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCByZXQgPSAwO1xuJiM0MztcdF9fczY0IGVycjtcbiYjNDM7XG4mIzQzO1x0ZmVudHJ5X3Jlc3VsdCA9IGNoZWNrX2ltcGxpY2l0X2FyZ3MoY3R4LCBcdTAwMjZmZW50cnlfYXJnX2NudCwgXHUwMDI2ZmVudHJ5X2F1eF9hcmcpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXHUwMDI2cmV0KTtcbiYjNDM7XHRmZW50cnlfcmVzdWx0IFx1MDAyNj0gZXJyID09IC1FT1BOT1RTVVBQO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7X191NjQgZmV4aXRfcmVzdWx0O1xuJiM0MztfX3U2NCBmZXhpdF9hcmdfY250O1xuJiM0MztfX3U2NCBmZXhpdF9hdXhfYXJnO1xuJiM0MztcbiYjNDM7U0VDKFwmIzM0O2ZleGl0L2JwZl9rZnVuY19pbXBsaWNpdF9hcmdcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyh0cmFjZV9pbXBsaWNpdF9hcmdfZmV4aXQpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCByZXQgPSAwO1xuJiM0MztcdF9fczY0IGVycjtcbiYjNDM7XG4mIzQzO1x0ZmV4aXRfcmVzdWx0ID0gY2hlY2tfaW1wbGljaXRfYXJncyhjdHgsIFx1MDAyNmZleGl0X2FyZ19jbnQsIFx1MDAyNmZleGl0X2F1eF9hcmcpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXHUwMDI2cmV0KTtcbiYjNDM7XHRmZXhpdF9yZXN1bHQgXHUwMDI2PSBlcnIgPT0gMCBcdTAwMjZcdTAwMjYgcmV0ID09IDU7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7c3lzY2FsbFwmIzM0OylcbiYjNDM7aW50IHRyaWdnZXJfaW1wbGljaXRfYXJnKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBicGZfa2Z1bmNfaW1wbGljaXRfYXJnKDUpO1xuJiM0Mzt9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMjE6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2J0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyYjMzQ7LAogICAgJiMzNDtidGZfYXR0YWNoX2Z1bmNfcHJvdG8mIzM0OywKICAgICYjMzQ7ZmluZF9rZnVuY19pbXBsX3Byb3RvJiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfdGFyZ2V0JiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBrZnVuY3Mgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIHdoZW4gYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMgKGxpa2UgZmVudHJ5L2ZleGl0KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIGhvdyBCVEYgdHlwZXMgYXJlIG1hdGNoZWQgYW5kIHZlcmlmaWVkIGR1cmluZyBwcm9ncmFtIGF0dGFjaG1lbnQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgYW5kIEJURiB2ZXJpZmljYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDczZDAyZWM2YTFiNDg1MjU3ZjU5ZTY2M2M1ZmFhM2UzZDA0N2FhZjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAyMToxNDoxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oCmluZGV4IDI0MDQwMWQ5YjI1YjllLi5jNTIyNDVhZTBkZjVkNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2J0Zi5oCkBAIC01NzgsNiAmIzQzOzU3OCw3IEBAIGNvbnN0IGNoYXIgKmJ0Zl9zdHJfYnlfb2Zmc2V0KGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIG9mZnNldCk7CiBzdHJ1Y3QgYnRmICpidGZfcGFyc2Vfdm1saW51eCh2b2lkKTsKIHN0cnVjdCBidGYgKmJwZl9wcm9nX2dldF90YXJnZXRfYnRmKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7CiB1MzIgKmJ0Zl9rZnVuY19mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7CiYjNDM7dTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpOwogYm9vbCBidGZfa2Z1bmNfaXNfYWxsb3dlZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7CiB1MzIgKmJ0Zl9rZnVuY19pc19tb2RpZnlfcmV0dXJuKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwKIAkJCQljb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpOwpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9idGYuYyBiL2tlcm5lbC9icGYvYnRmLmMKaW5kZXggNjQ1NzJmODVlZGM4MzIuLjIwYWVjYTZiNGY5NWM5IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2J0Zi5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvYnRmLmMKQEAgLTkxMTQsNiAmIzQzOzkxMTQsMjYgQEAgdTMyICpidGZfa2Z1bmNfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3AKIAlyZXR1cm4gYnRmX2tmdW5jX2lkX3NldF9jb250YWlucyhidGYsIGhvb2ssIGtmdW5jX2J0Zl9pZCk7CiB9CiAKJiM0MzsvKgomIzQzOyAqIFJldHVybiB0aGUgdW5pb24gb2YgYSBrZnVuYyYjMzk7cyBmbGFncyBhY3Jvc3MgYWxsIGhvb2tzLgomIzQzOyAqIFVubGlrZSBidGZfa2Z1bmNfZmxhZ3MoKSwgbm90IHJlc3RyaWN0ZWQgdG8gYSBjYWxsaW5nCiYjNDM7ICogcHJvZ3JhbSYjMzk7cyBob29rLiBVc2VkIHdoZW4gYXR0YWNoaW5nIHRvIGEga2Z1bmMgZm9yIHRyYWNpbmcuCiYjNDM7ICovCiYjNDM7dTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpCiYjNDM7ewomIzQzOwllbnVtIGJ0Zl9rZnVuY19ob29rIGhvb2s7CiYjNDM7CXUzMiAqaG9va19mbGFnczsKJiM0MzsJdTMyIGZsYWdzID0gMDsKJiM0MzsKJiM0MzsJZm9yIChob29rID0gMDsgaG9vayAmbHQ7IEJURl9LRlVOQ19IT09LX01BWDsgaG9vayYjNDM7JiM0MzspIHsKJiM0MzsJCWhvb2tfZmxhZ3MgPSBidGZfa2Z1bmNfaWRfc2V0X2NvbnRhaW5zKGJ0ZiwgaG9vaywga2Z1bmNfYnRmX2lkKTsKJiM0MzsJCWlmIChob29rX2ZsYWdzKQomIzQzOwkJCWZsYWdzIHw9ICpob29rX2ZsYWdzOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBmbGFnczsKJiM0Mzt9CiYjNDM7CiB1MzIgKmJ0Zl9rZnVuY19pc19tb2RpZnlfcmV0dXJuKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwKIAkJCQljb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpCiB7CmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggNjUxNWQ0ZDNjMDAzMmYuLmZkZTExYTJmNjg2OWE2IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC0yNTg0LDI0ICYjNDM7MjU4NCwyNCBAQCBzdGF0aWMgc3RydWN0IGJ0ZiAqZmluZF9rZnVuY19kZXNjX2J0ZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMTYgb2Zmc2V0KQogCiAjZGVmaW5lIEtGX0lNUExfU1VGRklYICYjMzQ7X2ltcGwmIzM0OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKLQkJCQkJCSAgICBzdHJ1Y3QgYnRmICpidGYsCi0JCQkJCQkgICAgY29uc3QgY2hhciAqZnVuY19uYW1lKQomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKgomIzQzO2ZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSkKIHsKLQljaGFyICpidWYgPSBlbnYtJmd0O3RtcF9zdHJfYnVmOwogCWNvbnN0IHN0cnVjdCBidGZfdHlwZSAqZnVuYzsKJiM0MzsJY2hhciBidWZbS1NZTV9OQU1FX0xFTl07CiAJczMyIGltcGxfaWQ7CiAJaW50IGxlbjsKIAotCWxlbiA9IHNucHJpbnRmKGJ1ZiwgVE1QX1NUUl9CVUZfTEVOLCAmIzM0OyVzJXMmIzM0OywgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7Ci0JaWYgKGxlbiAmbHQ7IDAgfHwgbGVuICZndDs9IFRNUF9TVFJfQlVGX0xFTikgewotCQl2ZXJib3NlKGVudiwgJiMzNDtmdW5jdGlvbiBuYW1lICVzJXMgaXMgdG9vIGxvbmdcbiYjMzQ7LCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTsKJiM0MzsJbGVuID0gc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgJiMzNDslcyVzJiMzNDssIGZ1bmNfbmFtZSwgS0ZfSU1QTF9TVUZGSVgpOwomIzQzOwlpZiAobGVuICZsdDsgMCB8fCBsZW4gJmd0Oz0gc2l6ZW9mKGJ1ZikpIHsKJiM0MzsJCWJwZl9sb2cobG9nLCAmIzM0O2Z1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xuJiMzNDssCiYjNDM7CQkJZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7CiAJCXJldHVybiBOVUxMOwogCX0KIAogCWltcGxfaWQgPSBidGZfZmluZF9ieV9uYW1lX2tpbmQoYnRmLCBidWYsIEJURl9LSU5EX0ZVTkMpOwogCWlmIChpbXBsX2lkICZsdDs9IDApIHsKLQkJdmVyYm9zZShlbnYsICYjMzQ7Y2Fubm90IGZpbmQgZnVuY3Rpb24gJXMgaW4gQlRGXG4mIzM0OywgYnVmKTsKJiM0MzsJCWJwZl9sb2cobG9nLCAmIzM0O2Nhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxuJiMzNDssIGJ1Zik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtMjY1Myw3ICYjNDM7MjY1Myw3IEBAIHN0YXRpYyBpbnQgZmV0Y2hfa2Z1bmNfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCSAqIGNhbiBiZSBmb3VuZCB0aHJvdWdoIHRoZSBjb3VudGVycGFydCBfaW1wbCBrZnVuYy4KIAkgKi8KIAlpZiAoa2Z1bmNfZmxhZ3MgJmFtcDsmYW1wOyAoKmtmdW5jX2ZsYWdzICZhbXA7IEtGX0lNUExJQ0lUX0FSR1MpKQotCQlmdW5jX3Byb3RvID0gZmluZF9rZnVuY19pbXBsX3Byb3RvKGVudiwgYnRmLCBmdW5jX25hbWUpOwomIzQzOwkJZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90bygmYW1wO2Vudi0mZ3Q7bG9nLCBidGYsIGZ1bmNfbmFtZSk7CiAJZWxzZQogCQlmdW5jX3Byb3RvID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLSZndDt0eXBlKTsKIApAQCAtMTg4NzMsNiAmIzQzOzE4ODczLDMxIEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiCiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKJiM0MzsvKgomIzQzOyAqIFJlc29sdmUgdGhlIHByb3RvdHlwZSBkZXNjcmliaW5nIGEgdHJhY2UgdGFyZ2V0JiMzOTtzIHJlYWwgQUJJLiBBCiYjNDM7ICogS0ZfSU1QTElDSVRfQVJHUyBrZnVuYyBoYXMgaXRzIGluamVjdGVkIGFyZ3Mgc3RyaXBwZWQgZnJvbSB0aGUgcHVibGljCiYjNDM7ICogcHJvdG90eXBlLCBzbyB1c2UgdGhlIF9pbXBsIHByb3RvdHlwZTsgb3RoZXIgdGFyZ2V0cyB1c2UgdGhlaXIgb3duLgomIzQzOyAqLwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKgomIzQzO2J0Zl9hdHRhY2hfZnVuY19wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBmdW5jX2lkKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jOwomIzQzOwljb25zdCBjaGFyICpuYW1lOwomIzQzOwl1MzIga2Z1bmNfZmxhZ3M7CiYjNDM7CiYjNDM7CWZ1bmMgPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmNfaWQpOwomIzQzOwlpZiAoIWZ1bmMgfHwgIWJ0Zl90eXBlX2lzX2Z1bmMoZnVuYykpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKJiM0MzsJa2Z1bmNfZmxhZ3MgPSBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MoYnRmLCBmdW5jX2lkKTsKJiM0MzsJaWYgKGtmdW5jX2ZsYWdzICZhbXA7IEtGX0lNUExJQ0lUX0FSR1MpIHsKJiM0MzsJCW5hbWUgPSBidGZfbmFtZV9ieV9vZmZzZXQoYnRmLCBmdW5jLSZndDtuYW1lX29mZik7CiYjNDM7CQlyZXR1cm4gZmluZF9rZnVuY19pbXBsX3Byb3RvKGxvZywgYnRmLCBuYW1lKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLSZndDt0eXBlKTsKJiM0Mzt9CiYjNDM7CiBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywKIAkJCSAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csCiAJCQkgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZywKQEAgLTE5MTIxLDggJiM0MzsxOTE0Niw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLAogCQlpZiAocHJvZ19leHRlbnNpb24gJmFtcDsmYW1wOwogCQkgICAgYnRmX2NoZWNrX3R5cGVfbWF0Y2gobG9nLCBwcm9nLCBidGYsIHQpKQogCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCXQgPSBidGZfdHlwZV9ieV9pZChidGYsIHQtJmd0O3R5cGUpOwotCQlpZiAoIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpCiYjNDM7CQl0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKGxvZywgYnRmLCBidGZfaWQpOwomIzQzOwkJaWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJaWYgKChwcm9nLSZndDthdXgtJmd0O3NhdmVkX2RzdF9wcm9nX3R5cGUgfHwgcHJvZy0mZ3Q7YXV4LSZndDtzYXZlZF9kc3RfYXR0YWNoX3R5cGUpICZhbXA7JmFtcDsKQEAgLTE5NDA3LDggJiM0MzsxOTQzMiw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0CiAJCXJldHVybiAtRUlOVkFMOwogCWlmICghYnRmX3R5cGVfaXNfZnVuYyh0KSkKIAkJcmV0dXJuIC1FSU5WQUw7Ci0JdCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgdC0mZ3Q7dHlwZSk7Ci0JaWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKQomIzQzOwl0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgYnRmX2lkKTsKJiM0MzsJaWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAllcnIgPSBidGZfZGlzdGlsbF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgdCwgdG5hbWUsICZhbXA7dGd0X2luZm8tJmd0O2Ztb2RlbCk7CiAJaWYgKGVyciAmbHQ7IDApCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi42MWNjNWFhYmEwMjU0ZAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jCkBAIC0wLDAgJiM0MzsxLDM2IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3Rlc3RfcHJvZ3MuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5za2VsLmgmIzM0OwomIzQzOwomIzQzO3ZvaWQgdGVzdF9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7CiYjNDM7CUxJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyk7CiYjNDM7CWludCBlcnIsIGZkOwomIzQzOwomIzQzOwlza2VsID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O29wZW5fYW5kX2xvYWQmIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWVyciA9IGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fYXR0YWNoKHNrZWwpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7YXR0YWNoJiMzNDspKQomIzQzOwkJZ290byBjbGVhbnVwOwomIzQzOwomIzQzOwlmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLSZndDtwcm9ncy50cmlnZ2VyX2ltcGxpY2l0X2FyZyk7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsICZhbXA7dG9wdHMpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7dGVzdF9ydW4mIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CUFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIDUsICYjMzQ7a2Z1bmNfcmV0dmFsJiMzNDspOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtmZW50cnlfYXJnX2NudCwgMiwgJiMzNDtmZW50cnlfYXJnX2NudCYjMzQ7KTsKJiM0MzsJQVNTRVJUX05FUShza2VsLSZndDtic3MtJmd0O2ZlbnRyeV9hdXhfYXJnLCAwLCAmIzM0O2ZlbnRyeV9hdXhfYXJnJiMzNDspOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtmZW50cnlfcmVzdWx0LCAxLCAmIzM0O2ZlbnRyeV9yZXN1bHQmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShza2VsLSZndDtic3MtJmd0O2ZleGl0X2FyZ19jbnQsIDIsICYjMzQ7ZmV4aXRfYXJnX2NudCYjMzQ7KTsKJiM0MzsJQVNTRVJUX05FUShza2VsLSZndDtic3MtJmd0O2ZleGl0X2F1eF9hcmcsIDAsICYjMzQ7ZmV4aXRfYXV4X2FyZyYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7ZmV4aXRfcmVzdWx0LCAxLCAmIzM0O2ZleGl0X3Jlc3VsdCYjMzQ7KTsKJiM0MzsKJiM0MztjbGVhbnVwOgomIzQzOwlrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2Rlc3Ryb3koc2tlbCk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi45OTVmOGI4YjViOWU4ZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYwpAQCAtMCwwICYjNDM7MSw3NyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDt2bWxpbnV4LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDticGYvYnBmX3RyYWNpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7ZXJybm8uaCZndDsKJiM0MzsKJiM0MztleHRlcm4gaW50IGJwZl9rZnVuY19pbXBsaWNpdF9hcmcoaW50IGEpIF9fd2VhayBfX2tzeW07CiYjNDM7CiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwomIzQzOwomIzQzOy8qIFNoYXJlZCBhcmcgY2hlY2tzOyByZXBvcnRzIGFyZyBjb3VudCBhbmQgYXV4LCByZXR1cm5zIDEgb24gc3VjY2Vzcy4gKi8KJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIF9fdTY0CiYjNDM7Y2hlY2tfaW1wbGljaXRfYXJncyh2b2lkICpjdHgsIF9fdTY0ICphcmdfY250LCBfX3U2NCAqYXV4X2FyZykKJiM0Mzt7CiYjNDM7CV9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDsKJiM0MzsJX191NjQgcmVzdWx0OwomIzQzOwlfX3M2NCBlcnI7CiYjNDM7CiYjNDM7CSphcmdfY250ID0gYnBmX2dldF9mdW5jX2FyZ19jbnQoY3R4KTsKJiM0MzsJcmVzdWx0ID0gKmFyZ19jbnQgPT0gMjsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDAsICZhbXA7YSk7CiYjNDM7CXJlc3VsdCAmYW1wOz0gZXJyID09IDAgJmFtcDsmYW1wOyAoaW50KWEgPT0gNTsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDEsICZhbXA7YXV4KTsKJiM0MzsJKmF1eF9hcmcgPSBhdXg7CiYjNDM7CXJlc3VsdCAmYW1wOz0gZXJyID09IDAgJmFtcDsmYW1wOyBhdXggIT0gMDsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDIsICZhbXA7eik7CiYjNDM7CXJlc3VsdCAmYW1wOz0gZXJyID09IC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJldHVybiByZXN1bHQ7CiYjNDM7fQomIzQzOwomIzQzO19fdTY0IGZlbnRyeV9yZXN1bHQ7CiYjNDM7X191NjQgZmVudHJ5X2FyZ19jbnQ7CiYjNDM7X191NjQgZmVudHJ5X2F1eF9hcmc7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7ZmVudHJ5L2JwZl9rZnVuY19pbXBsaWNpdF9hcmcmIzM0OykKJiM0MztpbnQgQlBGX1BST0codHJhY2VfaW1wbGljaXRfYXJnX2ZlbnRyeSkKJiM0Mzt7CiYjNDM7CV9fdTY0IHJldCA9IDA7CiYjNDM7CV9fczY0IGVycjsKJiM0MzsKJiM0MzsJZmVudHJ5X3Jlc3VsdCA9IGNoZWNrX2ltcGxpY2l0X2FyZ3MoY3R4LCAmYW1wO2ZlbnRyeV9hcmdfY250LCAmYW1wO2ZlbnRyeV9hdXhfYXJnKTsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX3JldChjdHgsICZhbXA7cmV0KTsKJiM0MzsJZmVudHJ5X3Jlc3VsdCAmYW1wOz0gZXJyID09IC1FT1BOT1RTVVBQOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7X191NjQgZmV4aXRfcmVzdWx0OwomIzQzO19fdTY0IGZleGl0X2FyZ19jbnQ7CiYjNDM7X191NjQgZmV4aXRfYXV4X2FyZzsKJiM0MzsKJiM0MztTRUMoJiMzNDtmZXhpdC9icGZfa2Z1bmNfaW1wbGljaXRfYXJnJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZXhpdCkKJiM0Mzt7CiYjNDM7CV9fdTY0IHJldCA9IDA7CiYjNDM7CV9fczY0IGVycjsKJiM0MzsKJiM0MzsJZmV4aXRfcmVzdWx0ID0gY2hlY2tfaW1wbGljaXRfYXJncyhjdHgsICZhbXA7ZmV4aXRfYXJnX2NudCwgJmFtcDtmZXhpdF9hdXhfYXJnKTsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX3JldChjdHgsICZhbXA7cmV0KTsKJiM0MzsJZmV4aXRfcmVzdWx0ICZhbXA7PSBlcnIgPT0gMCAmYW1wOyZhbXA7IHJldCA9PSA1OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQomIzQzO2ludCB0cmlnZ2VyX2ltcGxpY2l0X2FyZyh2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlyZXR1cm4gYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyg1KTsKJiM0Mzt9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDIxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MDAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIGFuZCBCVEYgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSwgYW5kIGl0IHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgQlBGIHZlcmlmaWVyIGFuZCBCVEYgc3Vic3lzdGVtLiBUaGUgY29yZSBvZiBpdCBpbnZvbHZlcyB0aGlzIG5ldyB2YXJpYWJsZSwgYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AuIEkgdW5kZXJzdGFuZCB0aGF0IHRoaXMgaXMgbWVhbnQgdG8gaGVscCByZXNvbHZlIHRoZSBhY3R1YWwgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSAoQUJJKSBwcm90b3R5cGUgZm9yIHRyYWNpbmcgdGFyZ2V0cyB3aGVuIGRlYWxpbmcgd2l0aCBgS0ZfSU1QTElDSVRfQVJHU2Aga2Z1bmNzLiBUaGF0IG1ha2VzIHNlbnNlOyBpbXBsaWNpdCBhcmd1bWVudHMgY2FuIGNvbXBsaWNhdGUgdGhpbmdzIHdoZW4geW91IG5lZWQgYSBjb25jcmV0ZSBBQkkgdG8gd29yayB3aXRoLiBUaGUgY29kZSBpcyBsb2NhdGVkIGluIGBrZXJuZWwvYnBmL2J0Zi5jYCBhbmQgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AsIHdoaWNoIHRlbGxzIG1lIHRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgY3JpdGljYWwgc3R1ZmYsIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGUgQlBGIGNvcmUuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCYjMzk7cyBiZWVuIGNoYW5nZWQuIEkgc2VlIHRoYXQgdGhlIHBhdGNoIGludHJvZHVjZXMgYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AsIGEgbmV3IGZ1bmN0aW9uLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhlbiB0aGVyZSBpcyB0aGUgbW9kaWZpY2F0aW9uIG9mIGBmaW5kX2tmdW5jX2ltcGxfcHJvdG9gLCB0aGF0IGluZGljYXRlcyBhIHJldmlzaW9uIHRvIHRoZSB3YXkgdGhleSBzZWFyY2ggZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBwcm90b3R5cGUsIHdoaWNoIGlzIGV4cGVjdGVkIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkuIEFsc28sIHRoZXJlIGFyZSB0aGUgaW50cm9kdWN0aW9ucyBvZiBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCBhbmQgbW9kaWZpY2F0aW9ucyB0byBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBBbGwgb2YgdGhlc2UgY2hhbmdlcyBoYXZlIGltcGxpY2F0aW9ucyBvbiBob3cgdHJhY2luZyBwcm9ncmFtcyBhcmUgYXR0YWNoZWQgdG8gdGhlc2Uga2Z1bmNzLgoKRXNzZW50aWFsbHksIHRoaXMgaXMgYWxsIGFib3V0IHN1cHBvcnRpbmcgZmVudHJ5L2ZleGl0IHRyYWNpbmcgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gQlBGIGtmdW5jcyB0aGF0IGhhdmUgaW1wbGljaXQgYXJndW1lbnRzLiBUaGUgY2hhbGxlbmdlIGlzIHJlc29sdmluZyB0aGUgcHJvcGVyIEFCSSwgb3IgYF9pbXBsYCBwcm90b3R5cGUsIHNvIHRyYWNpbmcgcHJvZ3JhbXMgY2FuIGJlIGF0dGFjaGVkIHByb3Blcmx5LiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBwYXRjaC4KCkkgc2hvdWxkIHByb2JhYmx5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlnIG9wdGlvbnMuIEkmIzM5O20gdGhpbmtpbmcgdGhlIHVzdWFsIHN1c3BlY3RzOiBgQ09ORklHX0JQRmAsIGBDT05GSUdfQlBGX1NZU0NBTExgLCBhbmQgYENPTkZJR19ERUJVR19JTkZPX0JURmAuIEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgdGhpcyBwYXRjaCBtaWdodCByZXF1aXJlLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRob3NlIGZpbGVzIGFnYWluLCBwYXJ0aWN1bGFybHkgZm9jdXNpbmcgb24gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2J0Zi5jYCBmb3IgYW55IGNsdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDIxOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tGX0lNUExJQ0lUX0FSR1MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdD0zODM9dGhvc2Uga2Z1bmNzIGlmIGFuZCB3aGVuIHN1Y2ggZGlzY3Vzc2lvbnMgb2NjdXIuXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4NC1cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6Mzg1OjIuNS45IEtGX0lNUExJQ0lUX0FSR1MgZmxhZ1xuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdC0zODYtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4Ny1cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6Mzg4OlRoZSBLRl9JTVBMSUNJVF9BUkdTIGZsYWcgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBCUEYgc2lnbmF0dXJlXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4OS1vZiB0aGUga2Z1bmMgaXMgZGlmZmVyZW50IGZyb20gaXQmIzM5O3Mga2VybmVsIHNpZ25hdHVyZSwgYW5kIHRoZSB2YWx1ZXNcbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0PTM5Mz1DdXJyZW50bHkgb25seSBgYHN0cnVjdCBicGZfcHJvZ19hdXggKmBgIHR5cGUgaXMgc3VwcG9ydGVkLlxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdC0zOTQtXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0OjM5NTpBIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBmbGFnIHRoZXJlZm9yZSBoYXMgdHdvIHR5cGVzIGluIEJURjogb25lXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM5Ni1mdW5jdGlvbiBtYXRjaGluZyB0aGUga2VybmVsIGRlY2xhcmF0aW9uICh3aXRoIF9pbXBsIHN1ZmZpeCBpbiB0aGVcbi0tXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY2hhbmdlcy5yc3Q9MTQ4PW1vZHVsZXMgYXMgd2VsbC4gIFRoaXMgcmVxdWlyZXMgcGFob2xlIHYxLjIyIG9yIGxhdGVyLlxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NoYW5nZXMucnN0LTE0OS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jaGFuZ2VzLnJzdDoxNTA6U2luY2UgTGludXggNy4wLCBrZnVuY3MgYW5ub3RhdGVkIHdpdGggS0ZfSU1QTElDSVRfQVJHUyByZXF1aXJlIHBhaG9sZSB2MS4yNlxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NoYW5nZXMucnN0LTE1MS1vciBsYXRlci4gIFdpdGhvdXQgaXQsIHN1Y2gga2Z1bmNzIHdpbGwgaGF2ZSBpbmNvcnJlY3QgQlRGIHByb3RvdHlwZXMgaW5cbi0tXG5pbmNsdWRlL2xpbnV4L2J0Zi5oLTgwLSNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFx1MDAzY1x1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjgxOiNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSBcdTAwM2NcdTAwM2MgMTYpIC8qIGtmdW5jIGhhcyBpbXBsaWNpdCBhcmd1bWVudHMgc3VwcGxpZWQgYnkgdGhlIHZlcmlmaWVyICovXG5pbmNsdWRlL2xpbnV4L2J0Zi5oLTgyLVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4MDQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGNyYXNoX2tleGVjLCBLRl9ERVNUUlVDVElWRSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MDUtI2VuZGlmXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODA2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfb2JqX25ldywgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MDctQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3X2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDg6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX25ldywgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MDktQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX25ld19pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODEwOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxMS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODEyOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9kcm9wLCBLRl9SRUxFQVNFIHwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTMtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCwgS0ZfUkVMRUFTRSlcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxNS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTctQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnRfaW1wbClcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTg6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfYmFjaywgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTktQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfYmFja19pbXBsKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgyMDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgyMS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2Zyb250LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgzMT1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yZW1vdmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MzI6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgzMy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGRfaW1wbClcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00OTE0PUJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3FfaW5pdClcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5MTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl93cV9zZXRfY2FsbGJhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTE2LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3Ffc3RhcnQpXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDk2Mj1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTYzLSNlbmRpZlxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2NDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2NTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5NjY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2NzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTY4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX2Zyb21fZmlsZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjYxMz1zdGF0aWMgaW50IGZldGNoX2tmdW5jX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1MS1cdC8qXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjY1MjpcdCAqIEFuIGFjdHVhbCBwcm90b3R5cGUgb2YgYSBrZnVuYyB3aXRoIEtGX0lNUExJQ0lUX0FSR1MgZmxhZ1xua2VybmVsL2JwZi92ZXJpZmllci5jLTI2NTMtXHQgKiBjYW4gYmUgZm91bmQgdGhyb3VnaCB0aGUgY291bnRlcnBhcnQgX2ltcGwga2Z1bmMuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1NC1cdCAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjI2NTU6XHRpZiAoa2Z1bmNfZmxhZ3MgXHUwMDI2XHUwMDI2ICgqa2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTI2NTYtXHRcdGZ1bmNfcHJvdG8gPSBmaW5kX2tmdW5jX2ltcGxfcHJvdG8oXHUwMDI2ZW52LVx1MDAzZWxvZywgYnRmLCBmdW5jX25hbWUpO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDkwND1zdGF0aWMgYm9vbCBpc19rZnVuY19hcmdfcHJvZ19hdXgoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3BhcmFtICphcmcpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTA5LS8qXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5MTA6ICogQSBrZnVuYyB3aXRoIEtGX0lNUExJQ0lUX0FSR1MgaGFzIHR3byBwcm90b3R5cGVzIGluIEJURjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkxMS0gKiAgIC0gdGhlIF9pbXBsIHByb3RvdHlwZSB3aXRoIGZ1bGwgYXJnIGxpc3QgKG1ldGEtXHUwMDNlZnVuY19wcm90bylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA5MTY9c3RhdGljIGJvb2wgaXNfa2Z1bmNfYXJnX2ltcGxpY2l0KGNvbnN0IHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSwgdTMyIGFyZ19pZHgpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTIwLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTIxOlx0aWYgKCEobWV0YS1cdTAwM2VrZnVuY19mbGFncyBcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MjItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4Mjc9c3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODg3Ny0gKiBSZXNvbHZlIHRoZSBwcm90b3R5cGUgZGVzY3JpYmluZyBhIHRyYWNlIHRhcmdldCYjMzk7cyByZWFsIEFCSS4gQVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4ODc4OiAqIEtGX0lNUExJQ0lUX0FSR1Mga2Z1bmMgaGFzIGl0cyBpbmplY3RlZCBhcmdzIHN0cmlwcGVkIGZyb20gdGhlIHB1YmxpY1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODc5LSAqIHByb3RvdHlwZSwgc28gdXNlIHRoZSBfaW1wbCBwcm90b3R5cGU7IG90aGVyIHRhcmdldHMgdXNlIHRoZWlyIG93bi5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4ODI9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODkyLVx0a2Z1bmNfZmxhZ3MgPSBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MoYnRmLCBmdW5jX2lkKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODg5MzpcdGlmIChrZnVuY19mbGFncyBcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODk0LVx0XHRuYW1lID0gYnRmX25hbWVfYnlfb2Zmc2V0KGJ0ZiwgZnVuYy1cdTAwM2VuYW1lX29mZik7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYz02ODM9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2luaXQpXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjY4NDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRfb3ZlcnJpZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TTEVFUEFCTEUpXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTY4NS1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2luaXQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYz02OTM9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2NpZClcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Njk0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF90b19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjY5NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfdG9fY2lkLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzo2OTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY2lkX3RvcG8sIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTY5Ny1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NpZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTg3Mzg9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2VucXVldWVfZGlzcGF0Y2gpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3Mzk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX2luc2VydCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODc0MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfaW5zZXJ0X19fdjIsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3NDE6QlRGX0lEX0ZMQUdTKGZ1bmMsIF9fc2N4X2JwZl9kc3FfaW5zZXJ0X3Z0aW1lLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NzQyLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9pbnNlcnRfdnRpbWUsIEtGX1JDVSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTkxMDM9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2Rpc3BhdGNoKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTA0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2Rpc3BhdGNoX25yX3Nsb3RzLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTA1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2Rpc3BhdGNoX2NhbmNlbCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV90b19sb2NhbCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV90b19sb2NhbF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTA4LS8qIHNjeF9icGZfZHNxX21vdmUqKCkgYWxzbyBpbiBzY3hfa2Z1bmNfaWRzX3VubG9ja2VkOiBjYWxsYWJsZSBmcm9tIHVubG9ja2VkIGNvbnRleHRzICovXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MTEyPUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9tb3ZlX3Z0aW1lLCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkxMTMtI2lmZGVmIENPTkZJR19FWFRfU1VCX1NDSEVEXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkxMTQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc3ViX2Rpc3BhdGNoLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTE1LSNlbmRpZlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTE1Mj1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfY3B1X3JlbGVhc2UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkxNTM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcmVlbnF1ZXVlX2xvY2FsLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTU0LUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfY3B1X3JlbGVhc2UpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MjIxPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTIyMjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcmVhdGVfZHNxLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU0xFRVBBQkxFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MjIzLS8qIGFsc28gaW4gc2N4X2tmdW5jX2lkc19kaXNwYXRjaDogYWxzbyBjYWxsYWJsZSBmcm9tIG9wcy5kaXNwYXRjaCgpICovXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MjI3PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9tb3ZlX3Z0aW1lLCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkyMjgtLyogYWxzbyBpbiBzY3hfa2Z1bmNfaWRzX3NlbGVjdF9jcHU6IGFsc28gY2FsbGFibGUgZnJvbSBvcHMuc2VsZWN0X2NwdSgpL29wcy5lbnF1ZXVlKCkgKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTIyOTpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MjMwLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkyMzE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc2VsZWN0X2NwdV9kZmwsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkyMzItQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMzgyPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19hbnkpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzgzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfc2V0X3NsaWNlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGFza19zZXRfZHNxX3Z0aW1lLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfa2lja19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2tpY2tfY2lkLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM4NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbnJfcXVldWVkLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM4ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kZXN0cm95X2RzcSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX3BlZWssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1VfUFJPVEVDVEVEIHwgS0ZfUkVUX05VTEwpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzkwOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9yZWVucSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcmVlbnF1ZXVlX2xvY2FsX19fdjIsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzkyOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX25ldywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0lURVJfTkVXIHwgS0ZfUkNVX1BST1RFQ1RFRClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTAzOTMtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX3NjeF9kc3FfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMzk0PUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXhpdF9ic3RyLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9lcnJvcl9ic3RyLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kdW1wX2JzdHIsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzk4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5OTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX2N1ciwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MDA6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9zZXQsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDAxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZHBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQwMjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRwZXJmX2N1ciwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MDM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY2lkcGVyZl9zZXQsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDA0LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX25yX25vZGVfaWRzKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0MTQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGFza19jaWQsIEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3JxLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQxNjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9sb2NrZWRfcnEsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SRVRfTlVMTClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X2N1cnIsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVV9QUk9URUNURUQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDE4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF9jdXJyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1VfUFJPVEVDVEVEKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQxOS1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90aWRfdG9fdGFzaywgS0ZfUkVUX05VTEwgfCBLRl9SQ1VfUFJPVEVDVEVEKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0MjE9QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXZlbnRzKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQyMi0jaWZkZWYgQ09ORklHX0NHUk9VUF9TQ0hFRFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQyMzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX2Nncm91cCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDI0LSNlbmRpZlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0NDc9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2NwdV9vbmx5KVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ0ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NwdSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0NDktQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGFza19jcHUsIEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTA6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3JxLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfY3VyciwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDUzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1NDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX2N1ciwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9zZXQsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDU2LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9wb3NzaWJsZV9jcHVtYXNrLCBLRl9BQ1FVSVJFKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0NTg9QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcHV0X2NwdW1hc2ssIEtGX1JFTEVBU0UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDU5OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfZGZsLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2MDpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQ2MS1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2MjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9jcHVtYXNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfY3B1bWFza19ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX3NtdG1hc2tfbm9kZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDY2LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9pZGxlX2NwdW1hc2ssIEtGX1JFTEVBU0UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY3OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rlc3RfYW5kX2NsZWFyX2NwdV9pZGxlLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1LCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2OTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDcwOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfYW55X2NwdSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NzE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19hbnlfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDcyLUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfY3B1X29ubHkpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM9MTQ2ND1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfaWRsZSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NjU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDY2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX2NwdW1hc2tfbm9kZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDY3OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX2NwdW1hc2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9zbXRtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2OTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9zbXRtYXNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTE0NzAtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcHV0X2lkbGVfY3B1bWFzaywgS0ZfUkVMRUFTRSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGVzdF9hbmRfY2xlYXJfY3B1X2lkbGUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDcyOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfaWRsZV9jcHVfbm9kZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19pZGxlX2NwdSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19hbnlfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDc1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfYW55X2NwdSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTE0NzYtQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc19pZGxlKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTE0OTU9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX3NlbGVjdF9jcHUpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDk2OkJURl9JRF9GTEFHUyhmdW5jLCBfX3NjeF9icGZfc2VsZWN0X2NwdV9hbmQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDk3LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDk4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfZGZsLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTQ5OS1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX3NlbGVjdF9jcHUpXG4tLVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYz0xMjI9c3RydWN0IG9iamVjdCB7XG4tLVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xNTQtXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jOjE1NTojZGVmaW5lIEtGX0lNUExJQ0lUX0FSR1MgKDEgXHUwMDNjXHUwMDNjIDE2KVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xNTYtI2RlZmluZSBLRl9JTVBMX1NVRkZJWCBcJiMzNDtfaW1wbFwmIzM0O1xuLS1cbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM9MTA2ND1zdGF0aWMgYm9vbCBpc19rZl9pbXBsaWNpdF9hcmcoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3BhcmFtICpwKVxuLS1cbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTA5Mi0vKlxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYzoxMDkzOiAqIEZvciBhIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyB3ZSBkbyB0aGUgZm9sbG93aW5nOlxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMDk0LSAqICAgMS4gQWRkIGEgbmV3IGZ1bmN0aW9uIHdpdGggX2ltcGwgc3VmZml4IGluIHRoZSBuYW1lLCB3aXRoIHRoZSBwcm90b3R5cGVcbi0tXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTExMDYtICpcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM6MTEwNzogKiBJZiBhIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBhbHJlYWR5IGhhcyBhbiBfaW1wbCBjb3VudGVycGFydFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMTA4LSAqIGluIEJURiwgdGhlbiBpdCYjMzk7cyBhIGxlZ2FjeSBjYXNlOiBhbiBfaW1wbCBmdW5jdGlvbiBpcyBkZWNsYXJlZCBpbiB0aGVcbi0tXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jPTEyMTQ9c3RhdGljIGludCBidGYyYnRmKHN0cnVjdCBvYmplY3QgKm9iailcbi0tXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEyMjUtXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jOjEyMjY6XHRcdGlmICghKGtmdW5jLVx1MDAzZWZsYWdzIFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTIyNy1cdFx0XHRjb250aW51ZTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jPTE0MDQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19tdWx0aV9zdF9vcHNfdGVzdF8xKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYzoxNDA1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfbXVsdGlfc3Rfb3BzX3Rlc3RfMV9hc3NvYywgS0ZfSU1QTElDSVRfQVJHUylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZywgS0ZfSU1QTElDSVRfQVJHUylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ19sZWdhY3ksIEtGX0lNUExJQ0lUX0FSR1MpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jLTE0MDgtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19pbXBsaWNpdF9hcmdfbGVnYWN5X2ltcGwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMjE6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3NDQKCQkJCQkJCW91dHB1dDogMTkzCgkJCQkJCQl0aG91Z2h0czogODcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoIGZvciBmZW50cnkvZmV4aXQgVHJhY2luZyBvZiBrZnVuY3Mgd2l0aCBJbXBsaWNpdCBBcmd1bWVudHMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhYm91dCBlbmFibGluZyBgZmVudHJ5L2ZleGl0YCB0cmFjaW5nIGZvciBrZnVuY3MgdGhhdCB1dGlsaXplIGBLRl9JTVBMSUNJVF9BUkdTYC4gVGhlIGNvcmUgb2YgdGhpcyBpcyBhIGNoYW5nZSB0byB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgdGVzdCBjYXNlLCBga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNgLCBpcyB1c2luZyBgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ2AsIHdoaWNoIHRlbGxzIG1lIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBpcyB0aGUgY3JpdGljYWwgYXJlYSBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHByb3RvdHlwZSBvZiB0aGVzZSBrZnVuY3MgaXMgcmVzb2x2ZWQgd2hlbiBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcy4KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gQ2xlYXJseSwgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZXNzZW50aWFsLCBhbmQgYENPTkZJR19ERUJVR19JTkZPX0JURmAgaXMgbmVlZGVkIGZvciBCVEYgc3VwcG9ydC4gU2luY2UgdGhpcyBpbnZvbHZlcyB0cmFjaW5nLCBzcGVjaWZpY2FsbHkgYGZlbnRyeS9mZXhpdGAsIGBDT05GSUdfQlBGX0pJVGAgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IHRvbyDigJMgaXQgd2lsbCBtb3N0IGxpa2VseSBiZSBuZWVkZWQgZm9yIHRoZSB0cmFtcG9saW5lIGltcGxlbWVudGF0aW9uLiBJdCYjMzk7cyBwb3NzaWJsZSB3ZSBtaWdodCBhbHNvIG5lZWQgYENPTkZJR19GVFJBQ0VgIG9yIGBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgIGJ1dCB0aGF0IGNhbiBiZSBhZGRlZCBsYXRlci4KClRoZSBrZXkgaGVyZSBpcyB0aGUgQlBGIHZlcmlmaWVyIGl0c2VsZiwgYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIEJURi4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgY29kZSBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgYGtlcm5lbC9icGYvYnRmLmNgLiBJIGRvbiYjMzk7dCBuZWVkIHRvIHNwZWNpZnkgYEJQRl9URVNUTU9EYCBzaW5jZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIHdoYXQgbWF0dGVycyBoZXJlLCBJJiMzOTttIG1vcmUgaW50ZXJlc3RlZCBpbiB0aGUgYmVoYXZpb3VyIG9mIHRoZSBjb3JlIHZlcmlmaWVyLgoKSSBzaG91bGQgaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2ggdG8gYWlkIGZ1enppbmcuIFRoZSBvbmVzIHRoYXQgc3RpY2sgb3V0IGFyZToKCiogICBgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzYAoqICAgYGJ0Zl9hdHRhY2hfZnVuY19wcm90b2AKKiAgIGBmaW5kX2tmdW5jX2ltcGxfcHJvdG9gCiogICBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgCiogICBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBjb2RlOiBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCBpcyBkZWZpbml0ZWx5IHN0YXRpYyB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuCgpUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhcjogVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgcmVzb2x2ZSBrZnVuYyBwcm90b3R5cGVzIHdpdGggYEtGX0lNUExJQ0lUX0FSR1NgIGZvciB0cmFjaW5nIHByb2dyYW1zLiBUaGUgZnV6emluZyBlZmZvcnRzIHNob3VsZCBjb25jZW50cmF0ZSBvbiB0aGUgQlBGIHByb2dyYW0gYXR0YWNobWVudCBwcm9jZXNzLCBwYXJ0aWN1bGFybHkgaG93IEJURiB0eXBlcyBhcmUgbWF0Y2hlZCBhbmQgdmVyaWZpZWQuCgpGb3IgbXkgY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgbmVlZCBgQlBGX1NZU0NBTExgLCBgREVCVUdfSU5GT19CVEZgLCBhbmQgYEJQRl9KSVRgLiBUaG9zZSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3Igbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDIxOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtERUJVR19JTkZPX0JURiYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzJiMzNDssCiAgICAmIzM0O2J0Zl9hdHRhY2hfZnVuY19wcm90byYjMzQ7LAogICAgJiMzNDtmaW5kX2tmdW5jX2ltcGxfcHJvdG8mIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF90YXJnZXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgcmVzb2x2ZSB0aGUgcHJvdG90eXBlIG9mIGtmdW5jcyB3aXRoIEtGX0lNUExJQ0lUX0FSR1Mgd2hlbiBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcyAobGlrZSBmZW50cnkvZmV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgaG93IEJURiB0eXBlcyBhcmUgbWF0Y2hlZCBhbmQgdmVyaWZpZWQgZHVyaW5nIHByb2dyYW0gYXR0YWNobWVudC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gQlBGIHByb2dyYW0gYXR0YWNobWVudCBhbmQgQlRGIHZlcmlmaWNhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2J0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyYjMzQ7LAogICAgJiMzNDtidGZfYXR0YWNoX2Z1bmNfcHJvdG8mIzM0OywKICAgICYjMzQ7ZmluZF9rZnVuY19pbXBsX3Byb3RvJiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfdGFyZ2V0JiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBrZnVuY3Mgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIHdoZW4gYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMgKGxpa2UgZmVudHJ5L2ZleGl0KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIGhvdyBCVEYgdHlwZXMgYXJlIG1hdGNoZWQgYW5kIHZlcmlmaWVkIGR1cmluZyBwcm9ncmFtIGF0dGFjaG1lbnQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgYW5kIEJURiB2ZXJpZmljYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQyMToxNDoyMC44MTQyMDI4ODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDMyNDk1NDc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIixcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NcIixcbiAgICBcImJ0Zl9hdHRhY2hfZnVuY19wcm90b1wiLFxuICAgIFwiZmluZF9rZnVuY19pbXBsX3Byb3RvXCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2Yga2Z1bmNzIHdpdGggS0ZfSU1QTElDSVRfQVJHUyB3aGVuIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zIChsaWtlIGZlbnRyeS9mZXhpdCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBob3cgQlRGIHR5cGVzIGFyZSBtYXRjaGVkIGFuZCB2ZXJpZmllZCBkdXJpbmcgcHJvZ3JhbSBhdHRhY2htZW50LiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBCUEYgcHJvZ3JhbSBhdHRhY2htZW50IGFuZCBCVEYgdmVyaWZpY2F0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQyMToxNDoyMC44MTQyMDgwMDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTY3NjM0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDczZDAyZWM2YTFiNDg1MjU3ZjU5ZTY2M2M1ZmFhM2UzZDA0N2FhZjZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTAgMjE6MTQ6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idGYuaCBiL2luY2x1ZGUvbGludXgvYnRmLmhcXG5pbmRleCAyNDA0MDFkOWIyNWI5ZS4uYzUyMjQ1YWUwZGY1ZDcgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYnRmLmhcXG5AQCAtNTc4LDYgKzU3OCw3IEBAIGNvbnN0IGNoYXIgKmJ0Zl9zdHJfYnlfb2Zmc2V0KGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIG9mZnNldCk7XFxuIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZV92bWxpbnV4KHZvaWQpO1xcbiBzdHJ1Y3QgYnRmICpicGZfcHJvZ19nZXRfdGFyZ2V0X2J0Zihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xcbiB1MzIgKmJ0Zl9rZnVuY19mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuK3UzMiBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkKTtcXG4gYm9vbCBidGZfa2Z1bmNfaXNfYWxsb3dlZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuIHUzMiAqYnRmX2tmdW5jX2lzX21vZGlmeV9yZXR1cm4oY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLFxcbiBcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2J0Zi5jIGIva2VybmVsL2JwZi9idGYuY1xcbmluZGV4IDY0NTcyZjg1ZWRjODMyLi4yMGFlY2E2YjRmOTVjOSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL2J0Zi5jXFxuKysrIGIva2VybmVsL2JwZi9idGYuY1xcbkBAIC05MTE0LDYgKzkxMTQsMjYgQEAgdTMyICpidGZfa2Z1bmNfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3BcXG4gXFx0cmV0dXJuIGJ0Zl9rZnVuY19pZF9zZXRfY29udGFpbnMoYnRmLCBob29rLCBrZnVuY19idGZfaWQpO1xcbiB9XFxuIFxcbisvKlxcbisgKiBSZXR1cm4gdGhlIHVuaW9uIG9mIGEga2Z1bmMncyBmbGFncyBhY3Jvc3MgYWxsIGhvb2tzLlxcbisgKiBVbmxpa2UgYnRmX2tmdW5jX2ZsYWdzKCksIG5vdCByZXN0cmljdGVkIHRvIGEgY2FsbGluZ1xcbisgKiBwcm9ncmFtJ3MgaG9vay4gVXNlZCB3aGVuIGF0dGFjaGluZyB0byBhIGtmdW5jIGZvciB0cmFjaW5nLlxcbisgKi9cXG4rdTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpXFxuK3tcXG4rXFx0ZW51bSBidGZfa2Z1bmNfaG9vayBob29rO1xcbitcXHR1MzIgKmhvb2tfZmxhZ3M7XFxuK1xcdHUzMiBmbGFncyA9IDA7XFxuK1xcbitcXHRmb3IgKGhvb2sgPSAwOyBob29rIFxcdTAwM2MgQlRGX0tGVU5DX0hPT0tfTUFYOyBob29rKyspIHtcXG4rXFx0XFx0aG9va19mbGFncyA9IGJ0Zl9rZnVuY19pZF9zZXRfY29udGFpbnMoYnRmLCBob29rLCBrZnVuY19idGZfaWQpO1xcbitcXHRcXHRpZiAoaG9va19mbGFncylcXG4rXFx0XFx0XFx0ZmxhZ3MgfD0gKmhvb2tfZmxhZ3M7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBmbGFncztcXG4rfVxcbitcXG4gdTMyICpidGZfa2Z1bmNfaXNfbW9kaWZ5X3JldHVybihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsXFxuIFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4ge1xcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCA2NTE1ZDRkM2MwMDMyZi4uZmRlMTFhMmY2ODY5YTYgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTI1ODQsMjQgKzI1ODQsMjQgQEAgc3RhdGljIHN0cnVjdCBidGYgKmZpbmRfa2Z1bmNfZGVzY19idGYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczE2IG9mZnNldClcXG4gXFxuICNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggXFxcIl9pbXBsXFxcIlxcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqZmluZF9rZnVuY19pbXBsX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnRmICpidGYsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBjaGFyICpmdW5jX25hbWUpXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKlxcbitmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBjaGFyICpmdW5jX25hbWUpXFxuIHtcXG4tXFx0Y2hhciAqYnVmID0gZW52LVxcdTAwM2V0bXBfc3RyX2J1ZjtcXG4gXFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jO1xcbitcXHRjaGFyIGJ1ZltLU1lNX05BTUVfTEVOXTtcXG4gXFx0czMyIGltcGxfaWQ7XFxuIFxcdGludCBsZW47XFxuIFxcbi1cXHRsZW4gPSBzbnByaW50ZihidWYsIFRNUF9TVFJfQlVGX0xFTiwgXFxcIiVzJXNcXFwiLCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcXG4tXFx0aWYgKGxlbiBcXHUwMDNjIDAgfHwgbGVuIFxcdTAwM2U9IFRNUF9TVFJfQlVGX0xFTikge1xcbi1cXHRcXHR2ZXJib3NlKGVudiwgXFxcImZ1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xcXFxuXFxcIiwgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XFxuK1xcdGxlbiA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFxcXCIlcyVzXFxcIiwgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XFxuK1xcdGlmIChsZW4gXFx1MDAzYyAwIHx8IGxlbiBcXHUwMDNlPSBzaXplb2YoYnVmKSkge1xcbitcXHRcXHRicGZfbG9nKGxvZywgXFxcImZ1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0ZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbiBcXHRpbXBsX2lkID0gYnRmX2ZpbmRfYnlfbmFtZV9raW5kKGJ0ZiwgYnVmLCBCVEZfS0lORF9GVU5DKTtcXG4gXFx0aWYgKGltcGxfaWQgXFx1MDAzYz0gMCkge1xcbi1cXHRcXHR2ZXJib3NlKGVudiwgXFxcImNhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxcXFxuXFxcIiwgYnVmKTtcXG4rXFx0XFx0YnBmX2xvZyhsb2csIFxcXCJjYW5ub3QgZmluZCBmdW5jdGlvbiAlcyBpbiBCVEZcXFxcblxcXCIsIGJ1Zik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbkBAIC0yNjUzLDcgKzI2NTMsNyBAQCBzdGF0aWMgaW50IGZldGNoX2tmdW5jX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0ICogY2FuIGJlIGZvdW5kIHRocm91Z2ggdGhlIGNvdW50ZXJwYXJ0IF9pbXBsIGtmdW5jLlxcbiBcXHQgKi9cXG4gXFx0aWYgKGtmdW5jX2ZsYWdzIFxcdTAwMjZcXHUwMDI2ICgqa2Z1bmNfZmxhZ3MgXFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcXG4tXFx0XFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhlbnYsIGJ0ZiwgZnVuY19uYW1lKTtcXG4rXFx0XFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIGJ0ZiwgZnVuY19uYW1lKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRmdW5jX3Byb3RvID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLVxcdTAwM2V0eXBlKTtcXG4gXFxuQEAgLTE4ODczLDYgKzE4ODczLDMxIEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiXFxuIFxcdHJldHVybiAtRUlOVkFMO1xcbiB9XFxuIFxcbisvKlxcbisgKiBSZXNvbHZlIHRoZSBwcm90b3R5cGUgZGVzY3JpYmluZyBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJLiBBXFxuKyAqIEtGX0lNUExJQ0lUX0FSR1Mga2Z1bmMgaGFzIGl0cyBpbmplY3RlZCBhcmdzIHN0cmlwcGVkIGZyb20gdGhlIHB1YmxpY1xcbisgKiBwcm90b3R5cGUsIHNvIHVzZSB0aGUgX2ltcGwgcHJvdG90eXBlOyBvdGhlciB0YXJnZXRzIHVzZSB0aGVpciBvd24uXFxuKyAqL1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpcXG4rYnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jO1xcbitcXHRjb25zdCBjaGFyICpuYW1lO1xcbitcXHR1MzIga2Z1bmNfZmxhZ3M7XFxuK1xcbitcXHRmdW5jID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jX2lkKTtcXG4rXFx0aWYgKCFmdW5jIHx8ICFidGZfdHlwZV9pc19mdW5jKGZ1bmMpKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuK1xcdGtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7XFxuK1xcdGlmIChrZnVuY19mbGFncyBcXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcXG4rXFx0XFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXFx1MDAzZW5hbWVfb2ZmKTtcXG4rXFx0XFx0cmV0dXJuIGZpbmRfa2Z1bmNfaW1wbF9wcm90byhsb2csIGJ0ZiwgbmFtZSk7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXFx1MDAzZXR5cGUpO1xcbit9XFxuK1xcbiBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4gXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4gXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXFxuQEAgLTE5MTIxLDggKzE5MTQ2LDggQEAgaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuIFxcdFxcdGlmIChwcm9nX2V4dGVuc2lvbiBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgYnRmX2NoZWNrX3R5cGVfbWF0Y2gobG9nLCBwcm9nLCBidGYsIHQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFx0XFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgdC1cXHUwMDNldHlwZSk7XFxuLVxcdFxcdGlmICghYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcXG4rXFx0XFx0dCA9IGJ0Zl9hdHRhY2hfZnVuY19wcm90byhsb2csIGJ0ZiwgYnRmX2lkKTtcXG4rXFx0XFx0aWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuIFxcdFxcdGlmICgocHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VzYXZlZF9kc3RfcHJvZ190eXBlIHx8IHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlc2F2ZWRfZHN0X2F0dGFjaF90eXBlKSBcXHUwMDI2XFx1MDAyNlxcbkBAIC0xOTQwNyw4ICsxOTQzMiw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRpZiAoIWJ0Zl90eXBlX2lzX2Z1bmModCkpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB0LVxcdTAwM2V0eXBlKTtcXG4tXFx0aWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxcbitcXHR0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgYnRmX2lkKTtcXG4rXFx0aWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0ZXJyID0gYnRmX2Rpc3RpbGxfZnVuY19wcm90byhOVUxMLCBidGYsIHQsIHRuYW1lLCBcXHUwMDI2dGd0X2luZm8tXFx1MDAzZWZtb2RlbCk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjFjYzVhYWJhMDI1NGRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcXG5AQCAtMCwwICsxLDM2IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2N0ZXN0X3Byb2dzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcXCJrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuc2tlbC5oXFxcIlxcbitcXG4rdm9pZCB0ZXN0X2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZyh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7XFxuK1xcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyk7XFxuK1xcdGludCBlcnIsIGZkO1xcbitcXG4rXFx0c2tlbCA9IGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fb3Blbl9hbmRfbG9hZCgpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXFxcIm9wZW5fYW5kX2xvYWRcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0ZXJyID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19hdHRhY2goc2tlbCk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImF0dGFjaFxcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcbitcXHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy50cmlnZ2VyX2ltcGxpY2l0X2FyZyk7XFxuK1xcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFxcdTAwMjZ0b3B0cyk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcInRlc3RfcnVuXFxcIikpXFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFxuK1xcdEFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIDUsIFxcXCJrZnVuY19yZXR2YWxcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmVudHJ5X2FyZ19jbnQsIDIsIFxcXCJmZW50cnlfYXJnX2NudFxcXCIpO1xcbitcXHRBU1NFUlRfTkVRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmVudHJ5X2F1eF9hcmcsIDAsIFxcXCJmZW50cnlfYXV4X2FyZ1xcXCIpO1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VmZW50cnlfcmVzdWx0LCAxLCBcXFwiZmVudHJ5X3Jlc3VsdFxcXCIpO1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VmZXhpdF9hcmdfY250LCAyLCBcXFwiZmV4aXRfYXJnX2NudFxcXCIpO1xcbitcXHRBU1NFUlRfTkVRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmV4aXRfYXV4X2FyZywgMCwgXFxcImZleGl0X2F1eF9hcmdcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmV4aXRfcmVzdWx0LCAxLCBcXFwiZmV4aXRfcmVzdWx0XFxcIik7XFxuK1xcbitjbGVhbnVwOlxcbitcXHRrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOTk1ZjhiOGI1YjllOGZcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXFxuQEAgLTAsMCArMSw3NyBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjdm1saW51eC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2Vycm5vLmhcXHUwMDNlXFxuK1xcbitleHRlcm4gaW50IGJwZl9rZnVuY19pbXBsaWNpdF9hcmcoaW50IGEpIF9fd2VhayBfX2tzeW07XFxuK1xcbitjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG4rXFxuKy8qIFNoYXJlZCBhcmcgY2hlY2tzOyByZXBvcnRzIGFyZyBjb3VudCBhbmQgYXV4LCByZXR1cm5zIDEgb24gc3VjY2Vzcy4gKi9cXG4rc3RhdGljIF9fYWx3YXlzX2lubGluZSBfX3U2NFxcbitjaGVja19pbXBsaWNpdF9hcmdzKHZvaWQgKmN0eCwgX191NjQgKmFyZ19jbnQsIF9fdTY0ICphdXhfYXJnKVxcbit7XFxuK1xcdF9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDtcXG4rXFx0X191NjQgcmVzdWx0O1xcbitcXHRfX3M2NCBlcnI7XFxuK1xcbitcXHQqYXJnX2NudCA9IGJwZl9nZXRfZnVuY19hcmdfY250KGN0eCk7XFxuK1xcdHJlc3VsdCA9ICphcmdfY250ID09IDI7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMCwgXFx1MDAyNmEpO1xcbitcXHRyZXN1bHQgXFx1MDAyNj0gZXJyID09IDAgXFx1MDAyNlxcdTAwMjYgKGludClhID09IDU7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMSwgXFx1MDAyNmF1eCk7XFxuK1xcdCphdXhfYXJnID0gYXV4O1xcbitcXHRyZXN1bHQgXFx1MDAyNj0gZXJyID09IDAgXFx1MDAyNlxcdTAwMjYgYXV4ICE9IDA7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMiwgXFx1MDAyNnopO1xcbitcXHRyZXN1bHQgXFx1MDAyNj0gZXJyID09IC1FSU5WQUw7XFxuK1xcbitcXHRyZXR1cm4gcmVzdWx0O1xcbit9XFxuK1xcbitfX3U2NCBmZW50cnlfcmVzdWx0O1xcbitfX3U2NCBmZW50cnlfYXJnX2NudDtcXG4rX191NjQgZmVudHJ5X2F1eF9hcmc7XFxuK1xcbitTRUMoXFxcImZlbnRyeS9icGZfa2Z1bmNfaW1wbGljaXRfYXJnXFxcIilcXG4raW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZW50cnkpXFxuK3tcXG4rXFx0X191NjQgcmV0ID0gMDtcXG4rXFx0X19zNjQgZXJyO1xcbitcXG4rXFx0ZmVudHJ5X3Jlc3VsdCA9IGNoZWNrX2ltcGxpY2l0X2FyZ3MoY3R4LCBcXHUwMDI2ZmVudHJ5X2FyZ19jbnQsIFxcdTAwMjZmZW50cnlfYXV4X2FyZyk7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXFx1MDAyNnJldCk7XFxuK1xcdGZlbnRyeV9yZXN1bHQgXFx1MDAyNj0gZXJyID09IC1FT1BOT1RTVVBQO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK19fdTY0IGZleGl0X3Jlc3VsdDtcXG4rX191NjQgZmV4aXRfYXJnX2NudDtcXG4rX191NjQgZmV4aXRfYXV4X2FyZztcXG4rXFxuK1NFQyhcXFwiZmV4aXQvYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ1xcXCIpXFxuK2ludCBCUEZfUFJPRyh0cmFjZV9pbXBsaWNpdF9hcmdfZmV4aXQpXFxuK3tcXG4rXFx0X191NjQgcmV0ID0gMDtcXG4rXFx0X19zNjQgZXJyO1xcbitcXG4rXFx0ZmV4aXRfcmVzdWx0ID0gY2hlY2tfaW1wbGljaXRfYXJncyhjdHgsIFxcdTAwMjZmZXhpdF9hcmdfY250LCBcXHUwMDI2ZmV4aXRfYXV4X2FyZyk7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXFx1MDAyNnJldCk7XFxuK1xcdGZleGl0X3Jlc3VsdCBcXHUwMDI2PSBlcnIgPT0gMCBcXHUwMDI2XFx1MDAyNiByZXQgPT0gNTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcInN5c2NhbGxcXFwiKVxcbitpbnQgdHJpZ2dlcl9pbXBsaWNpdF9hcmcodm9pZCAqY3R4KVxcbit7XFxuK1xcdHJldHVybiBicGZfa2Z1bmNfaW1wbGljaXRfYXJnKDUpO1xcbit9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDIxOjE0OjIxLjM5NjYzMzA5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk3NDI1MTQ1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzXCIsXG4gICAgXCJidGZfYXR0YWNoX2Z1bmNfcHJvdG9cIixcbiAgICBcImZpbmRfa2Z1bmNfaW1wbF9wcm90b1wiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgcmVzb2x2ZSB0aGUgcHJvdG90eXBlIG9mIGtmdW5jcyB3aXRoIEtGX0lNUExJQ0lUX0FSR1Mgd2hlbiBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcyAobGlrZSBmZW50cnkvZmV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgaG93IEJURiB0eXBlcyBhcmUgbWF0Y2hlZCBhbmQgdmVyaWZpZWQgZHVyaW5nIHByb2dyYW0gYXR0YWNobWVudC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gQlBGIHByb2dyYW0gYXR0YWNobWVudCBhbmQgQlRGIHZlcmlmaWNhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3M2QwMmVjNmExYjQ4NTI1N2Y1OWU2NjNjNWZhYTNlM2QwNDdhYWY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMjE6MTQ6MTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxuaW5kZXggMjQwNDAxZDliMjViOWUuLmM1MjI0NWFlMGRmNWQ3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxuKysrIGIvaW5jbHVkZS9saW51eC9idGYuaFxuQEAgLTU3OCw2ICs1NzgsNyBAQCBjb25zdCBjaGFyICpidGZfc3RyX2J5X29mZnNldChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBvZmZzZXQpO1xuIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZV92bWxpbnV4KHZvaWQpO1xuIHN0cnVjdCBidGYgKmJwZl9wcm9nX2dldF90YXJnZXRfYnRmKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG4gdTMyICpidGZfa2Z1bmNfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuK3UzMiBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkKTtcbiBib29sIGJ0Zl9rZnVuY19pc19hbGxvd2VkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbiB1MzIgKmJ0Zl9rZnVuY19pc19tb2RpZnlfcmV0dXJuKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCxcbiBcdFx0XHRcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9idGYuYyBiL2tlcm5lbC9icGYvYnRmLmNcbmluZGV4IDY0NTcyZjg1ZWRjODMyLi4yMGFlY2E2YjRmOTVjOSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvYnRmLmNcbisrKyBiL2tlcm5lbC9icGYvYnRmLmNcbkBAIC05MTE0LDYgKzkxMTQsMjYgQEAgdTMyICpidGZfa2Z1bmNfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3BcbiBcdHJldHVybiBidGZfa2Z1bmNfaWRfc2V0X2NvbnRhaW5zKGJ0ZiwgaG9vaywga2Z1bmNfYnRmX2lkKTtcbiB9XG4gXG4rLypcbisgKiBSZXR1cm4gdGhlIHVuaW9uIG9mIGEga2Z1bmMncyBmbGFncyBhY3Jvc3MgYWxsIGhvb2tzLlxuKyAqIFVubGlrZSBidGZfa2Z1bmNfZmxhZ3MoKSwgbm90IHJlc3RyaWN0ZWQgdG8gYSBjYWxsaW5nXG4rICogcHJvZ3JhbSdzIGhvb2suIFVzZWQgd2hlbiBhdHRhY2hpbmcgdG8gYSBrZnVuYyBmb3IgdHJhY2luZy5cbisgKi9cbit1MzIgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZClcbit7XG4rXHRlbnVtIGJ0Zl9rZnVuY19ob29rIGhvb2s7XG4rXHR1MzIgKmhvb2tfZmxhZ3M7XG4rXHR1MzIgZmxhZ3MgPSAwO1xuK1xuK1x0Zm9yIChob29rID0gMDsgaG9vayBcdTAwM2MgQlRGX0tGVU5DX0hPT0tfTUFYOyBob29rKyspIHtcbitcdFx0aG9va19mbGFncyA9IGJ0Zl9rZnVuY19pZF9zZXRfY29udGFpbnMoYnRmLCBob29rLCBrZnVuY19idGZfaWQpO1xuK1x0XHRpZiAoaG9va19mbGFncylcbitcdFx0XHRmbGFncyB8PSAqaG9va19mbGFncztcbitcdH1cbitcbitcdHJldHVybiBmbGFncztcbit9XG4rXG4gdTMyICpidGZfa2Z1bmNfaXNfbW9kaWZ5X3JldHVybihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsXG4gXHRcdFx0XHRjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4ge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggNjUxNWQ0ZDNjMDAzMmYuLmZkZTExYTJmNjg2OWE2IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC0yNTg0LDI0ICsyNTg0LDI0IEBAIHN0YXRpYyBzdHJ1Y3QgYnRmICpmaW5kX2tmdW5jX2Rlc2NfYnRmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMxNiBvZmZzZXQpXG4gXG4gI2RlZmluZSBLRl9JTVBMX1NVRkZJWCBcIl9pbXBsXCJcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi1cdFx0XHRcdFx0XHQgICAgc3RydWN0IGJ0ZiAqYnRmLFxuLVx0XHRcdFx0XHRcdCAgICBjb25zdCBjaGFyICpmdW5jX25hbWUpXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXG4rZmluZF9rZnVuY19pbXBsX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgY29uc3QgY2hhciAqZnVuY19uYW1lKVxuIHtcbi1cdGNoYXIgKmJ1ZiA9IGVudi1cdTAwM2V0bXBfc3RyX2J1ZjtcbiBcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqZnVuYztcbitcdGNoYXIgYnVmW0tTWU1fTkFNRV9MRU5dO1xuIFx0czMyIGltcGxfaWQ7XG4gXHRpbnQgbGVuO1xuIFxuLVx0bGVuID0gc25wcmludGYoYnVmLCBUTVBfU1RSX0JVRl9MRU4sIFwiJXMlc1wiLCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcbi1cdGlmIChsZW4gXHUwMDNjIDAgfHwgbGVuIFx1MDAzZT0gVE1QX1NUUl9CVUZfTEVOKSB7XG4tXHRcdHZlcmJvc2UoZW52LCBcImZ1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xcblwiLCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcbitcdGxlbiA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFwiJXMlc1wiLCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcbitcdGlmIChsZW4gXHUwMDNjIDAgfHwgbGVuIFx1MDAzZT0gc2l6ZW9mKGJ1ZikpIHtcbitcdFx0YnBmX2xvZyhsb2csIFwiZnVuY3Rpb24gbmFtZSAlcyVzIGlzIHRvbyBsb25nXFxuXCIsXG4rXHRcdFx0ZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuIFx0aW1wbF9pZCA9IGJ0Zl9maW5kX2J5X25hbWVfa2luZChidGYsIGJ1ZiwgQlRGX0tJTkRfRlVOQyk7XG4gXHRpZiAoaW1wbF9pZCBcdTAwM2M9IDApIHtcbi1cdFx0dmVyYm9zZShlbnYsIFwiY2Fubm90IGZpbmQgZnVuY3Rpb24gJXMgaW4gQlRGXFxuXCIsIGJ1Zik7XG4rXHRcdGJwZl9sb2cobG9nLCBcImNhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxcblwiLCBidWYpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbkBAIC0yNjUzLDcgKzI2NTMsNyBAQCBzdGF0aWMgaW50IGZldGNoX2tmdW5jX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdCAqIGNhbiBiZSBmb3VuZCB0aHJvdWdoIHRoZSBjb3VudGVycGFydCBfaW1wbCBrZnVuYy5cbiBcdCAqL1xuIFx0aWYgKGtmdW5jX2ZsYWdzIFx1MDAyNlx1MDAyNiAoKmtmdW5jX2ZsYWdzIFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcbi1cdFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhlbnYsIGJ0ZiwgZnVuY19uYW1lKTtcbitcdFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhcdTAwMjZlbnYtXHUwMDNlbG9nLCBidGYsIGZ1bmNfbmFtZSk7XG4gXHRlbHNlXG4gXHRcdGZ1bmNfcHJvdG8gPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXHUwMDNldHlwZSk7XG4gXG5AQCAtMTg4NzMsNiArMTg4NzMsMzEgQEAgc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJcbiBcdHJldHVybiAtRUlOVkFMO1xuIH1cbiBcbisvKlxuKyAqIFJlc29sdmUgdGhlIHByb3RvdHlwZSBkZXNjcmliaW5nIGEgdHJhY2UgdGFyZ2V0J3MgcmVhbCBBQkkuIEFcbisgKiBLRl9JTVBMSUNJVF9BUkdTIGtmdW5jIGhhcyBpdHMgaW5qZWN0ZWQgYXJncyBzdHJpcHBlZCBmcm9tIHRoZSBwdWJsaWNcbisgKiBwcm90b3R5cGUsIHNvIHVzZSB0aGUgX2ltcGwgcHJvdG90eXBlOyBvdGhlciB0YXJnZXRzIHVzZSB0aGVpciBvd24uXG4rICovXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXG4rYnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4re1xuK1x0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jO1xuK1x0Y29uc3QgY2hhciAqbmFtZTtcbitcdHUzMiBrZnVuY19mbGFncztcbitcbitcdGZ1bmMgPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmNfaWQpO1xuK1x0aWYgKCFmdW5jIHx8ICFidGZfdHlwZV9pc19mdW5jKGZ1bmMpKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcbitcdGtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7XG4rXHRpZiAoa2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcbitcdFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXHUwMDNlbmFtZV9vZmYpO1xuK1x0XHRyZXR1cm4gZmluZF9rZnVuY19pbXBsX3Byb3RvKGxvZywgYnRmLCBuYW1lKTtcbitcdH1cbitcbitcdHJldHVybiBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXHUwMDNldHlwZSk7XG4rfVxuK1xuIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXG5AQCAtMTkxMjEsOCArMTkxNDYsOCBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbiBcdFx0aWYgKHByb2dfZXh0ZW5zaW9uIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYnRmX2NoZWNrX3R5cGVfbWF0Y2gobG9nLCBwcm9nLCBidGYsIHQpKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuLVx0XHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB0LVx1MDAzZXR5cGUpO1xuLVx0XHRpZiAoIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4rXHRcdHQgPSBidGZfYXR0YWNoX2Z1bmNfcHJvdG8obG9nLCBidGYsIGJ0Zl9pZCk7XG4rXHRcdGlmICghdCB8fCAhYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0aWYgKChwcm9nLVx1MDAzZWF1eC1cdTAwM2VzYXZlZF9kc3RfcHJvZ190eXBlIHx8IHByb2ctXHUwMDNlYXV4LVx1MDAzZXNhdmVkX2RzdF9hdHRhY2hfdHlwZSkgXHUwMDI2XHUwMDI2XG5AQCAtMTk0MDcsOCArMTk0MzIsOCBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdGlmICghYnRmX3R5cGVfaXNfZnVuYyh0KSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB0LVx1MDAzZXR5cGUpO1xuLVx0aWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxuK1x0dCA9IGJ0Zl9hdHRhY2hfZnVuY19wcm90byhOVUxMLCBidGYsIGJ0Zl9pZCk7XG4rXHRpZiAoIXQgfHwgIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0ZXJyID0gYnRmX2Rpc3RpbGxfZnVuY19wcm90byhOVUxMLCBidGYsIHQsIHRuYW1lLCBcdTAwMjZ0Z3RfaW5mby1cdTAwM2VmbW9kZWwpO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjYxY2M1YWFiYTAyNTRkXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuY1xuQEAgLTAsMCArMSwzNiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuKyNpbmNsdWRlIFwia2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLnNrZWwuaFwiXG4rXG4rdm9pZCB0ZXN0X2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZyh2b2lkKVxuK3tcbitcdHN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7XG4rXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMpO1xuK1x0aW50IGVyciwgZmQ7XG4rXG4rXHRza2VsID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19vcGVuX2FuZF9sb2FkKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJvcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRlcnIgPSBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2F0dGFjaChza2VsKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJhdHRhY2hcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcbitcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MudHJpZ2dlcl9pbXBsaWNpdF9hcmcpO1xuK1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcInRlc3RfcnVuXCIpKVxuK1x0XHRnb3RvIGNsZWFudXA7XG4rXG4rXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCA1LCBcImtmdW5jX3JldHZhbFwiKTtcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VmZW50cnlfYXJnX2NudCwgMiwgXCJmZW50cnlfYXJnX2NudFwiKTtcbitcdEFTU0VSVF9ORVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmVudHJ5X2F1eF9hcmcsIDAsIFwiZmVudHJ5X2F1eF9hcmdcIik7XG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmVudHJ5X3Jlc3VsdCwgMSwgXCJmZW50cnlfcmVzdWx0XCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZleGl0X2FyZ19jbnQsIDIsIFwiZmV4aXRfYXJnX2NudFwiKTtcbitcdEFTU0VSVF9ORVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmV4aXRfYXV4X2FyZywgMCwgXCJmZXhpdF9hdXhfYXJnXCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZleGl0X3Jlc3VsdCwgMSwgXCJmZXhpdF9yZXN1bHRcIik7XG4rXG4rY2xlYW51cDpcbitcdGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fZGVzdHJveShza2VsKTtcbit9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjk5NWY4YjhiNWI5ZThmXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcbkBAIC0wLDAgKzEsNzcgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbitcbisjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjZXJybm8uaFx1MDAzZVxuK1xuK2V4dGVybiBpbnQgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyhpbnQgYSkgX193ZWFrIF9fa3N5bTtcbitcbitjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4rXG4rLyogU2hhcmVkIGFyZyBjaGVja3M7IHJlcG9ydHMgYXJnIGNvdW50IGFuZCBhdXgsIHJldHVybnMgMSBvbiBzdWNjZXNzLiAqL1xuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgX191NjRcbitjaGVja19pbXBsaWNpdF9hcmdzKHZvaWQgKmN0eCwgX191NjQgKmFyZ19jbnQsIF9fdTY0ICphdXhfYXJnKVxuK3tcbitcdF9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDtcbitcdF9fdTY0IHJlc3VsdDtcbitcdF9fczY0IGVycjtcbitcbitcdCphcmdfY250ID0gYnBmX2dldF9mdW5jX2FyZ19jbnQoY3R4KTtcbitcdHJlc3VsdCA9ICphcmdfY250ID09IDI7XG4rXG4rXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMCwgXHUwMDI2YSk7XG4rXHRyZXN1bHQgXHUwMDI2PSBlcnIgPT0gMCBcdTAwMjZcdTAwMjYgKGludClhID09IDU7XG4rXG4rXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMSwgXHUwMDI2YXV4KTtcbitcdCphdXhfYXJnID0gYXV4O1xuK1x0cmVzdWx0IFx1MDAyNj0gZXJyID09IDAgXHUwMDI2XHUwMDI2IGF1eCAhPSAwO1xuK1xuK1x0ZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDIsIFx1MDAyNnopO1xuK1x0cmVzdWx0IFx1MDAyNj0gZXJyID09IC1FSU5WQUw7XG4rXG4rXHRyZXR1cm4gcmVzdWx0O1xuK31cbitcbitfX3U2NCBmZW50cnlfcmVzdWx0O1xuK19fdTY0IGZlbnRyeV9hcmdfY250O1xuK19fdTY0IGZlbnRyeV9hdXhfYXJnO1xuK1xuK1NFQyhcImZlbnRyeS9icGZfa2Z1bmNfaW1wbGljaXRfYXJnXCIpXG4raW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZW50cnkpXG4re1xuK1x0X191NjQgcmV0ID0gMDtcbitcdF9fczY0IGVycjtcbitcbitcdGZlbnRyeV9yZXN1bHQgPSBjaGVja19pbXBsaWNpdF9hcmdzKGN0eCwgXHUwMDI2ZmVudHJ5X2FyZ19jbnQsIFx1MDAyNmZlbnRyeV9hdXhfYXJnKTtcbitcbitcdGVyciA9IGJwZl9nZXRfZnVuY19yZXQoY3R4LCBcdTAwMjZyZXQpO1xuK1x0ZmVudHJ5X3Jlc3VsdCBcdTAwMjY9IGVyciA9PSAtRU9QTk9UU1VQUDtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitfX3U2NCBmZXhpdF9yZXN1bHQ7XG4rX191NjQgZmV4aXRfYXJnX2NudDtcbitfX3U2NCBmZXhpdF9hdXhfYXJnO1xuK1xuK1NFQyhcImZleGl0L2JwZl9rZnVuY19pbXBsaWNpdF9hcmdcIilcbitpbnQgQlBGX1BST0codHJhY2VfaW1wbGljaXRfYXJnX2ZleGl0KVxuK3tcbitcdF9fdTY0IHJldCA9IDA7XG4rXHRfX3M2NCBlcnI7XG4rXG4rXHRmZXhpdF9yZXN1bHQgPSBjaGVja19pbXBsaWNpdF9hcmdzKGN0eCwgXHUwMDI2ZmV4aXRfYXJnX2NudCwgXHUwMDI2ZmV4aXRfYXV4X2FyZyk7XG4rXG4rXHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXHUwMDI2cmV0KTtcbitcdGZleGl0X3Jlc3VsdCBcdTAwMjY9IGVyciA9PSAwIFx1MDAyNlx1MDAyNiByZXQgPT0gNTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCJzeXNjYWxsXCIpXG4raW50IHRyaWdnZXJfaW1wbGljaXRfYXJnKHZvaWQgKmN0eClcbit7XG4rXHRyZXR1cm4gYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyg1KTtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQyMToxNDoyMS4zOTY2MzQ5NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNzE5ODkxNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIGFuZCBCVEYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUsIGFuZCBpdCBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgdGhlIEJQRiB2ZXJpZmllciBhbmQgQlRGIHN1YnN5c3RlbS4gVGhlIGNvcmUgb2YgaXQgaW52b2x2ZXMgdGhpcyBuZXcgdmFyaWFibGUsIGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgLiBJIHVuZGVyc3RhbmQgdGhhdCB0aGlzIGlzIG1lYW50IHRvIGhlbHAgcmVzb2x2ZSB0aGUgYWN0dWFsIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UgKEFCSSkgcHJvdG90eXBlIGZvciB0cmFjaW5nIHRhcmdldHMgd2hlbiBkZWFsaW5nIHdpdGggYEtGX0lNUExJQ0lUX0FSR1NgIGtmdW5jcy4gVGhhdCBtYWtlcyBzZW5zZTsgaW1wbGljaXQgYXJndW1lbnRzIGNhbiBjb21wbGljYXRlIHRoaW5ncyB3aGVuIHlvdSBuZWVkIGEgY29uY3JldGUgQUJJIHRvIHdvcmsgd2l0aC4gVGhlIGNvZGUgaXMgbG9jYXRlZCBpbiBga2VybmVsL2JwZi9idGYuY2AgYW5kIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGZ1bmN0aW9uYWwgYW5kIGNyaXRpY2FsIHN0dWZmLCByaWdodCBpbiB0aGUgaGVhcnQgb2YgdGhlIEJQRiBjb3JlLlxuXG5MZXQncyBkaXZlIGludG8gdGhlIHNwZWNpZmljcyBvZiB3aGF0J3MgYmVlbiBjaGFuZ2VkLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgLCBhIG5ldyBmdW5jdGlvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZW4gdGhlcmUgaXMgdGhlIG1vZGlmaWNhdGlvbiBvZiBgZmluZF9rZnVuY19pbXBsX3Byb3RvYCwgdGhhdCBpbmRpY2F0ZXMgYSByZXZpc2lvbiB0byB0aGUgd2F5IHRoZXkgc2VhcmNoIGZvciB0aGUgaW1wbGVtZW50YXRpb24gcHJvdG90eXBlLCB3aGljaCBpcyBleHBlY3RlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LiBBbHNvLCB0aGVyZSBhcmUgdGhlIGludHJvZHVjdGlvbnMgb2YgYGJ0Zl9hdHRhY2hfZnVuY19wcm90b2AgYW5kIG1vZGlmaWNhdGlvbnMgdG8gYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBhbmQgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYC4gQWxsIG9mIHRoZXNlIGNoYW5nZXMgaGF2ZSBpbXBsaWNhdGlvbnMgb24gaG93IHRyYWNpbmcgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIHRoZXNlIGtmdW5jcy5cblxuRXNzZW50aWFsbHksIHRoaXMgaXMgYWxsIGFib3V0IHN1cHBvcnRpbmcgZmVudHJ5L2ZleGl0IHRyYWNpbmcgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gQlBGIGtmdW5jcyB0aGF0IGhhdmUgaW1wbGljaXQgYXJndW1lbnRzLiBUaGUgY2hhbGxlbmdlIGlzIHJlc29sdmluZyB0aGUgcHJvcGVyIEFCSSwgb3IgYF9pbXBsYCBwcm90b3R5cGUsIHNvIHRyYWNpbmcgcHJvZ3JhbXMgY2FuIGJlIGF0dGFjaGVkIHByb3Blcmx5LiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBwYXRjaC5cblxuSSBzaG91bGQgcHJvYmFibHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWcgb3B0aW9ucy4gSSdtIHRoaW5raW5nIHRoZSB1c3VhbCBzdXNwZWN0czogYENPTkZJR19CUEZgLCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYW5kIGBDT05GSUdfREVCVUdfSU5GT19CVEZgLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9ucyB0aGF0IHRoaXMgcGF0Y2ggbWlnaHQgcmVxdWlyZS4gSSdsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRob3NlIGZpbGVzIGFnYWluLCBwYXJ0aWN1bGFybHkgZm9jdXNpbmcgb24gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2J0Zi5jYCBmb3IgYW55IGNsdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjAwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMjE6MTQ6MjcuNjY4NjI2MzUyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzgwNjkzNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS0ZfSU1QTElDSVRfQVJHU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0PTM4Mz10aG9zZSBrZnVuY3MgaWYgYW5kIHdoZW4gc3VjaCBkaXNjdXNzaW9ucyBvY2N1ci5cXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4NC1cXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0OjM4NToyLjUuOSBLRl9JTVBMSUNJVF9BUkdTIGZsYWdcXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4Ni0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4Ny1cXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0OjM4ODpUaGUgS0ZfSU1QTElDSVRfQVJHUyBmbGFnIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgQlBGIHNpZ25hdHVyZVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg5LW9mIHRoZSBrZnVuYyBpcyBkaWZmZXJlbnQgZnJvbSBpdCdzIGtlcm5lbCBzaWduYXR1cmUsIGFuZCB0aGUgdmFsdWVzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0PTM5Mz1DdXJyZW50bHkgb25seSBgYHN0cnVjdCBicGZfcHJvZ19hdXggKmBgIHR5cGUgaXMgc3VwcG9ydGVkLlxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzk0LVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6Mzk1OkEga2Z1bmMgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIGZsYWcgdGhlcmVmb3JlIGhhcyB0d28gdHlwZXMgaW4gQlRGOiBvbmVcXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM5Ni1mdW5jdGlvbiBtYXRjaGluZyB0aGUga2VybmVsIGRlY2xhcmF0aW9uICh3aXRoIF9pbXBsIHN1ZmZpeCBpbiB0aGVcXG4tLVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jaGFuZ2VzLnJzdD0xNDg9bW9kdWxlcyBhcyB3ZWxsLiAgVGhpcyByZXF1aXJlcyBwYWhvbGUgdjEuMjIgb3IgbGF0ZXIuXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NoYW5nZXMucnN0LTE0OS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY2hhbmdlcy5yc3Q6MTUwOlNpbmNlIExpbnV4IDcuMCwga2Z1bmNzIGFubm90YXRlZCB3aXRoIEtGX0lNUExJQ0lUX0FSR1MgcmVxdWlyZSBwYWhvbGUgdjEuMjZcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY2hhbmdlcy5yc3QtMTUxLW9yIGxhdGVyLiAgV2l0aG91dCBpdCwgc3VjaCBrZnVuY3Mgd2lsbCBoYXZlIGluY29ycmVjdCBCVEYgcHJvdG90eXBlcyBpblxcbi0tXFxuaW5jbHVkZS9saW51eC9idGYuaC04MC0jZGVmaW5lIEtGX0FSRU5BX0FSRzIgICAoMSBcXHUwMDNjXFx1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXFxuaW5jbHVkZS9saW51eC9idGYuaDo4MTojZGVmaW5lIEtGX0lNUExJQ0lUX0FSR1MgKDEgXFx1MDAzY1xcdTAwM2MgMTYpIC8qIGtmdW5jIGhhcyBpbXBsaWNpdCBhcmd1bWVudHMgc3VwcGxpZWQgYnkgdGhlIHZlcmlmaWVyICovXFxuaW5jbHVkZS9saW51eC9idGYuaC04Mi1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4MDQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGNyYXNoX2tleGVjLCBLRl9ERVNUUlVDVElWRSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODA1LSNlbmRpZlxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MDctQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3X2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODA4OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9uZXcsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwOS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfbmV3X2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODEwOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTEtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTI6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTMtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCwgS0ZfUkVMRUFTRSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE0OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODE1LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODE3LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxODpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTktQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfYmFja19pbXBsKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MjA6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2FkZCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODIxLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfZnJvbnQsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4MzE9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcmVtb3ZlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgzMjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGQsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgzMy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGRfaW1wbClcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ5MTQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl93cV9pbml0KVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5MTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl93cV9zZXRfY2FsbGJhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDkxNi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3N0YXJ0KVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDk2Mj1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2My0jZW5kaWZcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY0OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2NTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTY4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX2Zyb21fZmlsZSlcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yNjEzPXN0YXRpYyBpbnQgZmV0Y2hfa2Z1bmNfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTI2NTEtXFx0LypcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjY1MjpcXHQgKiBBbiBhY3R1YWwgcHJvdG90eXBlIG9mIGEga2Z1bmMgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIGZsYWdcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1My1cXHQgKiBjYW4gYmUgZm91bmQgdGhyb3VnaCB0aGUgY291bnRlcnBhcnQgX2ltcGwga2Z1bmMuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTI2NTQtXFx0ICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjI2NTU6XFx0aWYgKGtmdW5jX2ZsYWdzIFxcdTAwMjZcXHUwMDI2ICgqa2Z1bmNfZmxhZ3MgXFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1Ni1cXHRcXHRmdW5jX3Byb3RvID0gZmluZF9rZnVuY19pbXBsX3Byb3RvKFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgYnRmLCBmdW5jX25hbWUpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwOTA0PXN0YXRpYyBib29sIGlzX2tmdW5jX2FyZ19wcm9nX2F1eChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKmFyZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkwOS0vKlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDkxMDogKiBBIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBoYXMgdHdvIHByb3RvdHlwZXMgaW4gQlRGOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkxMS0gKiAgIC0gdGhlIF9pbXBsIHByb3RvdHlwZSB3aXRoIGZ1bGwgYXJnIGxpc3QgKG1ldGEtXFx1MDAzZWZ1bmNfcHJvdG8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA5MTY9c3RhdGljIGJvb2wgaXNfa2Z1bmNfYXJnX2ltcGxpY2l0KGNvbnN0IHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSwgdTMyIGFyZ19pZHgpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MjAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTIxOlxcdGlmICghKG1ldGEtXFx1MDAzZWtmdW5jX2ZsYWdzIFxcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTIyLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODgyNz1zdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg4NzctICogUmVzb2x2ZSB0aGUgcHJvdG90eXBlIGRlc2NyaWJpbmcgYSB0cmFjZSB0YXJnZXQncyByZWFsIEFCSS4gQVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODg3ODogKiBLRl9JTVBMSUNJVF9BUkdTIGtmdW5jIGhhcyBpdHMgaW5qZWN0ZWQgYXJncyBzdHJpcHBlZCBmcm9tIHRoZSBwdWJsaWNcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg4NzktICogcHJvdG90eXBlLCBzbyB1c2UgdGhlIF9pbXBsIHByb3RvdHlwZTsgb3RoZXIgdGFyZ2V0cyB1c2UgdGhlaXIgb3duLlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4ODgyPWJ0Zl9hdHRhY2hfZnVuY19wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBmdW5jX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODkyLVxcdGtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4ODkzOlxcdGlmIChrZnVuY19mbGFncyBcXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg4OTQtXFx0XFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXFx1MDAzZW5hbWVfb2ZmKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM9NjgzPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19pbml0KVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Njg0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF9vdmVycmlkZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NMRUVQQUJMRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTY4NS1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2luaXQpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jPTY5Mz1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfY2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Njk0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF90b19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzo2OTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3RvX2NpZCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjY5NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRfdG9wbywgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTY5Ny1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NpZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODczOD1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfZW5xdWV1ZV9kaXNwYXRjaClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3Mzk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX2luc2VydCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3NDA6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX2luc2VydF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODc0MTpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX2RzcV9pbnNlcnRfdnRpbWUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NzQyLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9pbnNlcnRfdnRpbWUsIEtGX1JDVSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTEwMz1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfZGlzcGF0Y2gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTA0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2Rpc3BhdGNoX25yX3Nsb3RzLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kaXNwYXRjaF9jYW5jZWwsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTA2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9tb3ZlX3RvX2xvY2FsLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV90b19sb2NhbF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTEwOC0vKiBzY3hfYnBmX2RzcV9tb3ZlKigpIGFsc28gaW4gc2N4X2tmdW5jX2lkc191bmxvY2tlZDogY2FsbGFibGUgZnJvbSB1bmxvY2tlZCBjb250ZXh0cyAqL1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MTEyPUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9tb3ZlX3Z0aW1lLCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTEzLSNpZmRlZiBDT05GSUdfRVhUX1NVQl9TQ0hFRFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTExNDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zdWJfZGlzcGF0Y2gsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTE1LSNlbmRpZlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MTUyPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19jcHVfcmVsZWFzZSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkxNTM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcmVlbnF1ZXVlX2xvY2FsLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTE1NC1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NwdV9yZWxlYXNlKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MjIxPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkyMjI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3JlYXRlX2RzcSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NMRUVQQUJMRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkyMjMtLyogYWxzbyBpbiBzY3hfa2Z1bmNfaWRzX2Rpc3BhdGNoOiBhbHNvIGNhbGxhYmxlIGZyb20gb3BzLmRpc3BhdGNoKCkgKi9cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTIyNz1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV92dGltZSwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTIyOC0vKiBhbHNvIGluIHNjeF9rZnVuY19pZHNfc2VsZWN0X2NwdTogYWxzbyBjYWxsYWJsZSBmcm9tIG9wcy5zZWxlY3RfY3B1KCkvb3BzLmVucXVldWUoKSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTIyOTpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTIzMC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTIzMTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2RmbCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkyMzItQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTAzODI9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2FueSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzgzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfc2V0X3NsaWNlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfc2V0X2RzcV92dGltZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM4NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NwdSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2tpY2tfY2lkLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX25yX3F1ZXVlZCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2Rlc3Ryb3lfZHNxLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX3BlZWssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1VfUFJPVEVDVEVEIHwgS0ZfUkVUX05VTEwpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfcmVlbnEsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9yZWVucXVldWVfbG9jYWxfX192MiwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzkyOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX25ldywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0lURVJfTkVXIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwMzkzLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTAzOTQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX3NjeF9kc3FfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXhpdF9ic3RyLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXJyb3JfYnN0ciwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzk3OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2R1bXBfYnN0ciwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzk4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQwMDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX3NldCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDAxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZHBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MDI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY2lkcGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQwMzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRwZXJmX3NldCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDA0LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX25yX25vZGVfaWRzKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDQxND1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX2NpZCwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3JxLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfbG9ja2VkX3JxLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQxNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfY3VyciwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDE4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF9jdXJyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1VfUFJPVEVDVEVEKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0MTktQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGlkX3RvX3Rhc2ssIEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0MjE9QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXZlbnRzKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0MjItI2lmZGVmIENPTkZJR19DR1JPVVBfU0NIRURcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDIzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfY2dyb3VwLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVIHwgS0ZfQUNRVUlSRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDI0LSNlbmRpZlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDQ0Nz1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfY3B1X29ubHkpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ0ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NwdSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDQ5LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfY3B1LCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfcnEsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfY3VyciwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDUyOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9jYXAsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1NDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX2N1ciwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDU1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfc2V0LCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0NTYtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X3Bvc3NpYmxlX2NwdW1hc2ssIEtGX0FDUVVJUkUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNDU4PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9jcHVtYXNrLCBLRl9SRUxFQVNFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc2VsZWN0X2NwdV9kZmwsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2MDpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0NjEtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc2VsZWN0X2NwdV9hbmQsIEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDYyOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX2NwdW1hc2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfY3B1bWFza19ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX3NtdG1hc2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFza19ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDY2LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9pZGxlX2NwdW1hc2ssIEtGX1JFTEVBU0UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90ZXN0X2FuZF9jbGVhcl9jcHVfaWRsZSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfaWRsZV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2OTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ3MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ3MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHVfbm9kZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDcyLUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfY3B1X29ubHkpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYz0xNDY0PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19pZGxlKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NjU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9jcHVtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0Njc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfY3B1bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9zbXRtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0Njk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTQ3MC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9wdXRfaWRsZV9jcHVtYXNrLCBLRl9SRUxFQVNFKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGVzdF9hbmRfY2xlYXJfY3B1X2lkbGUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3MjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3MzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1LCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19hbnlfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTQ3Ni1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2lkbGUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYz0xNDk1PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19zZWxlY3RfY3B1KVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0OTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIF9fc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDk3LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ5ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2RmbCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDk5LUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfc2VsZWN0X2NwdSlcXG4tLVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM9MTIyPXN0cnVjdCBvYmplY3Qge1xcbi0tXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xNTQtXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYzoxNTU6I2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFxcdTAwM2NcXHUwMDNjIDE2KVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTU2LSNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggXFxcIl9pbXBsXFxcIlxcbi0tXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYz0xMDY0PXN0YXRpYyBib29sIGlzX2tmX2ltcGxpY2l0X2FyZyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKnApXFxuLS1cXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEwOTItLypcXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jOjEwOTM6ICogRm9yIGEga2Z1bmMgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIHdlIGRvIHRoZSBmb2xsb3dpbmc6XFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMDk0LSAqICAgMS4gQWRkIGEgbmV3IGZ1bmN0aW9uIHdpdGggX2ltcGwgc3VmZml4IGluIHRoZSBuYW1lLCB3aXRoIHRoZSBwcm90b3R5cGVcXG4tLVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTEwNi0gKlxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM6MTEwNzogKiBJZiBhIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBhbHJlYWR5IGhhcyBhbiBfaW1wbCBjb3VudGVycGFydFxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTEwOC0gKiBpbiBCVEYsIHRoZW4gaXQncyBhIGxlZ2FjeSBjYXNlOiBhbiBfaW1wbCBmdW5jdGlvbiBpcyBkZWNsYXJlZCBpbiB0aGVcXG4tLVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM9MTIxND1zdGF0aWMgaW50IGJ0ZjJidGYoc3RydWN0IG9iamVjdCAqb2JqKVxcbi0tXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMjI1LVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM6MTIyNjpcXHRcXHRpZiAoIShrZnVuYy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEyMjctXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jPTE0MDQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19tdWx0aV9zdF9vcHNfdGVzdF8xKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX211bHRpX3N0X29wc190ZXN0XzFfYXNzb2MsIEtGX0lNUExJQ0lUX0FSR1MpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYzoxNDA2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfaW1wbGljaXRfYXJnLCBLRl9JTVBMSUNJVF9BUkdTKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ19sZWdhY3ksIEtGX0lNUExJQ0lUX0FSR1MpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYy0xNDA4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfaW1wbGljaXRfYXJnX2xlZ2FjeV9pbXBsKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQyMToxNDoyOS43NDY3MDEyMzdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTMxMzgwMzQ0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBQYXRjaCBmb3IgZmVudHJ5L2ZleGl0IFRyYWNpbmcgb2Yga2Z1bmNzIHdpdGggSW1wbGljaXQgQXJndW1lbnRzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhYm91dCBlbmFibGluZyBgZmVudHJ5L2ZleGl0YCB0cmFjaW5nIGZvciBrZnVuY3MgdGhhdCB1dGlsaXplIGBLRl9JTVBMSUNJVF9BUkdTYC4gVGhlIGNvcmUgb2YgdGhpcyBpcyBhIGNoYW5nZSB0byB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgdGVzdCBjYXNlLCBga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNgLCBpcyB1c2luZyBgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ2AsIHdoaWNoIHRlbGxzIG1lIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBpcyB0aGUgY3JpdGljYWwgYXJlYSBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHByb3RvdHlwZSBvZiB0aGVzZSBrZnVuY3MgaXMgcmVzb2x2ZWQgd2hlbiBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcy5cblxuSSdtIHRoaW5raW5nIGFib3V0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIENsZWFybHksIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVzc2VudGlhbCwgYW5kIGBDT05GSUdfREVCVUdfSU5GT19CVEZgIGlzIG5lZWRlZCBmb3IgQlRGIHN1cHBvcnQuIFNpbmNlIHRoaXMgaW52b2x2ZXMgdHJhY2luZywgc3BlY2lmaWNhbGx5IGBmZW50cnkvZmV4aXRgLCBgQ09ORklHX0JQRl9KSVRgIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCB0b28g4oCTIGl0IHdpbGwgbW9zdCBsaWtlbHkgYmUgbmVlZGVkIGZvciB0aGUgdHJhbXBvbGluZSBpbXBsZW1lbnRhdGlvbi4gSXQncyBwb3NzaWJsZSB3ZSBtaWdodCBhbHNvIG5lZWQgYENPTkZJR19GVFJBQ0VgIG9yIGBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgIGJ1dCB0aGF0IGNhbiBiZSBhZGRlZCBsYXRlci5cblxuVGhlIGtleSBoZXJlIGlzIHRoZSBCUEYgdmVyaWZpZXIgaXRzZWxmLCBhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggQlRGLiBJJ20gZm9jdXNpbmcgb24gdGhlIGNvZGUgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2J0Zi5jYC4gSSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgYEJQRl9URVNUTU9EYCBzaW5jZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIHdoYXQgbWF0dGVycyBoZXJlLCBJJ20gbW9yZSBpbnRlcmVzdGVkIGluIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGNvcmUgdmVyaWZpZXIuXG5cbkkgc2hvdWxkIGlkZW50aWZ5IHRoZSBrZXkgc3ltYm9scyBtb2RpZmllZCBieSB0aGlzIHBhdGNoIHRvIGFpZCBmdXp6aW5nLiBUaGUgb25lcyB0aGF0IHN0aWNrIG91dCBhcmU6XG5cbiogICBgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzYFxuKiAgIGBidGZfYXR0YWNoX2Z1bmNfcHJvdG9gXG4qICAgYGZpbmRfa2Z1bmNfaW1wbF9wcm90b2BcbiogICBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgXG4qICAgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYFxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIGNvZGU6IGBidGZfYXR0YWNoX2Z1bmNfcHJvdG9gIGlzIGRlZmluaXRlbHkgc3RhdGljIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXI6IFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUga2Z1bmMgcHJvdG90eXBlcyB3aXRoIGBLRl9JTVBMSUNJVF9BUkdTYCBmb3IgdHJhY2luZyBwcm9ncmFtcy4gVGhlIGZ1enppbmcgZWZmb3J0cyBzaG91bGQgY29uY2VudHJhdGUgb24gdGhlIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgcHJvY2VzcywgcGFydGljdWxhcmx5IGhvdyBCVEYgdHlwZXMgYXJlIG1hdGNoZWQgYW5kIHZlcmlmaWVkLlxuXG5Gb3IgbXkgY29uZmlndXJhdGlvbiwgSSdsbCBuZWVkIGBCUEZfU1lTQ0FMTGAsIGBERUJVR19JTkZPX0JURmAsIGFuZCBgQlBGX0pJVGAuIFRob3NlIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NzQ0LCJPdXRwdXRUb2tlbnMiOjE5MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQyMToxNDo0MS4wNjA1MDY3NTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NjM0NjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIixcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NcIixcbiAgICBcImJ0Zl9hdHRhY2hfZnVuY19wcm90b1wiLFxuICAgIFwiZmluZF9rZnVuY19pbXBsX3Byb3RvXCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2Yga2Z1bmNzIHdpdGggS0ZfSU1QTElDSVRfQVJHUyB3aGVuIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zIChsaWtlIGZlbnRyeS9mZXhpdCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBob3cgQlRGIHR5cGVzIGFyZSBtYXRjaGVkIGFuZCB2ZXJpZmllZCBkdXJpbmcgcHJvZ3JhbSBhdHRhY2htZW50LiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBCUEYgcHJvZ3JhbSBhdHRhY2htZW50IGFuZCBCVEYgdmVyaWZpY2F0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJERUJVR19JTkZPX0JURlwiLFxuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc1wiLFxuICAgIFwiYnRmX2F0dGFjaF9mdW5jX3Byb3RvXCIsXG4gICAgXCJmaW5kX2tmdW5jX2ltcGxfcHJvdG9cIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfdGFyZ2V0XCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBrZnVuY3Mgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIHdoZW4gYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMgKGxpa2UgZmVudHJ5L2ZleGl0KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIGhvdyBCVEYgdHlwZXMgYXJlIG1hdGNoZWQgYW5kIHZlcmlmaWVkIGR1cmluZyBwcm9ncmFtIGF0dGFjaG1lbnQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgYW5kIEJURiB2ZXJpZmljYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjwss8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 20:52:30 +0000 UTC FinishedAt: 2026-07-10 21:14:43 +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", "DEBUG_INFO_BTF", "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", "DEBUG_INFO_BTF", "BPF_JIT" ], "series_id": "2f33c1d6-76fc-427a-ba33-e1ba85c97c83" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "btf_kfunc_accumulated_flags", "btf_attach_func_proto", "find_kfunc_impl_proto", "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+CgkJCTx0ZD4yMDI2LzA3LzEwIDIxOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MmIzM0OywKICAgICYjMzQ7YnRmX2F0dGFjaF9mdW5jX3Byb3RvJiMzNDssCiAgICAmIzM0O2ZpbmRfa2Z1bmNfaW1wbF9wcm90byYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2Yga2Z1bmNzIHdpdGggS0ZfSU1QTElDSVRfQVJHUyB3aGVuIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zIChsaWtlIGZlbnRyeS9mZXhpdCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBob3cgQlRGIHR5cGVzIGFyZSBtYXRjaGVkIGFuZCB2ZXJpZmllZCBkdXJpbmcgcHJvZ3JhbSBhdHRhY2htZW50LiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBCUEYgcHJvZ3JhbSBhdHRhY2htZW50IGFuZCBCVEYgdmVyaWZpY2F0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDIxOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzNkMDJlYzZhMWI0ODUyNTdmNTllNjYzYzVmYWEzZTNkMDQ3YWFmNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDIxOjE0OjE5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXG5pbmRleCAyNDA0MDFkOWIyNWI5ZS4uYzUyMjQ1YWUwZGY1ZDcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2J0Zi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2J0Zi5oXG5AQCAtNTc4LDYgJiM0Mzs1NzgsNyBAQCBjb25zdCBjaGFyICpidGZfc3RyX2J5X29mZnNldChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBvZmZzZXQpO1xuIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZV92bWxpbnV4KHZvaWQpO1xuIHN0cnVjdCBidGYgKmJwZl9wcm9nX2dldF90YXJnZXRfYnRmKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG4gdTMyICpidGZfa2Z1bmNfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuJiM0Mzt1MzIgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCk7XG4gYm9vbCBidGZfa2Z1bmNfaXNfYWxsb3dlZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG4gdTMyICpidGZfa2Z1bmNfaXNfbW9kaWZ5X3JldHVybihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsXG4gXHRcdFx0XHRjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYnRmLmMgYi9rZXJuZWwvYnBmL2J0Zi5jXG5pbmRleCA2NDU3MmY4NWVkYzgzMi4uMjBhZWNhNmI0Zjk1YzkgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2J0Zi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2J0Zi5jXG5AQCAtOTExNCw2ICYjNDM7OTExNCwyNiBAQCB1MzIgKmJ0Zl9rZnVuY19mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcFxuIFx0cmV0dXJuIGJ0Zl9rZnVuY19pZF9zZXRfY29udGFpbnMoYnRmLCBob29rLCBrZnVuY19idGZfaWQpO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogUmV0dXJuIHRoZSB1bmlvbiBvZiBhIGtmdW5jJiMzOTtzIGZsYWdzIGFjcm9zcyBhbGwgaG9va3MuXG4mIzQzOyAqIFVubGlrZSBidGZfa2Z1bmNfZmxhZ3MoKSwgbm90IHJlc3RyaWN0ZWQgdG8gYSBjYWxsaW5nXG4mIzQzOyAqIHByb2dyYW0mIzM5O3MgaG9vay4gVXNlZCB3aGVuIGF0dGFjaGluZyB0byBhIGtmdW5jIGZvciB0cmFjaW5nLlxuJiM0MzsgKi9cbiYjNDM7dTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpXG4mIzQzO3tcbiYjNDM7XHRlbnVtIGJ0Zl9rZnVuY19ob29rIGhvb2s7XG4mIzQzO1x0dTMyICpob29rX2ZsYWdzO1xuJiM0MztcdHUzMiBmbGFncyA9IDA7XG4mIzQzO1xuJiM0MztcdGZvciAoaG9vayA9IDA7IGhvb2sgXHUwMDNjIEJURl9LRlVOQ19IT09LX01BWDsgaG9vayYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGhvb2tfZmxhZ3MgPSBidGZfa2Z1bmNfaWRfc2V0X2NvbnRhaW5zKGJ0ZiwgaG9vaywga2Z1bmNfYnRmX2lkKTtcbiYjNDM7XHRcdGlmIChob29rX2ZsYWdzKVxuJiM0MztcdFx0XHRmbGFncyB8PSAqaG9va19mbGFncztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHJldHVybiBmbGFncztcbiYjNDM7fVxuJiM0MztcbiB1MzIgKmJ0Zl9rZnVuY19pc19tb2RpZnlfcmV0dXJuKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCxcbiBcdFx0XHRcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbiB7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCA2NTE1ZDRkM2MwMDMyZi4uZmRlMTFhMmY2ODY5YTYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuQEAgLTI1ODQsMjQgJiM0MzsyNTg0LDI0IEBAIHN0YXRpYyBzdHJ1Y3QgYnRmICpmaW5kX2tmdW5jX2Rlc2NfYnRmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMxNiBvZmZzZXQpXG4gXG4gI2RlZmluZSBLRl9JTVBMX1NVRkZJWCBcJiMzNDtfaW1wbFwmIzM0O1xuIFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLVx0XHRcdFx0XHRcdCAgICBzdHJ1Y3QgYnRmICpidGYsXG4tXHRcdFx0XHRcdFx0ICAgIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSlcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXG4mIzQzO2ZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSlcbiB7XG4tXHRjaGFyICpidWYgPSBlbnYtXHUwMDNldG1wX3N0cl9idWY7XG4gXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZ1bmM7XG4mIzQzO1x0Y2hhciBidWZbS1NZTV9OQU1FX0xFTl07XG4gXHRzMzIgaW1wbF9pZDtcbiBcdGludCBsZW47XG4gXG4tXHRsZW4gPSBzbnByaW50ZihidWYsIFRNUF9TVFJfQlVGX0xFTiwgXCYjMzQ7JXMlc1wmIzM0OywgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4tXHRpZiAobGVuIFx1MDAzYyAwIHx8IGxlbiBcdTAwM2U9IFRNUF9TVFJfQlVGX0xFTikge1xuLVx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7ZnVuY3Rpb24gbmFtZSAlcyVzIGlzIHRvbyBsb25nXFxuXCYjMzQ7LCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcbiYjNDM7XHRsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBcJiMzNDslcyVzXCYjMzQ7LCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcbiYjNDM7XHRpZiAobGVuIFx1MDAzYyAwIHx8IGxlbiBcdTAwM2U9IHNpemVvZihidWYpKSB7XG4mIzQzO1x0XHRicGZfbG9nKGxvZywgXCYjMzQ7ZnVuY3Rpb24gbmFtZSAlcyVzIGlzIHRvbyBsb25nXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4gXHRpbXBsX2lkID0gYnRmX2ZpbmRfYnlfbmFtZV9raW5kKGJ0ZiwgYnVmLCBCVEZfS0lORF9GVU5DKTtcbiBcdGlmIChpbXBsX2lkIFx1MDAzYz0gMCkge1xuLVx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7Y2Fubm90IGZpbmQgZnVuY3Rpb24gJXMgaW4gQlRGXFxuXCYjMzQ7LCBidWYpO1xuJiM0MztcdFx0YnBmX2xvZyhsb2csIFwmIzM0O2Nhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxcblwmIzM0OywgYnVmKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtMjY1Myw3ICYjNDM7MjY1Myw3IEBAIHN0YXRpYyBpbnQgZmV0Y2hfa2Z1bmNfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0ICogY2FuIGJlIGZvdW5kIHRocm91Z2ggdGhlIGNvdW50ZXJwYXJ0IF9pbXBsIGtmdW5jLlxuIFx0ICovXG4gXHRpZiAoa2Z1bmNfZmxhZ3MgXHUwMDI2XHUwMDI2ICgqa2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpKVxuLVx0XHRmdW5jX3Byb3RvID0gZmluZF9rZnVuY19pbXBsX3Byb3RvKGVudiwgYnRmLCBmdW5jX25hbWUpO1xuJiM0MztcdFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhcdTAwMjZlbnYtXHUwMDNlbG9nLCBidGYsIGZ1bmNfbmFtZSk7XG4gXHRlbHNlXG4gXHRcdGZ1bmNfcHJvdG8gPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXHUwMDNldHlwZSk7XG4gXG5AQCAtMTg4NzMsNiAmIzQzOzE4ODczLDMxIEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiXG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFJlc29sdmUgdGhlIHByb3RvdHlwZSBkZXNjcmliaW5nIGEgdHJhY2UgdGFyZ2V0JiMzOTtzIHJlYWwgQUJJLiBBXG4mIzQzOyAqIEtGX0lNUExJQ0lUX0FSR1Mga2Z1bmMgaGFzIGl0cyBpbmplY3RlZCBhcmdzIHN0cmlwcGVkIGZyb20gdGhlIHB1YmxpY1xuJiM0MzsgKiBwcm90b3R5cGUsIHNvIHVzZSB0aGUgX2ltcGwgcHJvdG90eXBlOyBvdGhlciB0YXJnZXRzIHVzZSB0aGVpciBvd24uXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpcbiYjNDM7YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZ1bmM7XG4mIzQzO1x0Y29uc3QgY2hhciAqbmFtZTtcbiYjNDM7XHR1MzIga2Z1bmNfZmxhZ3M7XG4mIzQzO1xuJiM0MztcdGZ1bmMgPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmNfaWQpO1xuJiM0MztcdGlmICghZnVuYyB8fCAhYnRmX3R5cGVfaXNfZnVuYyhmdW5jKSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHRrZnVuY19mbGFncyA9IGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhidGYsIGZ1bmNfaWQpO1xuJiM0MztcdGlmIChrZnVuY19mbGFncyBcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykge1xuJiM0MztcdFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXHUwMDNlbmFtZV9vZmYpO1xuJiM0MztcdFx0cmV0dXJuIGZpbmRfa2Z1bmNfaW1wbF9wcm90byhsb2csIGJ0ZiwgbmFtZSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLVx1MDAzZXR5cGUpO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXG5AQCAtMTkxMjEsOCAmIzQzOzE5MTQ2LDggQEAgaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4gXHRcdGlmIChwcm9nX2V4dGVuc2lvbiBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGJ0Zl9jaGVja190eXBlX21hdGNoKGxvZywgcHJvZywgYnRmLCB0KSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgdC1cdTAwM2V0eXBlKTtcbi1cdFx0aWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxuJiM0MztcdFx0dCA9IGJ0Zl9hdHRhY2hfZnVuY19wcm90byhsb2csIGJ0ZiwgYnRmX2lkKTtcbiYjNDM7XHRcdGlmICghdCB8fCAhYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0aWYgKChwcm9nLVx1MDAzZWF1eC1cdTAwM2VzYXZlZF9kc3RfcHJvZ190eXBlIHx8IHByb2ctXHUwMDNlYXV4LVx1MDAzZXNhdmVkX2RzdF9hdHRhY2hfdHlwZSkgXHUwMDI2XHUwMDI2XG5AQCAtMTk0MDcsOCAmIzQzOzE5NDMyLDggQEAgaW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRpZiAoIWJ0Zl90eXBlX2lzX2Z1bmModCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuLVx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgdC1cdTAwM2V0eXBlKTtcbi1cdGlmICghYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcbiYjNDM7XHR0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgYnRmX2lkKTtcbiYjNDM7XHRpZiAoIXQgfHwgIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0ZXJyID0gYnRmX2Rpc3RpbGxfZnVuY19wcm90byhOVUxMLCBidGYsIHQsIHRuYW1lLCBcdTAwMjZ0Z3RfaW5mby1cdTAwM2VmbW9kZWwpO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjYxY2M1YWFiYTAyNTRkXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuY1xuQEAgLTAsMCAmIzQzOzEsMzYgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdGVzdF9wcm9ncy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFwmIzM0O2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5za2VsLmhcJiMzNDtcbiYjNDM7XG4mIzQzO3ZvaWQgdGVzdF9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcodm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7XG4mIzQzO1x0TElCQlBGX09QVFMoYnBmX3Rlc3RfcnVuX29wdHMsIHRvcHRzKTtcbiYjNDM7XHRpbnQgZXJyLCBmZDtcbiYjNDM7XG4mIzQzO1x0c2tlbCA9IGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtvcGVuX2FuZF9sb2FkXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0ZXJyID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19hdHRhY2goc2tlbCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDthdHRhY2hcJiMzNDspKVxuJiM0MztcdFx0Z290byBjbGVhbnVwO1xuJiM0MztcbiYjNDM7XHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVx1MDAzZXByb2dzLnRyaWdnZXJfaW1wbGljaXRfYXJnKTtcbiYjNDM7XHRlcnIgPSBicGZfcHJvZ190ZXN0X3J1bl9vcHRzKGZkLCBcdTAwMjZ0b3B0cyk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDt0ZXN0X3J1blwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIGNsZWFudXA7XG4mIzQzO1xuJiM0MztcdEFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIDUsIFwmIzM0O2tmdW5jX3JldHZhbFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZlbnRyeV9hcmdfY250LCAyLCBcJiMzNDtmZW50cnlfYXJnX2NudFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX05FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VmZW50cnlfYXV4X2FyZywgMCwgXCYjMzQ7ZmVudHJ5X2F1eF9hcmdcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VmZW50cnlfcmVzdWx0LCAxLCBcJiMzNDtmZW50cnlfcmVzdWx0XCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmV4aXRfYXJnX2NudCwgMiwgXCYjMzQ7ZmV4aXRfYXJnX2NudFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX05FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VmZXhpdF9hdXhfYXJnLCAwLCBcJiMzNDtmZXhpdF9hdXhfYXJnXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmV4aXRfcmVzdWx0LCAxLCBcJiMzNDtmZXhpdF9yZXN1bHRcJiMzNDspO1xuJiM0MztcbiYjNDM7Y2xlYW51cDpcbiYjNDM7XHRrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2Rlc3Ryb3koc2tlbCk7XG4mIzQzO31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOTk1ZjhiOGI1YjllOGZcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuY1xuQEAgLTAsMCAmIzQzOzEsNzcgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2Vycm5vLmhcdTAwM2VcbiYjNDM7XG4mIzQzO2V4dGVybiBpbnQgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyhpbnQgYSkgX193ZWFrIF9fa3N5bTtcbiYjNDM7XG4mIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoXCYjMzQ7bGljZW5zZVwmIzM0OykgPSBcJiMzNDtHUExcJiMzNDs7XG4mIzQzO1xuJiM0MzsvKiBTaGFyZWQgYXJnIGNoZWNrczsgcmVwb3J0cyBhcmcgY291bnQgYW5kIGF1eCwgcmV0dXJucyAxIG9uIHN1Y2Nlc3MuICovXG4mIzQzO3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgX191NjRcbiYjNDM7Y2hlY2tfaW1wbGljaXRfYXJncyh2b2lkICpjdHgsIF9fdTY0ICphcmdfY250LCBfX3U2NCAqYXV4X2FyZylcbiYjNDM7e1xuJiM0MztcdF9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDtcbiYjNDM7XHRfX3U2NCByZXN1bHQ7XG4mIzQzO1x0X19zNjQgZXJyO1xuJiM0MztcbiYjNDM7XHQqYXJnX2NudCA9IGJwZl9nZXRfZnVuY19hcmdfY250KGN0eCk7XG4mIzQzO1x0cmVzdWx0ID0gKmFyZ19jbnQgPT0gMjtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDAsIFx1MDAyNmEpO1xuJiM0MztcdHJlc3VsdCBcdTAwMjY9IGVyciA9PSAwIFx1MDAyNlx1MDAyNiAoaW50KWEgPT0gNTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDEsIFx1MDAyNmF1eCk7XG4mIzQzO1x0KmF1eF9hcmcgPSBhdXg7XG4mIzQzO1x0cmVzdWx0IFx1MDAyNj0gZXJyID09IDAgXHUwMDI2XHUwMDI2IGF1eCAhPSAwO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMiwgXHUwMDI2eik7XG4mIzQzO1x0cmVzdWx0IFx1MDAyNj0gZXJyID09IC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXN1bHQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fdTY0IGZlbnRyeV9yZXN1bHQ7XG4mIzQzO19fdTY0IGZlbnRyeV9hcmdfY250O1xuJiM0MztfX3U2NCBmZW50cnlfYXV4X2FyZztcbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtmZW50cnkvYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ1wmIzM0OylcbiYjNDM7aW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZW50cnkpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCByZXQgPSAwO1xuJiM0MztcdF9fczY0IGVycjtcbiYjNDM7XG4mIzQzO1x0ZmVudHJ5X3Jlc3VsdCA9IGNoZWNrX2ltcGxpY2l0X2FyZ3MoY3R4LCBcdTAwMjZmZW50cnlfYXJnX2NudCwgXHUwMDI2ZmVudHJ5X2F1eF9hcmcpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXHUwMDI2cmV0KTtcbiYjNDM7XHRmZW50cnlfcmVzdWx0IFx1MDAyNj0gZXJyID09IC1FT1BOT1RTVVBQO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7X191NjQgZmV4aXRfcmVzdWx0O1xuJiM0MztfX3U2NCBmZXhpdF9hcmdfY250O1xuJiM0MztfX3U2NCBmZXhpdF9hdXhfYXJnO1xuJiM0MztcbiYjNDM7U0VDKFwmIzM0O2ZleGl0L2JwZl9rZnVuY19pbXBsaWNpdF9hcmdcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyh0cmFjZV9pbXBsaWNpdF9hcmdfZmV4aXQpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCByZXQgPSAwO1xuJiM0MztcdF9fczY0IGVycjtcbiYjNDM7XG4mIzQzO1x0ZmV4aXRfcmVzdWx0ID0gY2hlY2tfaW1wbGljaXRfYXJncyhjdHgsIFx1MDAyNmZleGl0X2FyZ19jbnQsIFx1MDAyNmZleGl0X2F1eF9hcmcpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXHUwMDI2cmV0KTtcbiYjNDM7XHRmZXhpdF9yZXN1bHQgXHUwMDI2PSBlcnIgPT0gMCBcdTAwMjZcdTAwMjYgcmV0ID09IDU7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7c3lzY2FsbFwmIzM0OylcbiYjNDM7aW50IHRyaWdnZXJfaW1wbGljaXRfYXJnKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBicGZfa2Z1bmNfaW1wbGljaXRfYXJnKDUpO1xuJiM0Mzt9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMjE6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2J0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyYjMzQ7LAogICAgJiMzNDtidGZfYXR0YWNoX2Z1bmNfcHJvdG8mIzM0OywKICAgICYjMzQ7ZmluZF9rZnVuY19pbXBsX3Byb3RvJiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfdGFyZ2V0JiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBrZnVuY3Mgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIHdoZW4gYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMgKGxpa2UgZmVudHJ5L2ZleGl0KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIGhvdyBCVEYgdHlwZXMgYXJlIG1hdGNoZWQgYW5kIHZlcmlmaWVkIGR1cmluZyBwcm9ncmFtIGF0dGFjaG1lbnQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgYW5kIEJURiB2ZXJpZmljYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDczZDAyZWM2YTFiNDg1MjU3ZjU5ZTY2M2M1ZmFhM2UzZDA0N2FhZjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAyMToxNDoxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnRmLmggYi9pbmNsdWRlL2xpbnV4L2J0Zi5oCmluZGV4IDI0MDQwMWQ5YjI1YjllLi5jNTIyNDVhZTBkZjVkNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2J0Zi5oCkBAIC01NzgsNiAmIzQzOzU3OCw3IEBAIGNvbnN0IGNoYXIgKmJ0Zl9zdHJfYnlfb2Zmc2V0KGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIG9mZnNldCk7CiBzdHJ1Y3QgYnRmICpidGZfcGFyc2Vfdm1saW51eCh2b2lkKTsKIHN0cnVjdCBidGYgKmJwZl9wcm9nX2dldF90YXJnZXRfYnRmKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7CiB1MzIgKmJ0Zl9rZnVuY19mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7CiYjNDM7dTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpOwogYm9vbCBidGZfa2Z1bmNfaXNfYWxsb3dlZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7CiB1MzIgKmJ0Zl9rZnVuY19pc19tb2RpZnlfcmV0dXJuKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwKIAkJCQljb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpOwpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9idGYuYyBiL2tlcm5lbC9icGYvYnRmLmMKaW5kZXggNjQ1NzJmODVlZGM4MzIuLjIwYWVjYTZiNGY5NWM5IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2J0Zi5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvYnRmLmMKQEAgLTkxMTQsNiAmIzQzOzkxMTQsMjYgQEAgdTMyICpidGZfa2Z1bmNfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3AKIAlyZXR1cm4gYnRmX2tmdW5jX2lkX3NldF9jb250YWlucyhidGYsIGhvb2ssIGtmdW5jX2J0Zl9pZCk7CiB9CiAKJiM0MzsvKgomIzQzOyAqIFJldHVybiB0aGUgdW5pb24gb2YgYSBrZnVuYyYjMzk7cyBmbGFncyBhY3Jvc3MgYWxsIGhvb2tzLgomIzQzOyAqIFVubGlrZSBidGZfa2Z1bmNfZmxhZ3MoKSwgbm90IHJlc3RyaWN0ZWQgdG8gYSBjYWxsaW5nCiYjNDM7ICogcHJvZ3JhbSYjMzk7cyBob29rLiBVc2VkIHdoZW4gYXR0YWNoaW5nIHRvIGEga2Z1bmMgZm9yIHRyYWNpbmcuCiYjNDM7ICovCiYjNDM7dTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpCiYjNDM7ewomIzQzOwllbnVtIGJ0Zl9rZnVuY19ob29rIGhvb2s7CiYjNDM7CXUzMiAqaG9va19mbGFnczsKJiM0MzsJdTMyIGZsYWdzID0gMDsKJiM0MzsKJiM0MzsJZm9yIChob29rID0gMDsgaG9vayAmbHQ7IEJURl9LRlVOQ19IT09LX01BWDsgaG9vayYjNDM7JiM0MzspIHsKJiM0MzsJCWhvb2tfZmxhZ3MgPSBidGZfa2Z1bmNfaWRfc2V0X2NvbnRhaW5zKGJ0ZiwgaG9vaywga2Z1bmNfYnRmX2lkKTsKJiM0MzsJCWlmIChob29rX2ZsYWdzKQomIzQzOwkJCWZsYWdzIHw9ICpob29rX2ZsYWdzOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBmbGFnczsKJiM0Mzt9CiYjNDM7CiB1MzIgKmJ0Zl9rZnVuY19pc19tb2RpZnlfcmV0dXJuKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwKIAkJCQljb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpCiB7CmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggNjUxNWQ0ZDNjMDAzMmYuLmZkZTExYTJmNjg2OWE2IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC0yNTg0LDI0ICYjNDM7MjU4NCwyNCBAQCBzdGF0aWMgc3RydWN0IGJ0ZiAqZmluZF9rZnVuY19kZXNjX2J0ZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMTYgb2Zmc2V0KQogCiAjZGVmaW5lIEtGX0lNUExfU1VGRklYICYjMzQ7X2ltcGwmIzM0OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKLQkJCQkJCSAgICBzdHJ1Y3QgYnRmICpidGYsCi0JCQkJCQkgICAgY29uc3QgY2hhciAqZnVuY19uYW1lKQomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKgomIzQzO2ZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSkKIHsKLQljaGFyICpidWYgPSBlbnYtJmd0O3RtcF9zdHJfYnVmOwogCWNvbnN0IHN0cnVjdCBidGZfdHlwZSAqZnVuYzsKJiM0MzsJY2hhciBidWZbS1NZTV9OQU1FX0xFTl07CiAJczMyIGltcGxfaWQ7CiAJaW50IGxlbjsKIAotCWxlbiA9IHNucHJpbnRmKGJ1ZiwgVE1QX1NUUl9CVUZfTEVOLCAmIzM0OyVzJXMmIzM0OywgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7Ci0JaWYgKGxlbiAmbHQ7IDAgfHwgbGVuICZndDs9IFRNUF9TVFJfQlVGX0xFTikgewotCQl2ZXJib3NlKGVudiwgJiMzNDtmdW5jdGlvbiBuYW1lICVzJXMgaXMgdG9vIGxvbmdcbiYjMzQ7LCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTsKJiM0MzsJbGVuID0gc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgJiMzNDslcyVzJiMzNDssIGZ1bmNfbmFtZSwgS0ZfSU1QTF9TVUZGSVgpOwomIzQzOwlpZiAobGVuICZsdDsgMCB8fCBsZW4gJmd0Oz0gc2l6ZW9mKGJ1ZikpIHsKJiM0MzsJCWJwZl9sb2cobG9nLCAmIzM0O2Z1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xuJiMzNDssCiYjNDM7CQkJZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7CiAJCXJldHVybiBOVUxMOwogCX0KIAogCWltcGxfaWQgPSBidGZfZmluZF9ieV9uYW1lX2tpbmQoYnRmLCBidWYsIEJURl9LSU5EX0ZVTkMpOwogCWlmIChpbXBsX2lkICZsdDs9IDApIHsKLQkJdmVyYm9zZShlbnYsICYjMzQ7Y2Fubm90IGZpbmQgZnVuY3Rpb24gJXMgaW4gQlRGXG4mIzM0OywgYnVmKTsKJiM0MzsJCWJwZl9sb2cobG9nLCAmIzM0O2Nhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxuJiMzNDssIGJ1Zik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtMjY1Myw3ICYjNDM7MjY1Myw3IEBAIHN0YXRpYyBpbnQgZmV0Y2hfa2Z1bmNfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCSAqIGNhbiBiZSBmb3VuZCB0aHJvdWdoIHRoZSBjb3VudGVycGFydCBfaW1wbCBrZnVuYy4KIAkgKi8KIAlpZiAoa2Z1bmNfZmxhZ3MgJmFtcDsmYW1wOyAoKmtmdW5jX2ZsYWdzICZhbXA7IEtGX0lNUExJQ0lUX0FSR1MpKQotCQlmdW5jX3Byb3RvID0gZmluZF9rZnVuY19pbXBsX3Byb3RvKGVudiwgYnRmLCBmdW5jX25hbWUpOwomIzQzOwkJZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90bygmYW1wO2Vudi0mZ3Q7bG9nLCBidGYsIGZ1bmNfbmFtZSk7CiAJZWxzZQogCQlmdW5jX3Byb3RvID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLSZndDt0eXBlKTsKIApAQCAtMTg4NzMsNiAmIzQzOzE4ODczLDMxIEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiCiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKJiM0MzsvKgomIzQzOyAqIFJlc29sdmUgdGhlIHByb3RvdHlwZSBkZXNjcmliaW5nIGEgdHJhY2UgdGFyZ2V0JiMzOTtzIHJlYWwgQUJJLiBBCiYjNDM7ICogS0ZfSU1QTElDSVRfQVJHUyBrZnVuYyBoYXMgaXRzIGluamVjdGVkIGFyZ3Mgc3RyaXBwZWQgZnJvbSB0aGUgcHVibGljCiYjNDM7ICogcHJvdG90eXBlLCBzbyB1c2UgdGhlIF9pbXBsIHByb3RvdHlwZTsgb3RoZXIgdGFyZ2V0cyB1c2UgdGhlaXIgb3duLgomIzQzOyAqLwomIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKgomIzQzO2J0Zl9hdHRhY2hfZnVuY19wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBmdW5jX2lkKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jOwomIzQzOwljb25zdCBjaGFyICpuYW1lOwomIzQzOwl1MzIga2Z1bmNfZmxhZ3M7CiYjNDM7CiYjNDM7CWZ1bmMgPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmNfaWQpOwomIzQzOwlpZiAoIWZ1bmMgfHwgIWJ0Zl90eXBlX2lzX2Z1bmMoZnVuYykpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKJiM0MzsJa2Z1bmNfZmxhZ3MgPSBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MoYnRmLCBmdW5jX2lkKTsKJiM0MzsJaWYgKGtmdW5jX2ZsYWdzICZhbXA7IEtGX0lNUExJQ0lUX0FSR1MpIHsKJiM0MzsJCW5hbWUgPSBidGZfbmFtZV9ieV9vZmZzZXQoYnRmLCBmdW5jLSZndDtuYW1lX29mZik7CiYjNDM7CQlyZXR1cm4gZmluZF9rZnVuY19pbXBsX3Byb3RvKGxvZywgYnRmLCBuYW1lKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLSZndDt0eXBlKTsKJiM0Mzt9CiYjNDM7CiBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywKIAkJCSAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csCiAJCQkgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZywKQEAgLTE5MTIxLDggJiM0MzsxOTE0Niw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLAogCQlpZiAocHJvZ19leHRlbnNpb24gJmFtcDsmYW1wOwogCQkgICAgYnRmX2NoZWNrX3R5cGVfbWF0Y2gobG9nLCBwcm9nLCBidGYsIHQpKQogCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCXQgPSBidGZfdHlwZV9ieV9pZChidGYsIHQtJmd0O3R5cGUpOwotCQlpZiAoIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpCiYjNDM7CQl0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKGxvZywgYnRmLCBidGZfaWQpOwomIzQzOwkJaWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJaWYgKChwcm9nLSZndDthdXgtJmd0O3NhdmVkX2RzdF9wcm9nX3R5cGUgfHwgcHJvZy0mZ3Q7YXV4LSZndDtzYXZlZF9kc3RfYXR0YWNoX3R5cGUpICZhbXA7JmFtcDsKQEAgLTE5NDA3LDggJiM0MzsxOTQzMiw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0CiAJCXJldHVybiAtRUlOVkFMOwogCWlmICghYnRmX3R5cGVfaXNfZnVuYyh0KSkKIAkJcmV0dXJuIC1FSU5WQUw7Ci0JdCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgdC0mZ3Q7dHlwZSk7Ci0JaWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKQomIzQzOwl0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgYnRmX2lkKTsKJiM0MzsJaWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAllcnIgPSBidGZfZGlzdGlsbF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgdCwgdG5hbWUsICZhbXA7dGd0X2luZm8tJmd0O2Ztb2RlbCk7CiAJaWYgKGVyciAmbHQ7IDApCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi42MWNjNWFhYmEwMjU0ZAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jCkBAIC0wLDAgJiM0MzsxLDM2IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3Rlc3RfcHJvZ3MuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5za2VsLmgmIzM0OwomIzQzOwomIzQzO3ZvaWQgdGVzdF9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7CiYjNDM7CUxJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyk7CiYjNDM7CWludCBlcnIsIGZkOwomIzQzOwomIzQzOwlza2VsID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O29wZW5fYW5kX2xvYWQmIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWVyciA9IGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fYXR0YWNoKHNrZWwpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7YXR0YWNoJiMzNDspKQomIzQzOwkJZ290byBjbGVhbnVwOwomIzQzOwomIzQzOwlmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLSZndDtwcm9ncy50cmlnZ2VyX2ltcGxpY2l0X2FyZyk7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsICZhbXA7dG9wdHMpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7dGVzdF9ydW4mIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CUFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIDUsICYjMzQ7a2Z1bmNfcmV0dmFsJiMzNDspOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtmZW50cnlfYXJnX2NudCwgMiwgJiMzNDtmZW50cnlfYXJnX2NudCYjMzQ7KTsKJiM0MzsJQVNTRVJUX05FUShza2VsLSZndDtic3MtJmd0O2ZlbnRyeV9hdXhfYXJnLCAwLCAmIzM0O2ZlbnRyeV9hdXhfYXJnJiMzNDspOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtmZW50cnlfcmVzdWx0LCAxLCAmIzM0O2ZlbnRyeV9yZXN1bHQmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShza2VsLSZndDtic3MtJmd0O2ZleGl0X2FyZ19jbnQsIDIsICYjMzQ7ZmV4aXRfYXJnX2NudCYjMzQ7KTsKJiM0MzsJQVNTRVJUX05FUShza2VsLSZndDtic3MtJmd0O2ZleGl0X2F1eF9hcmcsIDAsICYjMzQ7ZmV4aXRfYXV4X2FyZyYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7ZmV4aXRfcmVzdWx0LCAxLCAmIzM0O2ZleGl0X3Jlc3VsdCYjMzQ7KTsKJiM0MzsKJiM0MztjbGVhbnVwOgomIzQzOwlrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2Rlc3Ryb3koc2tlbCk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi45OTVmOGI4YjViOWU4ZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYwpAQCAtMCwwICYjNDM7MSw3NyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDt2bWxpbnV4LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDticGYvYnBmX3RyYWNpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7ZXJybm8uaCZndDsKJiM0MzsKJiM0MztleHRlcm4gaW50IGJwZl9rZnVuY19pbXBsaWNpdF9hcmcoaW50IGEpIF9fd2VhayBfX2tzeW07CiYjNDM7CiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwomIzQzOwomIzQzOy8qIFNoYXJlZCBhcmcgY2hlY2tzOyByZXBvcnRzIGFyZyBjb3VudCBhbmQgYXV4LCByZXR1cm5zIDEgb24gc3VjY2Vzcy4gKi8KJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIF9fdTY0CiYjNDM7Y2hlY2tfaW1wbGljaXRfYXJncyh2b2lkICpjdHgsIF9fdTY0ICphcmdfY250LCBfX3U2NCAqYXV4X2FyZykKJiM0Mzt7CiYjNDM7CV9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDsKJiM0MzsJX191NjQgcmVzdWx0OwomIzQzOwlfX3M2NCBlcnI7CiYjNDM7CiYjNDM7CSphcmdfY250ID0gYnBmX2dldF9mdW5jX2FyZ19jbnQoY3R4KTsKJiM0MzsJcmVzdWx0ID0gKmFyZ19jbnQgPT0gMjsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDAsICZhbXA7YSk7CiYjNDM7CXJlc3VsdCAmYW1wOz0gZXJyID09IDAgJmFtcDsmYW1wOyAoaW50KWEgPT0gNTsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDEsICZhbXA7YXV4KTsKJiM0MzsJKmF1eF9hcmcgPSBhdXg7CiYjNDM7CXJlc3VsdCAmYW1wOz0gZXJyID09IDAgJmFtcDsmYW1wOyBhdXggIT0gMDsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDIsICZhbXA7eik7CiYjNDM7CXJlc3VsdCAmYW1wOz0gZXJyID09IC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJldHVybiByZXN1bHQ7CiYjNDM7fQomIzQzOwomIzQzO19fdTY0IGZlbnRyeV9yZXN1bHQ7CiYjNDM7X191NjQgZmVudHJ5X2FyZ19jbnQ7CiYjNDM7X191NjQgZmVudHJ5X2F1eF9hcmc7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7ZmVudHJ5L2JwZl9rZnVuY19pbXBsaWNpdF9hcmcmIzM0OykKJiM0MztpbnQgQlBGX1BST0codHJhY2VfaW1wbGljaXRfYXJnX2ZlbnRyeSkKJiM0Mzt7CiYjNDM7CV9fdTY0IHJldCA9IDA7CiYjNDM7CV9fczY0IGVycjsKJiM0MzsKJiM0MzsJZmVudHJ5X3Jlc3VsdCA9IGNoZWNrX2ltcGxpY2l0X2FyZ3MoY3R4LCAmYW1wO2ZlbnRyeV9hcmdfY250LCAmYW1wO2ZlbnRyeV9hdXhfYXJnKTsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX3JldChjdHgsICZhbXA7cmV0KTsKJiM0MzsJZmVudHJ5X3Jlc3VsdCAmYW1wOz0gZXJyID09IC1FT1BOT1RTVVBQOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7X191NjQgZmV4aXRfcmVzdWx0OwomIzQzO19fdTY0IGZleGl0X2FyZ19jbnQ7CiYjNDM7X191NjQgZmV4aXRfYXV4X2FyZzsKJiM0MzsKJiM0MztTRUMoJiMzNDtmZXhpdC9icGZfa2Z1bmNfaW1wbGljaXRfYXJnJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZXhpdCkKJiM0Mzt7CiYjNDM7CV9fdTY0IHJldCA9IDA7CiYjNDM7CV9fczY0IGVycjsKJiM0MzsKJiM0MzsJZmV4aXRfcmVzdWx0ID0gY2hlY2tfaW1wbGljaXRfYXJncyhjdHgsICZhbXA7ZmV4aXRfYXJnX2NudCwgJmFtcDtmZXhpdF9hdXhfYXJnKTsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX3JldChjdHgsICZhbXA7cmV0KTsKJiM0MzsJZmV4aXRfcmVzdWx0ICZhbXA7PSBlcnIgPT0gMCAmYW1wOyZhbXA7IHJldCA9PSA1OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQomIzQzO2ludCB0cmlnZ2VyX2ltcGxpY2l0X2FyZyh2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlyZXR1cm4gYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyg1KTsKJiM0Mzt9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDIxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MDAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIGFuZCBCVEYgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSwgYW5kIGl0IHNlZW1zIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgQlBGIHZlcmlmaWVyIGFuZCBCVEYgc3Vic3lzdGVtLiBUaGUgY29yZSBvZiBpdCBpbnZvbHZlcyB0aGlzIG5ldyB2YXJpYWJsZSwgYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AuIEkgdW5kZXJzdGFuZCB0aGF0IHRoaXMgaXMgbWVhbnQgdG8gaGVscCByZXNvbHZlIHRoZSBhY3R1YWwgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSAoQUJJKSBwcm90b3R5cGUgZm9yIHRyYWNpbmcgdGFyZ2V0cyB3aGVuIGRlYWxpbmcgd2l0aCBgS0ZfSU1QTElDSVRfQVJHU2Aga2Z1bmNzLiBUaGF0IG1ha2VzIHNlbnNlOyBpbXBsaWNpdCBhcmd1bWVudHMgY2FuIGNvbXBsaWNhdGUgdGhpbmdzIHdoZW4geW91IG5lZWQgYSBjb25jcmV0ZSBBQkkgdG8gd29yayB3aXRoLiBUaGUgY29kZSBpcyBsb2NhdGVkIGluIGBrZXJuZWwvYnBmL2J0Zi5jYCBhbmQgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AsIHdoaWNoIHRlbGxzIG1lIHRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgY3JpdGljYWwgc3R1ZmYsIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGUgQlBGIGNvcmUuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2Ygd2hhdCYjMzk7cyBiZWVuIGNoYW5nZWQuIEkgc2VlIHRoYXQgdGhlIHBhdGNoIGludHJvZHVjZXMgYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AsIGEgbmV3IGZ1bmN0aW9uLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhlbiB0aGVyZSBpcyB0aGUgbW9kaWZpY2F0aW9uIG9mIGBmaW5kX2tmdW5jX2ltcGxfcHJvdG9gLCB0aGF0IGluZGljYXRlcyBhIHJldmlzaW9uIHRvIHRoZSB3YXkgdGhleSBzZWFyY2ggZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBwcm90b3R5cGUsIHdoaWNoIGlzIGV4cGVjdGVkIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkuIEFsc28sIHRoZXJlIGFyZSB0aGUgaW50cm9kdWN0aW9ucyBvZiBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCBhbmQgbW9kaWZpY2F0aW9ucyB0byBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBBbGwgb2YgdGhlc2UgY2hhbmdlcyBoYXZlIGltcGxpY2F0aW9ucyBvbiBob3cgdHJhY2luZyBwcm9ncmFtcyBhcmUgYXR0YWNoZWQgdG8gdGhlc2Uga2Z1bmNzLgoKRXNzZW50aWFsbHksIHRoaXMgaXMgYWxsIGFib3V0IHN1cHBvcnRpbmcgZmVudHJ5L2ZleGl0IHRyYWNpbmcgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gQlBGIGtmdW5jcyB0aGF0IGhhdmUgaW1wbGljaXQgYXJndW1lbnRzLiBUaGUgY2hhbGxlbmdlIGlzIHJlc29sdmluZyB0aGUgcHJvcGVyIEFCSSwgb3IgYF9pbXBsYCBwcm90b3R5cGUsIHNvIHRyYWNpbmcgcHJvZ3JhbXMgY2FuIGJlIGF0dGFjaGVkIHByb3Blcmx5LiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBwYXRjaC4KCkkgc2hvdWxkIHByb2JhYmx5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlnIG9wdGlvbnMuIEkmIzM5O20gdGhpbmtpbmcgdGhlIHVzdWFsIHN1c3BlY3RzOiBgQ09ORklHX0JQRmAsIGBDT05GSUdfQlBGX1NZU0NBTExgLCBhbmQgYENPTkZJR19ERUJVR19JTkZPX0JURmAuIEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgdGhpcyBwYXRjaCBtaWdodCByZXF1aXJlLiBJJiMzOTtsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRob3NlIGZpbGVzIGFnYWluLCBwYXJ0aWN1bGFybHkgZm9jdXNpbmcgb24gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2J0Zi5jYCBmb3IgYW55IGNsdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDIxOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tGX0lNUExJQ0lUX0FSR1MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdD0zODM9dGhvc2Uga2Z1bmNzIGlmIGFuZCB3aGVuIHN1Y2ggZGlzY3Vzc2lvbnMgb2NjdXIuXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4NC1cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6Mzg1OjIuNS45IEtGX0lNUExJQ0lUX0FSR1MgZmxhZ1xuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdC0zODYtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4Ny1cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6Mzg4OlRoZSBLRl9JTVBMSUNJVF9BUkdTIGZsYWcgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBCUEYgc2lnbmF0dXJlXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4OS1vZiB0aGUga2Z1bmMgaXMgZGlmZmVyZW50IGZyb20gaXQmIzM5O3Mga2VybmVsIHNpZ25hdHVyZSwgYW5kIHRoZSB2YWx1ZXNcbi0tXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0PTM5Mz1DdXJyZW50bHkgb25seSBgYHN0cnVjdCBicGZfcHJvZ19hdXggKmBgIHR5cGUgaXMgc3VwcG9ydGVkLlxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdC0zOTQtXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0OjM5NTpBIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBmbGFnIHRoZXJlZm9yZSBoYXMgdHdvIHR5cGVzIGluIEJURjogb25lXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM5Ni1mdW5jdGlvbiBtYXRjaGluZyB0aGUga2VybmVsIGRlY2xhcmF0aW9uICh3aXRoIF9pbXBsIHN1ZmZpeCBpbiB0aGVcbi0tXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY2hhbmdlcy5yc3Q9MTQ4PW1vZHVsZXMgYXMgd2VsbC4gIFRoaXMgcmVxdWlyZXMgcGFob2xlIHYxLjIyIG9yIGxhdGVyLlxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NoYW5nZXMucnN0LTE0OS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jaGFuZ2VzLnJzdDoxNTA6U2luY2UgTGludXggNy4wLCBrZnVuY3MgYW5ub3RhdGVkIHdpdGggS0ZfSU1QTElDSVRfQVJHUyByZXF1aXJlIHBhaG9sZSB2MS4yNlxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NoYW5nZXMucnN0LTE1MS1vciBsYXRlci4gIFdpdGhvdXQgaXQsIHN1Y2gga2Z1bmNzIHdpbGwgaGF2ZSBpbmNvcnJlY3QgQlRGIHByb3RvdHlwZXMgaW5cbi0tXG5pbmNsdWRlL2xpbnV4L2J0Zi5oLTgwLSNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFx1MDAzY1x1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjgxOiNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSBcdTAwM2NcdTAwM2MgMTYpIC8qIGtmdW5jIGhhcyBpbXBsaWNpdCBhcmd1bWVudHMgc3VwcGxpZWQgYnkgdGhlIHZlcmlmaWVyICovXG5pbmNsdWRlL2xpbnV4L2J0Zi5oLTgyLVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4MDQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGNyYXNoX2tleGVjLCBLRl9ERVNUUlVDVElWRSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MDUtI2VuZGlmXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODA2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfb2JqX25ldywgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MDctQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3X2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDg6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX25ldywgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MDktQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX25ld19pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODEwOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxMS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODEyOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9kcm9wLCBLRl9SRUxFQVNFIHwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTMtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCwgS0ZfUkVMRUFTRSlcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxNS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTctQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnRfaW1wbClcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTg6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfYmFjaywgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTktQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfYmFja19pbXBsKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgyMDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgyMS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcG9wX2Zyb250LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgzMT1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yZW1vdmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MzI6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgzMy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGRfaW1wbClcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00OTE0PUJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3FfaW5pdClcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5MTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl93cV9zZXRfY2FsbGJhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTE2LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3Ffc3RhcnQpXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDk2Mj1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTYzLSNlbmRpZlxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2NDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2NTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5NjY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2NzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTY4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX2Zyb21fZmlsZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjYxMz1zdGF0aWMgaW50IGZldGNoX2tmdW5jX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1MS1cdC8qXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjY1MjpcdCAqIEFuIGFjdHVhbCBwcm90b3R5cGUgb2YgYSBrZnVuYyB3aXRoIEtGX0lNUExJQ0lUX0FSR1MgZmxhZ1xua2VybmVsL2JwZi92ZXJpZmllci5jLTI2NTMtXHQgKiBjYW4gYmUgZm91bmQgdGhyb3VnaCB0aGUgY291bnRlcnBhcnQgX2ltcGwga2Z1bmMuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1NC1cdCAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjI2NTU6XHRpZiAoa2Z1bmNfZmxhZ3MgXHUwMDI2XHUwMDI2ICgqa2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTI2NTYtXHRcdGZ1bmNfcHJvdG8gPSBmaW5kX2tmdW5jX2ltcGxfcHJvdG8oXHUwMDI2ZW52LVx1MDAzZWxvZywgYnRmLCBmdW5jX25hbWUpO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDkwND1zdGF0aWMgYm9vbCBpc19rZnVuY19hcmdfcHJvZ19hdXgoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3BhcmFtICphcmcpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTA5LS8qXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5MTA6ICogQSBrZnVuYyB3aXRoIEtGX0lNUExJQ0lUX0FSR1MgaGFzIHR3byBwcm90b3R5cGVzIGluIEJURjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkxMS0gKiAgIC0gdGhlIF9pbXBsIHByb3RvdHlwZSB3aXRoIGZ1bGwgYXJnIGxpc3QgKG1ldGEtXHUwMDNlZnVuY19wcm90bylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA5MTY9c3RhdGljIGJvb2wgaXNfa2Z1bmNfYXJnX2ltcGxpY2l0KGNvbnN0IHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSwgdTMyIGFyZ19pZHgpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTIwLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTIxOlx0aWYgKCEobWV0YS1cdTAwM2VrZnVuY19mbGFncyBcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MjItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4Mjc9c3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODg3Ny0gKiBSZXNvbHZlIHRoZSBwcm90b3R5cGUgZGVzY3JpYmluZyBhIHRyYWNlIHRhcmdldCYjMzk7cyByZWFsIEFCSS4gQVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4ODc4OiAqIEtGX0lNUExJQ0lUX0FSR1Mga2Z1bmMgaGFzIGl0cyBpbmplY3RlZCBhcmdzIHN0cmlwcGVkIGZyb20gdGhlIHB1YmxpY1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODc5LSAqIHByb3RvdHlwZSwgc28gdXNlIHRoZSBfaW1wbCBwcm90b3R5cGU7IG90aGVyIHRhcmdldHMgdXNlIHRoZWlyIG93bi5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4ODI9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODkyLVx0a2Z1bmNfZmxhZ3MgPSBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MoYnRmLCBmdW5jX2lkKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODg5MzpcdGlmIChrZnVuY19mbGFncyBcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODk0LVx0XHRuYW1lID0gYnRmX25hbWVfYnlfb2Zmc2V0KGJ0ZiwgZnVuYy1cdTAwM2VuYW1lX29mZik7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYz02ODM9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2luaXQpXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjY4NDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRfb3ZlcnJpZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TTEVFUEFCTEUpXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTY4NS1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2luaXQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYz02OTM9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2NpZClcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Njk0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF90b19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjY5NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfdG9fY2lkLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzo2OTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY2lkX3RvcG8sIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTY5Ny1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NpZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTg3Mzg9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2VucXVldWVfZGlzcGF0Y2gpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3Mzk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX2luc2VydCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODc0MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfaW5zZXJ0X19fdjIsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3NDE6QlRGX0lEX0ZMQUdTKGZ1bmMsIF9fc2N4X2JwZl9kc3FfaW5zZXJ0X3Z0aW1lLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NzQyLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9pbnNlcnRfdnRpbWUsIEtGX1JDVSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTkxMDM9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2Rpc3BhdGNoKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTA0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2Rpc3BhdGNoX25yX3Nsb3RzLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTA1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2Rpc3BhdGNoX2NhbmNlbCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV90b19sb2NhbCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV90b19sb2NhbF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTA4LS8qIHNjeF9icGZfZHNxX21vdmUqKCkgYWxzbyBpbiBzY3hfa2Z1bmNfaWRzX3VubG9ja2VkOiBjYWxsYWJsZSBmcm9tIHVubG9ja2VkIGNvbnRleHRzICovXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MTEyPUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9tb3ZlX3Z0aW1lLCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkxMTMtI2lmZGVmIENPTkZJR19FWFRfU1VCX1NDSEVEXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkxMTQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc3ViX2Rpc3BhdGNoLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTE1LSNlbmRpZlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTE1Mj1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfY3B1X3JlbGVhc2UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkxNTM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcmVlbnF1ZXVlX2xvY2FsLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTU0LUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfY3B1X3JlbGVhc2UpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MjIxPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTIyMjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcmVhdGVfZHNxLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU0xFRVBBQkxFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MjIzLS8qIGFsc28gaW4gc2N4X2tmdW5jX2lkc19kaXNwYXRjaDogYWxzbyBjYWxsYWJsZSBmcm9tIG9wcy5kaXNwYXRjaCgpICovXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MjI3PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9tb3ZlX3Z0aW1lLCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkyMjgtLyogYWxzbyBpbiBzY3hfa2Z1bmNfaWRzX3NlbGVjdF9jcHU6IGFsc28gY2FsbGFibGUgZnJvbSBvcHMuc2VsZWN0X2NwdSgpL29wcy5lbnF1ZXVlKCkgKi9cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTIyOTpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MjMwLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkyMzE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc2VsZWN0X2NwdV9kZmwsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkyMzItQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMzgyPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19hbnkpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzgzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfc2V0X3NsaWNlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGFza19zZXRfZHNxX3Z0aW1lLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKTtcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfa2lja19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2tpY2tfY2lkLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM4NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbnJfcXVldWVkLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM4ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kZXN0cm95X2RzcSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX3BlZWssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1VfUFJPVEVDVEVEIHwgS0ZfUkVUX05VTEwpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzkwOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9yZWVucSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcmVlbnF1ZXVlX2xvY2FsX19fdjIsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzkyOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX25ldywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0lURVJfTkVXIHwgS0ZfUkNVX1BST1RFQ1RFRClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTAzOTMtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX3NjeF9kc3FfbmV4dCwgS0ZfSVRFUl9ORVhUIHwgS0ZfUkVUX05VTEwpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwMzk0PUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX2Rlc3Ryb3ksIEtGX0lURVJfREVTVFJPWSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXhpdF9ic3RyLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9lcnJvcl9ic3RyLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kdW1wX2JzdHIsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzk4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5OTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX2N1ciwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MDA6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9zZXQsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDAxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZHBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQwMjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRwZXJmX2N1ciwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MDM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY2lkcGVyZl9zZXQsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDA0LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX25yX25vZGVfaWRzKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0MTQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGFza19jaWQsIEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3JxLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQxNjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9sb2NrZWRfcnEsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SRVRfTlVMTClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X2N1cnIsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVV9QUk9URUNURUQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDE4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF9jdXJyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1VfUFJPVEVDVEVEKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQxOS1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90aWRfdG9fdGFzaywgS0ZfUkVUX05VTEwgfCBLRl9SQ1VfUFJPVEVDVEVEKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0MjE9QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXZlbnRzKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQyMi0jaWZkZWYgQ09ORklHX0NHUk9VUF9TQ0hFRFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQyMzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX2Nncm91cCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDI0LSNlbmRpZlxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0NDc9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2NwdV9vbmx5KVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ0ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NwdSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0NDktQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGFza19jcHUsIEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTA6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3JxLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfY3VyciwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDUzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1NDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX2N1ciwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9zZXQsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDU2LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9wb3NzaWJsZV9jcHVtYXNrLCBLRl9BQ1FVSVJFKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0NTg9QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcHV0X2NwdW1hc2ssIEtGX1JFTEVBU0UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDU5OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfZGZsLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2MDpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQ2MS1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2MjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9jcHVtYXNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfY3B1bWFza19ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX3NtdG1hc2tfbm9kZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDY2LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9pZGxlX2NwdW1hc2ssIEtGX1JFTEVBU0UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY3OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rlc3RfYW5kX2NsZWFyX2NwdV9pZGxlLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1LCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2OTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDcwOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfYW55X2NwdSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NzE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19hbnlfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDcyLUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfY3B1X29ubHkpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM9MTQ2ND1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfaWRsZSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NjU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDY2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX2NwdW1hc2tfbm9kZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDY3OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX2NwdW1hc2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9zbXRtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2OTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9zbXRtYXNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTE0NzAtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcHV0X2lkbGVfY3B1bWFzaywgS0ZfUkVMRUFTRSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGVzdF9hbmRfY2xlYXJfY3B1X2lkbGUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDcyOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfaWRsZV9jcHVfbm9kZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19pZGxlX2NwdSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19hbnlfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDc1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfYW55X2NwdSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTE0NzYtQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc19pZGxlKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTE0OTU9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX3NlbGVjdF9jcHUpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDk2OkJURl9JRF9GTEFHUyhmdW5jLCBfX3NjeF9icGZfc2VsZWN0X2NwdV9hbmQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDk3LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDk4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfZGZsLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTQ5OS1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX3NlbGVjdF9jcHUpXG4tLVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYz0xMjI9c3RydWN0IG9iamVjdCB7XG4tLVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xNTQtXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jOjE1NTojZGVmaW5lIEtGX0lNUExJQ0lUX0FSR1MgKDEgXHUwMDNjXHUwMDNjIDE2KVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xNTYtI2RlZmluZSBLRl9JTVBMX1NVRkZJWCBcJiMzNDtfaW1wbFwmIzM0O1xuLS1cbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM9MTA2ND1zdGF0aWMgYm9vbCBpc19rZl9pbXBsaWNpdF9hcmcoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnRmX3BhcmFtICpwKVxuLS1cbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTA5Mi0vKlxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYzoxMDkzOiAqIEZvciBhIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyB3ZSBkbyB0aGUgZm9sbG93aW5nOlxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMDk0LSAqICAgMS4gQWRkIGEgbmV3IGZ1bmN0aW9uIHdpdGggX2ltcGwgc3VmZml4IGluIHRoZSBuYW1lLCB3aXRoIHRoZSBwcm90b3R5cGVcbi0tXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTExMDYtICpcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM6MTEwNzogKiBJZiBhIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBhbHJlYWR5IGhhcyBhbiBfaW1wbCBjb3VudGVycGFydFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMTA4LSAqIGluIEJURiwgdGhlbiBpdCYjMzk7cyBhIGxlZ2FjeSBjYXNlOiBhbiBfaW1wbCBmdW5jdGlvbiBpcyBkZWNsYXJlZCBpbiB0aGVcbi0tXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jPTEyMTQ9c3RhdGljIGludCBidGYyYnRmKHN0cnVjdCBvYmplY3QgKm9iailcbi0tXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEyMjUtXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jOjEyMjY6XHRcdGlmICghKGtmdW5jLVx1MDAzZWZsYWdzIFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTIyNy1cdFx0XHRjb250aW51ZTtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jPTE0MDQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19tdWx0aV9zdF9vcHNfdGVzdF8xKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYzoxNDA1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfbXVsdGlfc3Rfb3BzX3Rlc3RfMV9hc3NvYywgS0ZfSU1QTElDSVRfQVJHUylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZywgS0ZfSU1QTElDSVRfQVJHUylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ19sZWdhY3ksIEtGX0lNUExJQ0lUX0FSR1MpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jLTE0MDgtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19pbXBsaWNpdF9hcmdfbGVnYWN5X2ltcGwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMjE6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3NDQKCQkJCQkJCW91dHB1dDogMTkzCgkJCQkJCQl0aG91Z2h0czogODcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoIGZvciBmZW50cnkvZmV4aXQgVHJhY2luZyBvZiBrZnVuY3Mgd2l0aCBJbXBsaWNpdCBBcmd1bWVudHMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhYm91dCBlbmFibGluZyBgZmVudHJ5L2ZleGl0YCB0cmFjaW5nIGZvciBrZnVuY3MgdGhhdCB1dGlsaXplIGBLRl9JTVBMSUNJVF9BUkdTYC4gVGhlIGNvcmUgb2YgdGhpcyBpcyBhIGNoYW5nZSB0byB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgdGVzdCBjYXNlLCBga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNgLCBpcyB1c2luZyBgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ2AsIHdoaWNoIHRlbGxzIG1lIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBpcyB0aGUgY3JpdGljYWwgYXJlYSBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHByb3RvdHlwZSBvZiB0aGVzZSBrZnVuY3MgaXMgcmVzb2x2ZWQgd2hlbiBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcy4KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gQ2xlYXJseSwgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZXNzZW50aWFsLCBhbmQgYENPTkZJR19ERUJVR19JTkZPX0JURmAgaXMgbmVlZGVkIGZvciBCVEYgc3VwcG9ydC4gU2luY2UgdGhpcyBpbnZvbHZlcyB0cmFjaW5nLCBzcGVjaWZpY2FsbHkgYGZlbnRyeS9mZXhpdGAsIGBDT05GSUdfQlBGX0pJVGAgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IHRvbyDigJMgaXQgd2lsbCBtb3N0IGxpa2VseSBiZSBuZWVkZWQgZm9yIHRoZSB0cmFtcG9saW5lIGltcGxlbWVudGF0aW9uLiBJdCYjMzk7cyBwb3NzaWJsZSB3ZSBtaWdodCBhbHNvIG5lZWQgYENPTkZJR19GVFJBQ0VgIG9yIGBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgIGJ1dCB0aGF0IGNhbiBiZSBhZGRlZCBsYXRlci4KClRoZSBrZXkgaGVyZSBpcyB0aGUgQlBGIHZlcmlmaWVyIGl0c2VsZiwgYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIEJURi4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgY29kZSBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgYGtlcm5lbC9icGYvYnRmLmNgLiBJIGRvbiYjMzk7dCBuZWVkIHRvIHNwZWNpZnkgYEJQRl9URVNUTU9EYCBzaW5jZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIHdoYXQgbWF0dGVycyBoZXJlLCBJJiMzOTttIG1vcmUgaW50ZXJlc3RlZCBpbiB0aGUgYmVoYXZpb3VyIG9mIHRoZSBjb3JlIHZlcmlmaWVyLgoKSSBzaG91bGQgaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2ggdG8gYWlkIGZ1enppbmcuIFRoZSBvbmVzIHRoYXQgc3RpY2sgb3V0IGFyZToKCiogICBgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzYAoqICAgYGJ0Zl9hdHRhY2hfZnVuY19wcm90b2AKKiAgIGBmaW5kX2tmdW5jX2ltcGxfcHJvdG9gCiogICBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgCiogICBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBjb2RlOiBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCBpcyBkZWZpbml0ZWx5IHN0YXRpYyB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuCgpUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBjbGVhcjogVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgcmVzb2x2ZSBrZnVuYyBwcm90b3R5cGVzIHdpdGggYEtGX0lNUExJQ0lUX0FSR1NgIGZvciB0cmFjaW5nIHByb2dyYW1zLiBUaGUgZnV6emluZyBlZmZvcnRzIHNob3VsZCBjb25jZW50cmF0ZSBvbiB0aGUgQlBGIHByb2dyYW0gYXR0YWNobWVudCBwcm9jZXNzLCBwYXJ0aWN1bGFybHkgaG93IEJURiB0eXBlcyBhcmUgbWF0Y2hlZCBhbmQgdmVyaWZpZWQuCgpGb3IgbXkgY29uZmlndXJhdGlvbiwgSSYjMzk7bGwgbmVlZCBgQlBGX1NZU0NBTExgLCBgREVCVUdfSU5GT19CVEZgLCBhbmQgYEJQRl9KSVRgLiBUaG9zZSBzaG91bGQgYmUgc3VmZmljaWVudCBmb3Igbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDIxOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtERUJVR19JTkZPX0JURiYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzJiMzNDssCiAgICAmIzM0O2J0Zl9hdHRhY2hfZnVuY19wcm90byYjMzQ7LAogICAgJiMzNDtmaW5kX2tmdW5jX2ltcGxfcHJvdG8mIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF90YXJnZXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgcmVzb2x2ZSB0aGUgcHJvdG90eXBlIG9mIGtmdW5jcyB3aXRoIEtGX0lNUExJQ0lUX0FSR1Mgd2hlbiBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcyAobGlrZSBmZW50cnkvZmV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgaG93IEJURiB0eXBlcyBhcmUgbWF0Y2hlZCBhbmQgdmVyaWZpZWQgZHVyaW5nIHByb2dyYW0gYXR0YWNobWVudC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gQlBGIHByb2dyYW0gYXR0YWNobWVudCBhbmQgQlRGIHZlcmlmaWNhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2J0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyYjMzQ7LAogICAgJiMzNDtidGZfYXR0YWNoX2Z1bmNfcHJvdG8mIzM0OywKICAgICYjMzQ7ZmluZF9rZnVuY19pbXBsX3Byb3RvJiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfdGFyZ2V0JiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBrZnVuY3Mgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIHdoZW4gYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMgKGxpa2UgZmVudHJ5L2ZleGl0KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIGhvdyBCVEYgdHlwZXMgYXJlIG1hdGNoZWQgYW5kIHZlcmlmaWVkIGR1cmluZyBwcm9ncmFtIGF0dGFjaG1lbnQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgYW5kIEJURiB2ZXJpZmljYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQyMToxNDoyMC44MTQyMDI4ODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDMyNDk1NDc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIixcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NcIixcbiAgICBcImJ0Zl9hdHRhY2hfZnVuY19wcm90b1wiLFxuICAgIFwiZmluZF9rZnVuY19pbXBsX3Byb3RvXCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2Yga2Z1bmNzIHdpdGggS0ZfSU1QTElDSVRfQVJHUyB3aGVuIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zIChsaWtlIGZlbnRyeS9mZXhpdCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBob3cgQlRGIHR5cGVzIGFyZSBtYXRjaGVkIGFuZCB2ZXJpZmllZCBkdXJpbmcgcHJvZ3JhbSBhdHRhY2htZW50LiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBCUEYgcHJvZ3JhbSBhdHRhY2htZW50IGFuZCBCVEYgdmVyaWZpY2F0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQyMToxNDoyMC44MTQyMDgwMDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTY3NjM0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDczZDAyZWM2YTFiNDg1MjU3ZjU5ZTY2M2M1ZmFhM2UzZDA0N2FhZjZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTAgMjE6MTQ6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idGYuaCBiL2luY2x1ZGUvbGludXgvYnRmLmhcXG5pbmRleCAyNDA0MDFkOWIyNWI5ZS4uYzUyMjQ1YWUwZGY1ZDcgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYnRmLmhcXG5AQCAtNTc4LDYgKzU3OCw3IEBAIGNvbnN0IGNoYXIgKmJ0Zl9zdHJfYnlfb2Zmc2V0KGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIG9mZnNldCk7XFxuIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZV92bWxpbnV4KHZvaWQpO1xcbiBzdHJ1Y3QgYnRmICpicGZfcHJvZ19nZXRfdGFyZ2V0X2J0Zihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xcbiB1MzIgKmJ0Zl9rZnVuY19mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuK3UzMiBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkKTtcXG4gYm9vbCBidGZfa2Z1bmNfaXNfYWxsb3dlZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuIHUzMiAqYnRmX2tmdW5jX2lzX21vZGlmeV9yZXR1cm4oY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLFxcbiBcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2J0Zi5jIGIva2VybmVsL2JwZi9idGYuY1xcbmluZGV4IDY0NTcyZjg1ZWRjODMyLi4yMGFlY2E2YjRmOTVjOSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL2J0Zi5jXFxuKysrIGIva2VybmVsL2JwZi9idGYuY1xcbkBAIC05MTE0LDYgKzkxMTQsMjYgQEAgdTMyICpidGZfa2Z1bmNfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3BcXG4gXFx0cmV0dXJuIGJ0Zl9rZnVuY19pZF9zZXRfY29udGFpbnMoYnRmLCBob29rLCBrZnVuY19idGZfaWQpO1xcbiB9XFxuIFxcbisvKlxcbisgKiBSZXR1cm4gdGhlIHVuaW9uIG9mIGEga2Z1bmMncyBmbGFncyBhY3Jvc3MgYWxsIGhvb2tzLlxcbisgKiBVbmxpa2UgYnRmX2tmdW5jX2ZsYWdzKCksIG5vdCByZXN0cmljdGVkIHRvIGEgY2FsbGluZ1xcbisgKiBwcm9ncmFtJ3MgaG9vay4gVXNlZCB3aGVuIGF0dGFjaGluZyB0byBhIGtmdW5jIGZvciB0cmFjaW5nLlxcbisgKi9cXG4rdTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpXFxuK3tcXG4rXFx0ZW51bSBidGZfa2Z1bmNfaG9vayBob29rO1xcbitcXHR1MzIgKmhvb2tfZmxhZ3M7XFxuK1xcdHUzMiBmbGFncyA9IDA7XFxuK1xcbitcXHRmb3IgKGhvb2sgPSAwOyBob29rIFxcdTAwM2MgQlRGX0tGVU5DX0hPT0tfTUFYOyBob29rKyspIHtcXG4rXFx0XFx0aG9va19mbGFncyA9IGJ0Zl9rZnVuY19pZF9zZXRfY29udGFpbnMoYnRmLCBob29rLCBrZnVuY19idGZfaWQpO1xcbitcXHRcXHRpZiAoaG9va19mbGFncylcXG4rXFx0XFx0XFx0ZmxhZ3MgfD0gKmhvb2tfZmxhZ3M7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBmbGFncztcXG4rfVxcbitcXG4gdTMyICpidGZfa2Z1bmNfaXNfbW9kaWZ5X3JldHVybihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsXFxuIFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4ge1xcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5pbmRleCA2NTE1ZDRkM2MwMDMyZi4uZmRlMTFhMmY2ODY5YTYgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTI1ODQsMjQgKzI1ODQsMjQgQEAgc3RhdGljIHN0cnVjdCBidGYgKmZpbmRfa2Z1bmNfZGVzY19idGYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgczE2IG9mZnNldClcXG4gXFxuICNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggXFxcIl9pbXBsXFxcIlxcbiBcXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqZmluZF9rZnVuY19pbXBsX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnRmICpidGYsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBjaGFyICpmdW5jX25hbWUpXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKlxcbitmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBjaGFyICpmdW5jX25hbWUpXFxuIHtcXG4tXFx0Y2hhciAqYnVmID0gZW52LVxcdTAwM2V0bXBfc3RyX2J1ZjtcXG4gXFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jO1xcbitcXHRjaGFyIGJ1ZltLU1lNX05BTUVfTEVOXTtcXG4gXFx0czMyIGltcGxfaWQ7XFxuIFxcdGludCBsZW47XFxuIFxcbi1cXHRsZW4gPSBzbnByaW50ZihidWYsIFRNUF9TVFJfQlVGX0xFTiwgXFxcIiVzJXNcXFwiLCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcXG4tXFx0aWYgKGxlbiBcXHUwMDNjIDAgfHwgbGVuIFxcdTAwM2U9IFRNUF9TVFJfQlVGX0xFTikge1xcbi1cXHRcXHR2ZXJib3NlKGVudiwgXFxcImZ1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xcXFxuXFxcIiwgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XFxuK1xcdGxlbiA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFxcXCIlcyVzXFxcIiwgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XFxuK1xcdGlmIChsZW4gXFx1MDAzYyAwIHx8IGxlbiBcXHUwMDNlPSBzaXplb2YoYnVmKSkge1xcbitcXHRcXHRicGZfbG9nKGxvZywgXFxcImZ1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0ZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbiBcXHRpbXBsX2lkID0gYnRmX2ZpbmRfYnlfbmFtZV9raW5kKGJ0ZiwgYnVmLCBCVEZfS0lORF9GVU5DKTtcXG4gXFx0aWYgKGltcGxfaWQgXFx1MDAzYz0gMCkge1xcbi1cXHRcXHR2ZXJib3NlKGVudiwgXFxcImNhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxcXFxuXFxcIiwgYnVmKTtcXG4rXFx0XFx0YnBmX2xvZyhsb2csIFxcXCJjYW5ub3QgZmluZCBmdW5jdGlvbiAlcyBpbiBCVEZcXFxcblxcXCIsIGJ1Zik7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbkBAIC0yNjUzLDcgKzI2NTMsNyBAQCBzdGF0aWMgaW50IGZldGNoX2tmdW5jX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0ICogY2FuIGJlIGZvdW5kIHRocm91Z2ggdGhlIGNvdW50ZXJwYXJ0IF9pbXBsIGtmdW5jLlxcbiBcXHQgKi9cXG4gXFx0aWYgKGtmdW5jX2ZsYWdzIFxcdTAwMjZcXHUwMDI2ICgqa2Z1bmNfZmxhZ3MgXFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcXG4tXFx0XFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhlbnYsIGJ0ZiwgZnVuY19uYW1lKTtcXG4rXFx0XFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIGJ0ZiwgZnVuY19uYW1lKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRmdW5jX3Byb3RvID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLVxcdTAwM2V0eXBlKTtcXG4gXFxuQEAgLTE4ODczLDYgKzE4ODczLDMxIEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiXFxuIFxcdHJldHVybiAtRUlOVkFMO1xcbiB9XFxuIFxcbisvKlxcbisgKiBSZXNvbHZlIHRoZSBwcm90b3R5cGUgZGVzY3JpYmluZyBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJLiBBXFxuKyAqIEtGX0lNUExJQ0lUX0FSR1Mga2Z1bmMgaGFzIGl0cyBpbmplY3RlZCBhcmdzIHN0cmlwcGVkIGZyb20gdGhlIHB1YmxpY1xcbisgKiBwcm90b3R5cGUsIHNvIHVzZSB0aGUgX2ltcGwgcHJvdG90eXBlOyBvdGhlciB0YXJnZXRzIHVzZSB0aGVpciBvd24uXFxuKyAqL1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpcXG4rYnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXFxuK3tcXG4rXFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jO1xcbitcXHRjb25zdCBjaGFyICpuYW1lO1xcbitcXHR1MzIga2Z1bmNfZmxhZ3M7XFxuK1xcbitcXHRmdW5jID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jX2lkKTtcXG4rXFx0aWYgKCFmdW5jIHx8ICFidGZfdHlwZV9pc19mdW5jKGZ1bmMpKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuK1xcdGtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7XFxuK1xcdGlmIChrZnVuY19mbGFncyBcXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcXG4rXFx0XFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXFx1MDAzZW5hbWVfb2ZmKTtcXG4rXFx0XFx0cmV0dXJuIGZpbmRfa2Z1bmNfaW1wbF9wcm90byhsb2csIGJ0ZiwgbmFtZSk7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXFx1MDAzZXR5cGUpO1xcbit9XFxuK1xcbiBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4gXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4gXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXFxuQEAgLTE5MTIxLDggKzE5MTQ2LDggQEAgaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuIFxcdFxcdGlmIChwcm9nX2V4dGVuc2lvbiBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgYnRmX2NoZWNrX3R5cGVfbWF0Y2gobG9nLCBwcm9nLCBidGYsIHQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFx0XFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgdC1cXHUwMDNldHlwZSk7XFxuLVxcdFxcdGlmICghYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcXG4rXFx0XFx0dCA9IGJ0Zl9hdHRhY2hfZnVuY19wcm90byhsb2csIGJ0ZiwgYnRmX2lkKTtcXG4rXFx0XFx0aWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuIFxcdFxcdGlmICgocHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VzYXZlZF9kc3RfcHJvZ190eXBlIHx8IHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlc2F2ZWRfZHN0X2F0dGFjaF90eXBlKSBcXHUwMDI2XFx1MDAyNlxcbkBAIC0xOTQwNyw4ICsxOTQzMiw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRpZiAoIWJ0Zl90eXBlX2lzX2Z1bmModCkpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB0LVxcdTAwM2V0eXBlKTtcXG4tXFx0aWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxcbitcXHR0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgYnRmX2lkKTtcXG4rXFx0aWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0ZXJyID0gYnRmX2Rpc3RpbGxfZnVuY19wcm90byhOVUxMLCBidGYsIHQsIHRuYW1lLCBcXHUwMDI2dGd0X2luZm8tXFx1MDAzZWZtb2RlbCk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjFjYzVhYWJhMDI1NGRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcXG5AQCAtMCwwICsxLDM2IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2N0ZXN0X3Byb2dzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcXCJrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuc2tlbC5oXFxcIlxcbitcXG4rdm9pZCB0ZXN0X2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZyh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7XFxuK1xcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyk7XFxuK1xcdGludCBlcnIsIGZkO1xcbitcXG4rXFx0c2tlbCA9IGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fb3Blbl9hbmRfbG9hZCgpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXFxcIm9wZW5fYW5kX2xvYWRcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0ZXJyID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19hdHRhY2goc2tlbCk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImF0dGFjaFxcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcbitcXHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy50cmlnZ2VyX2ltcGxpY2l0X2FyZyk7XFxuK1xcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFxcdTAwMjZ0b3B0cyk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcInRlc3RfcnVuXFxcIikpXFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFxuK1xcdEFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIDUsIFxcXCJrZnVuY19yZXR2YWxcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmVudHJ5X2FyZ19jbnQsIDIsIFxcXCJmZW50cnlfYXJnX2NudFxcXCIpO1xcbitcXHRBU1NFUlRfTkVRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmVudHJ5X2F1eF9hcmcsIDAsIFxcXCJmZW50cnlfYXV4X2FyZ1xcXCIpO1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VmZW50cnlfcmVzdWx0LCAxLCBcXFwiZmVudHJ5X3Jlc3VsdFxcXCIpO1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VmZXhpdF9hcmdfY250LCAyLCBcXFwiZmV4aXRfYXJnX2NudFxcXCIpO1xcbitcXHRBU1NFUlRfTkVRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmV4aXRfYXV4X2FyZywgMCwgXFxcImZleGl0X2F1eF9hcmdcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmV4aXRfcmVzdWx0LCAxLCBcXFwiZmV4aXRfcmVzdWx0XFxcIik7XFxuK1xcbitjbGVhbnVwOlxcbitcXHRrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOTk1ZjhiOGI1YjllOGZcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXFxuQEAgLTAsMCArMSw3NyBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjdm1saW51eC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2Vycm5vLmhcXHUwMDNlXFxuK1xcbitleHRlcm4gaW50IGJwZl9rZnVuY19pbXBsaWNpdF9hcmcoaW50IGEpIF9fd2VhayBfX2tzeW07XFxuK1xcbitjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG4rXFxuKy8qIFNoYXJlZCBhcmcgY2hlY2tzOyByZXBvcnRzIGFyZyBjb3VudCBhbmQgYXV4LCByZXR1cm5zIDEgb24gc3VjY2Vzcy4gKi9cXG4rc3RhdGljIF9fYWx3YXlzX2lubGluZSBfX3U2NFxcbitjaGVja19pbXBsaWNpdF9hcmdzKHZvaWQgKmN0eCwgX191NjQgKmFyZ19jbnQsIF9fdTY0ICphdXhfYXJnKVxcbit7XFxuK1xcdF9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDtcXG4rXFx0X191NjQgcmVzdWx0O1xcbitcXHRfX3M2NCBlcnI7XFxuK1xcbitcXHQqYXJnX2NudCA9IGJwZl9nZXRfZnVuY19hcmdfY250KGN0eCk7XFxuK1xcdHJlc3VsdCA9ICphcmdfY250ID09IDI7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMCwgXFx1MDAyNmEpO1xcbitcXHRyZXN1bHQgXFx1MDAyNj0gZXJyID09IDAgXFx1MDAyNlxcdTAwMjYgKGludClhID09IDU7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMSwgXFx1MDAyNmF1eCk7XFxuK1xcdCphdXhfYXJnID0gYXV4O1xcbitcXHRyZXN1bHQgXFx1MDAyNj0gZXJyID09IDAgXFx1MDAyNlxcdTAwMjYgYXV4ICE9IDA7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMiwgXFx1MDAyNnopO1xcbitcXHRyZXN1bHQgXFx1MDAyNj0gZXJyID09IC1FSU5WQUw7XFxuK1xcbitcXHRyZXR1cm4gcmVzdWx0O1xcbit9XFxuK1xcbitfX3U2NCBmZW50cnlfcmVzdWx0O1xcbitfX3U2NCBmZW50cnlfYXJnX2NudDtcXG4rX191NjQgZmVudHJ5X2F1eF9hcmc7XFxuK1xcbitTRUMoXFxcImZlbnRyeS9icGZfa2Z1bmNfaW1wbGljaXRfYXJnXFxcIilcXG4raW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZW50cnkpXFxuK3tcXG4rXFx0X191NjQgcmV0ID0gMDtcXG4rXFx0X19zNjQgZXJyO1xcbitcXG4rXFx0ZmVudHJ5X3Jlc3VsdCA9IGNoZWNrX2ltcGxpY2l0X2FyZ3MoY3R4LCBcXHUwMDI2ZmVudHJ5X2FyZ19jbnQsIFxcdTAwMjZmZW50cnlfYXV4X2FyZyk7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXFx1MDAyNnJldCk7XFxuK1xcdGZlbnRyeV9yZXN1bHQgXFx1MDAyNj0gZXJyID09IC1FT1BOT1RTVVBQO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK19fdTY0IGZleGl0X3Jlc3VsdDtcXG4rX191NjQgZmV4aXRfYXJnX2NudDtcXG4rX191NjQgZmV4aXRfYXV4X2FyZztcXG4rXFxuK1NFQyhcXFwiZmV4aXQvYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ1xcXCIpXFxuK2ludCBCUEZfUFJPRyh0cmFjZV9pbXBsaWNpdF9hcmdfZmV4aXQpXFxuK3tcXG4rXFx0X191NjQgcmV0ID0gMDtcXG4rXFx0X19zNjQgZXJyO1xcbitcXG4rXFx0ZmV4aXRfcmVzdWx0ID0gY2hlY2tfaW1wbGljaXRfYXJncyhjdHgsIFxcdTAwMjZmZXhpdF9hcmdfY250LCBcXHUwMDI2ZmV4aXRfYXV4X2FyZyk7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXFx1MDAyNnJldCk7XFxuK1xcdGZleGl0X3Jlc3VsdCBcXHUwMDI2PSBlcnIgPT0gMCBcXHUwMDI2XFx1MDAyNiByZXQgPT0gNTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcInN5c2NhbGxcXFwiKVxcbitpbnQgdHJpZ2dlcl9pbXBsaWNpdF9hcmcodm9pZCAqY3R4KVxcbit7XFxuK1xcdHJldHVybiBicGZfa2Z1bmNfaW1wbGljaXRfYXJnKDUpO1xcbit9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDIxOjE0OjIxLjM5NjYzMzA5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk3NDI1MTQ1MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzXCIsXG4gICAgXCJidGZfYXR0YWNoX2Z1bmNfcHJvdG9cIixcbiAgICBcImZpbmRfa2Z1bmNfaW1wbF9wcm90b1wiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBjb3JyZWN0bHkgcmVzb2x2ZSB0aGUgcHJvdG90eXBlIG9mIGtmdW5jcyB3aXRoIEtGX0lNUExJQ0lUX0FSR1Mgd2hlbiBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcyAobGlrZSBmZW50cnkvZmV4aXQpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgaG93IEJURiB0eXBlcyBhcmUgbWF0Y2hlZCBhbmQgdmVyaWZpZWQgZHVyaW5nIHByb2dyYW0gYXR0YWNobWVudC4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gQlBGIHByb2dyYW0gYXR0YWNobWVudCBhbmQgQlRGIHZlcmlmaWNhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3M2QwMmVjNmExYjQ4NTI1N2Y1OWU2NjNjNWZhYTNlM2QwNDdhYWY2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMjE6MTQ6MTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxuaW5kZXggMjQwNDAxZDliMjViOWUuLmM1MjI0NWFlMGRmNWQ3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxuKysrIGIvaW5jbHVkZS9saW51eC9idGYuaFxuQEAgLTU3OCw2ICs1NzgsNyBAQCBjb25zdCBjaGFyICpidGZfc3RyX2J5X29mZnNldChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBvZmZzZXQpO1xuIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZV92bWxpbnV4KHZvaWQpO1xuIHN0cnVjdCBidGYgKmJwZl9wcm9nX2dldF90YXJnZXRfYnRmKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG4gdTMyICpidGZfa2Z1bmNfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuK3UzMiBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkKTtcbiBib29sIGJ0Zl9rZnVuY19pc19hbGxvd2VkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbiB1MzIgKmJ0Zl9rZnVuY19pc19tb2RpZnlfcmV0dXJuKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCxcbiBcdFx0XHRcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9idGYuYyBiL2tlcm5lbC9icGYvYnRmLmNcbmluZGV4IDY0NTcyZjg1ZWRjODMyLi4yMGFlY2E2YjRmOTVjOSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvYnRmLmNcbisrKyBiL2tlcm5lbC9icGYvYnRmLmNcbkBAIC05MTE0LDYgKzkxMTQsMjYgQEAgdTMyICpidGZfa2Z1bmNfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3BcbiBcdHJldHVybiBidGZfa2Z1bmNfaWRfc2V0X2NvbnRhaW5zKGJ0ZiwgaG9vaywga2Z1bmNfYnRmX2lkKTtcbiB9XG4gXG4rLypcbisgKiBSZXR1cm4gdGhlIHVuaW9uIG9mIGEga2Z1bmMncyBmbGFncyBhY3Jvc3MgYWxsIGhvb2tzLlxuKyAqIFVubGlrZSBidGZfa2Z1bmNfZmxhZ3MoKSwgbm90IHJlc3RyaWN0ZWQgdG8gYSBjYWxsaW5nXG4rICogcHJvZ3JhbSdzIGhvb2suIFVzZWQgd2hlbiBhdHRhY2hpbmcgdG8gYSBrZnVuYyBmb3IgdHJhY2luZy5cbisgKi9cbit1MzIgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZClcbit7XG4rXHRlbnVtIGJ0Zl9rZnVuY19ob29rIGhvb2s7XG4rXHR1MzIgKmhvb2tfZmxhZ3M7XG4rXHR1MzIgZmxhZ3MgPSAwO1xuK1xuK1x0Zm9yIChob29rID0gMDsgaG9vayBcdTAwM2MgQlRGX0tGVU5DX0hPT0tfTUFYOyBob29rKyspIHtcbitcdFx0aG9va19mbGFncyA9IGJ0Zl9rZnVuY19pZF9zZXRfY29udGFpbnMoYnRmLCBob29rLCBrZnVuY19idGZfaWQpO1xuK1x0XHRpZiAoaG9va19mbGFncylcbitcdFx0XHRmbGFncyB8PSAqaG9va19mbGFncztcbitcdH1cbitcbitcdHJldHVybiBmbGFncztcbit9XG4rXG4gdTMyICpidGZfa2Z1bmNfaXNfbW9kaWZ5X3JldHVybihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsXG4gXHRcdFx0XHRjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4ge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggNjUxNWQ0ZDNjMDAzMmYuLmZkZTExYTJmNjg2OWE2IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC0yNTg0LDI0ICsyNTg0LDI0IEBAIHN0YXRpYyBzdHJ1Y3QgYnRmICpmaW5kX2tmdW5jX2Rlc2NfYnRmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMxNiBvZmZzZXQpXG4gXG4gI2RlZmluZSBLRl9JTVBMX1NVRkZJWCBcIl9pbXBsXCJcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi1cdFx0XHRcdFx0XHQgICAgc3RydWN0IGJ0ZiAqYnRmLFxuLVx0XHRcdFx0XHRcdCAgICBjb25zdCBjaGFyICpmdW5jX25hbWUpXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXG4rZmluZF9rZnVuY19pbXBsX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgY29uc3QgY2hhciAqZnVuY19uYW1lKVxuIHtcbi1cdGNoYXIgKmJ1ZiA9IGVudi1cdTAwM2V0bXBfc3RyX2J1ZjtcbiBcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqZnVuYztcbitcdGNoYXIgYnVmW0tTWU1fTkFNRV9MRU5dO1xuIFx0czMyIGltcGxfaWQ7XG4gXHRpbnQgbGVuO1xuIFxuLVx0bGVuID0gc25wcmludGYoYnVmLCBUTVBfU1RSX0JVRl9MRU4sIFwiJXMlc1wiLCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcbi1cdGlmIChsZW4gXHUwMDNjIDAgfHwgbGVuIFx1MDAzZT0gVE1QX1NUUl9CVUZfTEVOKSB7XG4tXHRcdHZlcmJvc2UoZW52LCBcImZ1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xcblwiLCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcbitcdGxlbiA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFwiJXMlc1wiLCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcbitcdGlmIChsZW4gXHUwMDNjIDAgfHwgbGVuIFx1MDAzZT0gc2l6ZW9mKGJ1ZikpIHtcbitcdFx0YnBmX2xvZyhsb2csIFwiZnVuY3Rpb24gbmFtZSAlcyVzIGlzIHRvbyBsb25nXFxuXCIsXG4rXHRcdFx0ZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuIFx0aW1wbF9pZCA9IGJ0Zl9maW5kX2J5X25hbWVfa2luZChidGYsIGJ1ZiwgQlRGX0tJTkRfRlVOQyk7XG4gXHRpZiAoaW1wbF9pZCBcdTAwM2M9IDApIHtcbi1cdFx0dmVyYm9zZShlbnYsIFwiY2Fubm90IGZpbmQgZnVuY3Rpb24gJXMgaW4gQlRGXFxuXCIsIGJ1Zik7XG4rXHRcdGJwZl9sb2cobG9nLCBcImNhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxcblwiLCBidWYpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbkBAIC0yNjUzLDcgKzI2NTMsNyBAQCBzdGF0aWMgaW50IGZldGNoX2tmdW5jX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdCAqIGNhbiBiZSBmb3VuZCB0aHJvdWdoIHRoZSBjb3VudGVycGFydCBfaW1wbCBrZnVuYy5cbiBcdCAqL1xuIFx0aWYgKGtmdW5jX2ZsYWdzIFx1MDAyNlx1MDAyNiAoKmtmdW5jX2ZsYWdzIFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcbi1cdFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhlbnYsIGJ0ZiwgZnVuY19uYW1lKTtcbitcdFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhcdTAwMjZlbnYtXHUwMDNlbG9nLCBidGYsIGZ1bmNfbmFtZSk7XG4gXHRlbHNlXG4gXHRcdGZ1bmNfcHJvdG8gPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXHUwMDNldHlwZSk7XG4gXG5AQCAtMTg4NzMsNiArMTg4NzMsMzEgQEAgc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJcbiBcdHJldHVybiAtRUlOVkFMO1xuIH1cbiBcbisvKlxuKyAqIFJlc29sdmUgdGhlIHByb3RvdHlwZSBkZXNjcmliaW5nIGEgdHJhY2UgdGFyZ2V0J3MgcmVhbCBBQkkuIEFcbisgKiBLRl9JTVBMSUNJVF9BUkdTIGtmdW5jIGhhcyBpdHMgaW5qZWN0ZWQgYXJncyBzdHJpcHBlZCBmcm9tIHRoZSBwdWJsaWNcbisgKiBwcm90b3R5cGUsIHNvIHVzZSB0aGUgX2ltcGwgcHJvdG90eXBlOyBvdGhlciB0YXJnZXRzIHVzZSB0aGVpciBvd24uXG4rICovXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXG4rYnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4re1xuK1x0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jO1xuK1x0Y29uc3QgY2hhciAqbmFtZTtcbitcdHUzMiBrZnVuY19mbGFncztcbitcbitcdGZ1bmMgPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmNfaWQpO1xuK1x0aWYgKCFmdW5jIHx8ICFidGZfdHlwZV9pc19mdW5jKGZ1bmMpKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcbitcdGtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7XG4rXHRpZiAoa2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcbitcdFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXHUwMDNlbmFtZV9vZmYpO1xuK1x0XHRyZXR1cm4gZmluZF9rZnVuY19pbXBsX3Byb3RvKGxvZywgYnRmLCBuYW1lKTtcbitcdH1cbitcbitcdHJldHVybiBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXHUwMDNldHlwZSk7XG4rfVxuK1xuIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXG5AQCAtMTkxMjEsOCArMTkxNDYsOCBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbiBcdFx0aWYgKHByb2dfZXh0ZW5zaW9uIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYnRmX2NoZWNrX3R5cGVfbWF0Y2gobG9nLCBwcm9nLCBidGYsIHQpKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuLVx0XHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB0LVx1MDAzZXR5cGUpO1xuLVx0XHRpZiAoIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4rXHRcdHQgPSBidGZfYXR0YWNoX2Z1bmNfcHJvdG8obG9nLCBidGYsIGJ0Zl9pZCk7XG4rXHRcdGlmICghdCB8fCAhYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0aWYgKChwcm9nLVx1MDAzZWF1eC1cdTAwM2VzYXZlZF9kc3RfcHJvZ190eXBlIHx8IHByb2ctXHUwMDNlYXV4LVx1MDAzZXNhdmVkX2RzdF9hdHRhY2hfdHlwZSkgXHUwMDI2XHUwMDI2XG5AQCAtMTk0MDcsOCArMTk0MzIsOCBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdGlmICghYnRmX3R5cGVfaXNfZnVuYyh0KSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB0LVx1MDAzZXR5cGUpO1xuLVx0aWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxuK1x0dCA9IGJ0Zl9hdHRhY2hfZnVuY19wcm90byhOVUxMLCBidGYsIGJ0Zl9pZCk7XG4rXHRpZiAoIXQgfHwgIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0ZXJyID0gYnRmX2Rpc3RpbGxfZnVuY19wcm90byhOVUxMLCBidGYsIHQsIHRuYW1lLCBcdTAwMjZ0Z3RfaW5mby1cdTAwM2VmbW9kZWwpO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjYxY2M1YWFiYTAyNTRkXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuY1xuQEAgLTAsMCArMSwzNiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuKyNpbmNsdWRlIFwia2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLnNrZWwuaFwiXG4rXG4rdm9pZCB0ZXN0X2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZyh2b2lkKVxuK3tcbitcdHN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7XG4rXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMpO1xuK1x0aW50IGVyciwgZmQ7XG4rXG4rXHRza2VsID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19vcGVuX2FuZF9sb2FkKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJvcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRlcnIgPSBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2F0dGFjaChza2VsKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJhdHRhY2hcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcbitcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MudHJpZ2dlcl9pbXBsaWNpdF9hcmcpO1xuK1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcInRlc3RfcnVuXCIpKVxuK1x0XHRnb3RvIGNsZWFudXA7XG4rXG4rXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCA1LCBcImtmdW5jX3JldHZhbFwiKTtcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VmZW50cnlfYXJnX2NudCwgMiwgXCJmZW50cnlfYXJnX2NudFwiKTtcbitcdEFTU0VSVF9ORVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmVudHJ5X2F1eF9hcmcsIDAsIFwiZmVudHJ5X2F1eF9hcmdcIik7XG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmVudHJ5X3Jlc3VsdCwgMSwgXCJmZW50cnlfcmVzdWx0XCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZleGl0X2FyZ19jbnQsIDIsIFwiZmV4aXRfYXJnX2NudFwiKTtcbitcdEFTU0VSVF9ORVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmV4aXRfYXV4X2FyZywgMCwgXCJmZXhpdF9hdXhfYXJnXCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZleGl0X3Jlc3VsdCwgMSwgXCJmZXhpdF9yZXN1bHRcIik7XG4rXG4rY2xlYW51cDpcbitcdGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fZGVzdHJveShza2VsKTtcbit9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjk5NWY4YjhiNWI5ZThmXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcbkBAIC0wLDAgKzEsNzcgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbitcbisjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjZXJybm8uaFx1MDAzZVxuK1xuK2V4dGVybiBpbnQgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyhpbnQgYSkgX193ZWFrIF9fa3N5bTtcbitcbitjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4rXG4rLyogU2hhcmVkIGFyZyBjaGVja3M7IHJlcG9ydHMgYXJnIGNvdW50IGFuZCBhdXgsIHJldHVybnMgMSBvbiBzdWNjZXNzLiAqL1xuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgX191NjRcbitjaGVja19pbXBsaWNpdF9hcmdzKHZvaWQgKmN0eCwgX191NjQgKmFyZ19jbnQsIF9fdTY0ICphdXhfYXJnKVxuK3tcbitcdF9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDtcbitcdF9fdTY0IHJlc3VsdDtcbitcdF9fczY0IGVycjtcbitcbitcdCphcmdfY250ID0gYnBmX2dldF9mdW5jX2FyZ19jbnQoY3R4KTtcbitcdHJlc3VsdCA9ICphcmdfY250ID09IDI7XG4rXG4rXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMCwgXHUwMDI2YSk7XG4rXHRyZXN1bHQgXHUwMDI2PSBlcnIgPT0gMCBcdTAwMjZcdTAwMjYgKGludClhID09IDU7XG4rXG4rXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMSwgXHUwMDI2YXV4KTtcbitcdCphdXhfYXJnID0gYXV4O1xuK1x0cmVzdWx0IFx1MDAyNj0gZXJyID09IDAgXHUwMDI2XHUwMDI2IGF1eCAhPSAwO1xuK1xuK1x0ZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDIsIFx1MDAyNnopO1xuK1x0cmVzdWx0IFx1MDAyNj0gZXJyID09IC1FSU5WQUw7XG4rXG4rXHRyZXR1cm4gcmVzdWx0O1xuK31cbitcbitfX3U2NCBmZW50cnlfcmVzdWx0O1xuK19fdTY0IGZlbnRyeV9hcmdfY250O1xuK19fdTY0IGZlbnRyeV9hdXhfYXJnO1xuK1xuK1NFQyhcImZlbnRyeS9icGZfa2Z1bmNfaW1wbGljaXRfYXJnXCIpXG4raW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZW50cnkpXG4re1xuK1x0X191NjQgcmV0ID0gMDtcbitcdF9fczY0IGVycjtcbitcbitcdGZlbnRyeV9yZXN1bHQgPSBjaGVja19pbXBsaWNpdF9hcmdzKGN0eCwgXHUwMDI2ZmVudHJ5X2FyZ19jbnQsIFx1MDAyNmZlbnRyeV9hdXhfYXJnKTtcbitcbitcdGVyciA9IGJwZl9nZXRfZnVuY19yZXQoY3R4LCBcdTAwMjZyZXQpO1xuK1x0ZmVudHJ5X3Jlc3VsdCBcdTAwMjY9IGVyciA9PSAtRU9QTk9UU1VQUDtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitfX3U2NCBmZXhpdF9yZXN1bHQ7XG4rX191NjQgZmV4aXRfYXJnX2NudDtcbitfX3U2NCBmZXhpdF9hdXhfYXJnO1xuK1xuK1NFQyhcImZleGl0L2JwZl9rZnVuY19pbXBsaWNpdF9hcmdcIilcbitpbnQgQlBGX1BST0codHJhY2VfaW1wbGljaXRfYXJnX2ZleGl0KVxuK3tcbitcdF9fdTY0IHJldCA9IDA7XG4rXHRfX3M2NCBlcnI7XG4rXG4rXHRmZXhpdF9yZXN1bHQgPSBjaGVja19pbXBsaWNpdF9hcmdzKGN0eCwgXHUwMDI2ZmV4aXRfYXJnX2NudCwgXHUwMDI2ZmV4aXRfYXV4X2FyZyk7XG4rXG4rXHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXHUwMDI2cmV0KTtcbitcdGZleGl0X3Jlc3VsdCBcdTAwMjY9IGVyciA9PSAwIFx1MDAyNlx1MDAyNiByZXQgPT0gNTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCJzeXNjYWxsXCIpXG4raW50IHRyaWdnZXJfaW1wbGljaXRfYXJnKHZvaWQgKmN0eClcbit7XG4rXHRyZXR1cm4gYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyg1KTtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQyMToxNDoyMS4zOTY2MzQ5NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNzE5ODkxNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIGFuZCBCVEYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUsIGFuZCBpdCBzZWVtcyB0byBiZSBjZW50ZXJlZCBhcm91bmQgdGhlIEJQRiB2ZXJpZmllciBhbmQgQlRGIHN1YnN5c3RlbS4gVGhlIGNvcmUgb2YgaXQgaW52b2x2ZXMgdGhpcyBuZXcgdmFyaWFibGUsIGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgLiBJIHVuZGVyc3RhbmQgdGhhdCB0aGlzIGlzIG1lYW50IHRvIGhlbHAgcmVzb2x2ZSB0aGUgYWN0dWFsIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UgKEFCSSkgcHJvdG90eXBlIGZvciB0cmFjaW5nIHRhcmdldHMgd2hlbiBkZWFsaW5nIHdpdGggYEtGX0lNUExJQ0lUX0FSR1NgIGtmdW5jcy4gVGhhdCBtYWtlcyBzZW5zZTsgaW1wbGljaXQgYXJndW1lbnRzIGNhbiBjb21wbGljYXRlIHRoaW5ncyB3aGVuIHlvdSBuZWVkIGEgY29uY3JldGUgQUJJIHRvIHdvcmsgd2l0aC4gVGhlIGNvZGUgaXMgbG9jYXRlZCBpbiBga2VybmVsL2JwZi9idGYuY2AgYW5kIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCB3aGljaCB0ZWxscyBtZSB0aGlzIGlzIGZ1bmN0aW9uYWwgYW5kIGNyaXRpY2FsIHN0dWZmLCByaWdodCBpbiB0aGUgaGVhcnQgb2YgdGhlIEJQRiBjb3JlLlxuXG5MZXQncyBkaXZlIGludG8gdGhlIHNwZWNpZmljcyBvZiB3aGF0J3MgYmVlbiBjaGFuZ2VkLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgLCBhIG5ldyBmdW5jdGlvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZW4gdGhlcmUgaXMgdGhlIG1vZGlmaWNhdGlvbiBvZiBgZmluZF9rZnVuY19pbXBsX3Byb3RvYCwgdGhhdCBpbmRpY2F0ZXMgYSByZXZpc2lvbiB0byB0aGUgd2F5IHRoZXkgc2VhcmNoIGZvciB0aGUgaW1wbGVtZW50YXRpb24gcHJvdG90eXBlLCB3aGljaCBpcyBleHBlY3RlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LiBBbHNvLCB0aGVyZSBhcmUgdGhlIGludHJvZHVjdGlvbnMgb2YgYGJ0Zl9hdHRhY2hfZnVuY19wcm90b2AgYW5kIG1vZGlmaWNhdGlvbnMgdG8gYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBhbmQgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYC4gQWxsIG9mIHRoZXNlIGNoYW5nZXMgaGF2ZSBpbXBsaWNhdGlvbnMgb24gaG93IHRyYWNpbmcgcHJvZ3JhbXMgYXJlIGF0dGFjaGVkIHRvIHRoZXNlIGtmdW5jcy5cblxuRXNzZW50aWFsbHksIHRoaXMgaXMgYWxsIGFib3V0IHN1cHBvcnRpbmcgZmVudHJ5L2ZleGl0IHRyYWNpbmcgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gQlBGIGtmdW5jcyB0aGF0IGhhdmUgaW1wbGljaXQgYXJndW1lbnRzLiBUaGUgY2hhbGxlbmdlIGlzIHJlc29sdmluZyB0aGUgcHJvcGVyIEFCSSwgb3IgYF9pbXBsYCBwcm90b3R5cGUsIHNvIHRyYWNpbmcgcHJvZ3JhbXMgY2FuIGJlIGF0dGFjaGVkIHByb3Blcmx5LiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBwYXRjaC5cblxuSSBzaG91bGQgcHJvYmFibHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWcgb3B0aW9ucy4gSSdtIHRoaW5raW5nIHRoZSB1c3VhbCBzdXNwZWN0czogYENPTkZJR19CUEZgLCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYW5kIGBDT05GSUdfREVCVUdfSU5GT19CVEZgLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9ucyB0aGF0IHRoaXMgcGF0Y2ggbWlnaHQgcmVxdWlyZS4gSSdsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRob3NlIGZpbGVzIGFnYWluLCBwYXJ0aWN1bGFybHkgZm9jdXNpbmcgb24gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2J0Zi5jYCBmb3IgYW55IGNsdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjAwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMjE6MTQ6MjcuNjY4NjI2MzUyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzgwNjkzNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS0ZfSU1QTElDSVRfQVJHU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0PTM4Mz10aG9zZSBrZnVuY3MgaWYgYW5kIHdoZW4gc3VjaCBkaXNjdXNzaW9ucyBvY2N1ci5cXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4NC1cXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0OjM4NToyLjUuOSBLRl9JTVBMSUNJVF9BUkdTIGZsYWdcXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4Ni0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4Ny1cXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0OjM4ODpUaGUgS0ZfSU1QTElDSVRfQVJHUyBmbGFnIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgQlBGIHNpZ25hdHVyZVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg5LW9mIHRoZSBrZnVuYyBpcyBkaWZmZXJlbnQgZnJvbSBpdCdzIGtlcm5lbCBzaWduYXR1cmUsIGFuZCB0aGUgdmFsdWVzXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0PTM5Mz1DdXJyZW50bHkgb25seSBgYHN0cnVjdCBicGZfcHJvZ19hdXggKmBgIHR5cGUgaXMgc3VwcG9ydGVkLlxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzk0LVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6Mzk1OkEga2Z1bmMgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIGZsYWcgdGhlcmVmb3JlIGhhcyB0d28gdHlwZXMgaW4gQlRGOiBvbmVcXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM5Ni1mdW5jdGlvbiBtYXRjaGluZyB0aGUga2VybmVsIGRlY2xhcmF0aW9uICh3aXRoIF9pbXBsIHN1ZmZpeCBpbiB0aGVcXG4tLVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jaGFuZ2VzLnJzdD0xNDg9bW9kdWxlcyBhcyB3ZWxsLiAgVGhpcyByZXF1aXJlcyBwYWhvbGUgdjEuMjIgb3IgbGF0ZXIuXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NoYW5nZXMucnN0LTE0OS1cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY2hhbmdlcy5yc3Q6MTUwOlNpbmNlIExpbnV4IDcuMCwga2Z1bmNzIGFubm90YXRlZCB3aXRoIEtGX0lNUExJQ0lUX0FSR1MgcmVxdWlyZSBwYWhvbGUgdjEuMjZcXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY2hhbmdlcy5yc3QtMTUxLW9yIGxhdGVyLiAgV2l0aG91dCBpdCwgc3VjaCBrZnVuY3Mgd2lsbCBoYXZlIGluY29ycmVjdCBCVEYgcHJvdG90eXBlcyBpblxcbi0tXFxuaW5jbHVkZS9saW51eC9idGYuaC04MC0jZGVmaW5lIEtGX0FSRU5BX0FSRzIgICAoMSBcXHUwMDNjXFx1MDAzYyAxNSkgLyoga2Z1bmMgdGFrZXMgYW4gYXJlbmEgcG9pbnRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50ICovXFxuaW5jbHVkZS9saW51eC9idGYuaDo4MTojZGVmaW5lIEtGX0lNUExJQ0lUX0FSR1MgKDEgXFx1MDAzY1xcdTAwM2MgMTYpIC8qIGtmdW5jIGhhcyBpbXBsaWNpdCBhcmd1bWVudHMgc3VwcGxpZWQgYnkgdGhlIHZlcmlmaWVyICovXFxuaW5jbHVkZS9saW51eC9idGYuaC04Mi1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4MDQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGNyYXNoX2tleGVjLCBLRl9ERVNUUlVDVElWRSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODA1LSNlbmRpZlxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MDctQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3X2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODA4OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9uZXcsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwOS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfbmV3X2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODEwOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTEtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTI6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTMtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbCwgS0ZfUkVMRUFTRSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE0OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVIHwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODE1LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODE3LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250X2ltcGwpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxODpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTktQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfYmFja19pbXBsKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MjA6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X2FkZCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODIxLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfZnJvbnQsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ4MzE9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yYnRyZWVfcmVtb3ZlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgzMjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGQsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgzMy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGRfaW1wbClcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ5MTQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl93cV9pbml0KVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5MTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl93cV9zZXRfY2FsbGJhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDkxNi1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3N0YXJ0KVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDk2Mj1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2My0jZW5kaWZcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY0OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2NTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTY4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfZHlucHRyX2Zyb21fZmlsZSlcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yNjEzPXN0YXRpYyBpbnQgZmV0Y2hfa2Z1bmNfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTI2NTEtXFx0LypcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjY1MjpcXHQgKiBBbiBhY3R1YWwgcHJvdG90eXBlIG9mIGEga2Z1bmMgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIGZsYWdcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1My1cXHQgKiBjYW4gYmUgZm91bmQgdGhyb3VnaCB0aGUgY291bnRlcnBhcnQgX2ltcGwga2Z1bmMuXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTI2NTQtXFx0ICovXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjI2NTU6XFx0aWYgKGtmdW5jX2ZsYWdzIFxcdTAwMjZcXHUwMDI2ICgqa2Z1bmNfZmxhZ3MgXFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1Ni1cXHRcXHRmdW5jX3Byb3RvID0gZmluZF9rZnVuY19pbXBsX3Byb3RvKFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgYnRmLCBmdW5jX25hbWUpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwOTA0PXN0YXRpYyBib29sIGlzX2tmdW5jX2FyZ19wcm9nX2F1eChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKmFyZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkwOS0vKlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDkxMDogKiBBIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBoYXMgdHdvIHByb3RvdHlwZXMgaW4gQlRGOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkxMS0gKiAgIC0gdGhlIF9pbXBsIHByb3RvdHlwZSB3aXRoIGZ1bGwgYXJnIGxpc3QgKG1ldGEtXFx1MDAzZWZ1bmNfcHJvdG8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA5MTY9c3RhdGljIGJvb2wgaXNfa2Z1bmNfYXJnX2ltcGxpY2l0KGNvbnN0IHN0cnVjdCBicGZfa2Z1bmNfY2FsbF9hcmdfbWV0YSAqbWV0YSwgdTMyIGFyZ19pZHgpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MjAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTIxOlxcdGlmICghKG1ldGEtXFx1MDAzZWtmdW5jX2ZsYWdzIFxcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTIyLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODgyNz1zdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg4NzctICogUmVzb2x2ZSB0aGUgcHJvdG90eXBlIGRlc2NyaWJpbmcgYSB0cmFjZSB0YXJnZXQncyByZWFsIEFCSS4gQVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODg3ODogKiBLRl9JTVBMSUNJVF9BUkdTIGtmdW5jIGhhcyBpdHMgaW5qZWN0ZWQgYXJncyBzdHJpcHBlZCBmcm9tIHRoZSBwdWJsaWNcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg4NzktICogcHJvdG90eXBlLCBzbyB1c2UgdGhlIF9pbXBsIHByb3RvdHlwZTsgb3RoZXIgdGFyZ2V0cyB1c2UgdGhlaXIgb3duLlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4ODgyPWJ0Zl9hdHRhY2hfZnVuY19wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBmdW5jX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODkyLVxcdGtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4ODkzOlxcdGlmIChrZnVuY19mbGFncyBcXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg4OTQtXFx0XFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXFx1MDAzZW5hbWVfb2ZmKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM9NjgzPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19pbml0KVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Njg0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF9vdmVycmlkZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NMRUVQQUJMRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTY4NS1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2luaXQpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jPTY5Mz1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfY2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Njk0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF90b19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzo2OTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3RvX2NpZCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjY5NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRfdG9wbywgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTY5Ny1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NpZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODczOD1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfZW5xdWV1ZV9kaXNwYXRjaClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3Mzk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX2luc2VydCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3NDA6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX2luc2VydF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODc0MTpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX2RzcV9pbnNlcnRfdnRpbWUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NzQyLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9pbnNlcnRfdnRpbWUsIEtGX1JDVSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTEwMz1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfZGlzcGF0Y2gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTA0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2Rpc3BhdGNoX25yX3Nsb3RzLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kaXNwYXRjaF9jYW5jZWwsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTA2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9tb3ZlX3RvX2xvY2FsLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV90b19sb2NhbF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTEwOC0vKiBzY3hfYnBmX2RzcV9tb3ZlKigpIGFsc28gaW4gc2N4X2tmdW5jX2lkc191bmxvY2tlZDogY2FsbGFibGUgZnJvbSB1bmxvY2tlZCBjb250ZXh0cyAqL1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MTEyPUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9tb3ZlX3Z0aW1lLCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTEzLSNpZmRlZiBDT05GSUdfRVhUX1NVQl9TQ0hFRFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTExNDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zdWJfZGlzcGF0Y2gsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTE1LSNlbmRpZlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MTUyPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19jcHVfcmVsZWFzZSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkxNTM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcmVlbnF1ZXVlX2xvY2FsLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTE1NC1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NwdV9yZWxlYXNlKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MjIxPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkyMjI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3JlYXRlX2RzcSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NMRUVQQUJMRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkyMjMtLyogYWxzbyBpbiBzY3hfa2Z1bmNfaWRzX2Rpc3BhdGNoOiBhbHNvIGNhbGxhYmxlIGZyb20gb3BzLmRpc3BhdGNoKCkgKi9cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTIyNz1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV92dGltZSwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTIyOC0vKiBhbHNvIGluIHNjeF9rZnVuY19pZHNfc2VsZWN0X2NwdTogYWxzbyBjYWxsYWJsZSBmcm9tIG9wcy5zZWxlY3RfY3B1KCkvb3BzLmVucXVldWUoKSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTIyOTpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTIzMC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTIzMTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2RmbCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkyMzItQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTAzODI9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2FueSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzgzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfc2V0X3NsaWNlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfc2V0X2RzcV92dGltZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM4NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NwdSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2tpY2tfY2lkLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX25yX3F1ZXVlZCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2Rlc3Ryb3lfZHNxLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX3BlZWssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1VfUFJPVEVDVEVEIHwgS0ZfUkVUX05VTEwpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfcmVlbnEsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9yZWVucXVldWVfbG9jYWxfX192MiwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzkyOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX25ldywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0lURVJfTkVXIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwMzkzLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTAzOTQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX3NjeF9kc3FfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXhpdF9ic3RyLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXJyb3JfYnN0ciwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzk3OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2R1bXBfYnN0ciwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzk4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQwMDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX3NldCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDAxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZHBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MDI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY2lkcGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQwMzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRwZXJmX3NldCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDA0LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX25yX25vZGVfaWRzKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDQxND1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX2NpZCwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3JxLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfbG9ja2VkX3JxLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQxNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfY3VyciwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDE4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF9jdXJyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1VfUFJPVEVDVEVEKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0MTktQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGlkX3RvX3Rhc2ssIEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0MjE9QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXZlbnRzKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0MjItI2lmZGVmIENPTkZJR19DR1JPVVBfU0NIRURcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDIzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfY2dyb3VwLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVIHwgS0ZfQUNRVUlSRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDI0LSNlbmRpZlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDQ0Nz1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfY3B1X29ubHkpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ0ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NwdSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDQ5LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfY3B1LCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfcnEsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfY3VyciwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDUyOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9jYXAsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1NDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX2N1ciwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDU1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfc2V0LCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0NTYtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X3Bvc3NpYmxlX2NwdW1hc2ssIEtGX0FDUVVJUkUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNDU4PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9jcHVtYXNrLCBLRl9SRUxFQVNFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc2VsZWN0X2NwdV9kZmwsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2MDpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0NjEtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc2VsZWN0X2NwdV9hbmQsIEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDYyOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX2NwdW1hc2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfY3B1bWFza19ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX3NtdG1hc2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFza19ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDY2LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9pZGxlX2NwdW1hc2ssIEtGX1JFTEVBU0UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90ZXN0X2FuZF9jbGVhcl9jcHVfaWRsZSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfaWRsZV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2OTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ3MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ3MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHVfbm9kZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDcyLUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfY3B1X29ubHkpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYz0xNDY0PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19pZGxlKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NjU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9jcHVtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0Njc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfY3B1bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9zbXRtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0Njk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTQ3MC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9wdXRfaWRsZV9jcHVtYXNrLCBLRl9SRUxFQVNFKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGVzdF9hbmRfY2xlYXJfY3B1X2lkbGUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3MjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3MzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1LCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19hbnlfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTQ3Ni1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2lkbGUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYz0xNDk1PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19zZWxlY3RfY3B1KVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0OTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIF9fc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDk3LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ5ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2RmbCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDk5LUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfc2VsZWN0X2NwdSlcXG4tLVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM9MTIyPXN0cnVjdCBvYmplY3Qge1xcbi0tXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xNTQtXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYzoxNTU6I2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFxcdTAwM2NcXHUwMDNjIDE2KVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTU2LSNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggXFxcIl9pbXBsXFxcIlxcbi0tXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYz0xMDY0PXN0YXRpYyBib29sIGlzX2tmX2ltcGxpY2l0X2FyZyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKnApXFxuLS1cXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEwOTItLypcXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jOjEwOTM6ICogRm9yIGEga2Z1bmMgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIHdlIGRvIHRoZSBmb2xsb3dpbmc6XFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMDk0LSAqICAgMS4gQWRkIGEgbmV3IGZ1bmN0aW9uIHdpdGggX2ltcGwgc3VmZml4IGluIHRoZSBuYW1lLCB3aXRoIHRoZSBwcm90b3R5cGVcXG4tLVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTEwNi0gKlxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM6MTEwNzogKiBJZiBhIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBhbHJlYWR5IGhhcyBhbiBfaW1wbCBjb3VudGVycGFydFxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTEwOC0gKiBpbiBCVEYsIHRoZW4gaXQncyBhIGxlZ2FjeSBjYXNlOiBhbiBfaW1wbCBmdW5jdGlvbiBpcyBkZWNsYXJlZCBpbiB0aGVcXG4tLVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM9MTIxND1zdGF0aWMgaW50IGJ0ZjJidGYoc3RydWN0IG9iamVjdCAqb2JqKVxcbi0tXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMjI1LVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM6MTIyNjpcXHRcXHRpZiAoIShrZnVuYy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEyMjctXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jPTE0MDQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19tdWx0aV9zdF9vcHNfdGVzdF8xKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX211bHRpX3N0X29wc190ZXN0XzFfYXNzb2MsIEtGX0lNUExJQ0lUX0FSR1MpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYzoxNDA2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfaW1wbGljaXRfYXJnLCBLRl9JTVBMSUNJVF9BUkdTKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ19sZWdhY3ksIEtGX0lNUExJQ0lUX0FSR1MpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYy0xNDA4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfaW1wbGljaXRfYXJnX2xlZ2FjeV9pbXBsKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQyMToxNDoyOS43NDY3MDEyMzdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTMxMzgwMzQ0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBQYXRjaCBmb3IgZmVudHJ5L2ZleGl0IFRyYWNpbmcgb2Yga2Z1bmNzIHdpdGggSW1wbGljaXQgQXJndW1lbnRzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhYm91dCBlbmFibGluZyBgZmVudHJ5L2ZleGl0YCB0cmFjaW5nIGZvciBrZnVuY3MgdGhhdCB1dGlsaXplIGBLRl9JTVBMSUNJVF9BUkdTYC4gVGhlIGNvcmUgb2YgdGhpcyBpcyBhIGNoYW5nZSB0byB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgdGVzdCBjYXNlLCBga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNgLCBpcyB1c2luZyBgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ2AsIHdoaWNoIHRlbGxzIG1lIHRoZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBpcyB0aGUgY3JpdGljYWwgYXJlYSBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHByb3RvdHlwZSBvZiB0aGVzZSBrZnVuY3MgaXMgcmVzb2x2ZWQgd2hlbiBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcy5cblxuSSdtIHRoaW5raW5nIGFib3V0IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIENsZWFybHksIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVzc2VudGlhbCwgYW5kIGBDT05GSUdfREVCVUdfSU5GT19CVEZgIGlzIG5lZWRlZCBmb3IgQlRGIHN1cHBvcnQuIFNpbmNlIHRoaXMgaW52b2x2ZXMgdHJhY2luZywgc3BlY2lmaWNhbGx5IGBmZW50cnkvZmV4aXRgLCBgQ09ORklHX0JQRl9KSVRgIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCB0b28g4oCTIGl0IHdpbGwgbW9zdCBsaWtlbHkgYmUgbmVlZGVkIGZvciB0aGUgdHJhbXBvbGluZSBpbXBsZW1lbnRhdGlvbi4gSXQncyBwb3NzaWJsZSB3ZSBtaWdodCBhbHNvIG5lZWQgYENPTkZJR19GVFJBQ0VgIG9yIGBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgIGJ1dCB0aGF0IGNhbiBiZSBhZGRlZCBsYXRlci5cblxuVGhlIGtleSBoZXJlIGlzIHRoZSBCUEYgdmVyaWZpZXIgaXRzZWxmLCBhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggQlRGLiBJJ20gZm9jdXNpbmcgb24gdGhlIGNvZGUgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2J0Zi5jYC4gSSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgYEJQRl9URVNUTU9EYCBzaW5jZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGlzIHdoYXQgbWF0dGVycyBoZXJlLCBJJ20gbW9yZSBpbnRlcmVzdGVkIGluIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGNvcmUgdmVyaWZpZXIuXG5cbkkgc2hvdWxkIGlkZW50aWZ5IHRoZSBrZXkgc3ltYm9scyBtb2RpZmllZCBieSB0aGlzIHBhdGNoIHRvIGFpZCBmdXp6aW5nLiBUaGUgb25lcyB0aGF0IHN0aWNrIG91dCBhcmU6XG5cbiogICBgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzYFxuKiAgIGBidGZfYXR0YWNoX2Z1bmNfcHJvdG9gXG4qICAgYGZpbmRfa2Z1bmNfaW1wbF9wcm90b2BcbiogICBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgXG4qICAgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYFxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIGNvZGU6IGBidGZfYXR0YWNoX2Z1bmNfcHJvdG9gIGlzIGRlZmluaXRlbHkgc3RhdGljIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXI6IFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUga2Z1bmMgcHJvdG90eXBlcyB3aXRoIGBLRl9JTVBMSUNJVF9BUkdTYCBmb3IgdHJhY2luZyBwcm9ncmFtcy4gVGhlIGZ1enppbmcgZWZmb3J0cyBzaG91bGQgY29uY2VudHJhdGUgb24gdGhlIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgcHJvY2VzcywgcGFydGljdWxhcmx5IGhvdyBCVEYgdHlwZXMgYXJlIG1hdGNoZWQgYW5kIHZlcmlmaWVkLlxuXG5Gb3IgbXkgY29uZmlndXJhdGlvbiwgSSdsbCBuZWVkIGBCUEZfU1lTQ0FMTGAsIGBERUJVR19JTkZPX0JURmAsIGFuZCBgQlBGX0pJVGAuIFRob3NlIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NzQ0LCJPdXRwdXRUb2tlbnMiOjE5MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQyMToxNDo0MS4wNjA1MDY3NTJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NjM0NjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiREVCVUdfSU5GT19CVEZcIixcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NcIixcbiAgICBcImJ0Zl9hdHRhY2hfZnVuY19wcm90b1wiLFxuICAgIFwiZmluZF9rZnVuY19pbXBsX3Byb3RvXCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX3RhcmdldFwiLFxuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2Yga2Z1bmNzIHdpdGggS0ZfSU1QTElDSVRfQVJHUyB3aGVuIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zIChsaWtlIGZlbnRyeS9mZXhpdCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBob3cgQlRGIHR5cGVzIGFyZSBtYXRjaGVkIGFuZCB2ZXJpZmllZCBkdXJpbmcgcHJvZ3JhbSBhdHRhY2htZW50LiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBCUEYgcHJvZ3JhbSBhdHRhY2htZW50IGFuZCBCVEYgdmVyaWZpY2F0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJERUJVR19JTkZPX0JURlwiLFxuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc1wiLFxuICAgIFwiYnRmX2F0dGFjaF9mdW5jX3Byb3RvXCIsXG4gICAgXCJmaW5kX2tmdW5jX2ltcGxfcHJvdG9cIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfdGFyZ2V0XCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBrZnVuY3Mgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIHdoZW4gYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMgKGxpa2UgZmVudHJ5L2ZleGl0KS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIGhvdyBCVEYgdHlwZXMgYXJlIG1hdGNoZWQgYW5kIHZlcmlmaWVkIGR1cmluZyBwcm9ncmFtIGF0dGFjaG1lbnQuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIEJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgYW5kIEJURiB2ZXJpZmljYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjwss8[1] Phase: Succeeded StartedAt: 2026-07-10 21:15:48 +0000 UTC FinishedAt: 2026-07-10 21:15:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-10 21:15:48 +0000 UTC FinishedAt: 2026-07-10 21:15:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2] Phase: Succeeded StartedAt: 2026-07-10 21:15:48 +0000 UTC FinishedAt: 2026-07-11 01:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:15:48 +0000 UTC FinishedAt: 2026-07-11 01:45:14 +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","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:15:48 +0000 UTC FinishedAt: 2026-07-10 21:15:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:15:48 +0000 UTC FinishedAt: 2026-07-10 21:15: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","DEBUG_INFO_BTF","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-workflowjwss8/series-workflowjwss8-convert-artifact-2042004751/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:15:58 +0000 UTC FinishedAt: 2026-07-10 21:56:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:15:58 +0000 UTC FinishedAt: 2026-07-10 21:56:07 +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:*b9daab29-5b08-43b5-a843-91aacce78a1b,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-workflowjwss8/series-workflowjwss8-convert-artifact-2042004751/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": "8625230f-cc20-461f-a47d-3e7bc3d146e7", "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-workflowjwss8/series-workflowjwss8-build-action-686060117/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:15:58 +0000 UTC FinishedAt: 2026-07-10 21:55:40 +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:*b9daab29-5b08-43b5-a843-91aacce78a1b,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-workflowjwss8/series-workflowjwss8-convert-artifact-2042004751/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": "8625230f-cc20-461f-a47d-3e7bc3d146e7", "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-workflowjwss8/series-workflowjwss8-build-action-686060117/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:56:07 +0000 UTC FinishedAt: 2026-07-10 21:56:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:56:07 +0000 UTC FinishedAt: 2026-07-10 21:56:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:56:07 +0000 UTC FinishedAt: 2026-07-10 21:56:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:56:07 +0000 UTC FinishedAt: 2026-07-10 21:56:14 +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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-workflowjwss8/series-workflowjwss8-convert-artifact-2546836318/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:56:17 +0000 UTC FinishedAt: 2026-07-10 21:58:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:56:17 +0000 UTC FinishedAt: 2026-07-10 21:58:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8625230f-cc20-461f-a47d-3e7bc3d146e7,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-workflowjwss8/series-workflowjwss8-build-action-686060117/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-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:58:13 +0000 UTC FinishedAt: 2026-07-10 21:58:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:58:13 +0000 UTC FinishedAt: 2026-07-10 21:58:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:58:13 +0000 UTC FinishedAt: 2026-07-10 22:38:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:58:13 +0000 UTC FinishedAt: 2026-07-10 22:38:01 +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:*b9daab29-5b08-43b5-a843-91aacce78a1b,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-workflowjwss8/series-workflowjwss8-convert-artifact-2546836318/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": "d671bd89-9469-427b-91ee-2895e9abaa87", "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-workflowjwss8/series-workflowjwss8-build-action-2058284082/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 21:58:13 +0000 UTC FinishedAt: 2026-07-10 22:37:51 +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:*b9daab29-5b08-43b5-a843-91aacce78a1b,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-workflowjwss8/series-workflowjwss8-convert-artifact-2546836318/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": "d671bd89-9469-427b-91ee-2895e9abaa87", "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-workflowjwss8/series-workflowjwss8-build-action-2058284082/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:38:01 +0000 UTC FinishedAt: 2026-07-10 22:38:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:38:01 +0000 UTC FinishedAt: 2026-07-10 22:38:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:38:01 +0000 UTC FinishedAt: 2026-07-10 22:40:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:38:01 +0000 UTC FinishedAt: 2026-07-10 22:40:28 +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:*d671bd89-9469-427b-91ee-2895e9abaa87,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-workflowjwss8/series-workflowjwss8-build-action-2058284082/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-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:40:38 +0000 UTC FinishedAt: 2026-07-11 01:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:40:38 +0000 UTC FinishedAt: 2026-07-11 01:45:14 +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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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:*8625230f-cc20-461f-a47d-3e7bc3d146e7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d671bd89-9469-427b-91ee-2895e9abaa87,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-workflowjwss8/series-workflowjwss8-build-action-686060117/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-workflowjwss8/series-workflowjwss8-build-action-2058284082/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:40:38 +0000 UTC FinishedAt: 2026-07-10 22:40:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:40:38 +0000 UTC FinishedAt: 2026-07-10 22:40:43 +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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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-workflowjwss8/series-workflowjwss8-convert-artifact-1554818915/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:40:38 +0000 UTC FinishedAt: 2026-07-10 22:40:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:40:38 +0000 UTC FinishedAt: 2026-07-10 22:40:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:40:38 +0000 UTC FinishedAt: 2026-07-10 22:40:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:40:48 +0000 UTC FinishedAt: 2026-07-11 01:45:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjwss8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","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":["btf_kfunc_accumulated_flags","btf_attach_func_proto","find_kfunc_impl_proto","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","DEBUG_INFO_BTF","BPF_JIT"],"series_id":"2f33c1d6-76fc-427a-ba33-e1ba85c97c83","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-10 22:40:48 +0000 UTC FinishedAt: 2026-07-11 01:45:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8625230f-cc20-461f-a47d-3e7bc3d146e7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d671bd89-9469-427b-91ee-2895e9abaa87,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-workflowjwss8/series-workflowjwss8-build-action-686060117/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-workflowjwss8/series-workflowjwss8-build-action-2058284082/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-workflowjwss8/series-workflowjwss8-convert-artifact-1554818915/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,}