Name: series-workflowhg4xk Phase: Succeeded StartedAt: 2026-07-11 16:34:55 +0000 UTC FinishedAt: 2026-07-11 21:53:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[0] Phase: Succeeded StartedAt: 2026-07-11 16:34:55 +0000 UTC FinishedAt: 2026-07-11 17:04:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 16:34:55 +0000 UTC FinishedAt: 2026-07-11 17:04:40 +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_EVENTS" ], "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_EVENTS" ], "series_id": "c1c50f13-1c4b-4bb4-9ae7-67a12058101a" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "btf_kfunc_accumulated_flags", "btf_attach_func_proto", "find_kfunc_impl_proto" ], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDE3OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MmIzM0OywKICAgICYjMzQ7YnRmX2F0dGFjaF9mdW5jX3Byb3RvJiMzNDssCiAgICAmIzM0O2ZpbmRfa2Z1bmNfaW1wbF9wcm90byYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2YgYSB0cmFjZSB0YXJnZXQmIzM5O3MgcmVhbCBBQkkgZm9yIGBLRl9JTVBMSUNJVF9BUkdTYCBrZnVuY3MuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgZm9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zIHRvIGtmdW5jcywgd2hpY2ggaXMgaGlnaGx5IHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNzowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVhMzY0OWM4YzNlZjc4ZDEzYWFmMDkwYTljZGNmYWM0ZDg4MTQxN2FcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxNzowMzo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxuaW5kZXggMjQwNDAxZDliMjViOWUuLmM1MjI0NWFlMGRmNWQ3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9idGYuaFxuQEAgLTU3OCw2ICYjNDM7NTc4LDcgQEAgY29uc3QgY2hhciAqYnRmX3N0cl9ieV9vZmZzZXQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgb2Zmc2V0KTtcbiBzdHJ1Y3QgYnRmICpidGZfcGFyc2Vfdm1saW51eCh2b2lkKTtcbiBzdHJ1Y3QgYnRmICpicGZfcHJvZ19nZXRfdGFyZ2V0X2J0Zihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuIHUzMiAqYnRmX2tmdW5jX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbiYjNDM7dTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpO1xuIGJvb2wgYnRmX2tmdW5jX2lzX2FsbG93ZWQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuIHUzMiAqYnRmX2tmdW5jX2lzX21vZGlmeV9yZXR1cm4oY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLFxuIFx0XHRcdFx0Y29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2J0Zi5jIGIva2VybmVsL2JwZi9idGYuY1xuaW5kZXggNjQ1NzJmODVlZGM4MzIuLjIwYWVjYTZiNGY5NWM5IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9idGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9idGYuY1xuQEAgLTkxMTQsNiAmIzQzOzkxMTQsMjYgQEAgdTMyICpidGZfa2Z1bmNfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3BcbiBcdHJldHVybiBidGZfa2Z1bmNfaWRfc2V0X2NvbnRhaW5zKGJ0ZiwgaG9vaywga2Z1bmNfYnRmX2lkKTtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFJldHVybiB0aGUgdW5pb24gb2YgYSBrZnVuYyYjMzk7cyBmbGFncyBhY3Jvc3MgYWxsIGhvb2tzLlxuJiM0MzsgKiBVbmxpa2UgYnRmX2tmdW5jX2ZsYWdzKCksIG5vdCByZXN0cmljdGVkIHRvIGEgY2FsbGluZ1xuJiM0MzsgKiBwcm9ncmFtJiMzOTtzIGhvb2suIFVzZWQgd2hlbiBhdHRhY2hpbmcgdG8gYSBrZnVuYyBmb3IgdHJhY2luZy5cbiYjNDM7ICovXG4mIzQzO3UzMiBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkKVxuJiM0Mzt7XG4mIzQzO1x0ZW51bSBidGZfa2Z1bmNfaG9vayBob29rO1xuJiM0MztcdHUzMiAqaG9va19mbGFncztcbiYjNDM7XHR1MzIgZmxhZ3MgPSAwO1xuJiM0MztcbiYjNDM7XHRmb3IgKGhvb2sgPSAwOyBob29rIFx1MDAzYyBCVEZfS0ZVTkNfSE9PS19NQVg7IGhvb2smIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRob29rX2ZsYWdzID0gYnRmX2tmdW5jX2lkX3NldF9jb250YWlucyhidGYsIGhvb2ssIGtmdW5jX2J0Zl9pZCk7XG4mIzQzO1x0XHRpZiAoaG9va19mbGFncylcbiYjNDM7XHRcdFx0ZmxhZ3MgfD0gKmhvb2tfZmxhZ3M7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gZmxhZ3M7XG4mIzQzO31cbiYjNDM7XG4gdTMyICpidGZfa2Z1bmNfaXNfbW9kaWZ5X3JldHVybihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsXG4gXHRcdFx0XHRjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4ge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggNjUxNWQ0ZDNjMDAzMmYuLjJmNTZhYjhkNmI1OGM5IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC0yNTg0LDI0ICYjNDM7MjU4NCwyNCBAQCBzdGF0aWMgc3RydWN0IGJ0ZiAqZmluZF9rZnVuY19kZXNjX2J0ZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMTYgb2Zmc2V0KVxuIFxuICNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggXCYjMzQ7X2ltcGxcJiMzNDtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi1cdFx0XHRcdFx0XHQgICAgc3RydWN0IGJ0ZiAqYnRmLFxuLVx0XHRcdFx0XHRcdCAgICBjb25zdCBjaGFyICpmdW5jX25hbWUpXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKlxuJiM0MztmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBjaGFyICpmdW5jX25hbWUpXG4ge1xuLVx0Y2hhciAqYnVmID0gZW52LVx1MDAzZXRtcF9zdHJfYnVmO1xuIFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jO1xuJiM0MztcdGNoYXIgYnVmW0tTWU1fTkFNRV9MRU5dO1xuIFx0czMyIGltcGxfaWQ7XG4gXHRpbnQgbGVuO1xuIFxuLVx0bGVuID0gc25wcmludGYoYnVmLCBUTVBfU1RSX0JVRl9MRU4sIFwmIzM0OyVzJXNcJiMzNDssIGZ1bmNfbmFtZSwgS0ZfSU1QTF9TVUZGSVgpO1xuLVx0aWYgKGxlbiBcdTAwM2MgMCB8fCBsZW4gXHUwMDNlPSBUTVBfU1RSX0JVRl9MRU4pIHtcbi1cdFx0dmVyYm9zZShlbnYsIFwmIzM0O2Z1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xcblwmIzM0OywgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4mIzQzO1x0bGVuID0gc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgXCYjMzQ7JXMlc1wmIzM0OywgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4mIzQzO1x0aWYgKGxlbiBcdTAwM2MgMCB8fCBsZW4gXHUwMDNlPSBzaXplb2YoYnVmKSkge1xuJiM0MztcdFx0YnBmX2xvZyhsb2csIFwmIzM0O2Z1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0ZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuIFx0aW1wbF9pZCA9IGJ0Zl9maW5kX2J5X25hbWVfa2luZChidGYsIGJ1ZiwgQlRGX0tJTkRfRlVOQyk7XG4gXHRpZiAoaW1wbF9pZCBcdTAwM2M9IDApIHtcbi1cdFx0dmVyYm9zZShlbnYsIFwmIzM0O2Nhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxcblwmIzM0OywgYnVmKTtcbiYjNDM7XHRcdGJwZl9sb2cobG9nLCBcJiMzNDtjYW5ub3QgZmluZCBmdW5jdGlvbiAlcyBpbiBCVEZcXG5cJiMzNDssIGJ1Zik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTI2NTMsNyAmIzQzOzI2NTMsNyBAQCBzdGF0aWMgaW50IGZldGNoX2tmdW5jX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdCAqIGNhbiBiZSBmb3VuZCB0aHJvdWdoIHRoZSBjb3VudGVycGFydCBfaW1wbCBrZnVuYy5cbiBcdCAqL1xuIFx0aWYgKGtmdW5jX2ZsYWdzIFx1MDAyNlx1MDAyNiAoKmtmdW5jX2ZsYWdzIFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcbi1cdFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhlbnYsIGJ0ZiwgZnVuY19uYW1lKTtcbiYjNDM7XHRcdGZ1bmNfcHJvdG8gPSBmaW5kX2tmdW5jX2ltcGxfcHJvdG8oXHUwMDI2ZW52LVx1MDAzZWxvZywgYnRmLCBmdW5jX25hbWUpO1xuIFx0ZWxzZVxuIFx0XHRmdW5jX3Byb3RvID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLVx1MDAzZXR5cGUpO1xuIFxuQEAgLTE4ODczLDYgJiM0MzsxODg3Myw0NCBAQCBzdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYlxuIFx0cmV0dXJuIC1FSU5WQUw7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBSZXNvbHZlIHRoZSBwcm90b3R5cGUgZGVzY3JpYmluZyBhIHRyYWNlIHRhcmdldCYjMzk7cyByZWFsIEFCSS4gQVxuJiM0MzsgKiBLRl9JTVBMSUNJVF9BUkdTIGtmdW5jIGhhcyBpdHMgaW5qZWN0ZWQgYXJncyBzdHJpcHBlZCBmcm9tIHRoZSBwdWJsaWNcbiYjNDM7ICogcHJvdG90eXBlLCBzbyB1c2UgdGhlIF9pbXBsIHByb3RvdHlwZTsgb3RoZXIgdGFyZ2V0cyB1c2UgdGhlaXIgb3duLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXG4mIzQzO2J0Zl9hdHRhY2hfZnVuY19wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBmdW5jX2lkKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jO1xuJiM0MztcdHN0cnVjdCBtb2R1bGUgKm1vZCA9IE5VTEw7XG4mIzQzO1x0Y29uc3QgY2hhciAqbmFtZTtcbiYjNDM7XHR1MzIga2Z1bmNfZmxhZ3M7XG4mIzQzO1xuJiM0MztcdGZ1bmMgPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmNfaWQpO1xuJiM0MztcdGlmICghZnVuYyB8fCAhYnRmX3R5cGVfaXNfZnVuYyhmdW5jKSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncygpIHJlYWRzIGtmdW5jX3NldF90YWIsIHdoaWNoIGZvciBhXG4mIzQzO1x0ICogbW9kdWxlIGlzIHN0YWJsZSBvbmx5IG9uY2UgaXQgaXMgbGl2ZTsgaG9sZCBhIG1vZHVsZSByZWYgYWNyb3NzXG4mIzQzO1x0ICogdGhlIHJlYWQgdG8gZXhjbHVkZSBhIGNvbmN1cnJlbnQgbW9kdWxlIGxvYWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGJ0Zl9pc19tb2R1bGUoYnRmKSkge1xuJiM0MztcdFx0bW9kID0gYnRmX3RyeV9nZXRfbW9kdWxlKGJ0Zik7XG4mIzQzO1x0XHRpZiAoIW1vZClcbiYjNDM7XHRcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuJiM0MztcdGtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7XG4mIzQzO1x0bW9kdWxlX3B1dChtb2QpO1xuJiM0MztcbiYjNDM7XHRpZiAoa2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcbiYjNDM7XHRcdG5hbWUgPSBidGZfbmFtZV9ieV9vZmZzZXQoYnRmLCBmdW5jLVx1MDAzZW5hbWVfb2ZmKTtcbiYjNDM7XHRcdHJldHVybiBmaW5kX2tmdW5jX2ltcGxfcHJvdG8obG9nLCBidGYsIG5hbWUpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgZnVuYy1cdTAwM2V0eXBlKTtcbiYjNDM7fVxuJiM0MztcbiBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbiBcdFx0XHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuIFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnRndF9wcm9nLFxuQEAgLTE5MTIxLDggJiM0MzsxOTE1OSw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0XHRpZiAocHJvZ19leHRlbnNpb24gXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBidGZfY2hlY2tfdHlwZV9tYXRjaChsb2csIHByb2csIGJ0ZiwgdCkpXG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHRcdHQgPSBidGZfdHlwZV9ieV9pZChidGYsIHQtXHUwMDNldHlwZSk7XG4tXHRcdGlmICghYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcbiYjNDM7XHRcdHQgPSBidGZfYXR0YWNoX2Z1bmNfcHJvdG8obG9nLCBidGYsIGJ0Zl9pZCk7XG4mIzQzO1x0XHRpZiAoIXQgfHwgIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRcdGlmICgocHJvZy1cdTAwM2VhdXgtXHUwMDNlc2F2ZWRfZHN0X3Byb2dfdHlwZSB8fCBwcm9nLVx1MDAzZWF1eC1cdTAwM2VzYXZlZF9kc3RfYXR0YWNoX3R5cGUpIFx1MDAyNlx1MDAyNlxuQEAgLTE5NDA3LDggJiM0MzsxOTQ0NSw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0aWYgKCFidGZfdHlwZV9pc19mdW5jKHQpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdHQgPSBidGZfdHlwZV9ieV9pZChidGYsIHQtXHUwMDNldHlwZSk7XG4tXHRpZiAoIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4mIzQzO1x0dCA9IGJ0Zl9hdHRhY2hfZnVuY19wcm90byhOVUxMLCBidGYsIGJ0Zl9pZCk7XG4mIzQzO1x0aWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdGVyciA9IGJ0Zl9kaXN0aWxsX2Z1bmNfcHJvdG8oTlVMTCwgYnRmLCB0LCB0bmFtZSwgXHUwMDI2dGd0X2luZm8tXHUwMDNlZm1vZGVsKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi42MWNjNWFhYmEwMjU0ZFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcbkBAIC0wLDAgJiM0MzsxLDM2IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcJiMzNDtrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuc2tlbC5oXCYjMzQ7XG4mIzQzO1xuJiM0Mzt2b2lkIHRlc3Rfa2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nICpza2VsO1xuJiM0MztcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyk7XG4mIzQzO1x0aW50IGVyciwgZmQ7XG4mIzQzO1xuJiM0MztcdHNrZWwgPSBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX29wZW5fYW5kX2xvYWQoKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCYjMzQ7b3Blbl9hbmRfbG9hZFwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGVyciA9IGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fYXR0YWNoKHNrZWwpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YXR0YWNoXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gY2xlYW51cDtcbiYjNDM7XG4mIzQzO1x0ZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy50cmlnZ2VyX2ltcGxpY2l0X2FyZyk7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7dGVzdF9ydW5cJiMzNDspKVxuJiM0MztcdFx0Z290byBjbGVhbnVwO1xuJiM0MztcbiYjNDM7XHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCA1LCBcJiMzNDtrZnVuY19yZXR2YWxcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VmZW50cnlfYXJnX2NudCwgMiwgXCYjMzQ7ZmVudHJ5X2FyZ19jbnRcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9ORVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmVudHJ5X2F1eF9hcmcsIDAsIFwmIzM0O2ZlbnRyeV9hdXhfYXJnXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmVudHJ5X3Jlc3VsdCwgMSwgXCYjMzQ7ZmVudHJ5X3Jlc3VsdFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZleGl0X2FyZ19jbnQsIDIsIFwmIzM0O2ZleGl0X2FyZ19jbnRcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9ORVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmV4aXRfYXV4X2FyZywgMCwgXCYjMzQ7ZmV4aXRfYXV4X2FyZ1wmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZleGl0X3Jlc3VsdCwgMSwgXCYjMzQ7ZmV4aXRfcmVzdWx0XCYjMzQ7KTtcbiYjNDM7XG4mIzQzO2NsZWFudXA6XG4mIzQzO1x0a2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjk5NWY4YjhiNWI5ZThmXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcbkBAIC0wLDAgJiM0MzsxLDc3IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY3ZtbGludXguaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NlcnJuby5oXHUwMDNlXG4mIzQzO1xuJiM0MztleHRlcm4gaW50IGJwZl9rZnVuY19pbXBsaWNpdF9hcmcoaW50IGEpIF9fd2VhayBfX2tzeW07XG4mIzQzO1xuJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiM0MztcbiYjNDM7LyogU2hhcmVkIGFyZyBjaGVja3M7IHJlcG9ydHMgYXJnIGNvdW50IGFuZCBhdXgsIHJldHVybnMgMSBvbiBzdWNjZXNzLiAqL1xuJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIF9fdTY0XG4mIzQzO2NoZWNrX2ltcGxpY2l0X2FyZ3Modm9pZCAqY3R4LCBfX3U2NCAqYXJnX2NudCwgX191NjQgKmF1eF9hcmcpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCBhID0gMCwgYXV4ID0gMCwgeiA9IDA7XG4mIzQzO1x0X191NjQgcmVzdWx0O1xuJiM0MztcdF9fczY0IGVycjtcbiYjNDM7XG4mIzQzO1x0KmFyZ19jbnQgPSBicGZfZ2V0X2Z1bmNfYXJnX2NudChjdHgpO1xuJiM0MztcdHJlc3VsdCA9ICphcmdfY250ID09IDI7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9nZXRfZnVuY19hcmcoY3R4LCAwLCBcdTAwMjZhKTtcbiYjNDM7XHRyZXN1bHQgXHUwMDI2PSBlcnIgPT0gMCBcdTAwMjZcdTAwMjYgKGludClhID09IDU7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9nZXRfZnVuY19hcmcoY3R4LCAxLCBcdTAwMjZhdXgpO1xuJiM0MztcdCphdXhfYXJnID0gYXV4O1xuJiM0MztcdHJlc3VsdCBcdTAwMjY9IGVyciA9PSAwIFx1MDAyNlx1MDAyNiBhdXggIT0gMDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDIsIFx1MDAyNnopO1xuJiM0MztcdHJlc3VsdCBcdTAwMjY9IGVyciA9PSAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVzdWx0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztfX3U2NCBmZW50cnlfcmVzdWx0O1xuJiM0MztfX3U2NCBmZW50cnlfYXJnX2NudDtcbiYjNDM7X191NjQgZmVudHJ5X2F1eF9hcmc7XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7ZmVudHJ5L2JwZl9rZnVuY19pbXBsaWNpdF9hcmdcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyh0cmFjZV9pbXBsaWNpdF9hcmdfZmVudHJ5KVxuJiM0Mzt7XG4mIzQzO1x0X191NjQgcmV0ID0gMDtcbiYjNDM7XHRfX3M2NCBlcnI7XG4mIzQzO1xuJiM0MztcdGZlbnRyeV9yZXN1bHQgPSBjaGVja19pbXBsaWNpdF9hcmdzKGN0eCwgXHUwMDI2ZmVudHJ5X2FyZ19jbnQsIFx1MDAyNmZlbnRyeV9hdXhfYXJnKTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX2dldF9mdW5jX3JldChjdHgsIFx1MDAyNnJldCk7XG4mIzQzO1x0ZmVudHJ5X3Jlc3VsdCBcdTAwMjY9IGVyciA9PSAtRU9QTk9UU1VQUDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fdTY0IGZleGl0X3Jlc3VsdDtcbiYjNDM7X191NjQgZmV4aXRfYXJnX2NudDtcbiYjNDM7X191NjQgZmV4aXRfYXV4X2FyZztcbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtmZXhpdC9icGZfa2Z1bmNfaW1wbGljaXRfYXJnXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0codHJhY2VfaW1wbGljaXRfYXJnX2ZleGl0KVxuJiM0Mzt7XG4mIzQzO1x0X191NjQgcmV0ID0gMDtcbiYjNDM7XHRfX3M2NCBlcnI7XG4mIzQzO1xuJiM0MztcdGZleGl0X3Jlc3VsdCA9IGNoZWNrX2ltcGxpY2l0X2FyZ3MoY3R4LCBcdTAwMjZmZXhpdF9hcmdfY250LCBcdTAwMjZmZXhpdF9hdXhfYXJnKTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX2dldF9mdW5jX3JldChjdHgsIFx1MDAyNnJldCk7XG4mIzQzO1x0ZmV4aXRfcmVzdWx0IFx1MDAyNj0gZXJyID09IDAgXHUwMDI2XHUwMDI2IHJldCA9PSA1O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3N5c2NhbGxcJiMzNDspXG4mIzQzO2ludCB0cmlnZ2VyX2ltcGxpY2l0X2FyZyh2b2lkICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyg1KTtcbiYjNDM7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE3OjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MmIzM0OywKICAgICYjMzQ7YnRmX2F0dGFjaF9mdW5jX3Byb3RvJiMzNDssCiAgICAmIzM0O2ZpbmRfa2Z1bmNfaW1wbF9wcm90byYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2YgYSB0cmFjZSB0YXJnZXQmIzM5O3MgcmVhbCBBQkkgZm9yIGBLRl9JTVBMSUNJVF9BUkdTYCBrZnVuY3MuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgZm9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zIHRvIGtmdW5jcywgd2hpY2ggaXMgaGlnaGx5IHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWEzNjQ5YzhjM2VmNzhkMTNhYWYwOTBhOWNkY2ZhYzRkODgxNDE3YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDExIDE3OjAzOjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idGYuaCBiL2luY2x1ZGUvbGludXgvYnRmLmgKaW5kZXggMjQwNDAxZDliMjViOWUuLmM1MjI0NWFlMGRmNWQ3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2J0Zi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYnRmLmgKQEAgLTU3OCw2ICYjNDM7NTc4LDcgQEAgY29uc3QgY2hhciAqYnRmX3N0cl9ieV9vZmZzZXQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgb2Zmc2V0KTsKIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZV92bWxpbnV4KHZvaWQpOwogc3RydWN0IGJ0ZiAqYnBmX3Byb2dfZ2V0X3RhcmdldF9idGYoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTsKIHUzMiAqYnRmX2tmdW5jX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTsKJiM0Mzt1MzIgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCk7CiBib29sIGJ0Zl9rZnVuY19pc19hbGxvd2VkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTsKIHUzMiAqYnRmX2tmdW5jX2lzX21vZGlmeV9yZXR1cm4oY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLAogCQkJCWNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7CmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2J0Zi5jIGIva2VybmVsL2JwZi9idGYuYwppbmRleCA2NDU3MmY4NWVkYzgzMi4uMjBhZWNhNmI0Zjk1YzkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvYnRmLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9idGYuYwpAQCAtOTExNCw2ICYjNDM7OTExNCwyNiBAQCB1MzIgKmJ0Zl9rZnVuY19mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcAogCXJldHVybiBidGZfa2Z1bmNfaWRfc2V0X2NvbnRhaW5zKGJ0ZiwgaG9vaywga2Z1bmNfYnRmX2lkKTsKIH0KIAomIzQzOy8qCiYjNDM7ICogUmV0dXJuIHRoZSB1bmlvbiBvZiBhIGtmdW5jJiMzOTtzIGZsYWdzIGFjcm9zcyBhbGwgaG9va3MuCiYjNDM7ICogVW5saWtlIGJ0Zl9rZnVuY19mbGFncygpLCBub3QgcmVzdHJpY3RlZCB0byBhIGNhbGxpbmcKJiM0MzsgKiBwcm9ncmFtJiMzOTtzIGhvb2suIFVzZWQgd2hlbiBhdHRhY2hpbmcgdG8gYSBrZnVuYyBmb3IgdHJhY2luZy4KJiM0MzsgKi8KJiM0Mzt1MzIgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCkKJiM0Mzt7CiYjNDM7CWVudW0gYnRmX2tmdW5jX2hvb2sgaG9vazsKJiM0MzsJdTMyICpob29rX2ZsYWdzOwomIzQzOwl1MzIgZmxhZ3MgPSAwOwomIzQzOwomIzQzOwlmb3IgKGhvb2sgPSAwOyBob29rICZsdDsgQlRGX0tGVU5DX0hPT0tfTUFYOyBob29rJiM0MzsmIzQzOykgewomIzQzOwkJaG9va19mbGFncyA9IGJ0Zl9rZnVuY19pZF9zZXRfY29udGFpbnMoYnRmLCBob29rLCBrZnVuY19idGZfaWQpOwomIzQzOwkJaWYgKGhvb2tfZmxhZ3MpCiYjNDM7CQkJZmxhZ3MgfD0gKmhvb2tfZmxhZ3M7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIGZsYWdzOwomIzQzO30KJiM0MzsKIHUzMiAqYnRmX2tmdW5jX2lzX21vZGlmeV9yZXR1cm4oY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLAogCQkJCWNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZykKIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCA2NTE1ZDRkM2MwMDMyZi4uMmY1NmFiOGQ2YjU4YzkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTI1ODQsMjQgJiM0MzsyNTg0LDI0IEBAIHN0YXRpYyBzdHJ1Y3QgYnRmICpmaW5kX2tmdW5jX2Rlc2NfYnRmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMxNiBvZmZzZXQpCiAKICNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggJiMzNDtfaW1wbCYjMzQ7CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAotCQkJCQkJICAgIHN0cnVjdCBidGYgKmJ0ZiwKLQkJCQkJCSAgICBjb25zdCBjaGFyICpmdW5jX25hbWUpCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqCiYjNDM7ZmluZF9rZnVuY19pbXBsX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgY29uc3QgY2hhciAqZnVuY19uYW1lKQogewotCWNoYXIgKmJ1ZiA9IGVudi0mZ3Q7dG1wX3N0cl9idWY7CiAJY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jOwomIzQzOwljaGFyIGJ1ZltLU1lNX05BTUVfTEVOXTsKIAlzMzIgaW1wbF9pZDsKIAlpbnQgbGVuOwogCi0JbGVuID0gc25wcmludGYoYnVmLCBUTVBfU1RSX0JVRl9MRU4sICYjMzQ7JXMlcyYjMzQ7LCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTsKLQlpZiAobGVuICZsdDsgMCB8fCBsZW4gJmd0Oz0gVE1QX1NUUl9CVUZfTEVOKSB7Ci0JCXZlcmJvc2UoZW52LCAmIzM0O2Z1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xuJiMzNDssIGZ1bmNfbmFtZSwgS0ZfSU1QTF9TVUZGSVgpOwomIzQzOwlsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAmIzM0OyVzJXMmIzM0OywgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7CiYjNDM7CWlmIChsZW4gJmx0OyAwIHx8IGxlbiAmZ3Q7PSBzaXplb2YoYnVmKSkgewomIzQzOwkJYnBmX2xvZyhsb2csICYjMzQ7ZnVuY3Rpb24gbmFtZSAlcyVzIGlzIHRvbyBsb25nXG4mIzM0OywKJiM0MzsJCQlmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCiAJaW1wbF9pZCA9IGJ0Zl9maW5kX2J5X25hbWVfa2luZChidGYsIGJ1ZiwgQlRGX0tJTkRfRlVOQyk7CiAJaWYgKGltcGxfaWQgJmx0Oz0gMCkgewotCQl2ZXJib3NlKGVudiwgJiMzNDtjYW5ub3QgZmluZCBmdW5jdGlvbiAlcyBpbiBCVEZcbiYjMzQ7LCBidWYpOwomIzQzOwkJYnBmX2xvZyhsb2csICYjMzQ7Y2Fubm90IGZpbmQgZnVuY3Rpb24gJXMgaW4gQlRGXG4mIzM0OywgYnVmKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC0yNjUzLDcgJiM0MzsyNjUzLDcgQEAgc3RhdGljIGludCBmZXRjaF9rZnVuY19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJICogY2FuIGJlIGZvdW5kIHRocm91Z2ggdGhlIGNvdW50ZXJwYXJ0IF9pbXBsIGtmdW5jLgogCSAqLwogCWlmIChrZnVuY19mbGFncyAmYW1wOyZhbXA7ICgqa2Z1bmNfZmxhZ3MgJmFtcDsgS0ZfSU1QTElDSVRfQVJHUykpCi0JCWZ1bmNfcHJvdG8gPSBmaW5kX2tmdW5jX2ltcGxfcHJvdG8oZW52LCBidGYsIGZ1bmNfbmFtZSk7CiYjNDM7CQlmdW5jX3Byb3RvID0gZmluZF9rZnVuY19pbXBsX3Byb3RvKCZhbXA7ZW52LSZndDtsb2csIGJ0ZiwgZnVuY19uYW1lKTsKIAllbHNlCiAJCWZ1bmNfcHJvdG8gPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtJmd0O3R5cGUpOwogCkBAIC0xODg3Myw2ICYjNDM7MTg4NzMsNDQgQEAgc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGIKIAlyZXR1cm4gLUVJTlZBTDsKIH0KIAomIzQzOy8qCiYjNDM7ICogUmVzb2x2ZSB0aGUgcHJvdG90eXBlIGRlc2NyaWJpbmcgYSB0cmFjZSB0YXJnZXQmIzM5O3MgcmVhbCBBQkkuIEEKJiM0MzsgKiBLRl9JTVBMSUNJVF9BUkdTIGtmdW5jIGhhcyBpdHMgaW5qZWN0ZWQgYXJncyBzdHJpcHBlZCBmcm9tIHRoZSBwdWJsaWMKJiM0MzsgKiBwcm90b3R5cGUsIHNvIHVzZSB0aGUgX2ltcGwgcHJvdG90eXBlOyBvdGhlciB0YXJnZXRzIHVzZSB0aGVpciBvd24uCiYjNDM7ICovCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqCiYjNDM7YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZ1bmM7CiYjNDM7CXN0cnVjdCBtb2R1bGUgKm1vZCA9IE5VTEw7CiYjNDM7CWNvbnN0IGNoYXIgKm5hbWU7CiYjNDM7CXUzMiBrZnVuY19mbGFnczsKJiM0MzsKJiM0MzsJZnVuYyA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgZnVuY19pZCk7CiYjNDM7CWlmICghZnVuYyB8fCAhYnRmX3R5cGVfaXNfZnVuYyhmdW5jKSkKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MoKSByZWFkcyBrZnVuY19zZXRfdGFiLCB3aGljaCBmb3IgYQomIzQzOwkgKiBtb2R1bGUgaXMgc3RhYmxlIG9ubHkgb25jZSBpdCBpcyBsaXZlOyBob2xkIGEgbW9kdWxlIHJlZiBhY3Jvc3MKJiM0MzsJICogdGhlIHJlYWQgdG8gZXhjbHVkZSBhIGNvbmN1cnJlbnQgbW9kdWxlIGxvYWQuCiYjNDM7CSAqLwomIzQzOwlpZiAoYnRmX2lzX21vZHVsZShidGYpKSB7CiYjNDM7CQltb2QgPSBidGZfdHJ5X2dldF9tb2R1bGUoYnRmKTsKJiM0MzsJCWlmICghbW9kKQomIzQzOwkJCXJldHVybiBOVUxMOwomIzQzOwl9CiYjNDM7CWtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7CiYjNDM7CW1vZHVsZV9wdXQobW9kKTsKJiM0MzsKJiM0MzsJaWYgKGtmdW5jX2ZsYWdzICZhbXA7IEtGX0lNUExJQ0lUX0FSR1MpIHsKJiM0MzsJCW5hbWUgPSBidGZfbmFtZV9ieV9vZmZzZXQoYnRmLCBmdW5jLSZndDtuYW1lX29mZik7CiYjNDM7CQlyZXR1cm4gZmluZF9rZnVuY19pbXBsX3Byb3RvKGxvZywgYnRmLCBuYW1lKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLSZndDt0eXBlKTsKJiM0Mzt9CiYjNDM7CiBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywKIAkJCSAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csCiAJCQkgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZywKQEAgLTE5MTIxLDggJiM0MzsxOTE1OSw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLAogCQlpZiAocHJvZ19leHRlbnNpb24gJmFtcDsmYW1wOwogCQkgICAgYnRmX2NoZWNrX3R5cGVfbWF0Y2gobG9nLCBwcm9nLCBidGYsIHQpKQogCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCXQgPSBidGZfdHlwZV9ieV9pZChidGYsIHQtJmd0O3R5cGUpOwotCQlpZiAoIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpCiYjNDM7CQl0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKGxvZywgYnRmLCBidGZfaWQpOwomIzQzOwkJaWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJaWYgKChwcm9nLSZndDthdXgtJmd0O3NhdmVkX2RzdF9wcm9nX3R5cGUgfHwgcHJvZy0mZ3Q7YXV4LSZndDtzYXZlZF9kc3RfYXR0YWNoX3R5cGUpICZhbXA7JmFtcDsKQEAgLTE5NDA3LDggJiM0MzsxOTQ0NSw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0CiAJCXJldHVybiAtRUlOVkFMOwogCWlmICghYnRmX3R5cGVfaXNfZnVuYyh0KSkKIAkJcmV0dXJuIC1FSU5WQUw7Ci0JdCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgdC0mZ3Q7dHlwZSk7Ci0JaWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKQomIzQzOwl0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgYnRmX2lkKTsKJiM0MzsJaWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAllcnIgPSBidGZfZGlzdGlsbF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgdCwgdG5hbWUsICZhbXA7dGd0X2luZm8tJmd0O2Ztb2RlbCk7CiAJaWYgKGVyciAmbHQ7IDApCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi42MWNjNWFhYmEwMjU0ZAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jCkBAIC0wLDAgJiM0MzsxLDM2IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3Rlc3RfcHJvZ3MuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5za2VsLmgmIzM0OwomIzQzOwomIzQzO3ZvaWQgdGVzdF9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7CiYjNDM7CUxJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyk7CiYjNDM7CWludCBlcnIsIGZkOwomIzQzOwomIzQzOwlza2VsID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O29wZW5fYW5kX2xvYWQmIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWVyciA9IGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fYXR0YWNoKHNrZWwpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7YXR0YWNoJiMzNDspKQomIzQzOwkJZ290byBjbGVhbnVwOwomIzQzOwomIzQzOwlmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLSZndDtwcm9ncy50cmlnZ2VyX2ltcGxpY2l0X2FyZyk7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsICZhbXA7dG9wdHMpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7dGVzdF9ydW4mIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CUFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIDUsICYjMzQ7a2Z1bmNfcmV0dmFsJiMzNDspOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtmZW50cnlfYXJnX2NudCwgMiwgJiMzNDtmZW50cnlfYXJnX2NudCYjMzQ7KTsKJiM0MzsJQVNTRVJUX05FUShza2VsLSZndDtic3MtJmd0O2ZlbnRyeV9hdXhfYXJnLCAwLCAmIzM0O2ZlbnRyeV9hdXhfYXJnJiMzNDspOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtmZW50cnlfcmVzdWx0LCAxLCAmIzM0O2ZlbnRyeV9yZXN1bHQmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShza2VsLSZndDtic3MtJmd0O2ZleGl0X2FyZ19jbnQsIDIsICYjMzQ7ZmV4aXRfYXJnX2NudCYjMzQ7KTsKJiM0MzsJQVNTRVJUX05FUShza2VsLSZndDtic3MtJmd0O2ZleGl0X2F1eF9hcmcsIDAsICYjMzQ7ZmV4aXRfYXV4X2FyZyYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7ZmV4aXRfcmVzdWx0LCAxLCAmIzM0O2ZleGl0X3Jlc3VsdCYjMzQ7KTsKJiM0MzsKJiM0MztjbGVhbnVwOgomIzQzOwlrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2Rlc3Ryb3koc2tlbCk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi45OTVmOGI4YjViOWU4ZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYwpAQCAtMCwwICYjNDM7MSw3NyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDt2bWxpbnV4LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDticGYvYnBmX3RyYWNpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7ZXJybm8uaCZndDsKJiM0MzsKJiM0MztleHRlcm4gaW50IGJwZl9rZnVuY19pbXBsaWNpdF9hcmcoaW50IGEpIF9fd2VhayBfX2tzeW07CiYjNDM7CiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwomIzQzOwomIzQzOy8qIFNoYXJlZCBhcmcgY2hlY2tzOyByZXBvcnRzIGFyZyBjb3VudCBhbmQgYXV4LCByZXR1cm5zIDEgb24gc3VjY2Vzcy4gKi8KJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIF9fdTY0CiYjNDM7Y2hlY2tfaW1wbGljaXRfYXJncyh2b2lkICpjdHgsIF9fdTY0ICphcmdfY250LCBfX3U2NCAqYXV4X2FyZykKJiM0Mzt7CiYjNDM7CV9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDsKJiM0MzsJX191NjQgcmVzdWx0OwomIzQzOwlfX3M2NCBlcnI7CiYjNDM7CiYjNDM7CSphcmdfY250ID0gYnBmX2dldF9mdW5jX2FyZ19jbnQoY3R4KTsKJiM0MzsJcmVzdWx0ID0gKmFyZ19jbnQgPT0gMjsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDAsICZhbXA7YSk7CiYjNDM7CXJlc3VsdCAmYW1wOz0gZXJyID09IDAgJmFtcDsmYW1wOyAoaW50KWEgPT0gNTsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDEsICZhbXA7YXV4KTsKJiM0MzsJKmF1eF9hcmcgPSBhdXg7CiYjNDM7CXJlc3VsdCAmYW1wOz0gZXJyID09IDAgJmFtcDsmYW1wOyBhdXggIT0gMDsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDIsICZhbXA7eik7CiYjNDM7CXJlc3VsdCAmYW1wOz0gZXJyID09IC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJldHVybiByZXN1bHQ7CiYjNDM7fQomIzQzOwomIzQzO19fdTY0IGZlbnRyeV9yZXN1bHQ7CiYjNDM7X191NjQgZmVudHJ5X2FyZ19jbnQ7CiYjNDM7X191NjQgZmVudHJ5X2F1eF9hcmc7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7ZmVudHJ5L2JwZl9rZnVuY19pbXBsaWNpdF9hcmcmIzM0OykKJiM0MztpbnQgQlBGX1BST0codHJhY2VfaW1wbGljaXRfYXJnX2ZlbnRyeSkKJiM0Mzt7CiYjNDM7CV9fdTY0IHJldCA9IDA7CiYjNDM7CV9fczY0IGVycjsKJiM0MzsKJiM0MzsJZmVudHJ5X3Jlc3VsdCA9IGNoZWNrX2ltcGxpY2l0X2FyZ3MoY3R4LCAmYW1wO2ZlbnRyeV9hcmdfY250LCAmYW1wO2ZlbnRyeV9hdXhfYXJnKTsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX3JldChjdHgsICZhbXA7cmV0KTsKJiM0MzsJZmVudHJ5X3Jlc3VsdCAmYW1wOz0gZXJyID09IC1FT1BOT1RTVVBQOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7X191NjQgZmV4aXRfcmVzdWx0OwomIzQzO19fdTY0IGZleGl0X2FyZ19jbnQ7CiYjNDM7X191NjQgZmV4aXRfYXV4X2FyZzsKJiM0MzsKJiM0MztTRUMoJiMzNDtmZXhpdC9icGZfa2Z1bmNfaW1wbGljaXRfYXJnJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZXhpdCkKJiM0Mzt7CiYjNDM7CV9fdTY0IHJldCA9IDA7CiYjNDM7CV9fczY0IGVycjsKJiM0MzsKJiM0MzsJZmV4aXRfcmVzdWx0ID0gY2hlY2tfaW1wbGljaXRfYXJncyhjdHgsICZhbXA7ZmV4aXRfYXJnX2NudCwgJmFtcDtmZXhpdF9hdXhfYXJnKTsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX3JldChjdHgsICZhbXA7cmV0KTsKJiM0MzsJZmV4aXRfcmVzdWx0ICZhbXA7PSBlcnIgPT0gMCAmYW1wOyZhbXA7IHJldCA9PSA1OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQomIzQzO2ludCB0cmlnZ2VyX2ltcGxpY2l0X2FyZyh2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlyZXR1cm4gYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyg1KTsKJiM0Mzt9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE3OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MzMKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgQlRGL0JQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgQlRGIGFuZCBCUEYgdmVyaWZpZXIgbG9naWMuIEl0JiMzOTtzIGludHJvZHVjaW5nIGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgIGFuZCB1c2luZyBpdCB0byBuYWlsIGRvd24gdGhlIHJlYWwgQUJJIGZvciB0cmFjZSB0YXJnZXRzIHdpdGhpbiBgS0ZfSU1QTElDSVRfQVJHU2Aga2Z1bmNzLiBTZWVtcyBwcmV0dHkgdGFyZ2V0ZWQsIGJ1dCB0aGUgZmFjdCB0aGF0IGl04oCZcyBtb2RpZnlpbmcgdGhlIHZlcmlmaWVyIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCB0b3VjaGluZyBga2VybmVsL2JwZi9idGYuY2AsIGltbWVkaWF0ZWx5IHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldC4mIzM0OyBUaGlzIGlzIGNvcmUgc3R1ZmYgdGhhdCYjMzk7cyBoaWdobHkgcmVhY2hhYmxlIGFuZCBnZXRzIGEgbG90IG9mIGF0dGVudGlvbiBmcm9tIHRvb2xzIGxpa2Ugc3l6a2FsbGVyLCBzbyBpdCYjMzk7cyBwcm9iYWJseSB3b3J0aCB0aGUgZWZmb3J0LgoKTGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBhZmZlY3RlZC4gSSYjMzk7bSBzZWVpbmc6CgoqICAgYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AgKHRoaXMgaXMgdGhlIG5ldyBvbmUsIHNvIHByaW1lIHN1c3BlY3QpCiogICBgZmluZF9rZnVuY19pbXBsX3Byb3RvYCAobW9kaWZpZWQgLSBhbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2spCiogICBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCAoYWxzbyBuZXcsIGdvdHRhIGNoZWNrIGl0IG91dCkKKiAgIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgKG1vZGlmaWVkIC0gY2hhbmdlcyBoZXJlIGNhbiBiZSBzdWJ0bGUpCiogICBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIChtb2RpZmllZCAtIHNpbWlsYXIgcmVhc29uaW5nKQoKSSYjMzk7bGwgY2hlY2sgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2J0Zi5jYCBmb3IgYW55IGBDT05GSUdgIG9wdGlvbnMgdGhhdCBtaWdodCBnYXRlIHRoZSBuZXcgY29kZSBvciBjaGFuZ2UgdGhlIGVudmlyb25tZW50LiBCUEYgdXN1YWxseSByZXF1aXJlcyBgQ09ORklHX0JQRl9TWVNDQUxMYCwgb2YgY291cnNlLCBidXQgaXQmIzM5O3Mgd29ydGggYSBxdWljayBzY2FuLiBMZXQmIzM5O3Mgc2VlIGlmIGBLRl9JTVBMSUNJVF9BUkdTYCBpcyBjb25kaXRpb25hbGl6ZWQgYW55d2hlcmUuIExldCBtZSBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIGhvdyB0aGlzIGBLRl9JTVBMSUNJVF9BUkdTYCB0aGluZyBpcyBhY3R1YWxseSB1c2VkIGFuZCBkZWZpbmVkIGluIHRoZSBjb2RlIGJhc2Ug4oCTIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdG8gdHJpZ2dlciB0aGUgbmV3IGNvZGUgcGF0aHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S0ZfSU1QTElDSVRfQVJHUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0PTM4Mz10aG9zZSBrZnVuY3MgaWYgYW5kIHdoZW4gc3VjaCBkaXNjdXNzaW9ucyBvY2N1ci5cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg0LVxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdDozODU6Mi41LjkgS0ZfSU1QTElDSVRfQVJHUyBmbGFnXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4Ni0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg3LVxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdDozODg6VGhlIEtGX0lNUExJQ0lUX0FSR1MgZmxhZyBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIEJQRiBzaWduYXR1cmVcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg5LW9mIHRoZSBrZnVuYyBpcyBkaWZmZXJlbnQgZnJvbSBpdCYjMzk7cyBrZXJuZWwgc2lnbmF0dXJlLCBhbmQgdGhlIHZhbHVlc1xuLS1cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q9MzkzPUN1cnJlbnRseSBvbmx5IGBgc3RydWN0IGJwZl9wcm9nX2F1eCAqYGAgdHlwZSBpcyBzdXBwb3J0ZWQuXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM5NC1cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6Mzk1OkEga2Z1bmMgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIGZsYWcgdGhlcmVmb3JlIGhhcyB0d28gdHlwZXMgaW4gQlRGOiBvbmVcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzk2LWZ1bmN0aW9uIG1hdGNoaW5nIHRoZSBrZXJuZWwgZGVjbGFyYXRpb24gKHdpdGggX2ltcGwgc3VmZml4IGluIHRoZVxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jaGFuZ2VzLnJzdD0xNDg9bW9kdWxlcyBhcyB3ZWxsLiAgVGhpcyByZXF1aXJlcyBwYWhvbGUgdjEuMjIgb3IgbGF0ZXIuXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY2hhbmdlcy5yc3QtMTQ5LVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NoYW5nZXMucnN0OjE1MDpTaW5jZSBMaW51eCA3LjAsIGtmdW5jcyBhbm5vdGF0ZWQgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIHJlcXVpcmUgcGFob2xlIHYxLjI2XG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY2hhbmdlcy5yc3QtMTUxLW9yIGxhdGVyLiAgV2l0aG91dCBpdCwgc3VjaCBrZnVuY3Mgd2lsbCBoYXZlIGluY29ycmVjdCBCVEYgcHJvdG90eXBlcyBpblxuLS1cbmluY2x1ZGUvbGludXgvYnRmLmgtODAtI2RlZmluZSBLRl9BUkVOQV9BUkcyICAgKDEgXHUwMDNjXHUwMDNjIDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi9cbmluY2x1ZGUvbGludXgvYnRmLmg6ODE6I2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cbmluY2x1ZGUvbGludXgvYnRmLmgtODItXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgwND1CVEZfSURfRkxBR1MoZnVuYywgY3Jhc2hfa2V4ZWMsIEtGX0RFU1RSVUNUSVZFKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwNS0jZW5kaWZcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwNy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9uZXdfaW1wbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgwODpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfbmV3LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwOS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfbmV3X2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTA6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfZHJvcCwgS0ZfUkVMRUFTRSB8IEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODExLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfb2JqX2Ryb3BfaW1wbCwgS0ZfUkVMRUFTRSlcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTI6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxMy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSB8IEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODE1LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxNy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxODpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxOS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrX2ltcGwpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODIwOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9hZGQsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODIxLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfZnJvbnQsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00ODMxPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JlbW92ZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgzMjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGQsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODMzLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZF9pbXBsKVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ5MTQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl93cV9pbml0KVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDkxNTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3NldF9jYWxsYmFjaywgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5MTYtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl93cV9zdGFydClcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00OTYyPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjMtI2VuZGlmXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY0OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2NjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjgtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfZnJvbV9maWxlKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yNjEzPXN0YXRpYyBpbnQgZmV0Y2hfa2Z1bmNfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjUxLVx0Lypcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyNjUyOlx0ICogQW4gYWN0dWFsIHByb3RvdHlwZSBvZiBhIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBmbGFnXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1My1cdCAqIGNhbiBiZSBmb3VuZCB0aHJvdWdoIHRoZSBjb3VudGVycGFydCBfaW1wbCBrZnVuYy5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjU0LVx0ICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjY1NTpcdGlmIChrZnVuY19mbGFncyBcdTAwMjZcdTAwMjYgKCprZnVuY19mbGFncyBcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1Ni1cdFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhcdTAwMjZlbnYtXHUwMDNlbG9nLCBidGYsIGZ1bmNfbmFtZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwOTA0PXN0YXRpYyBib29sIGlzX2tmdW5jX2FyZ19wcm9nX2F1eChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKmFyZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MDktLypcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDkxMDogKiBBIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBoYXMgdHdvIHByb3RvdHlwZXMgaW4gQlRGOlxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTExLSAqICAgLSB0aGUgX2ltcGwgcHJvdG90eXBlIHdpdGggZnVsbCBhcmcgbGlzdCAobWV0YS1cdTAwM2VmdW5jX3Byb3RvKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDkxNj1zdGF0aWMgYm9vbCBpc19rZnVuY19hcmdfaW1wbGljaXQoY29uc3Qgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLCB1MzIgYXJnX2lkeClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MjAtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5MjE6XHRpZiAoIShtZXRhLVx1MDAzZWtmdW5jX2ZsYWdzIFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkyMi1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODgyNz1zdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODc3LSAqIFJlc29sdmUgdGhlIHByb3RvdHlwZSBkZXNjcmliaW5nIGEgdHJhY2UgdGFyZ2V0JiMzOTtzIHJlYWwgQUJJLiBBXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTg4Nzg6ICogS0ZfSU1QTElDSVRfQVJHUyBrZnVuYyBoYXMgaXRzIGluamVjdGVkIGFyZ3Mgc3RyaXBwZWQgZnJvbSB0aGUgcHVibGljXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg4NzktICogcHJvdG90eXBlLCBzbyB1c2UgdGhlIF9pbXBsIHByb3RvdHlwZTsgb3RoZXIgdGFyZ2V0cyB1c2UgdGhlaXIgb3duLlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODg4Mj1idGZfYXR0YWNoX2Z1bmNfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgZnVuY19pZClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg5MDUtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTg5MDY6XHRpZiAoa2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODkwNy1cdFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXHUwMDNlbmFtZV9vZmYpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM9NjgzPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19pbml0KVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzo2ODQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY2lkX292ZXJyaWRlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU0xFRVBBQkxFKVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy02ODUtQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc19pbml0KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM9NjkzPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19jaWQpXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjY5NDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRfdG9fY3B1LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzo2OTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3RvX2NpZCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Njk2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF90b3BvLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy02OTctQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc19jaWQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz04NzM4PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19lbnF1ZXVlX2Rpc3BhdGNoKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NzM5OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9pbnNlcnQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3NDA6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX2luc2VydF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NzQxOkJURl9JRF9GTEFHUyhmdW5jLCBfX3NjeF9icGZfZHNxX2luc2VydF92dGltZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODc0Mi1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfaW5zZXJ0X3Z0aW1lLCBLRl9SQ1UpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MTAzPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19kaXNwYXRjaClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kaXNwYXRjaF9ucl9zbG90cywgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kaXNwYXRjaF9jYW5jZWwsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkxMDY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX21vdmVfdG9fbG9jYWwsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkxMDc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX21vdmVfdG9fbG9jYWxfX192MiwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTEwOC0vKiBzY3hfYnBmX2RzcV9tb3ZlKigpIGFsc28gaW4gc2N4X2tmdW5jX2lkc191bmxvY2tlZDogY2FsbGFibGUgZnJvbSB1bmxvY2tlZCBjb250ZXh0cyAqL1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTExMj1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV92dGltZSwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTEzLSNpZmRlZiBDT05GSUdfRVhUX1NVQl9TQ0hFRFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTE0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3N1Yl9kaXNwYXRjaCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTExNS0jZW5kaWZcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTkxNTI9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2NwdV9yZWxlYXNlKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTUzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3JlZW5xdWV1ZV9sb2NhbCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTE1NC1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NwdV9yZWxlYXNlKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTIyMT1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfdW5sb2NrZWQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkyMjI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3JlYXRlX2RzcSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NMRUVQQUJMRSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTIyMy0vKiBhbHNvIGluIHNjeF9rZnVuY19pZHNfZGlzcGF0Y2g6IGFsc28gY2FsbGFibGUgZnJvbSBvcHMuZGlzcGF0Y2goKSAqL1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTIyNz1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV92dGltZSwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MjI4LS8qIGFsc28gaW4gc2N4X2tmdW5jX2lkc19zZWxlY3RfY3B1OiBhbHNvIGNhbGxhYmxlIGZyb20gb3BzLnNlbGVjdF9jcHUoKS9vcHMuZW5xdWV1ZSgpICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkyMjk6QlRGX0lEX0ZMQUdTKGZ1bmMsIF9fc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTIzMC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MjMxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfZGZsLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MjMyLUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfdW5sb2NrZWQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDM4Mj1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfYW55KVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM4MzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX3NldF9zbGljZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfc2V0X2RzcV92dGltZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2tpY2tfY3B1LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM4NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NpZCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX25yX3F1ZXVlZCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODg6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZGVzdHJveV9kc3EsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg5OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9wZWVrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVX1BST1RFQ1RFRCB8IEtGX1JFVF9OVUxMKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfcmVlbnEsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzkxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3JlZW5xdWV1ZV9sb2NhbF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5MjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfc2N4X2RzcV9uZXcsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9JVEVSX05FVyB8IEtGX1JDVV9QUk9URUNURUQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwMzkzLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDM5ND1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfc2N4X2RzcV9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzk1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2V4aXRfYnN0ciwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXJyb3JfYnN0ciwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHVtcF9ic3RyLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX2NhcCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDAwOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfc2V0LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQwMTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRwZXJmX2NhcCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MDI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY2lkcGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDAzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZHBlcmZfc2V0LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQwNC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9ucl9ub2RlX2lkcylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNDE0PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfY2lkLCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDE1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9ycSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfbG9ja2VkX3JxLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDE3OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9jdXJyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1VfUFJPVEVDVEVEKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQxODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRfY3VyciwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0MTktQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGlkX3RvX3Rhc2ssIEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNDIxPUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2V2ZW50cylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0MjItI2lmZGVmIENPTkZJR19DR1JPVVBfU0NIRURcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MjM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGFza19jZ3JvdXAsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UgfCBLRl9BQ1FVSVJFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQyNC0jZW5kaWZcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNDQ3PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19jcHVfb25seSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NDg6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfa2lja19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDQ5LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfY3B1LCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDUwOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9ycSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X2N1cnIsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVV9QUk9URUNURUQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDUyOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1MzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX2NhcCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDU1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfc2V0LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQ1Ni1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfcG9zc2libGVfY3B1bWFzaywgS0ZfQUNRVUlSRSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNDU4PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9jcHVtYXNrLCBLRl9SRUxFQVNFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1OTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2RmbCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjA6QlRGX0lEX0ZMQUdTKGZ1bmMsIF9fc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0NjEtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc2VsZWN0X2NwdV9hbmQsIEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfY3B1bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDYzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX2NwdW1hc2tfbm9kZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX3NtdG1hc2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9zbXRtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQ2Ni1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9wdXRfaWRsZV9jcHVtYXNrLCBLRl9SRUxFQVNFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90ZXN0X2FuZF9jbGVhcl9jcHVfaWRsZSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0Njg6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19pZGxlX2NwdSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0Njk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19pZGxlX2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ3MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDcxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfYW55X2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQ3Mi1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NwdV9vbmx5KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTE0NjQ9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2lkbGUpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDY1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9jcHVtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9jcHVtYXNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0Njg6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFza19ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0Njk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDcwLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9pZGxlX2NwdW1hc2ssIEtGX1JFTEVBU0UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDcxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rlc3RfYW5kX2NsZWFyX2NwdV9pZGxlLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3MjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDczOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfaWRsZV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDc0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfYW55X2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDc2LUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfaWRsZSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYz0xNDk1PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19zZWxlY3RfY3B1KVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ5NjpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTQ5Ny1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ5ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2RmbCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTE0OTktQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc19zZWxlY3RfY3B1KVxuLS1cbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM9MTIyPXN0cnVjdCBvYmplY3Qge1xuLS1cbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTU0LVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYzoxNTU6I2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNilcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTU2LSNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggXCYjMzQ7X2ltcGxcJiMzNDtcbi0tXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jPTEwNjQ9c3RhdGljIGJvb2wgaXNfa2ZfaW1wbGljaXRfYXJnKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl9wYXJhbSAqcClcbi0tXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEwOTItLypcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM6MTA5MzogKiBGb3IgYSBrZnVuYyB3aXRoIEtGX0lNUExJQ0lUX0FSR1Mgd2UgZG8gdGhlIGZvbGxvd2luZzpcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTA5NC0gKiAgIDEuIEFkZCBhIG5ldyBmdW5jdGlvbiB3aXRoIF9pbXBsIHN1ZmZpeCBpbiB0aGUgbmFtZSwgd2l0aCB0aGUgcHJvdG90eXBlXG4tLVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMTA2LSAqXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jOjExMDc6ICogSWYgYSBrZnVuYyB3aXRoIEtGX0lNUExJQ0lUX0FSR1MgYWxyZWFkeSBoYXMgYW4gX2ltcGwgY291bnRlcnBhcnRcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTEwOC0gKiBpbiBCVEYsIHRoZW4gaXQmIzM5O3MgYSBsZWdhY3kgY2FzZTogYW4gX2ltcGwgZnVuY3Rpb24gaXMgZGVjbGFyZWQgaW4gdGhlXG4tLVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYz0xMjE0PXN0YXRpYyBpbnQgYnRmMmJ0ZihzdHJ1Y3Qgb2JqZWN0ICpvYmopXG4tLVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMjI1LVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYzoxMjI2Olx0XHRpZiAoIShrZnVuYy1cdTAwM2VmbGFncyBcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykpXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEyMjctXHRcdFx0Y29udGludWU7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYz0xNDA0PUJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfbXVsdGlfc3Rfb3BzX3Rlc3RfMSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX211bHRpX3N0X29wc190ZXN0XzFfYXNzb2MsIEtGX0lNUExJQ0lUX0FSR1MpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jOjE0MDY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19pbXBsaWNpdF9hcmcsIEtGX0lNUExJQ0lUX0FSR1MpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jOjE0MDc6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19pbXBsaWNpdF9hcmdfbGVnYWN5LCBLRl9JTVBMSUNJVF9BUkdTKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYy0xNDA4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfaW1wbGljaXRfYXJnX2xlZ2FjeV9pbXBsKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE3OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0ODI1CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUGxhbjogQlRGIEtGdW5jIEltcGxpY2l0IEFyZ3VtZW50cyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AgaW4gYGtlcm5lbC9icGYvYnRmLmNgLCBhbmQgaW1wb3J0YW50bHksIGl0JiMzOTtzIHVzZWQgd2l0aGluIGBidGZfYXR0YWNoX2Z1bmNfcHJvdG9gIHdoaWNoIGxpdmVzIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiAgVGhhdCBmdW5jdGlvbiBpcyB0aGVuIGNhbGxlZCBieSBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhlIHNlbGZ0ZXN0LCBga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNgLCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYWxsIGhhbmdzIHRvZ2V0aGVyLiBJdCByZWxpZXMgb24gYGJwZl9rZnVuY19pbXBsaWNpdF9hcmdgLCB3aGljaCBpcyBkZWZpbmVkIGluIGBicGZfdGVzdG1vZC5jYCwgYnV0IHRoYXQmIzM5O3MganVzdCBhIHRlc3QgaGVscGVyLgoKVGhlIGNvcmUgbG9naWMgSSBuZWVkIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nIGlzIGRlZmluaXRlbHkgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2J0Zi5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgZnVuY3Rpb25zIHVzaW5nIHRob3NlIGZsYWdzLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AsIGBidGZfYXR0YWNoX2Z1bmNfcHJvdG9gLCBhbmQgYGZpbmRfa2Z1bmNfaW1wbF9wcm90b2AuCgpGb3IgY29uZmlndXJhdGlvbiwgSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIGVuYWJsZSBgQlBGX1NZU0NBTExgIOKAkyB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsLiBgREVCVUdfSU5GT19CVEZgIGlzIGFsc28gcmVxdWlyZWQsIG9idmlvdXNseSwgZm9yIEJURiBzdXBwb3J0LiBTaW5jZSB0aGlzIGlzIHJlbGF0ZWQgdG8gdHJhY2luZywgSSYjMzk7bGwgbmVlZCBgQlBGX0VWRU5UU2AgdG9vLiAgYEJQRl9KSVRgIG1pZ2h0IGJlIGhlbHBmdWwsIGJ1dCBgQlBGX1NZU0NBTExgIGFsb25lIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGdldCB0aGluZ3Mgd29ya2luZyBmb3Igbm93LgoKSSBxdWlja2x5IGNoZWNrZWQgdGhlIGNvZGUgYW5kIHJlY29uZmlybWVkIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgcmVhY2hlZCB3aXRoIGBGVFJBQ0VgIGFuZCBgQlBGX0VWRU5UU2AuIFRoZSBgYnBmX3Rlc3Rtb2RgIG1vZHVsZSBpcyBqdXN0IGZvciB0aGUgdGVzdHMuIFRoZSByZWFsIGFjdGlvbiBoYXBwZW5zIGluIHRoZSBjb3JlIHZlcmlmaWVyIGFuZCBCVEYgY29kZS4gRXZlcnl0aGluZyBzZWVtcyBndWFyZGVkIGJ5IGBDT05GSUdfQlBGX1NZU0NBTExgLCBhbmQgYERFQlVHX0lORk9fQlRGYCBpcyBuZWVkZWQgZm9yIEJURiBpbiBnZW5lcmFsLiBTbywgSSBoYXZlIGEgc29saWQgY29uZmlndXJhdGlvbiBiYXNlbGluZS4gTm93LCB0aW1lIHRvIHN0YXJ0IGZ1enppbmcgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE3OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9jaGVja19hdHRhY2hfdGFyZ2V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTE2MT1pbnQgYnBmX2NoZWNrX2J0Zl9pbmZvKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xMTYzLVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaDoxMTY0OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xMTY1LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi9idGYuYz02ODQ4PWJvb2wgYnRmX2N0eF9hY2Nlc3MoaW50IG9mZiwgaW50IHNpemUsIGVudW0gYnBmX2FjY2Vzc190eXBlIHR5cGUsXG4tLVxua2VybmVsL2JwZi9idGYuYy03MDI1LVx0XHRcdHJldHVybiBmYWxzZTtcbmtlcm5lbC9icGYvYnRmLmM6NzAyNjpcdFx0LyogQ2hlY2tlZCBieSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCAqL1xua2VybmVsL2JwZi9idGYuYy03MDI3LVx0XHR0bmFtZSAmIzQzOz0gc2l6ZW9mKFwmIzM0O2J0Zl90cmFjZV9cJiMzNDspIC0gMTtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0zNjg5PXN0YXRpYyBpbnQgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM4MjEtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozODIyOlx0XHRlcnIgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChOVUxMLCBwcm9nLCB0Z3RfcHJvZywgYnRmX2lkLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzgyMy1cdFx0XHRcdFx0ICAgICAgXHUwMDI2dGd0X2luZm8pO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTEwNzY9aW50IGJwZl90cmFtcG9saW5lX2xpbmtfY2dyb3VwX3NoaW0oc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTEwODYtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxMDg3Olx0ZXJyID0gYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoTlVMTCwgcHJvZywgTlVMTCxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTEwODgtXHRcdFx0XHQgICAgICBwcm9nLVx1MDAzZWF1eC1cdTAwM2VhdHRhY2hfYnRmX2lkLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTg4OD1zdGF0aWMgaW50IHByb2Nlc3Nfa2ZfYXJnX3B0cl90b19yYnRyZWVfbm9kZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTg5OS0gKiBMU00gaG9va3MgYW5kIGl0ZXJzIChib3RoIHNsZWVwYWJsZSBhbmQgbm9uLXNsZWVwYWJsZSkgYXJlIHNhZmUuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE5MDA6ICogQW55IHNsZWVwYWJsZSBwcm9ncyBhcmUgYWxzbyBzYWZlIHNpbmNlIGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KCkgZW5mb3JjZVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTAxLSAqIHRoZW0gY2FuIG9ubHkgYmUgYXR0YWNoZWQgdG8gc29tZSBzcGVjaWZpYyBob29rIHBvaW50cy5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4ODI9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTEzLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4OTE0OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTE1LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzE5PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTM0OS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTM1MDpcdHJldCA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KFx1MDAyNmVudi1cdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFx1MDAyNnRndF9pbmZvKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTM1MS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY3NjMKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogNTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBLZXJuZWwgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmcm9tIGEgQlBGIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZS4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBjZW50ZXIgYXJvdW5kIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgaG93IGl0IGhhbmRsZXMgdGhlIEFCSSBvZiB0cmFjZSB0YXJnZXRzIHdoZW4gZGVhbGluZyB3aXRoIGBLRl9JTVBMSUNJVF9BUkdTYCBrZnVuY3MuIEkgY2FuIHNlZSB0aGF0IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgYSBrZXkgZnVuY3Rpb24gaGVyZSwgY2FsbGVkIGZyb20gYGJwZl90cmFjaW5nX3Byb2dfYXR0YWNoYCwgYGJwZl90cmFtcG9saW5lX2xpbmtfY2dyb3VwX3NoaW1gLCBhbmQgYGNoZWNrX2F0dGFjaF9idGZfaWRgLiBUaGVzZSBhcmUgYWxsIGNydWNpYWwgcG9pbnRzIHdpdGhpbiB0aGUgQlBGIHN1YnN5c3RlbSwgZXNwZWNpYWxseSB3aGVuIGNvbnNpZGVyaW5nIHRyYWNpbmcgYW5kIGtmdW5jIGF0dGFjaG1lbnQuCgpJIGltbWVkaWF0ZWx5IG5lZWQgdG8gZW5zdXJlIHRoZSBwcm9wZXIgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZS4gTG9va2luZyBhdCB0aGUgZGVwZW5kZW5jaWVzLCBJJiMzOTtsbCBuZWVkIGBCUEZfU1lTQ0FMTGAgdG8gZW5zdXJlIHRoZSBgYnBmKClgIHN5c2NhbGwgaXMgZW5hYmxlZCwgYERFQlVHX0lORk9fQlRGYCBmb3IgQlRGIGdlbmVyYXRpb24sIGFuZCBgQlBGX0VWRU5UU2AgdG8gc3VwcG9ydCBCUEYgdHJhY2luZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYEJQRl9FVkVOVFNgIGlzIGtleSBiZWNhdXNlIHdlIGFyZSBmb2N1c2VkIG9uIHRyYWNpbmcuCgpUaGUgbWFpbiBmb2N1cyBvZiB0aGUgcGF0Y2ggaXMgb24gdGhyZWUgc3ltYm9sczogYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AsIGBidGZfYXR0YWNoX2Z1bmNfcHJvdG9gLCBhbmQgYGZpbmRfa2Z1bmNfaW1wbF9wcm90b2AuIFRoZXNlIGFyZSBhbGwgZnVuZGFtZW50YWwgY29tcG9uZW50cyBpbiB0aGUgdmVyaWZpZXImIzM5O3MgbG9naWMsIGFuZCB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlbSB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBwcm90b3R5cGUgcmVzb2x1dGlvbiBvZiBhIHRyYWNlIHRhcmdldCYjMzk7cyBBQkkuIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgLSBlbnN1cmluZyB0aGF0IHRoZSB2ZXJpZmllciBhY2N1cmF0ZWx5IHVuZGVyc3RhbmRzIGFuZCB2YWxpZGF0ZXMgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgd2hlbiBhIHRyYWNpbmcgcHJvZ3JhbSBhdHRhY2hlcyB0byBhIGtmdW5jLiBUaGlzIGlzIGEgdmVyeSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgcGllY2Ugb2YgY29kZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZC4gYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AgaXMgaW4gYGtlcm5lbC9icGYvYnRmLmNgLCB3aGlsZSBgZmluZF9rZnVuY19pbXBsX3Byb3RvYCBhbmQgYGJ0Zl9hdHRhY2hfZnVuY19wcm90b2AgYXJlIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLgoKR2l2ZW4gdGhlIGNvcmUgbmF0dXJlIG9mIHRoaXMgbW9kaWZpY2F0aW9uIHRvIHRoZSBCUEYgdmVyaWZpZXIgYW5kIGl0cyBpbXBhY3Qgb24gaG93IHRyYWNpbmcgcHJvZ3JhbXMgaW50ZXJhY3Qgd2l0aCBrZnVuY3MsIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4KCkhlcmXigJlzIHRoZSBzdW1tYXJ5OgotICoqRm9jdXMgU3ltYm9scyoqOiBgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzYCwgYGJ0Zl9hdHRhY2hfZnVuY19wcm90b2AsIGFuZCBgZmluZF9rZnVuY19pbXBsX3Byb3RvYC4KLSAqKkVuYWJsZSBDb25maWdzKio6IGBCUEZfU1lTQ0FMTGAsIGBERUJVR19JTkZPX0JURmAsIGBCUEZfRVZFTlRTYC4KLSAqKlJlYXNvbmluZyoqOiBUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBhIHRyYWNlIHRhcmdldCYjMzk7cyByZWFsIEFCSSBmb3IgYEtGX0lNUExJQ0lUX0FSR1NgIGtmdW5jcy4gVGhpcyBpbXBhY3RzIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBmb3IgYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMgdG8ga2Z1bmNzLCBzbyB0aGlzIGlzIGhpZ2hseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MmIzM0OywKICAgICYjMzQ7YnRmX2F0dGFjaF9mdW5jX3Byb3RvJiMzNDssCiAgICAmIzM0O2ZpbmRfa2Z1bmNfaW1wbF9wcm90byYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2YgYSB0cmFjZSB0YXJnZXQmIzM5O3MgcmVhbCBBQkkgZm9yIGBLRl9JTVBMSUNJVF9BUkdTYCBrZnVuY3MuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgZm9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zIHRvIGtmdW5jcywgd2hpY2ggaXMgaGlnaGx5IHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2J0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyYjMzQ7LAogICAgJiMzNDtidGZfYXR0YWNoX2Z1bmNfcHJvdG8mIzM0OywKICAgICYjMzQ7ZmluZF9rZnVuY19pbXBsX3Byb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBhIHRyYWNlIHRhcmdldCYjMzk7cyByZWFsIEFCSSBmb3IgYEtGX0lNUExJQ0lUX0FSR1NgIGtmdW5jcy4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBmb3IgYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMgdG8ga2Z1bmNzLCB3aGljaCBpcyBoaWdobHkgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMTc6MDM6NTMuMDkzMDU1NTQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU5MTQ1MjI5NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzXCIsXG4gICAgXCJidGZfYXR0YWNoX2Z1bmNfcHJvdG9cIixcbiAgICBcImZpbmRfa2Z1bmNfaW1wbF9wcm90b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJIGZvciBgS0ZfSU1QTElDSVRfQVJHU2Aga2Z1bmNzLiBUaGlzIGFmZmVjdHMgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljIGZvciBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcyB0byBrZnVuY3MsIHdoaWNoIGlzIGhpZ2hseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE3OjAzOjUzLjA5MzA2MjU0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk1MDA2NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWEzNjQ5YzhjM2VmNzhkMTNhYWYwOTBhOWNkY2ZhYzRkODgxNDE3YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxMSAxNzowMzo1MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxcbmluZGV4IDI0MDQwMWQ5YjI1YjllLi5jNTIyNDVhZTBkZjVkNyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2J0Zi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9idGYuaFxcbkBAIC01NzgsNiArNTc4LDcgQEAgY29uc3QgY2hhciAqYnRmX3N0cl9ieV9vZmZzZXQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgb2Zmc2V0KTtcXG4gc3RydWN0IGJ0ZiAqYnRmX3BhcnNlX3ZtbGludXgodm9pZCk7XFxuIHN0cnVjdCBidGYgKmJwZl9wcm9nX2dldF90YXJnZXRfYnRmKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuIHUzMiAqYnRmX2tmdW5jX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcXG4rdTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpO1xcbiBib29sIGJ0Zl9rZnVuY19pc19hbGxvd2VkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcXG4gdTMyICpidGZfa2Z1bmNfaXNfbW9kaWZ5X3JldHVybihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsXFxuIFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYnRmLmMgYi9rZXJuZWwvYnBmL2J0Zi5jXFxuaW5kZXggNjQ1NzJmODVlZGM4MzIuLjIwYWVjYTZiNGY5NWM5IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvYnRmLmNcXG4rKysgYi9rZXJuZWwvYnBmL2J0Zi5jXFxuQEAgLTkxMTQsNiArOTExNCwyNiBAQCB1MzIgKmJ0Zl9rZnVuY19mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcFxcbiBcXHRyZXR1cm4gYnRmX2tmdW5jX2lkX3NldF9jb250YWlucyhidGYsIGhvb2ssIGtmdW5jX2J0Zl9pZCk7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIFJldHVybiB0aGUgdW5pb24gb2YgYSBrZnVuYydzIGZsYWdzIGFjcm9zcyBhbGwgaG9va3MuXFxuKyAqIFVubGlrZSBidGZfa2Z1bmNfZmxhZ3MoKSwgbm90IHJlc3RyaWN0ZWQgdG8gYSBjYWxsaW5nXFxuKyAqIHByb2dyYW0ncyBob29rLiBVc2VkIHdoZW4gYXR0YWNoaW5nIHRvIGEga2Z1bmMgZm9yIHRyYWNpbmcuXFxuKyAqL1xcbit1MzIgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZClcXG4re1xcbitcXHRlbnVtIGJ0Zl9rZnVuY19ob29rIGhvb2s7XFxuK1xcdHUzMiAqaG9va19mbGFncztcXG4rXFx0dTMyIGZsYWdzID0gMDtcXG4rXFxuK1xcdGZvciAoaG9vayA9IDA7IGhvb2sgXFx1MDAzYyBCVEZfS0ZVTkNfSE9PS19NQVg7IGhvb2srKykge1xcbitcXHRcXHRob29rX2ZsYWdzID0gYnRmX2tmdW5jX2lkX3NldF9jb250YWlucyhidGYsIGhvb2ssIGtmdW5jX2J0Zl9pZCk7XFxuK1xcdFxcdGlmIChob29rX2ZsYWdzKVxcbitcXHRcXHRcXHRmbGFncyB8PSAqaG9va19mbGFncztcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIGZsYWdzO1xcbit9XFxuK1xcbiB1MzIgKmJ0Zl9rZnVuY19pc19tb2RpZnlfcmV0dXJuKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCxcXG4gXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbiB7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDY1MTVkNGQzYzAwMzJmLi4yZjU2YWI4ZDZiNThjOSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtMjU4NCwyNCArMjU4NCwyNCBAQCBzdGF0aWMgc3RydWN0IGJ0ZiAqZmluZF9rZnVuY19kZXNjX2J0ZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMTYgb2Zmc2V0KVxcbiBcXG4gI2RlZmluZSBLRl9JTVBMX1NVRkZJWCBcXFwiX2ltcGxcXFwiXFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBidGYgKmJ0ZixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSlcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXFxuK2ZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSlcXG4ge1xcbi1cXHRjaGFyICpidWYgPSBlbnYtXFx1MDAzZXRtcF9zdHJfYnVmO1xcbiBcXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZ1bmM7XFxuK1xcdGNoYXIgYnVmW0tTWU1fTkFNRV9MRU5dO1xcbiBcXHRzMzIgaW1wbF9pZDtcXG4gXFx0aW50IGxlbjtcXG4gXFxuLVxcdGxlbiA9IHNucHJpbnRmKGJ1ZiwgVE1QX1NUUl9CVUZfTEVOLCBcXFwiJXMlc1xcXCIsIGZ1bmNfbmFtZSwgS0ZfSU1QTF9TVUZGSVgpO1xcbi1cXHRpZiAobGVuIFxcdTAwM2MgMCB8fCBsZW4gXFx1MDAzZT0gVE1QX1NUUl9CVUZfTEVOKSB7XFxuLVxcdFxcdHZlcmJvc2UoZW52LCBcXFwiZnVuY3Rpb24gbmFtZSAlcyVzIGlzIHRvbyBsb25nXFxcXG5cXFwiLCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcXG4rXFx0bGVuID0gc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgXFxcIiVzJXNcXFwiLCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcXG4rXFx0aWYgKGxlbiBcXHUwMDNjIDAgfHwgbGVuIFxcdTAwM2U9IHNpemVvZihidWYpKSB7XFxuK1xcdFxcdGJwZl9sb2cobG9nLCBcXFwiZnVuY3Rpb24gbmFtZSAlcyVzIGlzIHRvbyBsb25nXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuIFxcdGltcGxfaWQgPSBidGZfZmluZF9ieV9uYW1lX2tpbmQoYnRmLCBidWYsIEJURl9LSU5EX0ZVTkMpO1xcbiBcXHRpZiAoaW1wbF9pZCBcXHUwMDNjPSAwKSB7XFxuLVxcdFxcdHZlcmJvc2UoZW52LCBcXFwiY2Fubm90IGZpbmQgZnVuY3Rpb24gJXMgaW4gQlRGXFxcXG5cXFwiLCBidWYpO1xcbitcXHRcXHRicGZfbG9nKGxvZywgXFxcImNhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxcXFxuXFxcIiwgYnVmKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTI2NTMsNyArMjY1Myw3IEBAIHN0YXRpYyBpbnQgZmV0Y2hfa2Z1bmNfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHQgKiBjYW4gYmUgZm91bmQgdGhyb3VnaCB0aGUgY291bnRlcnBhcnQgX2ltcGwga2Z1bmMuXFxuIFxcdCAqL1xcbiBcXHRpZiAoa2Z1bmNfZmxhZ3MgXFx1MDAyNlxcdTAwMjYgKCprZnVuY19mbGFncyBcXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpKVxcbi1cXHRcXHRmdW5jX3Byb3RvID0gZmluZF9rZnVuY19pbXBsX3Byb3RvKGVudiwgYnRmLCBmdW5jX25hbWUpO1xcbitcXHRcXHRmdW5jX3Byb3RvID0gZmluZF9rZnVuY19pbXBsX3Byb3RvKFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgYnRmLCBmdW5jX25hbWUpO1xcbiBcXHRlbHNlXFxuIFxcdFxcdGZ1bmNfcHJvdG8gPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXFx1MDAzZXR5cGUpO1xcbiBcXG5AQCAtMTg4NzMsNiArMTg4NzMsNDQgQEAgc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJcXG4gXFx0cmV0dXJuIC1FSU5WQUw7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIFJlc29sdmUgdGhlIHByb3RvdHlwZSBkZXNjcmliaW5nIGEgdHJhY2UgdGFyZ2V0J3MgcmVhbCBBQkkuIEFcXG4rICogS0ZfSU1QTElDSVRfQVJHUyBrZnVuYyBoYXMgaXRzIGluamVjdGVkIGFyZ3Mgc3RyaXBwZWQgZnJvbSB0aGUgcHVibGljXFxuKyAqIHByb3RvdHlwZSwgc28gdXNlIHRoZSBfaW1wbCBwcm90b3R5cGU7IG90aGVyIHRhcmdldHMgdXNlIHRoZWlyIG93bi5cXG4rICovXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKlxcbitidGZfYXR0YWNoX2Z1bmNfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgZnVuY19pZClcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZ1bmM7XFxuK1xcdHN0cnVjdCBtb2R1bGUgKm1vZCA9IE5VTEw7XFxuK1xcdGNvbnN0IGNoYXIgKm5hbWU7XFxuK1xcdHUzMiBrZnVuY19mbGFncztcXG4rXFxuK1xcdGZ1bmMgPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmNfaWQpO1xcbitcXHRpZiAoIWZ1bmMgfHwgIWJ0Zl90eXBlX2lzX2Z1bmMoZnVuYykpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXG4rXFx0LypcXG4rXFx0ICogYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKCkgcmVhZHMga2Z1bmNfc2V0X3RhYiwgd2hpY2ggZm9yIGFcXG4rXFx0ICogbW9kdWxlIGlzIHN0YWJsZSBvbmx5IG9uY2UgaXQgaXMgbGl2ZTsgaG9sZCBhIG1vZHVsZSByZWYgYWNyb3NzXFxuK1xcdCAqIHRoZSByZWFkIHRvIGV4Y2x1ZGUgYSBjb25jdXJyZW50IG1vZHVsZSBsb2FkLlxcbitcXHQgKi9cXG4rXFx0aWYgKGJ0Zl9pc19tb2R1bGUoYnRmKSkge1xcbitcXHRcXHRtb2QgPSBidGZfdHJ5X2dldF9tb2R1bGUoYnRmKTtcXG4rXFx0XFx0aWYgKCFtb2QpXFxuK1xcdFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuK1xcdGtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7XFxuK1xcdG1vZHVsZV9wdXQobW9kKTtcXG4rXFxuK1xcdGlmIChrZnVuY19mbGFncyBcXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcXG4rXFx0XFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXFx1MDAzZW5hbWVfb2ZmKTtcXG4rXFx0XFx0cmV0dXJuIGZpbmRfa2Z1bmNfaW1wbF9wcm90byhsb2csIGJ0ZiwgbmFtZSk7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXFx1MDAzZXR5cGUpO1xcbit9XFxuK1xcbiBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4gXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4gXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXFxuQEAgLTE5MTIxLDggKzE5MTU5LDggQEAgaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuIFxcdFxcdGlmIChwcm9nX2V4dGVuc2lvbiBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgYnRmX2NoZWNrX3R5cGVfbWF0Y2gobG9nLCBwcm9nLCBidGYsIHQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFx0XFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgdC1cXHUwMDNldHlwZSk7XFxuLVxcdFxcdGlmICghYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcXG4rXFx0XFx0dCA9IGJ0Zl9hdHRhY2hfZnVuY19wcm90byhsb2csIGJ0ZiwgYnRmX2lkKTtcXG4rXFx0XFx0aWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuIFxcdFxcdGlmICgocHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VzYXZlZF9kc3RfcHJvZ190eXBlIHx8IHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlc2F2ZWRfZHN0X2F0dGFjaF90eXBlKSBcXHUwMDI2XFx1MDAyNlxcbkBAIC0xOTQwNyw4ICsxOTQ0NSw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRpZiAoIWJ0Zl90eXBlX2lzX2Z1bmModCkpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB0LVxcdTAwM2V0eXBlKTtcXG4tXFx0aWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxcbitcXHR0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgYnRmX2lkKTtcXG4rXFx0aWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0ZXJyID0gYnRmX2Rpc3RpbGxfZnVuY19wcm90byhOVUxMLCBidGYsIHQsIHRuYW1lLCBcXHUwMDI2dGd0X2luZm8tXFx1MDAzZWZtb2RlbCk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjFjYzVhYWJhMDI1NGRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcXG5AQCAtMCwwICsxLDM2IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2N0ZXN0X3Byb2dzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcXCJrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuc2tlbC5oXFxcIlxcbitcXG4rdm9pZCB0ZXN0X2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZyh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7XFxuK1xcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyk7XFxuK1xcdGludCBlcnIsIGZkO1xcbitcXG4rXFx0c2tlbCA9IGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fb3Blbl9hbmRfbG9hZCgpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXFxcIm9wZW5fYW5kX2xvYWRcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0ZXJyID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19hdHRhY2goc2tlbCk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImF0dGFjaFxcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcbitcXHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy50cmlnZ2VyX2ltcGxpY2l0X2FyZyk7XFxuK1xcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFxcdTAwMjZ0b3B0cyk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcInRlc3RfcnVuXFxcIikpXFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFxuK1xcdEFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIDUsIFxcXCJrZnVuY19yZXR2YWxcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmVudHJ5X2FyZ19jbnQsIDIsIFxcXCJmZW50cnlfYXJnX2NudFxcXCIpO1xcbitcXHRBU1NFUlRfTkVRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmVudHJ5X2F1eF9hcmcsIDAsIFxcXCJmZW50cnlfYXV4X2FyZ1xcXCIpO1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VmZW50cnlfcmVzdWx0LCAxLCBcXFwiZmVudHJ5X3Jlc3VsdFxcXCIpO1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VmZXhpdF9hcmdfY250LCAyLCBcXFwiZmV4aXRfYXJnX2NudFxcXCIpO1xcbitcXHRBU1NFUlRfTkVRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmV4aXRfYXV4X2FyZywgMCwgXFxcImZleGl0X2F1eF9hcmdcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmV4aXRfcmVzdWx0LCAxLCBcXFwiZmV4aXRfcmVzdWx0XFxcIik7XFxuK1xcbitjbGVhbnVwOlxcbitcXHRrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOTk1ZjhiOGI1YjllOGZcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXFxuQEAgLTAsMCArMSw3NyBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjdm1saW51eC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2Vycm5vLmhcXHUwMDNlXFxuK1xcbitleHRlcm4gaW50IGJwZl9rZnVuY19pbXBsaWNpdF9hcmcoaW50IGEpIF9fd2VhayBfX2tzeW07XFxuK1xcbitjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG4rXFxuKy8qIFNoYXJlZCBhcmcgY2hlY2tzOyByZXBvcnRzIGFyZyBjb3VudCBhbmQgYXV4LCByZXR1cm5zIDEgb24gc3VjY2Vzcy4gKi9cXG4rc3RhdGljIF9fYWx3YXlzX2lubGluZSBfX3U2NFxcbitjaGVja19pbXBsaWNpdF9hcmdzKHZvaWQgKmN0eCwgX191NjQgKmFyZ19jbnQsIF9fdTY0ICphdXhfYXJnKVxcbit7XFxuK1xcdF9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDtcXG4rXFx0X191NjQgcmVzdWx0O1xcbitcXHRfX3M2NCBlcnI7XFxuK1xcbitcXHQqYXJnX2NudCA9IGJwZl9nZXRfZnVuY19hcmdfY250KGN0eCk7XFxuK1xcdHJlc3VsdCA9ICphcmdfY250ID09IDI7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMCwgXFx1MDAyNmEpO1xcbitcXHRyZXN1bHQgXFx1MDAyNj0gZXJyID09IDAgXFx1MDAyNlxcdTAwMjYgKGludClhID09IDU7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMSwgXFx1MDAyNmF1eCk7XFxuK1xcdCphdXhfYXJnID0gYXV4O1xcbitcXHRyZXN1bHQgXFx1MDAyNj0gZXJyID09IDAgXFx1MDAyNlxcdTAwMjYgYXV4ICE9IDA7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMiwgXFx1MDAyNnopO1xcbitcXHRyZXN1bHQgXFx1MDAyNj0gZXJyID09IC1FSU5WQUw7XFxuK1xcbitcXHRyZXR1cm4gcmVzdWx0O1xcbit9XFxuK1xcbitfX3U2NCBmZW50cnlfcmVzdWx0O1xcbitfX3U2NCBmZW50cnlfYXJnX2NudDtcXG4rX191NjQgZmVudHJ5X2F1eF9hcmc7XFxuK1xcbitTRUMoXFxcImZlbnRyeS9icGZfa2Z1bmNfaW1wbGljaXRfYXJnXFxcIilcXG4raW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZW50cnkpXFxuK3tcXG4rXFx0X191NjQgcmV0ID0gMDtcXG4rXFx0X19zNjQgZXJyO1xcbitcXG4rXFx0ZmVudHJ5X3Jlc3VsdCA9IGNoZWNrX2ltcGxpY2l0X2FyZ3MoY3R4LCBcXHUwMDI2ZmVudHJ5X2FyZ19jbnQsIFxcdTAwMjZmZW50cnlfYXV4X2FyZyk7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXFx1MDAyNnJldCk7XFxuK1xcdGZlbnRyeV9yZXN1bHQgXFx1MDAyNj0gZXJyID09IC1FT1BOT1RTVVBQO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK19fdTY0IGZleGl0X3Jlc3VsdDtcXG4rX191NjQgZmV4aXRfYXJnX2NudDtcXG4rX191NjQgZmV4aXRfYXV4X2FyZztcXG4rXFxuK1NFQyhcXFwiZmV4aXQvYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ1xcXCIpXFxuK2ludCBCUEZfUFJPRyh0cmFjZV9pbXBsaWNpdF9hcmdfZmV4aXQpXFxuK3tcXG4rXFx0X191NjQgcmV0ID0gMDtcXG4rXFx0X19zNjQgZXJyO1xcbitcXG4rXFx0ZmV4aXRfcmVzdWx0ID0gY2hlY2tfaW1wbGljaXRfYXJncyhjdHgsIFxcdTAwMjZmZXhpdF9hcmdfY250LCBcXHUwMDI2ZmV4aXRfYXV4X2FyZyk7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXFx1MDAyNnJldCk7XFxuK1xcdGZleGl0X3Jlc3VsdCBcXHUwMDI2PSBlcnIgPT0gMCBcXHUwMDI2XFx1MDAyNiByZXQgPT0gNTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcInN5c2NhbGxcXFwiKVxcbitpbnQgdHJpZ2dlcl9pbXBsaWNpdF9hcmcodm9pZCAqY3R4KVxcbit7XFxuK1xcdHJldHVybiBicGZfa2Z1bmNfaW1wbGljaXRfYXJnKDUpO1xcbit9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE3OjAzOjUzLjY4ODkxMzg2NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMTg2NTU2MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzXCIsXG4gICAgXCJidGZfYXR0YWNoX2Z1bmNfcHJvdG9cIixcbiAgICBcImZpbmRfa2Z1bmNfaW1wbF9wcm90b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJIGZvciBgS0ZfSU1QTElDSVRfQVJHU2Aga2Z1bmNzLiBUaGlzIGFmZmVjdHMgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljIGZvciBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcyB0byBrZnVuY3MsIHdoaWNoIGlzIGhpZ2hseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWEzNjQ5YzhjM2VmNzhkMTNhYWYwOTBhOWNkY2ZhYzRkODgxNDE3YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDExIDE3OjAzOjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idGYuaCBiL2luY2x1ZGUvbGludXgvYnRmLmhcbmluZGV4IDI0MDQwMWQ5YjI1YjllLi5jNTIyNDVhZTBkZjVkNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYnRmLmhcbkBAIC01NzgsNiArNTc4LDcgQEAgY29uc3QgY2hhciAqYnRmX3N0cl9ieV9vZmZzZXQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgb2Zmc2V0KTtcbiBzdHJ1Y3QgYnRmICpidGZfcGFyc2Vfdm1saW51eCh2b2lkKTtcbiBzdHJ1Y3QgYnRmICpicGZfcHJvZ19nZXRfdGFyZ2V0X2J0Zihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuIHUzMiAqYnRmX2tmdW5jX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbit1MzIgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCk7XG4gYm9vbCBidGZfa2Z1bmNfaXNfYWxsb3dlZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG4gdTMyICpidGZfa2Z1bmNfaXNfbW9kaWZ5X3JldHVybihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsXG4gXHRcdFx0XHRjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYnRmLmMgYi9rZXJuZWwvYnBmL2J0Zi5jXG5pbmRleCA2NDU3MmY4NWVkYzgzMi4uMjBhZWNhNmI0Zjk1YzkgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2J0Zi5jXG4rKysgYi9rZXJuZWwvYnBmL2J0Zi5jXG5AQCAtOTExNCw2ICs5MTE0LDI2IEBAIHUzMiAqYnRmX2tmdW5jX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wXG4gXHRyZXR1cm4gYnRmX2tmdW5jX2lkX3NldF9jb250YWlucyhidGYsIGhvb2ssIGtmdW5jX2J0Zl9pZCk7XG4gfVxuIFxuKy8qXG4rICogUmV0dXJuIHRoZSB1bmlvbiBvZiBhIGtmdW5jJ3MgZmxhZ3MgYWNyb3NzIGFsbCBob29rcy5cbisgKiBVbmxpa2UgYnRmX2tmdW5jX2ZsYWdzKCksIG5vdCByZXN0cmljdGVkIHRvIGEgY2FsbGluZ1xuKyAqIHByb2dyYW0ncyBob29rLiBVc2VkIHdoZW4gYXR0YWNoaW5nIHRvIGEga2Z1bmMgZm9yIHRyYWNpbmcuXG4rICovXG4rdTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpXG4re1xuK1x0ZW51bSBidGZfa2Z1bmNfaG9vayBob29rO1xuK1x0dTMyICpob29rX2ZsYWdzO1xuK1x0dTMyIGZsYWdzID0gMDtcbitcbitcdGZvciAoaG9vayA9IDA7IGhvb2sgXHUwMDNjIEJURl9LRlVOQ19IT09LX01BWDsgaG9vaysrKSB7XG4rXHRcdGhvb2tfZmxhZ3MgPSBidGZfa2Z1bmNfaWRfc2V0X2NvbnRhaW5zKGJ0ZiwgaG9vaywga2Z1bmNfYnRmX2lkKTtcbitcdFx0aWYgKGhvb2tfZmxhZ3MpXG4rXHRcdFx0ZmxhZ3MgfD0gKmhvb2tfZmxhZ3M7XG4rXHR9XG4rXG4rXHRyZXR1cm4gZmxhZ3M7XG4rfVxuK1xuIHUzMiAqYnRmX2tmdW5jX2lzX21vZGlmeV9yZXR1cm4oY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLFxuIFx0XHRcdFx0Y29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuIHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDY1MTVkNGQzYzAwMzJmLi4yZjU2YWI4ZDZiNThjOSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMjU4NCwyNCArMjU4NCwyNCBAQCBzdGF0aWMgc3RydWN0IGJ0ZiAqZmluZF9rZnVuY19kZXNjX2J0ZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMTYgb2Zmc2V0KVxuIFxuICNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggXCJfaW1wbFwiXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqZmluZF9rZnVuY19pbXBsX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tXHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBidGYgKmJ0Zixcbi1cdFx0XHRcdFx0XHQgICAgY29uc3QgY2hhciAqZnVuY19uYW1lKVxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKlxuK2ZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSlcbiB7XG4tXHRjaGFyICpidWYgPSBlbnYtXHUwMDNldG1wX3N0cl9idWY7XG4gXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZ1bmM7XG4rXHRjaGFyIGJ1ZltLU1lNX05BTUVfTEVOXTtcbiBcdHMzMiBpbXBsX2lkO1xuIFx0aW50IGxlbjtcbiBcbi1cdGxlbiA9IHNucHJpbnRmKGJ1ZiwgVE1QX1NUUl9CVUZfTEVOLCBcIiVzJXNcIiwgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4tXHRpZiAobGVuIFx1MDAzYyAwIHx8IGxlbiBcdTAwM2U9IFRNUF9TVFJfQlVGX0xFTikge1xuLVx0XHR2ZXJib3NlKGVudiwgXCJmdW5jdGlvbiBuYW1lICVzJXMgaXMgdG9vIGxvbmdcXG5cIiwgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4rXHRsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBcIiVzJXNcIiwgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4rXHRpZiAobGVuIFx1MDAzYyAwIHx8IGxlbiBcdTAwM2U9IHNpemVvZihidWYpKSB7XG4rXHRcdGJwZl9sb2cobG9nLCBcImZ1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xcblwiLFxuK1x0XHRcdGZ1bmNfbmFtZSwgS0ZfSU1QTF9TVUZGSVgpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbiBcdGltcGxfaWQgPSBidGZfZmluZF9ieV9uYW1lX2tpbmQoYnRmLCBidWYsIEJURl9LSU5EX0ZVTkMpO1xuIFx0aWYgKGltcGxfaWQgXHUwMDNjPSAwKSB7XG4tXHRcdHZlcmJvc2UoZW52LCBcImNhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxcblwiLCBidWYpO1xuK1x0XHRicGZfbG9nKGxvZywgXCJjYW5ub3QgZmluZCBmdW5jdGlvbiAlcyBpbiBCVEZcXG5cIiwgYnVmKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtMjY1Myw3ICsyNjUzLDcgQEAgc3RhdGljIGludCBmZXRjaF9rZnVuY19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHQgKiBjYW4gYmUgZm91bmQgdGhyb3VnaCB0aGUgY291bnRlcnBhcnQgX2ltcGwga2Z1bmMuXG4gXHQgKi9cbiBcdGlmIChrZnVuY19mbGFncyBcdTAwMjZcdTAwMjYgKCprZnVuY19mbGFncyBcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykpXG4tXHRcdGZ1bmNfcHJvdG8gPSBmaW5kX2tmdW5jX2ltcGxfcHJvdG8oZW52LCBidGYsIGZ1bmNfbmFtZSk7XG4rXHRcdGZ1bmNfcHJvdG8gPSBmaW5kX2tmdW5jX2ltcGxfcHJvdG8oXHUwMDI2ZW52LVx1MDAzZWxvZywgYnRmLCBmdW5jX25hbWUpO1xuIFx0ZWxzZVxuIFx0XHRmdW5jX3Byb3RvID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLVx1MDAzZXR5cGUpO1xuIFxuQEAgLTE4ODczLDYgKzE4ODczLDQ0IEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiXG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG4gXG4rLypcbisgKiBSZXNvbHZlIHRoZSBwcm90b3R5cGUgZGVzY3JpYmluZyBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJLiBBXG4rICogS0ZfSU1QTElDSVRfQVJHUyBrZnVuYyBoYXMgaXRzIGluamVjdGVkIGFyZ3Mgc3RyaXBwZWQgZnJvbSB0aGUgcHVibGljXG4rICogcHJvdG90eXBlLCBzbyB1c2UgdGhlIF9pbXBsIHByb3RvdHlwZTsgb3RoZXIgdGFyZ2V0cyB1c2UgdGhlaXIgb3duLlxuKyAqL1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKlxuK2J0Zl9hdHRhY2hfZnVuY19wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBmdW5jX2lkKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqZnVuYztcbitcdHN0cnVjdCBtb2R1bGUgKm1vZCA9IE5VTEw7XG4rXHRjb25zdCBjaGFyICpuYW1lO1xuK1x0dTMyIGtmdW5jX2ZsYWdzO1xuK1xuK1x0ZnVuYyA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgZnVuY19pZCk7XG4rXHRpZiAoIWZ1bmMgfHwgIWJ0Zl90eXBlX2lzX2Z1bmMoZnVuYykpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0LypcbitcdCAqIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncygpIHJlYWRzIGtmdW5jX3NldF90YWIsIHdoaWNoIGZvciBhXG4rXHQgKiBtb2R1bGUgaXMgc3RhYmxlIG9ubHkgb25jZSBpdCBpcyBsaXZlOyBob2xkIGEgbW9kdWxlIHJlZiBhY3Jvc3NcbitcdCAqIHRoZSByZWFkIHRvIGV4Y2x1ZGUgYSBjb25jdXJyZW50IG1vZHVsZSBsb2FkLlxuK1x0ICovXG4rXHRpZiAoYnRmX2lzX21vZHVsZShidGYpKSB7XG4rXHRcdG1vZCA9IGJ0Zl90cnlfZ2V0X21vZHVsZShidGYpO1xuK1x0XHRpZiAoIW1vZClcbitcdFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbitcdGtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7XG4rXHRtb2R1bGVfcHV0KG1vZCk7XG4rXG4rXHRpZiAoa2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcbitcdFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXHUwMDNlbmFtZV9vZmYpO1xuK1x0XHRyZXR1cm4gZmluZF9rZnVuY19pbXBsX3Byb3RvKGxvZywgYnRmLCBuYW1lKTtcbitcdH1cbitcbitcdHJldHVybiBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXHUwMDNldHlwZSk7XG4rfVxuK1xuIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXG5AQCAtMTkxMjEsOCArMTkxNTksOCBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbiBcdFx0aWYgKHByb2dfZXh0ZW5zaW9uIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYnRmX2NoZWNrX3R5cGVfbWF0Y2gobG9nLCBwcm9nLCBidGYsIHQpKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuLVx0XHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB0LVx1MDAzZXR5cGUpO1xuLVx0XHRpZiAoIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4rXHRcdHQgPSBidGZfYXR0YWNoX2Z1bmNfcHJvdG8obG9nLCBidGYsIGJ0Zl9pZCk7XG4rXHRcdGlmICghdCB8fCAhYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0aWYgKChwcm9nLVx1MDAzZWF1eC1cdTAwM2VzYXZlZF9kc3RfcHJvZ190eXBlIHx8IHByb2ctXHUwMDNlYXV4LVx1MDAzZXNhdmVkX2RzdF9hdHRhY2hfdHlwZSkgXHUwMDI2XHUwMDI2XG5AQCAtMTk0MDcsOCArMTk0NDUsOCBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdGlmICghYnRmX3R5cGVfaXNfZnVuYyh0KSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB0LVx1MDAzZXR5cGUpO1xuLVx0aWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxuK1x0dCA9IGJ0Zl9hdHRhY2hfZnVuY19wcm90byhOVUxMLCBidGYsIGJ0Zl9pZCk7XG4rXHRpZiAoIXQgfHwgIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0ZXJyID0gYnRmX2Rpc3RpbGxfZnVuY19wcm90byhOVUxMLCBidGYsIHQsIHRuYW1lLCBcdTAwMjZ0Z3RfaW5mby1cdTAwM2VmbW9kZWwpO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjYxY2M1YWFiYTAyNTRkXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuY1xuQEAgLTAsMCArMSwzNiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuKyNpbmNsdWRlIFwia2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLnNrZWwuaFwiXG4rXG4rdm9pZCB0ZXN0X2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZyh2b2lkKVxuK3tcbitcdHN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7XG4rXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMpO1xuK1x0aW50IGVyciwgZmQ7XG4rXG4rXHRza2VsID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19vcGVuX2FuZF9sb2FkKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJvcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRlcnIgPSBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2F0dGFjaChza2VsKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJhdHRhY2hcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcbitcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MudHJpZ2dlcl9pbXBsaWNpdF9hcmcpO1xuK1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcInRlc3RfcnVuXCIpKVxuK1x0XHRnb3RvIGNsZWFudXA7XG4rXG4rXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCA1LCBcImtmdW5jX3JldHZhbFwiKTtcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VmZW50cnlfYXJnX2NudCwgMiwgXCJmZW50cnlfYXJnX2NudFwiKTtcbitcdEFTU0VSVF9ORVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmVudHJ5X2F1eF9hcmcsIDAsIFwiZmVudHJ5X2F1eF9hcmdcIik7XG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmVudHJ5X3Jlc3VsdCwgMSwgXCJmZW50cnlfcmVzdWx0XCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZleGl0X2FyZ19jbnQsIDIsIFwiZmV4aXRfYXJnX2NudFwiKTtcbitcdEFTU0VSVF9ORVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmV4aXRfYXV4X2FyZywgMCwgXCJmZXhpdF9hdXhfYXJnXCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZleGl0X3Jlc3VsdCwgMSwgXCJmZXhpdF9yZXN1bHRcIik7XG4rXG4rY2xlYW51cDpcbitcdGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fZGVzdHJveShza2VsKTtcbit9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjk5NWY4YjhiNWI5ZThmXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcbkBAIC0wLDAgKzEsNzcgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbitcbisjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjZXJybm8uaFx1MDAzZVxuK1xuK2V4dGVybiBpbnQgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyhpbnQgYSkgX193ZWFrIF9fa3N5bTtcbitcbitjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4rXG4rLyogU2hhcmVkIGFyZyBjaGVja3M7IHJlcG9ydHMgYXJnIGNvdW50IGFuZCBhdXgsIHJldHVybnMgMSBvbiBzdWNjZXNzLiAqL1xuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgX191NjRcbitjaGVja19pbXBsaWNpdF9hcmdzKHZvaWQgKmN0eCwgX191NjQgKmFyZ19jbnQsIF9fdTY0ICphdXhfYXJnKVxuK3tcbitcdF9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDtcbitcdF9fdTY0IHJlc3VsdDtcbitcdF9fczY0IGVycjtcbitcbitcdCphcmdfY250ID0gYnBmX2dldF9mdW5jX2FyZ19jbnQoY3R4KTtcbitcdHJlc3VsdCA9ICphcmdfY250ID09IDI7XG4rXG4rXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMCwgXHUwMDI2YSk7XG4rXHRyZXN1bHQgXHUwMDI2PSBlcnIgPT0gMCBcdTAwMjZcdTAwMjYgKGludClhID09IDU7XG4rXG4rXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMSwgXHUwMDI2YXV4KTtcbitcdCphdXhfYXJnID0gYXV4O1xuK1x0cmVzdWx0IFx1MDAyNj0gZXJyID09IDAgXHUwMDI2XHUwMDI2IGF1eCAhPSAwO1xuK1xuK1x0ZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDIsIFx1MDAyNnopO1xuK1x0cmVzdWx0IFx1MDAyNj0gZXJyID09IC1FSU5WQUw7XG4rXG4rXHRyZXR1cm4gcmVzdWx0O1xuK31cbitcbitfX3U2NCBmZW50cnlfcmVzdWx0O1xuK19fdTY0IGZlbnRyeV9hcmdfY250O1xuK19fdTY0IGZlbnRyeV9hdXhfYXJnO1xuK1xuK1NFQyhcImZlbnRyeS9icGZfa2Z1bmNfaW1wbGljaXRfYXJnXCIpXG4raW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZW50cnkpXG4re1xuK1x0X191NjQgcmV0ID0gMDtcbitcdF9fczY0IGVycjtcbitcbitcdGZlbnRyeV9yZXN1bHQgPSBjaGVja19pbXBsaWNpdF9hcmdzKGN0eCwgXHUwMDI2ZmVudHJ5X2FyZ19jbnQsIFx1MDAyNmZlbnRyeV9hdXhfYXJnKTtcbitcbitcdGVyciA9IGJwZl9nZXRfZnVuY19yZXQoY3R4LCBcdTAwMjZyZXQpO1xuK1x0ZmVudHJ5X3Jlc3VsdCBcdTAwMjY9IGVyciA9PSAtRU9QTk9UU1VQUDtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitfX3U2NCBmZXhpdF9yZXN1bHQ7XG4rX191NjQgZmV4aXRfYXJnX2NudDtcbitfX3U2NCBmZXhpdF9hdXhfYXJnO1xuK1xuK1NFQyhcImZleGl0L2JwZl9rZnVuY19pbXBsaWNpdF9hcmdcIilcbitpbnQgQlBGX1BST0codHJhY2VfaW1wbGljaXRfYXJnX2ZleGl0KVxuK3tcbitcdF9fdTY0IHJldCA9IDA7XG4rXHRfX3M2NCBlcnI7XG4rXG4rXHRmZXhpdF9yZXN1bHQgPSBjaGVja19pbXBsaWNpdF9hcmdzKGN0eCwgXHUwMDI2ZmV4aXRfYXJnX2NudCwgXHUwMDI2ZmV4aXRfYXV4X2FyZyk7XG4rXG4rXHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXHUwMDI2cmV0KTtcbitcdGZleGl0X3Jlc3VsdCBcdTAwMjY9IGVyciA9PSAwIFx1MDAyNlx1MDAyNiByZXQgPT0gNTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCJzeXNjYWxsXCIpXG4raW50IHRyaWdnZXJfaW1wbGljaXRfYXJnKHZvaWQgKmN0eClcbit7XG4rXHRyZXR1cm4gYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyg1KTtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNzowMzo1My42ODg5MTU4MTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4Mzk4NDY4MDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIEJURi9CUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBCVEYgYW5kIEJQRiB2ZXJpZmllciBsb2dpYy4gSXQncyBpbnRyb2R1Y2luZyBgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzYCBhbmQgdXNpbmcgaXQgdG8gbmFpbCBkb3duIHRoZSByZWFsIEFCSSBmb3IgdHJhY2UgdGFyZ2V0cyB3aXRoaW4gYEtGX0lNUExJQ0lUX0FSR1NgIGtmdW5jcy4gU2VlbXMgcHJldHR5IHRhcmdldGVkLCBidXQgdGhlIGZhY3QgdGhhdCBpdOKAmXMgbW9kaWZ5aW5nIHRoZSB2ZXJpZmllciBpdHNlbGYsIHNwZWNpZmljYWxseSBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgdG91Y2hpbmcgYGtlcm5lbC9icGYvYnRmLmNgLCBpbW1lZGlhdGVseSBzY3JlYW1zIFwiZnV6emluZyB0YXJnZXQuXCIgVGhpcyBpcyBjb3JlIHN0dWZmIHRoYXQncyBoaWdobHkgcmVhY2hhYmxlIGFuZCBnZXRzIGEgbG90IG9mIGF0dGVudGlvbiBmcm9tIHRvb2xzIGxpa2Ugc3l6a2FsbGVyLCBzbyBpdCdzIHByb2JhYmx5IHdvcnRoIHRoZSBlZmZvcnQuXG5cbkxldCdzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBhZmZlY3RlZC4gSSdtIHNlZWluZzpcblxuKiAgIGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgICh0aGlzIGlzIHRoZSBuZXcgb25lLCBzbyBwcmltZSBzdXNwZWN0KVxuKiAgIGBmaW5kX2tmdW5jX2ltcGxfcHJvdG9gIChtb2RpZmllZCAtIGFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjaylcbiogICBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCAoYWxzbyBuZXcsIGdvdHRhIGNoZWNrIGl0IG91dClcbiogICBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIChtb2RpZmllZCAtIGNoYW5nZXMgaGVyZSBjYW4gYmUgc3VidGxlKVxuKiAgIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgKG1vZGlmaWVkIC0gc2ltaWxhciByZWFzb25pbmcpXG5cbkknbGwgY2hlY2sgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2J0Zi5jYCBmb3IgYW55IGBDT05GSUdgIG9wdGlvbnMgdGhhdCBtaWdodCBnYXRlIHRoZSBuZXcgY29kZSBvciBjaGFuZ2UgdGhlIGVudmlyb25tZW50LiBCUEYgdXN1YWxseSByZXF1aXJlcyBgQ09ORklHX0JQRl9TWVNDQUxMYCwgb2YgY291cnNlLCBidXQgaXQncyB3b3J0aCBhIHF1aWNrIHNjYW4uIExldCdzIHNlZSBpZiBgS0ZfSU1QTElDSVRfQVJHU2AgaXMgY29uZGl0aW9uYWxpemVkIGFueXdoZXJlLiBMZXQgbWUgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSBob3cgdGhpcyBgS0ZfSU1QTElDSVRfQVJHU2AgdGhpbmcgaXMgYWN0dWFsbHkgdXNlZCBhbmQgZGVmaW5lZCBpbiB0aGUgY29kZSBiYXNlIOKAkyB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gaG93IHRvIHRyaWdnZXIgdGhlIG5ldyBjb2RlIHBhdGhzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzMzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTc6MDQ6MDIuMDg3NDEzNzhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgzMjA4MDQwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJLRl9JTVBMSUNJVF9BUkdTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q9MzgzPXRob3NlIGtmdW5jcyBpZiBhbmQgd2hlbiBzdWNoIGRpc2N1c3Npb25zIG9jY3VyLlxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg0LVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6Mzg1OjIuNS45IEtGX0lNUExJQ0lUX0FSR1MgZmxhZ1xcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg2LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg3LVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6Mzg4OlRoZSBLRl9JTVBMSUNJVF9BUkdTIGZsYWcgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBCUEYgc2lnbmF0dXJlXFxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdC0zODktb2YgdGhlIGtmdW5jIGlzIGRpZmZlcmVudCBmcm9tIGl0J3Mga2VybmVsIHNpZ25hdHVyZSwgYW5kIHRoZSB2YWx1ZXNcXG4tLVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q9MzkzPUN1cnJlbnRseSBvbmx5IGBgc3RydWN0IGJwZl9wcm9nX2F1eCAqYGAgdHlwZSBpcyBzdXBwb3J0ZWQuXFxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdC0zOTQtXFxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdDozOTU6QSBrZnVuYyB3aXRoIEtGX0lNUExJQ0lUX0FSR1MgZmxhZyB0aGVyZWZvcmUgaGFzIHR3byB0eXBlcyBpbiBCVEY6IG9uZVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzk2LWZ1bmN0aW9uIG1hdGNoaW5nIHRoZSBrZXJuZWwgZGVjbGFyYXRpb24gKHdpdGggX2ltcGwgc3VmZml4IGluIHRoZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NoYW5nZXMucnN0PTE0OD1tb2R1bGVzIGFzIHdlbGwuICBUaGlzIHJlcXVpcmVzIHBhaG9sZSB2MS4yMiBvciBsYXRlci5cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY2hhbmdlcy5yc3QtMTQ5LVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jaGFuZ2VzLnJzdDoxNTA6U2luY2UgTGludXggNy4wLCBrZnVuY3MgYW5ub3RhdGVkIHdpdGggS0ZfSU1QTElDSVRfQVJHUyByZXF1aXJlIHBhaG9sZSB2MS4yNlxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jaGFuZ2VzLnJzdC0xNTEtb3IgbGF0ZXIuICBXaXRob3V0IGl0LCBzdWNoIGtmdW5jcyB3aWxsIGhhdmUgaW5jb3JyZWN0IEJURiBwcm90b3R5cGVzIGluXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2J0Zi5oLTgwLSNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFxcdTAwM2NcXHUwMDNjIDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi9cXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjgxOiNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSBcXHUwMDNjXFx1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cXG5pbmNsdWRlL2xpbnV4L2J0Zi5oLTgyLVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgwND1CVEZfSURfRkxBR1MoZnVuYywgY3Jhc2hfa2V4ZWMsIEtGX0RFU1RSVUNUSVZFKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MDUtI2VuZGlmXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgwNjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9uZXcsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwNy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9uZXdfaW1wbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDg6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX25ldywgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODA5LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9uZXdfaW1wbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTA6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfZHJvcCwgS0ZfUkVMRUFTRSB8IEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxMS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxMjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfZHJvcCwgS0ZfUkVMRUFTRSB8IEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxMy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTUtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250LCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTctQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnRfaW1wbClcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE4OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxOS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrX2ltcGwpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgyMDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MjEtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3BvcF9mcm9udCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgzMT1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yZW1vdmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODMyOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODMzLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZF9pbXBsKVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDkxND1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX2luaXQpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDkxNTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3NldF9jYWxsYmFjaywgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTE2LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3Ffc3RhcnQpXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00OTYyPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTYzLSNlbmRpZlxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5NjQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5NjY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5Njc6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjgtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfZnJvbV9maWxlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTI2MTM9c3RhdGljIGludCBmZXRjaF9rZnVuY19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1MS1cXHQvKlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyNjUyOlxcdCAqIEFuIGFjdHVhbCBwcm90b3R5cGUgb2YgYSBrZnVuYyB3aXRoIEtGX0lNUExJQ0lUX0FSR1MgZmxhZ1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjUzLVxcdCAqIGNhbiBiZSBmb3VuZCB0aHJvdWdoIHRoZSBjb3VudGVycGFydCBfaW1wbCBrZnVuYy5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1NC1cXHQgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjY1NTpcXHRpZiAoa2Z1bmNfZmxhZ3MgXFx1MDAyNlxcdTAwMjYgKCprZnVuY19mbGFncyBcXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjU2LVxcdFxcdGZ1bmNfcHJvdG8gPSBmaW5kX2tmdW5jX2ltcGxfcHJvdG8oXFx1MDAyNmVudi1cXHUwMDNlbG9nLCBidGYsIGZ1bmNfbmFtZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA5MDQ9c3RhdGljIGJvb2wgaXNfa2Z1bmNfYXJnX3Byb2dfYXV4KGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl9wYXJhbSAqYXJnKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTA5LS8qXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTEwOiAqIEEga2Z1bmMgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIGhhcyB0d28gcHJvdG90eXBlcyBpbiBCVEY6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTExLSAqICAgLSB0aGUgX2ltcGwgcHJvdG90eXBlIHdpdGggZnVsbCBhcmcgbGlzdCAobWV0YS1cXHUwMDNlZnVuY19wcm90bylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDkxNj1zdGF0aWMgYm9vbCBpc19rZnVuY19hcmdfaW1wbGljaXQoY29uc3Qgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLCB1MzIgYXJnX2lkeClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkyMC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5MjE6XFx0aWYgKCEobWV0YS1cXHUwMDNla2Z1bmNfZmxhZ3MgXFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MjItXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4ODI3PXN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODg3Ny0gKiBSZXNvbHZlIHRoZSBwcm90b3R5cGUgZGVzY3JpYmluZyBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJLiBBXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4ODc4OiAqIEtGX0lNUExJQ0lUX0FSR1Mga2Z1bmMgaGFzIGl0cyBpbmplY3RlZCBhcmdzIHN0cmlwcGVkIGZyb20gdGhlIHB1YmxpY1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODg3OS0gKiBwcm90b3R5cGUsIHNvIHVzZSB0aGUgX2ltcGwgcHJvdG90eXBlOyBvdGhlciB0YXJnZXRzIHVzZSB0aGVpciBvd24uXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4ODI9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg5MDUtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4OTA2OlxcdGlmIChrZnVuY19mbGFncyBcXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg5MDctXFx0XFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXFx1MDAzZW5hbWVfb2ZmKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM9NjgzPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19pbml0KVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Njg0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF9vdmVycmlkZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NMRUVQQUJMRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTY4NS1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2luaXQpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jPTY5Mz1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfY2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Njk0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF90b19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzo2OTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3RvX2NpZCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjY5NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRfdG9wbywgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTY5Ny1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NpZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODczOD1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfZW5xdWV1ZV9kaXNwYXRjaClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3Mzk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX2luc2VydCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3NDA6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX2luc2VydF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODc0MTpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX2RzcV9pbnNlcnRfdnRpbWUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NzQyLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9pbnNlcnRfdnRpbWUsIEtGX1JDVSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTEwMz1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfZGlzcGF0Y2gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTA0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2Rpc3BhdGNoX25yX3Nsb3RzLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kaXNwYXRjaF9jYW5jZWwsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTA2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9tb3ZlX3RvX2xvY2FsLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV90b19sb2NhbF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTEwOC0vKiBzY3hfYnBmX2RzcV9tb3ZlKigpIGFsc28gaW4gc2N4X2tmdW5jX2lkc191bmxvY2tlZDogY2FsbGFibGUgZnJvbSB1bmxvY2tlZCBjb250ZXh0cyAqL1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MTEyPUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9tb3ZlX3Z0aW1lLCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTEzLSNpZmRlZiBDT05GSUdfRVhUX1NVQl9TQ0hFRFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTExNDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zdWJfZGlzcGF0Y2gsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTE1LSNlbmRpZlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MTUyPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19jcHVfcmVsZWFzZSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkxNTM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcmVlbnF1ZXVlX2xvY2FsLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTE1NC1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NwdV9yZWxlYXNlKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MjIxPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkyMjI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3JlYXRlX2RzcSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NMRUVQQUJMRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkyMjMtLyogYWxzbyBpbiBzY3hfa2Z1bmNfaWRzX2Rpc3BhdGNoOiBhbHNvIGNhbGxhYmxlIGZyb20gb3BzLmRpc3BhdGNoKCkgKi9cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTIyNz1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV92dGltZSwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTIyOC0vKiBhbHNvIGluIHNjeF9rZnVuY19pZHNfc2VsZWN0X2NwdTogYWxzbyBjYWxsYWJsZSBmcm9tIG9wcy5zZWxlY3RfY3B1KCkvb3BzLmVucXVldWUoKSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTIyOTpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTIzMC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTIzMTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2RmbCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkyMzItQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTAzODI9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2FueSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzgzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfc2V0X3NsaWNlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfc2V0X2RzcV92dGltZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM4NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NwdSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2tpY2tfY2lkLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX25yX3F1ZXVlZCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2Rlc3Ryb3lfZHNxLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX3BlZWssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1VfUFJPVEVDVEVEIHwgS0ZfUkVUX05VTEwpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfcmVlbnEsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9yZWVucXVldWVfbG9jYWxfX192MiwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzkyOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX25ldywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0lURVJfTkVXIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwMzkzLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTAzOTQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX3NjeF9kc3FfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXhpdF9ic3RyLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXJyb3JfYnN0ciwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzk3OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2R1bXBfYnN0ciwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzk4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQwMDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX3NldCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDAxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZHBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MDI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY2lkcGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQwMzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRwZXJmX3NldCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDA0LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX25yX25vZGVfaWRzKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDQxND1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX2NpZCwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3JxLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfbG9ja2VkX3JxLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQxNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfY3VyciwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDE4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF9jdXJyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1VfUFJPVEVDVEVEKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0MTktQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGlkX3RvX3Rhc2ssIEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0MjE9QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXZlbnRzKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0MjItI2lmZGVmIENPTkZJR19DR1JPVVBfU0NIRURcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDIzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfY2dyb3VwLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVIHwgS0ZfQUNRVUlSRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDI0LSNlbmRpZlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDQ0Nz1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfY3B1X29ubHkpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ0ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NwdSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDQ5LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfY3B1LCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfcnEsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfY3VyciwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDUyOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9jYXAsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1NDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX2N1ciwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDU1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfc2V0LCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0NTYtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X3Bvc3NpYmxlX2NwdW1hc2ssIEtGX0FDUVVJUkUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNDU4PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9jcHVtYXNrLCBLRl9SRUxFQVNFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc2VsZWN0X2NwdV9kZmwsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2MDpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0NjEtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc2VsZWN0X2NwdV9hbmQsIEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDYyOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX2NwdW1hc2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfY3B1bWFza19ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX3NtdG1hc2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFza19ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDY2LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9pZGxlX2NwdW1hc2ssIEtGX1JFTEVBU0UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90ZXN0X2FuZF9jbGVhcl9jcHVfaWRsZSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfaWRsZV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2OTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ3MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ3MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHVfbm9kZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDcyLUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfY3B1X29ubHkpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYz0xNDY0PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19pZGxlKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NjU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9jcHVtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0Njc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfY3B1bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9zbXRtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0Njk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTQ3MC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9wdXRfaWRsZV9jcHVtYXNrLCBLRl9SRUxFQVNFKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGVzdF9hbmRfY2xlYXJfY3B1X2lkbGUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3MjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3MzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1LCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19hbnlfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTQ3Ni1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2lkbGUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYz0xNDk1PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19zZWxlY3RfY3B1KVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0OTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIF9fc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDk3LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ5ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2RmbCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDk5LUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfc2VsZWN0X2NwdSlcXG4tLVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM9MTIyPXN0cnVjdCBvYmplY3Qge1xcbi0tXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xNTQtXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYzoxNTU6I2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFxcdTAwM2NcXHUwMDNjIDE2KVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTU2LSNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggXFxcIl9pbXBsXFxcIlxcbi0tXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYz0xMDY0PXN0YXRpYyBib29sIGlzX2tmX2ltcGxpY2l0X2FyZyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKnApXFxuLS1cXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEwOTItLypcXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jOjEwOTM6ICogRm9yIGEga2Z1bmMgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIHdlIGRvIHRoZSBmb2xsb3dpbmc6XFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMDk0LSAqICAgMS4gQWRkIGEgbmV3IGZ1bmN0aW9uIHdpdGggX2ltcGwgc3VmZml4IGluIHRoZSBuYW1lLCB3aXRoIHRoZSBwcm90b3R5cGVcXG4tLVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTEwNi0gKlxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM6MTEwNzogKiBJZiBhIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBhbHJlYWR5IGhhcyBhbiBfaW1wbCBjb3VudGVycGFydFxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTEwOC0gKiBpbiBCVEYsIHRoZW4gaXQncyBhIGxlZ2FjeSBjYXNlOiBhbiBfaW1wbCBmdW5jdGlvbiBpcyBkZWNsYXJlZCBpbiB0aGVcXG4tLVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM9MTIxND1zdGF0aWMgaW50IGJ0ZjJidGYoc3RydWN0IG9iamVjdCAqb2JqKVxcbi0tXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMjI1LVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM6MTIyNjpcXHRcXHRpZiAoIShrZnVuYy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEyMjctXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jPTE0MDQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19tdWx0aV9zdF9vcHNfdGVzdF8xKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX211bHRpX3N0X29wc190ZXN0XzFfYXNzb2MsIEtGX0lNUExJQ0lUX0FSR1MpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYzoxNDA2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfaW1wbGljaXRfYXJnLCBLRl9JTVBMSUNJVF9BUkdTKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ19sZWdhY3ksIEtGX0lNUExJQ0lUX0FSR1MpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYy0xNDA4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfaW1wbGljaXRfYXJnX2xlZ2FjeV9pbXBsKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNzowNDowNC45MTk1MDAwOTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Nzg2ODU1MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUGxhbjogQlRGIEtGdW5jIEltcGxpY2l0IEFyZ3VtZW50cyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzYCBpbiBga2VybmVsL2JwZi9idGYuY2AsIGFuZCBpbXBvcnRhbnRseSwgaXQncyB1c2VkIHdpdGhpbiBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCB3aGljaCBsaXZlcyBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gIFRoYXQgZnVuY3Rpb24gaXMgdGhlbiBjYWxsZWQgYnkgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBhbmQgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSBzZWxmdGVzdCwgYGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jYCwgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGFsbCBoYW5ncyB0b2dldGhlci4gSXQgcmVsaWVzIG9uIGBicGZfa2Z1bmNfaW1wbGljaXRfYXJnYCwgd2hpY2ggaXMgZGVmaW5lZCBpbiBgYnBmX3Rlc3Rtb2QuY2AsIGJ1dCB0aGF0J3MganVzdCBhIHRlc3QgaGVscGVyLlxuXG5UaGUgY29yZSBsb2dpYyBJIG5lZWQgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcgaXMgZGVmaW5pdGVseSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgYGtlcm5lbC9icGYvYnRmLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBmdW5jdGlvbnMgdXNpbmcgdGhvc2UgZmxhZ3MuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgLCBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCwgYW5kIGBmaW5kX2tmdW5jX2ltcGxfcHJvdG9gLlxuXG5Gb3IgY29uZmlndXJhdGlvbiwgSSdtIGdvaW5nIHRvIG5lZWQgdG8gZW5hYmxlIGBCUEZfU1lTQ0FMTGAg4oCTIHRoYXQncyBmdW5kYW1lbnRhbC4gYERFQlVHX0lORk9fQlRGYCBpcyBhbHNvIHJlcXVpcmVkLCBvYnZpb3VzbHksIGZvciBCVEYgc3VwcG9ydC4gU2luY2UgdGhpcyBpcyByZWxhdGVkIHRvIHRyYWNpbmcsIEknbGwgbmVlZCBgQlBGX0VWRU5UU2AgdG9vLiAgYEJQRl9KSVRgIG1pZ2h0IGJlIGhlbHBmdWwsIGJ1dCBgQlBGX1NZU0NBTExgIGFsb25lIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGdldCB0aGluZ3Mgd29ya2luZyBmb3Igbm93LlxuXG5JIHF1aWNrbHkgY2hlY2tlZCB0aGUgY29kZSBhbmQgcmVjb25maXJtZWQgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBpcyByZWFjaGVkIHdpdGggYEZUUkFDRWAgYW5kIGBCUEZfRVZFTlRTYC4gVGhlIGBicGZfdGVzdG1vZGAgbW9kdWxlIGlzIGp1c3QgZm9yIHRoZSB0ZXN0cy4gVGhlIHJlYWwgYWN0aW9uIGhhcHBlbnMgaW4gdGhlIGNvcmUgdmVyaWZpZXIgYW5kIEJURiBjb2RlLiBFdmVyeXRoaW5nIHNlZW1zIGd1YXJkZWQgYnkgYENPTkZJR19CUEZfU1lTQ0FMTGAsIGFuZCBgREVCVUdfSU5GT19CVEZgIGlzIG5lZWRlZCBmb3IgQlRGIGluIGdlbmVyYWwuIFNvLCBJIGhhdmUgYSBzb2xpZCBjb25maWd1cmF0aW9uIGJhc2VsaW5lLiBOb3csIHRpbWUgdG8gc3RhcnQgZnV6emluZyBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0ODI1LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE3OjA0OjE0LjcwNjM1NzM5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODA5MDEwODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9jaGVja19hdHRhY2hfdGFyZ2V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTE2MT1pbnQgYnBmX2NoZWNrX2J0Zl9pbmZvKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTExNjMtXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaDoxMTY0OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgtMTE2NS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYz02ODQ4PWJvb2wgYnRmX2N0eF9hY2Nlc3MoaW50IG9mZiwgaW50IHNpemUsIGVudW0gYnBmX2FjY2Vzc190eXBlIHR5cGUsXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTcwMjUtXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbmtlcm5lbC9icGYvYnRmLmM6NzAyNjpcXHRcXHQvKiBDaGVja2VkIGJ5IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0ICovXFxua2VybmVsL2JwZi9idGYuYy03MDI3LVxcdFxcdHRuYW1lICs9IHNpemVvZihcXFwiYnRmX3RyYWNlX1xcXCIpIC0gMTtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTM2ODk9c3RhdGljIGludCBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zODIxLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM4MjI6XFx0XFx0ZXJyID0gYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoTlVMTCwgcHJvZywgdGd0X3Byb2csIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zODIzLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZ0Z3RfaW5mbyk7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xMDc2PWludCBicGZfdHJhbXBvbGluZV9saW5rX2Nncm91cF9zaGltKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTEwODYtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTA4NzpcXHRlcnIgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChOVUxMLCBwcm9nLCBOVUxMLFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTEwODgtXFx0XFx0XFx0XFx0ICAgICAgcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhdHRhY2hfYnRmX2lkLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExODg4PXN0YXRpYyBpbnQgcHJvY2Vzc19rZl9hcmdfcHRyX3RvX3JidHJlZV9ub2RlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4OTktICogTFNNIGhvb2tzIGFuZCBpdGVycyAoYm90aCBzbGVlcGFibGUgYW5kIG5vbi1zbGVlcGFibGUpIGFyZSBzYWZlLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTkwMDogKiBBbnkgc2xlZXBhYmxlIHByb2dzIGFyZSBhbHNvIHNhZmUgc2luY2UgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoKSBlbmZvcmNlXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTAxLSAqIHRoZW0gY2FuIG9ubHkgYmUgYXR0YWNoZWQgdG8gc29tZSBzcGVjaWZpYyBob29rIHBvaW50cy5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODg4Mj1idGZfYXR0YWNoX2Z1bmNfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgZnVuY19pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODkxMy1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTg5MTQ6aW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTE1LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTkzMTk9c3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkzNDktXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MzUwOlxcdHJldCA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgcHJvZywgdGd0X3Byb2csIGJ0Zl9pZCwgXFx1MDAyNnRndF9pbmZvKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkzNTEtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTc6MDQ6MTcuNTE1MzgxODI1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEzMzAxMzM4ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIEtlcm5lbCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmcm9tIGEgQlBGIGV4cGVydCdzIHBlcnNwZWN0aXZlLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGNlbnRlciBhcm91bmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBob3cgaXQgaGFuZGxlcyB0aGUgQUJJIG9mIHRyYWNlIHRhcmdldHMgd2hlbiBkZWFsaW5nIHdpdGggYEtGX0lNUExJQ0lUX0FSR1NgIGtmdW5jcy4gSSBjYW4gc2VlIHRoYXQgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBpcyBhIGtleSBmdW5jdGlvbiBoZXJlLCBjYWxsZWQgZnJvbSBgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2hgLCBgYnBmX3RyYW1wb2xpbmVfbGlua19jZ3JvdXBfc2hpbWAsIGFuZCBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAuIFRoZXNlIGFyZSBhbGwgY3J1Y2lhbCBwb2ludHMgd2l0aGluIHRoZSBCUEYgc3Vic3lzdGVtLCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgdHJhY2luZyBhbmQga2Z1bmMgYXR0YWNobWVudC5cblxuSSBpbW1lZGlhdGVseSBuZWVkIHRvIGVuc3VyZSB0aGUgcHJvcGVyIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkIHRvIHJlcHJvZHVjZSB0aGUgaXNzdWUuIExvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcywgSSdsbCBuZWVkIGBCUEZfU1lTQ0FMTGAgdG8gZW5zdXJlIHRoZSBgYnBmKClgIHN5c2NhbGwgaXMgZW5hYmxlZCwgYERFQlVHX0lORk9fQlRGYCBmb3IgQlRGIGdlbmVyYXRpb24sIGFuZCBgQlBGX0VWRU5UU2AgdG8gc3VwcG9ydCBCUEYgdHJhY2luZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYEJQRl9FVkVOVFNgIGlzIGtleSBiZWNhdXNlIHdlIGFyZSBmb2N1c2VkIG9uIHRyYWNpbmcuXG5cblRoZSBtYWluIGZvY3VzIG9mIHRoZSBwYXRjaCBpcyBvbiB0aHJlZSBzeW1ib2xzOiBgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzYCwgYGJ0Zl9hdHRhY2hfZnVuY19wcm90b2AsIGFuZCBgZmluZF9rZnVuY19pbXBsX3Byb3RvYC4gVGhlc2UgYXJlIGFsbCBmdW5kYW1lbnRhbCBjb21wb25lbnRzIGluIHRoZSB2ZXJpZmllcidzIGxvZ2ljLCBhbmQgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZW0gdG8gY29ycmVjdGx5IGhhbmRsZSB0aGUgcHJvdG90eXBlIHJlc29sdXRpb24gb2YgYSB0cmFjZSB0YXJnZXQncyBBQkkuIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgLSBlbnN1cmluZyB0aGF0IHRoZSB2ZXJpZmllciBhY2N1cmF0ZWx5IHVuZGVyc3RhbmRzIGFuZCB2YWxpZGF0ZXMgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgd2hlbiBhIHRyYWNpbmcgcHJvZ3JhbSBhdHRhY2hlcyB0byBhIGtmdW5jLiBUaGlzIGlzIGEgdmVyeSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgcGllY2Ugb2YgY29kZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQuIGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgIGlzIGluIGBrZXJuZWwvYnBmL2J0Zi5jYCwgd2hpbGUgYGZpbmRfa2Z1bmNfaW1wbF9wcm90b2AgYW5kIGBidGZfYXR0YWNoX2Z1bmNfcHJvdG9gIGFyZSBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC5cblxuR2l2ZW4gdGhlIGNvcmUgbmF0dXJlIG9mIHRoaXMgbW9kaWZpY2F0aW9uIHRvIHRoZSBCUEYgdmVyaWZpZXIgYW5kIGl0cyBpbXBhY3Qgb24gaG93IHRyYWNpbmcgcHJvZ3JhbXMgaW50ZXJhY3Qgd2l0aCBrZnVuY3MsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLlxuXG5IZXJl4oCZcyB0aGUgc3VtbWFyeTpcbi0gKipGb2N1cyBTeW1ib2xzKio6IGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgLCBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCwgYW5kIGBmaW5kX2tmdW5jX2ltcGxfcHJvdG9gLlxuLSAqKkVuYWJsZSBDb25maWdzKio6IGBCUEZfU1lTQ0FMTGAsIGBERUJVR19JTkZPX0JURmAsIGBCUEZfRVZFTlRTYC5cbi0gKipSZWFzb25pbmcqKjogVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2YgYSB0cmFjZSB0YXJnZXQncyByZWFsIEFCSSBmb3IgYEtGX0lNUExJQ0lUX0FSR1NgIGtmdW5jcy4gVGhpcyBpbXBhY3RzIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBmb3IgYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMgdG8ga2Z1bmNzLCBzbyB0aGlzIGlzIGhpZ2hseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NzYzLCJPdXRwdXRUb2tlbnMiOjE0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNzowNDoyOC44NDU1MTk3ODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjA0NDQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzXCIsXG4gICAgXCJidGZfYXR0YWNoX2Z1bmNfcHJvdG9cIixcbiAgICBcImZpbmRfa2Z1bmNfaW1wbF9wcm90b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJIGZvciBgS0ZfSU1QTElDSVRfQVJHU2Aga2Z1bmNzLiBUaGlzIGFmZmVjdHMgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljIGZvciBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcyB0byBrZnVuY3MsIHdoaWNoIGlzIGhpZ2hseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzXCIsXG4gICAgXCJidGZfYXR0YWNoX2Z1bmNfcHJvdG9cIixcbiAgICBcImZpbmRfa2Z1bmNfaW1wbF9wcm90b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJIGZvciBgS0ZfSU1QTElDSVRfQVJHU2Aga2Z1bmNzLiBUaGlzIGFmZmVjdHMgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljIGZvciBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcyB0byBrZnVuY3MsIHdoaWNoIGlzIGhpZ2hseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowhg4xk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 16:34:55 +0000 UTC FinishedAt: 2026-07-11 17:04:30 +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_EVENTS" ], "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_EVENTS" ], "series_id": "c1c50f13-1c4b-4bb4-9ae7-67a12058101a" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "btf_kfunc_accumulated_flags", "btf_attach_func_proto", "find_kfunc_impl_proto" ], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDE3OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MmIzM0OywKICAgICYjMzQ7YnRmX2F0dGFjaF9mdW5jX3Byb3RvJiMzNDssCiAgICAmIzM0O2ZpbmRfa2Z1bmNfaW1wbF9wcm90byYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2YgYSB0cmFjZSB0YXJnZXQmIzM5O3MgcmVhbCBBQkkgZm9yIGBLRl9JTVBMSUNJVF9BUkdTYCBrZnVuY3MuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgZm9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zIHRvIGtmdW5jcywgd2hpY2ggaXMgaGlnaGx5IHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNzowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVhMzY0OWM4YzNlZjc4ZDEzYWFmMDkwYTljZGNmYWM0ZDg4MTQxN2FcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxNzowMzo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxuaW5kZXggMjQwNDAxZDliMjViOWUuLmM1MjI0NWFlMGRmNWQ3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9idGYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9idGYuaFxuQEAgLTU3OCw2ICYjNDM7NTc4LDcgQEAgY29uc3QgY2hhciAqYnRmX3N0cl9ieV9vZmZzZXQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgb2Zmc2V0KTtcbiBzdHJ1Y3QgYnRmICpidGZfcGFyc2Vfdm1saW51eCh2b2lkKTtcbiBzdHJ1Y3QgYnRmICpicGZfcHJvZ19nZXRfdGFyZ2V0X2J0Zihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuIHUzMiAqYnRmX2tmdW5jX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbiYjNDM7dTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpO1xuIGJvb2wgYnRmX2tmdW5jX2lzX2FsbG93ZWQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuIHUzMiAqYnRmX2tmdW5jX2lzX21vZGlmeV9yZXR1cm4oY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLFxuIFx0XHRcdFx0Y29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2J0Zi5jIGIva2VybmVsL2JwZi9idGYuY1xuaW5kZXggNjQ1NzJmODVlZGM4MzIuLjIwYWVjYTZiNGY5NWM5IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9idGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9idGYuY1xuQEAgLTkxMTQsNiAmIzQzOzkxMTQsMjYgQEAgdTMyICpidGZfa2Z1bmNfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLCBjb25zdCBzdHJ1Y3QgYnBmX3BcbiBcdHJldHVybiBidGZfa2Z1bmNfaWRfc2V0X2NvbnRhaW5zKGJ0ZiwgaG9vaywga2Z1bmNfYnRmX2lkKTtcbiB9XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFJldHVybiB0aGUgdW5pb24gb2YgYSBrZnVuYyYjMzk7cyBmbGFncyBhY3Jvc3MgYWxsIGhvb2tzLlxuJiM0MzsgKiBVbmxpa2UgYnRmX2tmdW5jX2ZsYWdzKCksIG5vdCByZXN0cmljdGVkIHRvIGEgY2FsbGluZ1xuJiM0MzsgKiBwcm9ncmFtJiMzOTtzIGhvb2suIFVzZWQgd2hlbiBhdHRhY2hpbmcgdG8gYSBrZnVuYyBmb3IgdHJhY2luZy5cbiYjNDM7ICovXG4mIzQzO3UzMiBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkKVxuJiM0Mzt7XG4mIzQzO1x0ZW51bSBidGZfa2Z1bmNfaG9vayBob29rO1xuJiM0MztcdHUzMiAqaG9va19mbGFncztcbiYjNDM7XHR1MzIgZmxhZ3MgPSAwO1xuJiM0MztcbiYjNDM7XHRmb3IgKGhvb2sgPSAwOyBob29rIFx1MDAzYyBCVEZfS0ZVTkNfSE9PS19NQVg7IGhvb2smIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRob29rX2ZsYWdzID0gYnRmX2tmdW5jX2lkX3NldF9jb250YWlucyhidGYsIGhvb2ssIGtmdW5jX2J0Zl9pZCk7XG4mIzQzO1x0XHRpZiAoaG9va19mbGFncylcbiYjNDM7XHRcdFx0ZmxhZ3MgfD0gKmhvb2tfZmxhZ3M7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gZmxhZ3M7XG4mIzQzO31cbiYjNDM7XG4gdTMyICpidGZfa2Z1bmNfaXNfbW9kaWZ5X3JldHVybihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsXG4gXHRcdFx0XHRjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4ge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggNjUxNWQ0ZDNjMDAzMmYuLjJmNTZhYjhkNmI1OGM5IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC0yNTg0LDI0ICYjNDM7MjU4NCwyNCBAQCBzdGF0aWMgc3RydWN0IGJ0ZiAqZmluZF9rZnVuY19kZXNjX2J0ZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMTYgb2Zmc2V0KVxuIFxuICNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggXCYjMzQ7X2ltcGxcJiMzNDtcbiBcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi1cdFx0XHRcdFx0XHQgICAgc3RydWN0IGJ0ZiAqYnRmLFxuLVx0XHRcdFx0XHRcdCAgICBjb25zdCBjaGFyICpmdW5jX25hbWUpXG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKlxuJiM0MztmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBjaGFyICpmdW5jX25hbWUpXG4ge1xuLVx0Y2hhciAqYnVmID0gZW52LVx1MDAzZXRtcF9zdHJfYnVmO1xuIFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jO1xuJiM0MztcdGNoYXIgYnVmW0tTWU1fTkFNRV9MRU5dO1xuIFx0czMyIGltcGxfaWQ7XG4gXHRpbnQgbGVuO1xuIFxuLVx0bGVuID0gc25wcmludGYoYnVmLCBUTVBfU1RSX0JVRl9MRU4sIFwmIzM0OyVzJXNcJiMzNDssIGZ1bmNfbmFtZSwgS0ZfSU1QTF9TVUZGSVgpO1xuLVx0aWYgKGxlbiBcdTAwM2MgMCB8fCBsZW4gXHUwMDNlPSBUTVBfU1RSX0JVRl9MRU4pIHtcbi1cdFx0dmVyYm9zZShlbnYsIFwmIzM0O2Z1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xcblwmIzM0OywgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4mIzQzO1x0bGVuID0gc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgXCYjMzQ7JXMlc1wmIzM0OywgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4mIzQzO1x0aWYgKGxlbiBcdTAwM2MgMCB8fCBsZW4gXHUwMDNlPSBzaXplb2YoYnVmKSkge1xuJiM0MztcdFx0YnBmX2xvZyhsb2csIFwmIzM0O2Z1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xcblwmIzM0OyxcbiYjNDM7XHRcdFx0ZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuIFx0aW1wbF9pZCA9IGJ0Zl9maW5kX2J5X25hbWVfa2luZChidGYsIGJ1ZiwgQlRGX0tJTkRfRlVOQyk7XG4gXHRpZiAoaW1wbF9pZCBcdTAwM2M9IDApIHtcbi1cdFx0dmVyYm9zZShlbnYsIFwmIzM0O2Nhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxcblwmIzM0OywgYnVmKTtcbiYjNDM7XHRcdGJwZl9sb2cobG9nLCBcJiMzNDtjYW5ub3QgZmluZCBmdW5jdGlvbiAlcyBpbiBCVEZcXG5cJiMzNDssIGJ1Zik7XG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuQEAgLTI2NTMsNyAmIzQzOzI2NTMsNyBAQCBzdGF0aWMgaW50IGZldGNoX2tmdW5jX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdCAqIGNhbiBiZSBmb3VuZCB0aHJvdWdoIHRoZSBjb3VudGVycGFydCBfaW1wbCBrZnVuYy5cbiBcdCAqL1xuIFx0aWYgKGtmdW5jX2ZsYWdzIFx1MDAyNlx1MDAyNiAoKmtmdW5jX2ZsYWdzIFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcbi1cdFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhlbnYsIGJ0ZiwgZnVuY19uYW1lKTtcbiYjNDM7XHRcdGZ1bmNfcHJvdG8gPSBmaW5kX2tmdW5jX2ltcGxfcHJvdG8oXHUwMDI2ZW52LVx1MDAzZWxvZywgYnRmLCBmdW5jX25hbWUpO1xuIFx0ZWxzZVxuIFx0XHRmdW5jX3Byb3RvID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLVx1MDAzZXR5cGUpO1xuIFxuQEAgLTE4ODczLDYgJiM0MzsxODg3Myw0NCBAQCBzdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYlxuIFx0cmV0dXJuIC1FSU5WQUw7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBSZXNvbHZlIHRoZSBwcm90b3R5cGUgZGVzY3JpYmluZyBhIHRyYWNlIHRhcmdldCYjMzk7cyByZWFsIEFCSS4gQVxuJiM0MzsgKiBLRl9JTVBMSUNJVF9BUkdTIGtmdW5jIGhhcyBpdHMgaW5qZWN0ZWQgYXJncyBzdHJpcHBlZCBmcm9tIHRoZSBwdWJsaWNcbiYjNDM7ICogcHJvdG90eXBlLCBzbyB1c2UgdGhlIF9pbXBsIHByb3RvdHlwZTsgb3RoZXIgdGFyZ2V0cyB1c2UgdGhlaXIgb3duLlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXG4mIzQzO2J0Zl9hdHRhY2hfZnVuY19wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBmdW5jX2lkKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jO1xuJiM0MztcdHN0cnVjdCBtb2R1bGUgKm1vZCA9IE5VTEw7XG4mIzQzO1x0Y29uc3QgY2hhciAqbmFtZTtcbiYjNDM7XHR1MzIga2Z1bmNfZmxhZ3M7XG4mIzQzO1xuJiM0MztcdGZ1bmMgPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmNfaWQpO1xuJiM0MztcdGlmICghZnVuYyB8fCAhYnRmX3R5cGVfaXNfZnVuYyhmdW5jKSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncygpIHJlYWRzIGtmdW5jX3NldF90YWIsIHdoaWNoIGZvciBhXG4mIzQzO1x0ICogbW9kdWxlIGlzIHN0YWJsZSBvbmx5IG9uY2UgaXQgaXMgbGl2ZTsgaG9sZCBhIG1vZHVsZSByZWYgYWNyb3NzXG4mIzQzO1x0ICogdGhlIHJlYWQgdG8gZXhjbHVkZSBhIGNvbmN1cnJlbnQgbW9kdWxlIGxvYWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGJ0Zl9pc19tb2R1bGUoYnRmKSkge1xuJiM0MztcdFx0bW9kID0gYnRmX3RyeV9nZXRfbW9kdWxlKGJ0Zik7XG4mIzQzO1x0XHRpZiAoIW1vZClcbiYjNDM7XHRcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0fVxuJiM0MztcdGtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7XG4mIzQzO1x0bW9kdWxlX3B1dChtb2QpO1xuJiM0MztcbiYjNDM7XHRpZiAoa2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcbiYjNDM7XHRcdG5hbWUgPSBidGZfbmFtZV9ieV9vZmZzZXQoYnRmLCBmdW5jLVx1MDAzZW5hbWVfb2ZmKTtcbiYjNDM7XHRcdHJldHVybiBmaW5kX2tmdW5jX2ltcGxfcHJvdG8obG9nLCBidGYsIG5hbWUpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgZnVuYy1cdTAwM2V0eXBlKTtcbiYjNDM7fVxuJiM0MztcbiBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbiBcdFx0XHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuIFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnRndF9wcm9nLFxuQEAgLTE5MTIxLDggJiM0MzsxOTE1OSw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0XHRpZiAocHJvZ19leHRlbnNpb24gXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBidGZfY2hlY2tfdHlwZV9tYXRjaChsb2csIHByb2csIGJ0ZiwgdCkpXG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHRcdHQgPSBidGZfdHlwZV9ieV9pZChidGYsIHQtXHUwMDNldHlwZSk7XG4tXHRcdGlmICghYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcbiYjNDM7XHRcdHQgPSBidGZfYXR0YWNoX2Z1bmNfcHJvdG8obG9nLCBidGYsIGJ0Zl9pZCk7XG4mIzQzO1x0XHRpZiAoIXQgfHwgIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4gXHRcdGlmICgocHJvZy1cdTAwM2VhdXgtXHUwMDNlc2F2ZWRfZHN0X3Byb2dfdHlwZSB8fCBwcm9nLVx1MDAzZWF1eC1cdTAwM2VzYXZlZF9kc3RfYXR0YWNoX3R5cGUpIFx1MDAyNlx1MDAyNlxuQEAgLTE5NDA3LDggJiM0MzsxOTQ0NSw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0aWYgKCFidGZfdHlwZV9pc19mdW5jKHQpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdHQgPSBidGZfdHlwZV9ieV9pZChidGYsIHQtXHUwMDNldHlwZSk7XG4tXHRpZiAoIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4mIzQzO1x0dCA9IGJ0Zl9hdHRhY2hfZnVuY19wcm90byhOVUxMLCBidGYsIGJ0Zl9pZCk7XG4mIzQzO1x0aWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdGVyciA9IGJ0Zl9kaXN0aWxsX2Z1bmNfcHJvdG8oTlVMTCwgYnRmLCB0LCB0bmFtZSwgXHUwMDI2dGd0X2luZm8tXHUwMDNlZm1vZGVsKTtcbiBcdGlmIChlcnIgXHUwMDNjIDApXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi42MWNjNWFhYmEwMjU0ZFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcbkBAIC0wLDAgJiM0MzsxLDM2IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcJiMzNDtrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuc2tlbC5oXCYjMzQ7XG4mIzQzO1xuJiM0Mzt2b2lkIHRlc3Rfa2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nICpza2VsO1xuJiM0MztcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyk7XG4mIzQzO1x0aW50IGVyciwgZmQ7XG4mIzQzO1xuJiM0MztcdHNrZWwgPSBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX29wZW5fYW5kX2xvYWQoKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCYjMzQ7b3Blbl9hbmRfbG9hZFwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGVyciA9IGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fYXR0YWNoKHNrZWwpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YXR0YWNoXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gY2xlYW51cDtcbiYjNDM7XG4mIzQzO1x0ZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbC1cdTAwM2Vwcm9ncy50cmlnZ2VyX2ltcGxpY2l0X2FyZyk7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7dGVzdF9ydW5cJiMzNDspKVxuJiM0MztcdFx0Z290byBjbGVhbnVwO1xuJiM0MztcbiYjNDM7XHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCA1LCBcJiMzNDtrZnVuY19yZXR2YWxcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VmZW50cnlfYXJnX2NudCwgMiwgXCYjMzQ7ZmVudHJ5X2FyZ19jbnRcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9ORVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmVudHJ5X2F1eF9hcmcsIDAsIFwmIzM0O2ZlbnRyeV9hdXhfYXJnXCYjMzQ7KTtcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmVudHJ5X3Jlc3VsdCwgMSwgXCYjMzQ7ZmVudHJ5X3Jlc3VsdFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZleGl0X2FyZ19jbnQsIDIsIFwmIzM0O2ZleGl0X2FyZ19jbnRcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9ORVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmV4aXRfYXV4X2FyZywgMCwgXCYjMzQ7ZmV4aXRfYXV4X2FyZ1wmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZleGl0X3Jlc3VsdCwgMSwgXCYjMzQ7ZmV4aXRfcmVzdWx0XCYjMzQ7KTtcbiYjNDM7XG4mIzQzO2NsZWFudXA6XG4mIzQzO1x0a2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjk5NWY4YjhiNWI5ZThmXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcbkBAIC0wLDAgJiM0MzsxLDc3IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY3ZtbGludXguaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NlcnJuby5oXHUwMDNlXG4mIzQzO1xuJiM0MztleHRlcm4gaW50IGJwZl9rZnVuY19pbXBsaWNpdF9hcmcoaW50IGEpIF9fd2VhayBfX2tzeW07XG4mIzQzO1xuJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiM0MztcbiYjNDM7LyogU2hhcmVkIGFyZyBjaGVja3M7IHJlcG9ydHMgYXJnIGNvdW50IGFuZCBhdXgsIHJldHVybnMgMSBvbiBzdWNjZXNzLiAqL1xuJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIF9fdTY0XG4mIzQzO2NoZWNrX2ltcGxpY2l0X2FyZ3Modm9pZCAqY3R4LCBfX3U2NCAqYXJnX2NudCwgX191NjQgKmF1eF9hcmcpXG4mIzQzO3tcbiYjNDM7XHRfX3U2NCBhID0gMCwgYXV4ID0gMCwgeiA9IDA7XG4mIzQzO1x0X191NjQgcmVzdWx0O1xuJiM0MztcdF9fczY0IGVycjtcbiYjNDM7XG4mIzQzO1x0KmFyZ19jbnQgPSBicGZfZ2V0X2Z1bmNfYXJnX2NudChjdHgpO1xuJiM0MztcdHJlc3VsdCA9ICphcmdfY250ID09IDI7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9nZXRfZnVuY19hcmcoY3R4LCAwLCBcdTAwMjZhKTtcbiYjNDM7XHRyZXN1bHQgXHUwMDI2PSBlcnIgPT0gMCBcdTAwMjZcdTAwMjYgKGludClhID09IDU7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9nZXRfZnVuY19hcmcoY3R4LCAxLCBcdTAwMjZhdXgpO1xuJiM0MztcdCphdXhfYXJnID0gYXV4O1xuJiM0MztcdHJlc3VsdCBcdTAwMjY9IGVyciA9PSAwIFx1MDAyNlx1MDAyNiBhdXggIT0gMDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDIsIFx1MDAyNnopO1xuJiM0MztcdHJlc3VsdCBcdTAwMjY9IGVyciA9PSAtRUlOVkFMO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcmVzdWx0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztfX3U2NCBmZW50cnlfcmVzdWx0O1xuJiM0MztfX3U2NCBmZW50cnlfYXJnX2NudDtcbiYjNDM7X191NjQgZmVudHJ5X2F1eF9hcmc7XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7ZmVudHJ5L2JwZl9rZnVuY19pbXBsaWNpdF9hcmdcJiMzNDspXG4mIzQzO2ludCBCUEZfUFJPRyh0cmFjZV9pbXBsaWNpdF9hcmdfZmVudHJ5KVxuJiM0Mzt7XG4mIzQzO1x0X191NjQgcmV0ID0gMDtcbiYjNDM7XHRfX3M2NCBlcnI7XG4mIzQzO1xuJiM0MztcdGZlbnRyeV9yZXN1bHQgPSBjaGVja19pbXBsaWNpdF9hcmdzKGN0eCwgXHUwMDI2ZmVudHJ5X2FyZ19jbnQsIFx1MDAyNmZlbnRyeV9hdXhfYXJnKTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX2dldF9mdW5jX3JldChjdHgsIFx1MDAyNnJldCk7XG4mIzQzO1x0ZmVudHJ5X3Jlc3VsdCBcdTAwMjY9IGVyciA9PSAtRU9QTk9UU1VQUDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO19fdTY0IGZleGl0X3Jlc3VsdDtcbiYjNDM7X191NjQgZmV4aXRfYXJnX2NudDtcbiYjNDM7X191NjQgZmV4aXRfYXV4X2FyZztcbiYjNDM7XG4mIzQzO1NFQyhcJiMzNDtmZXhpdC9icGZfa2Z1bmNfaW1wbGljaXRfYXJnXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0codHJhY2VfaW1wbGljaXRfYXJnX2ZleGl0KVxuJiM0Mzt7XG4mIzQzO1x0X191NjQgcmV0ID0gMDtcbiYjNDM7XHRfX3M2NCBlcnI7XG4mIzQzO1xuJiM0MztcdGZleGl0X3Jlc3VsdCA9IGNoZWNrX2ltcGxpY2l0X2FyZ3MoY3R4LCBcdTAwMjZmZXhpdF9hcmdfY250LCBcdTAwMjZmZXhpdF9hdXhfYXJnKTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gYnBmX2dldF9mdW5jX3JldChjdHgsIFx1MDAyNnJldCk7XG4mIzQzO1x0ZmV4aXRfcmVzdWx0IFx1MDAyNj0gZXJyID09IDAgXHUwMDI2XHUwMDI2IHJldCA9PSA1O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3N5c2NhbGxcJiMzNDspXG4mIzQzO2ludCB0cmlnZ2VyX2ltcGxpY2l0X2FyZyh2b2lkICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyg1KTtcbiYjNDM7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE3OjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MmIzM0OywKICAgICYjMzQ7YnRmX2F0dGFjaF9mdW5jX3Byb3RvJiMzNDssCiAgICAmIzM0O2ZpbmRfa2Z1bmNfaW1wbF9wcm90byYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2YgYSB0cmFjZSB0YXJnZXQmIzM5O3MgcmVhbCBBQkkgZm9yIGBLRl9JTVBMSUNJVF9BUkdTYCBrZnVuY3MuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgZm9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zIHRvIGtmdW5jcywgd2hpY2ggaXMgaGlnaGx5IHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWEzNjQ5YzhjM2VmNzhkMTNhYWYwOTBhOWNkY2ZhYzRkODgxNDE3YQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDExIDE3OjAzOjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idGYuaCBiL2luY2x1ZGUvbGludXgvYnRmLmgKaW5kZXggMjQwNDAxZDliMjViOWUuLmM1MjI0NWFlMGRmNWQ3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2J0Zi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYnRmLmgKQEAgLTU3OCw2ICYjNDM7NTc4LDcgQEAgY29uc3QgY2hhciAqYnRmX3N0cl9ieV9vZmZzZXQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgb2Zmc2V0KTsKIHN0cnVjdCBidGYgKmJ0Zl9wYXJzZV92bWxpbnV4KHZvaWQpOwogc3RydWN0IGJ0ZiAqYnBmX3Byb2dfZ2V0X3RhcmdldF9idGYoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTsKIHUzMiAqYnRmX2tmdW5jX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTsKJiM0Mzt1MzIgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCk7CiBib29sIGJ0Zl9rZnVuY19pc19hbGxvd2VkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTsKIHUzMiAqYnRmX2tmdW5jX2lzX21vZGlmeV9yZXR1cm4oY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLAogCQkJCWNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7CmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2J0Zi5jIGIva2VybmVsL2JwZi9idGYuYwppbmRleCA2NDU3MmY4NWVkYzgzMi4uMjBhZWNhNmI0Zjk1YzkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvYnRmLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9idGYuYwpAQCAtOTExNCw2ICYjNDM7OTExNCwyNiBAQCB1MzIgKmJ0Zl9rZnVuY19mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcAogCXJldHVybiBidGZfa2Z1bmNfaWRfc2V0X2NvbnRhaW5zKGJ0ZiwgaG9vaywga2Z1bmNfYnRmX2lkKTsKIH0KIAomIzQzOy8qCiYjNDM7ICogUmV0dXJuIHRoZSB1bmlvbiBvZiBhIGtmdW5jJiMzOTtzIGZsYWdzIGFjcm9zcyBhbGwgaG9va3MuCiYjNDM7ICogVW5saWtlIGJ0Zl9rZnVuY19mbGFncygpLCBub3QgcmVzdHJpY3RlZCB0byBhIGNhbGxpbmcKJiM0MzsgKiBwcm9ncmFtJiMzOTtzIGhvb2suIFVzZWQgd2hlbiBhdHRhY2hpbmcgdG8gYSBrZnVuYyBmb3IgdHJhY2luZy4KJiM0MzsgKi8KJiM0Mzt1MzIgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCkKJiM0Mzt7CiYjNDM7CWVudW0gYnRmX2tmdW5jX2hvb2sgaG9vazsKJiM0MzsJdTMyICpob29rX2ZsYWdzOwomIzQzOwl1MzIgZmxhZ3MgPSAwOwomIzQzOwomIzQzOwlmb3IgKGhvb2sgPSAwOyBob29rICZsdDsgQlRGX0tGVU5DX0hPT0tfTUFYOyBob29rJiM0MzsmIzQzOykgewomIzQzOwkJaG9va19mbGFncyA9IGJ0Zl9rZnVuY19pZF9zZXRfY29udGFpbnMoYnRmLCBob29rLCBrZnVuY19idGZfaWQpOwomIzQzOwkJaWYgKGhvb2tfZmxhZ3MpCiYjNDM7CQkJZmxhZ3MgfD0gKmhvb2tfZmxhZ3M7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIGZsYWdzOwomIzQzO30KJiM0MzsKIHUzMiAqYnRmX2tmdW5jX2lzX21vZGlmeV9yZXR1cm4oY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLAogCQkJCWNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZykKIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCA2NTE1ZDRkM2MwMDMyZi4uMmY1NmFiOGQ2YjU4YzkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTI1ODQsMjQgJiM0MzsyNTg0LDI0IEBAIHN0YXRpYyBzdHJ1Y3QgYnRmICpmaW5kX2tmdW5jX2Rlc2NfYnRmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMxNiBvZmZzZXQpCiAKICNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggJiMzNDtfaW1wbCYjMzQ7CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAotCQkJCQkJICAgIHN0cnVjdCBidGYgKmJ0ZiwKLQkJCQkJCSAgICBjb25zdCBjaGFyICpmdW5jX25hbWUpCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqCiYjNDM7ZmluZF9rZnVuY19pbXBsX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgY29uc3QgY2hhciAqZnVuY19uYW1lKQogewotCWNoYXIgKmJ1ZiA9IGVudi0mZ3Q7dG1wX3N0cl9idWY7CiAJY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmdW5jOwomIzQzOwljaGFyIGJ1ZltLU1lNX05BTUVfTEVOXTsKIAlzMzIgaW1wbF9pZDsKIAlpbnQgbGVuOwogCi0JbGVuID0gc25wcmludGYoYnVmLCBUTVBfU1RSX0JVRl9MRU4sICYjMzQ7JXMlcyYjMzQ7LCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTsKLQlpZiAobGVuICZsdDsgMCB8fCBsZW4gJmd0Oz0gVE1QX1NUUl9CVUZfTEVOKSB7Ci0JCXZlcmJvc2UoZW52LCAmIzM0O2Z1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xuJiMzNDssIGZ1bmNfbmFtZSwgS0ZfSU1QTF9TVUZGSVgpOwomIzQzOwlsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAmIzM0OyVzJXMmIzM0OywgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7CiYjNDM7CWlmIChsZW4gJmx0OyAwIHx8IGxlbiAmZ3Q7PSBzaXplb2YoYnVmKSkgewomIzQzOwkJYnBmX2xvZyhsb2csICYjMzQ7ZnVuY3Rpb24gbmFtZSAlcyVzIGlzIHRvbyBsb25nXG4mIzM0OywKJiM0MzsJCQlmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCiAJaW1wbF9pZCA9IGJ0Zl9maW5kX2J5X25hbWVfa2luZChidGYsIGJ1ZiwgQlRGX0tJTkRfRlVOQyk7CiAJaWYgKGltcGxfaWQgJmx0Oz0gMCkgewotCQl2ZXJib3NlKGVudiwgJiMzNDtjYW5ub3QgZmluZCBmdW5jdGlvbiAlcyBpbiBCVEZcbiYjMzQ7LCBidWYpOwomIzQzOwkJYnBmX2xvZyhsb2csICYjMzQ7Y2Fubm90IGZpbmQgZnVuY3Rpb24gJXMgaW4gQlRGXG4mIzM0OywgYnVmKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC0yNjUzLDcgJiM0MzsyNjUzLDcgQEAgc3RhdGljIGludCBmZXRjaF9rZnVuY19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJICogY2FuIGJlIGZvdW5kIHRocm91Z2ggdGhlIGNvdW50ZXJwYXJ0IF9pbXBsIGtmdW5jLgogCSAqLwogCWlmIChrZnVuY19mbGFncyAmYW1wOyZhbXA7ICgqa2Z1bmNfZmxhZ3MgJmFtcDsgS0ZfSU1QTElDSVRfQVJHUykpCi0JCWZ1bmNfcHJvdG8gPSBmaW5kX2tmdW5jX2ltcGxfcHJvdG8oZW52LCBidGYsIGZ1bmNfbmFtZSk7CiYjNDM7CQlmdW5jX3Byb3RvID0gZmluZF9rZnVuY19pbXBsX3Byb3RvKCZhbXA7ZW52LSZndDtsb2csIGJ0ZiwgZnVuY19uYW1lKTsKIAllbHNlCiAJCWZ1bmNfcHJvdG8gPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtJmd0O3R5cGUpOwogCkBAIC0xODg3Myw2ICYjNDM7MTg4NzMsNDQgQEAgc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGIKIAlyZXR1cm4gLUVJTlZBTDsKIH0KIAomIzQzOy8qCiYjNDM7ICogUmVzb2x2ZSB0aGUgcHJvdG90eXBlIGRlc2NyaWJpbmcgYSB0cmFjZSB0YXJnZXQmIzM5O3MgcmVhbCBBQkkuIEEKJiM0MzsgKiBLRl9JTVBMSUNJVF9BUkdTIGtmdW5jIGhhcyBpdHMgaW5qZWN0ZWQgYXJncyBzdHJpcHBlZCBmcm9tIHRoZSBwdWJsaWMKJiM0MzsgKiBwcm90b3R5cGUsIHNvIHVzZSB0aGUgX2ltcGwgcHJvdG90eXBlOyBvdGhlciB0YXJnZXRzIHVzZSB0aGVpciBvd24uCiYjNDM7ICovCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqCiYjNDM7YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZ1bmM7CiYjNDM7CXN0cnVjdCBtb2R1bGUgKm1vZCA9IE5VTEw7CiYjNDM7CWNvbnN0IGNoYXIgKm5hbWU7CiYjNDM7CXUzMiBrZnVuY19mbGFnczsKJiM0MzsKJiM0MzsJZnVuYyA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgZnVuY19pZCk7CiYjNDM7CWlmICghZnVuYyB8fCAhYnRmX3R5cGVfaXNfZnVuYyhmdW5jKSkKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MoKSByZWFkcyBrZnVuY19zZXRfdGFiLCB3aGljaCBmb3IgYQomIzQzOwkgKiBtb2R1bGUgaXMgc3RhYmxlIG9ubHkgb25jZSBpdCBpcyBsaXZlOyBob2xkIGEgbW9kdWxlIHJlZiBhY3Jvc3MKJiM0MzsJICogdGhlIHJlYWQgdG8gZXhjbHVkZSBhIGNvbmN1cnJlbnQgbW9kdWxlIGxvYWQuCiYjNDM7CSAqLwomIzQzOwlpZiAoYnRmX2lzX21vZHVsZShidGYpKSB7CiYjNDM7CQltb2QgPSBidGZfdHJ5X2dldF9tb2R1bGUoYnRmKTsKJiM0MzsJCWlmICghbW9kKQomIzQzOwkJCXJldHVybiBOVUxMOwomIzQzOwl9CiYjNDM7CWtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7CiYjNDM7CW1vZHVsZV9wdXQobW9kKTsKJiM0MzsKJiM0MzsJaWYgKGtmdW5jX2ZsYWdzICZhbXA7IEtGX0lNUExJQ0lUX0FSR1MpIHsKJiM0MzsJCW5hbWUgPSBidGZfbmFtZV9ieV9vZmZzZXQoYnRmLCBmdW5jLSZndDtuYW1lX29mZik7CiYjNDM7CQlyZXR1cm4gZmluZF9rZnVuY19pbXBsX3Byb3RvKGxvZywgYnRmLCBuYW1lKTsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLSZndDt0eXBlKTsKJiM0Mzt9CiYjNDM7CiBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywKIAkJCSAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csCiAJCQkgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZywKQEAgLTE5MTIxLDggJiM0MzsxOTE1OSw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLAogCQlpZiAocHJvZ19leHRlbnNpb24gJmFtcDsmYW1wOwogCQkgICAgYnRmX2NoZWNrX3R5cGVfbWF0Y2gobG9nLCBwcm9nLCBidGYsIHQpKQogCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCXQgPSBidGZfdHlwZV9ieV9pZChidGYsIHQtJmd0O3R5cGUpOwotCQlpZiAoIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpCiYjNDM7CQl0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKGxvZywgYnRmLCBidGZfaWQpOwomIzQzOwkJaWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJaWYgKChwcm9nLSZndDthdXgtJmd0O3NhdmVkX2RzdF9wcm9nX3R5cGUgfHwgcHJvZy0mZ3Q7YXV4LSZndDtzYXZlZF9kc3RfYXR0YWNoX3R5cGUpICZhbXA7JmFtcDsKQEAgLTE5NDA3LDggJiM0MzsxOTQ0NSw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0CiAJCXJldHVybiAtRUlOVkFMOwogCWlmICghYnRmX3R5cGVfaXNfZnVuYyh0KSkKIAkJcmV0dXJuIC1FSU5WQUw7Ci0JdCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgdC0mZ3Q7dHlwZSk7Ci0JaWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKQomIzQzOwl0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgYnRmX2lkKTsKJiM0MzsJaWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAllcnIgPSBidGZfZGlzdGlsbF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgdCwgdG5hbWUsICZhbXA7dGd0X2luZm8tJmd0O2Ztb2RlbCk7CiAJaWYgKGVyciAmbHQ7IDApCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi42MWNjNWFhYmEwMjU0ZAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jCkBAIC0wLDAgJiM0MzsxLDM2IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O3Rlc3RfcHJvZ3MuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5za2VsLmgmIzM0OwomIzQzOwomIzQzO3ZvaWQgdGVzdF9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7CiYjNDM7CUxJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyk7CiYjNDM7CWludCBlcnIsIGZkOwomIzQzOwomIzQzOwlza2VsID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O29wZW5fYW5kX2xvYWQmIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWVyciA9IGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fYXR0YWNoKHNrZWwpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7YXR0YWNoJiMzNDspKQomIzQzOwkJZ290byBjbGVhbnVwOwomIzQzOwomIzQzOwlmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLSZndDtwcm9ncy50cmlnZ2VyX2ltcGxpY2l0X2FyZyk7CiYjNDM7CWVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsICZhbXA7dG9wdHMpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7dGVzdF9ydW4mIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CUFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIDUsICYjMzQ7a2Z1bmNfcmV0dmFsJiMzNDspOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtmZW50cnlfYXJnX2NudCwgMiwgJiMzNDtmZW50cnlfYXJnX2NudCYjMzQ7KTsKJiM0MzsJQVNTRVJUX05FUShza2VsLSZndDtic3MtJmd0O2ZlbnRyeV9hdXhfYXJnLCAwLCAmIzM0O2ZlbnRyeV9hdXhfYXJnJiMzNDspOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtmZW50cnlfcmVzdWx0LCAxLCAmIzM0O2ZlbnRyeV9yZXN1bHQmIzM0Oyk7CiYjNDM7CUFTU0VSVF9FUShza2VsLSZndDtic3MtJmd0O2ZleGl0X2FyZ19jbnQsIDIsICYjMzQ7ZmV4aXRfYXJnX2NudCYjMzQ7KTsKJiM0MzsJQVNTRVJUX05FUShza2VsLSZndDtic3MtJmd0O2ZleGl0X2F1eF9hcmcsIDAsICYjMzQ7ZmV4aXRfYXV4X2FyZyYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VRKHNrZWwtJmd0O2Jzcy0mZ3Q7ZmV4aXRfcmVzdWx0LCAxLCAmIzM0O2ZleGl0X3Jlc3VsdCYjMzQ7KTsKJiM0MzsKJiM0MztjbGVhbnVwOgomIzQzOwlrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2Rlc3Ryb3koc2tlbCk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi45OTVmOGI4YjViOWU4ZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYwpAQCAtMCwwICYjNDM7MSw3NyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDt2bWxpbnV4LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDticGYvYnBmX3RyYWNpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7ZXJybm8uaCZndDsKJiM0MzsKJiM0MztleHRlcm4gaW50IGJwZl9rZnVuY19pbXBsaWNpdF9hcmcoaW50IGEpIF9fd2VhayBfX2tzeW07CiYjNDM7CiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwomIzQzOwomIzQzOy8qIFNoYXJlZCBhcmcgY2hlY2tzOyByZXBvcnRzIGFyZyBjb3VudCBhbmQgYXV4LCByZXR1cm5zIDEgb24gc3VjY2Vzcy4gKi8KJiM0MztzdGF0aWMgX19hbHdheXNfaW5saW5lIF9fdTY0CiYjNDM7Y2hlY2tfaW1wbGljaXRfYXJncyh2b2lkICpjdHgsIF9fdTY0ICphcmdfY250LCBfX3U2NCAqYXV4X2FyZykKJiM0Mzt7CiYjNDM7CV9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDsKJiM0MzsJX191NjQgcmVzdWx0OwomIzQzOwlfX3M2NCBlcnI7CiYjNDM7CiYjNDM7CSphcmdfY250ID0gYnBmX2dldF9mdW5jX2FyZ19jbnQoY3R4KTsKJiM0MzsJcmVzdWx0ID0gKmFyZ19jbnQgPT0gMjsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDAsICZhbXA7YSk7CiYjNDM7CXJlc3VsdCAmYW1wOz0gZXJyID09IDAgJmFtcDsmYW1wOyAoaW50KWEgPT0gNTsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDEsICZhbXA7YXV4KTsKJiM0MzsJKmF1eF9hcmcgPSBhdXg7CiYjNDM7CXJlc3VsdCAmYW1wOz0gZXJyID09IDAgJmFtcDsmYW1wOyBhdXggIT0gMDsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDIsICZhbXA7eik7CiYjNDM7CXJlc3VsdCAmYW1wOz0gZXJyID09IC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJldHVybiByZXN1bHQ7CiYjNDM7fQomIzQzOwomIzQzO19fdTY0IGZlbnRyeV9yZXN1bHQ7CiYjNDM7X191NjQgZmVudHJ5X2FyZ19jbnQ7CiYjNDM7X191NjQgZmVudHJ5X2F1eF9hcmc7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7ZmVudHJ5L2JwZl9rZnVuY19pbXBsaWNpdF9hcmcmIzM0OykKJiM0MztpbnQgQlBGX1BST0codHJhY2VfaW1wbGljaXRfYXJnX2ZlbnRyeSkKJiM0Mzt7CiYjNDM7CV9fdTY0IHJldCA9IDA7CiYjNDM7CV9fczY0IGVycjsKJiM0MzsKJiM0MzsJZmVudHJ5X3Jlc3VsdCA9IGNoZWNrX2ltcGxpY2l0X2FyZ3MoY3R4LCAmYW1wO2ZlbnRyeV9hcmdfY250LCAmYW1wO2ZlbnRyeV9hdXhfYXJnKTsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX3JldChjdHgsICZhbXA7cmV0KTsKJiM0MzsJZmVudHJ5X3Jlc3VsdCAmYW1wOz0gZXJyID09IC1FT1BOT1RTVVBQOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7X191NjQgZmV4aXRfcmVzdWx0OwomIzQzO19fdTY0IGZleGl0X2FyZ19jbnQ7CiYjNDM7X191NjQgZmV4aXRfYXV4X2FyZzsKJiM0MzsKJiM0MztTRUMoJiMzNDtmZXhpdC9icGZfa2Z1bmNfaW1wbGljaXRfYXJnJiMzNDspCiYjNDM7aW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZXhpdCkKJiM0Mzt7CiYjNDM7CV9fdTY0IHJldCA9IDA7CiYjNDM7CV9fczY0IGVycjsKJiM0MzsKJiM0MzsJZmV4aXRfcmVzdWx0ID0gY2hlY2tfaW1wbGljaXRfYXJncyhjdHgsICZhbXA7ZmV4aXRfYXJnX2NudCwgJmFtcDtmZXhpdF9hdXhfYXJnKTsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX2dldF9mdW5jX3JldChjdHgsICZhbXA7cmV0KTsKJiM0MzsJZmV4aXRfcmVzdWx0ICZhbXA7PSBlcnIgPT0gMCAmYW1wOyZhbXA7IHJldCA9PSA1OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQomIzQzO2ludCB0cmlnZ2VyX2ltcGxpY2l0X2FyZyh2b2lkICpjdHgpCiYjNDM7ewomIzQzOwlyZXR1cm4gYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyg1KTsKJiM0Mzt9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE3OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MzMKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgQlRGL0JQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgQlRGIGFuZCBCUEYgdmVyaWZpZXIgbG9naWMuIEl0JiMzOTtzIGludHJvZHVjaW5nIGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgIGFuZCB1c2luZyBpdCB0byBuYWlsIGRvd24gdGhlIHJlYWwgQUJJIGZvciB0cmFjZSB0YXJnZXRzIHdpdGhpbiBgS0ZfSU1QTElDSVRfQVJHU2Aga2Z1bmNzLiBTZWVtcyBwcmV0dHkgdGFyZ2V0ZWQsIGJ1dCB0aGUgZmFjdCB0aGF0IGl04oCZcyBtb2RpZnlpbmcgdGhlIHZlcmlmaWVyIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCB0b3VjaGluZyBga2VybmVsL2JwZi9idGYuY2AsIGltbWVkaWF0ZWx5IHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldC4mIzM0OyBUaGlzIGlzIGNvcmUgc3R1ZmYgdGhhdCYjMzk7cyBoaWdobHkgcmVhY2hhYmxlIGFuZCBnZXRzIGEgbG90IG9mIGF0dGVudGlvbiBmcm9tIHRvb2xzIGxpa2Ugc3l6a2FsbGVyLCBzbyBpdCYjMzk7cyBwcm9iYWJseSB3b3J0aCB0aGUgZWZmb3J0LgoKTGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBhZmZlY3RlZC4gSSYjMzk7bSBzZWVpbmc6CgoqICAgYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AgKHRoaXMgaXMgdGhlIG5ldyBvbmUsIHNvIHByaW1lIHN1c3BlY3QpCiogICBgZmluZF9rZnVuY19pbXBsX3Byb3RvYCAobW9kaWZpZWQgLSBhbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2spCiogICBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCAoYWxzbyBuZXcsIGdvdHRhIGNoZWNrIGl0IG91dCkKKiAgIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgKG1vZGlmaWVkIC0gY2hhbmdlcyBoZXJlIGNhbiBiZSBzdWJ0bGUpCiogICBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgIChtb2RpZmllZCAtIHNpbWlsYXIgcmVhc29uaW5nKQoKSSYjMzk7bGwgY2hlY2sgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2J0Zi5jYCBmb3IgYW55IGBDT05GSUdgIG9wdGlvbnMgdGhhdCBtaWdodCBnYXRlIHRoZSBuZXcgY29kZSBvciBjaGFuZ2UgdGhlIGVudmlyb25tZW50LiBCUEYgdXN1YWxseSByZXF1aXJlcyBgQ09ORklHX0JQRl9TWVNDQUxMYCwgb2YgY291cnNlLCBidXQgaXQmIzM5O3Mgd29ydGggYSBxdWljayBzY2FuLiBMZXQmIzM5O3Mgc2VlIGlmIGBLRl9JTVBMSUNJVF9BUkdTYCBpcyBjb25kaXRpb25hbGl6ZWQgYW55d2hlcmUuIExldCBtZSBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIGhvdyB0aGlzIGBLRl9JTVBMSUNJVF9BUkdTYCB0aGluZyBpcyBhY3R1YWxseSB1c2VkIGFuZCBkZWZpbmVkIGluIHRoZSBjb2RlIGJhc2Ug4oCTIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdG8gdHJpZ2dlciB0aGUgbmV3IGNvZGUgcGF0aHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S0ZfSU1QTElDSVRfQVJHUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0PTM4Mz10aG9zZSBrZnVuY3MgaWYgYW5kIHdoZW4gc3VjaCBkaXNjdXNzaW9ucyBvY2N1ci5cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg0LVxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdDozODU6Mi41LjkgS0ZfSU1QTElDSVRfQVJHUyBmbGFnXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM4Ni0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg3LVxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdDozODg6VGhlIEtGX0lNUExJQ0lUX0FSR1MgZmxhZyBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIEJQRiBzaWduYXR1cmVcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg5LW9mIHRoZSBrZnVuYyBpcyBkaWZmZXJlbnQgZnJvbSBpdCYjMzk7cyBrZXJuZWwgc2lnbmF0dXJlLCBhbmQgdGhlIHZhbHVlc1xuLS1cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q9MzkzPUN1cnJlbnRseSBvbmx5IGBgc3RydWN0IGJwZl9wcm9nX2F1eCAqYGAgdHlwZSBpcyBzdXBwb3J0ZWQuXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTM5NC1cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6Mzk1OkEga2Z1bmMgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIGZsYWcgdGhlcmVmb3JlIGhhcyB0d28gdHlwZXMgaW4gQlRGOiBvbmVcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzk2LWZ1bmN0aW9uIG1hdGNoaW5nIHRoZSBrZXJuZWwgZGVjbGFyYXRpb24gKHdpdGggX2ltcGwgc3VmZml4IGluIHRoZVxuLS1cbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jaGFuZ2VzLnJzdD0xNDg9bW9kdWxlcyBhcyB3ZWxsLiAgVGhpcyByZXF1aXJlcyBwYWhvbGUgdjEuMjIgb3IgbGF0ZXIuXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY2hhbmdlcy5yc3QtMTQ5LVxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NoYW5nZXMucnN0OjE1MDpTaW5jZSBMaW51eCA3LjAsIGtmdW5jcyBhbm5vdGF0ZWQgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIHJlcXVpcmUgcGFob2xlIHYxLjI2XG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY2hhbmdlcy5yc3QtMTUxLW9yIGxhdGVyLiAgV2l0aG91dCBpdCwgc3VjaCBrZnVuY3Mgd2lsbCBoYXZlIGluY29ycmVjdCBCVEYgcHJvdG90eXBlcyBpblxuLS1cbmluY2x1ZGUvbGludXgvYnRmLmgtODAtI2RlZmluZSBLRl9BUkVOQV9BUkcyICAgKDEgXHUwMDNjXHUwMDNjIDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi9cbmluY2x1ZGUvbGludXgvYnRmLmg6ODE6I2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cbmluY2x1ZGUvbGludXgvYnRmLmgtODItXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgwND1CVEZfSURfRkxBR1MoZnVuYywgY3Jhc2hfa2V4ZWMsIEtGX0RFU1RSVUNUSVZFKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwNS0jZW5kaWZcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfbmV3LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwNy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9uZXdfaW1wbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgwODpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfbmV3LCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwOS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfbmV3X2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTA6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfZHJvcCwgS0ZfUkVMRUFTRSB8IEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODExLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfb2JqX2Ryb3BfaW1wbCwgS0ZfUkVMRUFTRSlcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTI6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX2Ryb3AsIEtGX1JFTEVBU0UgfCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxMy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxNDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JlZmNvdW50X2FjcXVpcmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSB8IEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODE1LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmVmY291bnRfYWNxdWlyZV9pbXBsLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxNy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9mcm9udF9pbXBsKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxODpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxOS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrX2ltcGwpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODIwOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9hZGQsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODIxLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wb3BfZnJvbnQsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00ODMxPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX3JlbW92ZSwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgzMjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9hZGQsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODMzLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZF9pbXBsKVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTQ5MTQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl93cV9pbml0KVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDkxNTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3NldF9jYWxsYmFjaywgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5MTYtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl93cV9zdGFydClcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00OTYyPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjMtI2VuZGlmXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY0OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2NjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjgtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfZnJvbV9maWxlKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yNjEzPXN0YXRpYyBpbnQgZmV0Y2hfa2Z1bmNfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjUxLVx0Lypcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyNjUyOlx0ICogQW4gYWN0dWFsIHByb3RvdHlwZSBvZiBhIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBmbGFnXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1My1cdCAqIGNhbiBiZSBmb3VuZCB0aHJvdWdoIHRoZSBjb3VudGVycGFydCBfaW1wbCBrZnVuYy5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjU0LVx0ICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjY1NTpcdGlmIChrZnVuY19mbGFncyBcdTAwMjZcdTAwMjYgKCprZnVuY19mbGFncyBcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1Ni1cdFx0ZnVuY19wcm90byA9IGZpbmRfa2Z1bmNfaW1wbF9wcm90byhcdTAwMjZlbnYtXHUwMDNlbG9nLCBidGYsIGZ1bmNfbmFtZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwOTA0PXN0YXRpYyBib29sIGlzX2tmdW5jX2FyZ19wcm9nX2F1eChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKmFyZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MDktLypcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDkxMDogKiBBIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBoYXMgdHdvIHByb3RvdHlwZXMgaW4gQlRGOlxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTExLSAqICAgLSB0aGUgX2ltcGwgcHJvdG90eXBlIHdpdGggZnVsbCBhcmcgbGlzdCAobWV0YS1cdTAwM2VmdW5jX3Byb3RvKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDkxNj1zdGF0aWMgYm9vbCBpc19rZnVuY19hcmdfaW1wbGljaXQoY29uc3Qgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLCB1MzIgYXJnX2lkeClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MjAtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5MjE6XHRpZiAoIShtZXRhLVx1MDAzZWtmdW5jX2ZsYWdzIFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkyMi1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODgyNz1zdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4ODc3LSAqIFJlc29sdmUgdGhlIHByb3RvdHlwZSBkZXNjcmliaW5nIGEgdHJhY2UgdGFyZ2V0JiMzOTtzIHJlYWwgQUJJLiBBXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTg4Nzg6ICogS0ZfSU1QTElDSVRfQVJHUyBrZnVuYyBoYXMgaXRzIGluamVjdGVkIGFyZ3Mgc3RyaXBwZWQgZnJvbSB0aGUgcHVibGljXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg4NzktICogcHJvdG90eXBlLCBzbyB1c2UgdGhlIF9pbXBsIHByb3RvdHlwZTsgb3RoZXIgdGFyZ2V0cyB1c2UgdGhlaXIgb3duLlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODg4Mj1idGZfYXR0YWNoX2Z1bmNfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgZnVuY19pZClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg5MDUtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTg5MDY6XHRpZiAoa2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODkwNy1cdFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXHUwMDNlbmFtZV9vZmYpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM9NjgzPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19pbml0KVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzo2ODQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY2lkX292ZXJyaWRlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU0xFRVBBQkxFKVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy02ODUtQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc19pbml0KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM9NjkzPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19jaWQpXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjY5NDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRfdG9fY3B1LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzo2OTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3RvX2NpZCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Njk2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF90b3BvLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9jaWQuYy02OTctQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc19jaWQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz04NzM4PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19lbnF1ZXVlX2Rpc3BhdGNoKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NzM5OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9pbnNlcnQsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3NDA6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX2luc2VydF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo4NzQxOkJURl9JRF9GTEFHUyhmdW5jLCBfX3NjeF9icGZfZHNxX2luc2VydF92dGltZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtODc0Mi1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfaW5zZXJ0X3Z0aW1lLCBLRl9SQ1UpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MTAzPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19kaXNwYXRjaClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kaXNwYXRjaF9ucl9zbG90cywgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kaXNwYXRjaF9jYW5jZWwsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkxMDY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX21vdmVfdG9fbG9jYWwsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkxMDc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX21vdmVfdG9fbG9jYWxfX192MiwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTEwOC0vKiBzY3hfYnBmX2RzcV9tb3ZlKigpIGFsc28gaW4gc2N4X2tmdW5jX2lkc191bmxvY2tlZDogY2FsbGFibGUgZnJvbSB1bmxvY2tlZCBjb250ZXh0cyAqL1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTExMj1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV92dGltZSwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTEzLSNpZmRlZiBDT05GSUdfRVhUX1NVQl9TQ0hFRFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTE0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3N1Yl9kaXNwYXRjaCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTExNS0jZW5kaWZcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTkxNTI9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2NwdV9yZWxlYXNlKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTUzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3JlZW5xdWV1ZV9sb2NhbCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTE1NC1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NwdV9yZWxlYXNlKVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTIyMT1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfdW5sb2NrZWQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkyMjI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3JlYXRlX2RzcSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NMRUVQQUJMRSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTIyMy0vKiBhbHNvIGluIHNjeF9rZnVuY19pZHNfZGlzcGF0Y2g6IGFsc28gY2FsbGFibGUgZnJvbSBvcHMuZGlzcGF0Y2goKSAqL1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTIyNz1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV92dGltZSwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MjI4LS8qIGFsc28gaW4gc2N4X2tmdW5jX2lkc19zZWxlY3RfY3B1OiBhbHNvIGNhbGxhYmxlIGZyb20gb3BzLnNlbGVjdF9jcHUoKS9vcHMuZW5xdWV1ZSgpICovXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkyMjk6QlRGX0lEX0ZMQUdTKGZ1bmMsIF9fc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTIzMC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MjMxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfZGZsLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MjMyLUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfdW5sb2NrZWQpXG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDM4Mj1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfYW55KVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM4MzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX3NldF9zbGljZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfc2V0X2RzcV92dGltZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSk7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2tpY2tfY3B1LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM4NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NpZCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX25yX3F1ZXVlZCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODg6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZGVzdHJveV9kc3EsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg5OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9wZWVrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVX1BST1RFQ1RFRCB8IEtGX1JFVF9OVUxMKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfcmVlbnEsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzkxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3JlZW5xdWV1ZV9sb2NhbF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5MjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfc2N4X2RzcV9uZXcsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9JVEVSX05FVyB8IEtGX1JDVV9QUk9URUNURUQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwMzkzLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDM5ND1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2l0ZXJfc2N4X2RzcV9kZXN0cm95LCBLRl9JVEVSX0RFU1RST1kpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzk1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2V4aXRfYnN0ciwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXJyb3JfYnN0ciwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHVtcF9ic3RyLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX2NhcCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDAwOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfc2V0LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQwMTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRwZXJmX2NhcCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MDI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY2lkcGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDAzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZHBlcmZfc2V0LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQwNC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9ucl9ub2RlX2lkcylcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNDE0PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfY2lkLCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDE1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9ycSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfbG9ja2VkX3JxLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDE3OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9jdXJyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1VfUFJPVEVDVEVEKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQxODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRfY3VyciwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0MTktQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGlkX3RvX3Rhc2ssIEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNDIxPUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2V2ZW50cylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0MjItI2lmZGVmIENPTkZJR19DR1JPVVBfU0NIRURcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MjM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGFza19jZ3JvdXAsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UgfCBLRl9BQ1FVSVJFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQyNC0jZW5kaWZcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNDQ3PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19jcHVfb25seSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NDg6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfa2lja19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDQ5LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfY3B1LCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDUwOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9ycSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X2N1cnIsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVV9QUk9URUNURUQpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDUyOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1MzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX2NhcCwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDU1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfc2V0LCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQ1Ni1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfcG9zc2libGVfY3B1bWFzaywgS0ZfQUNRVUlSRSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNDU4PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9jcHVtYXNrLCBLRl9SRUxFQVNFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1OTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2RmbCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjA6QlRGX0lEX0ZMQUdTKGZ1bmMsIF9fc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0NjEtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc2VsZWN0X2NwdV9hbmQsIEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfY3B1bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDYzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX2NwdW1hc2tfbm9kZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX3NtdG1hc2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9zbXRtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQ2Ni1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9wdXRfaWRsZV9jcHVtYXNrLCBLRl9SRUxFQVNFKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90ZXN0X2FuZF9jbGVhcl9jcHVfaWRsZSwgS0ZfSU1QTElDSVRfQVJHUylcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0Njg6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19pZGxlX2NwdSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0Njk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19pZGxlX2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ3MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDcxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfYW55X2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9leHQuYy0xMDQ3Mi1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NwdV9vbmx5KVxuLS1cbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jPTE0NjQ9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2lkbGUpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDY1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9jcHVtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9jcHVtYXNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0Njg6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFza19ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0Njk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDcwLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9pZGxlX2NwdW1hc2ssIEtGX1JFTEVBU0UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDcxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rlc3RfYW5kX2NsZWFyX2NwdV9pZGxlLCBLRl9JTVBMSUNJVF9BUkdTKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3MjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDczOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfaWRsZV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYzoxNDc0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfYW55X2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDc2LUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfaWRsZSlcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYz0xNDk1PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19zZWxlY3RfY3B1KVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ5NjpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTQ5Ny1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfUkNVKVxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ5ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2RmbCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jLTE0OTktQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc19zZWxlY3RfY3B1KVxuLS1cbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM9MTIyPXN0cnVjdCBvYmplY3Qge1xuLS1cbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTU0LVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYzoxNTU6I2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFx1MDAzY1x1MDAzYyAxNilcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTU2LSNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggXCYjMzQ7X2ltcGxcJiMzNDtcbi0tXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jPTEwNjQ9c3RhdGljIGJvb2wgaXNfa2ZfaW1wbGljaXRfYXJnKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl9wYXJhbSAqcClcbi0tXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEwOTItLypcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM6MTA5MzogKiBGb3IgYSBrZnVuYyB3aXRoIEtGX0lNUExJQ0lUX0FSR1Mgd2UgZG8gdGhlIGZvbGxvd2luZzpcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTA5NC0gKiAgIDEuIEFkZCBhIG5ldyBmdW5jdGlvbiB3aXRoIF9pbXBsIHN1ZmZpeCBpbiB0aGUgbmFtZSwgd2l0aCB0aGUgcHJvdG90eXBlXG4tLVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMTA2LSAqXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jOjExMDc6ICogSWYgYSBrZnVuYyB3aXRoIEtGX0lNUExJQ0lUX0FSR1MgYWxyZWFkeSBoYXMgYW4gX2ltcGwgY291bnRlcnBhcnRcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTEwOC0gKiBpbiBCVEYsIHRoZW4gaXQmIzM5O3MgYSBsZWdhY3kgY2FzZTogYW4gX2ltcGwgZnVuY3Rpb24gaXMgZGVjbGFyZWQgaW4gdGhlXG4tLVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYz0xMjE0PXN0YXRpYyBpbnQgYnRmMmJ0ZihzdHJ1Y3Qgb2JqZWN0ICpvYmopXG4tLVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMjI1LVxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYzoxMjI2Olx0XHRpZiAoIShrZnVuYy1cdTAwM2VmbGFncyBcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykpXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEyMjctXHRcdFx0Y29udGludWU7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYz0xNDA0PUJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfbXVsdGlfc3Rfb3BzX3Rlc3RfMSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX211bHRpX3N0X29wc190ZXN0XzFfYXNzb2MsIEtGX0lNUExJQ0lUX0FSR1MpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jOjE0MDY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19pbXBsaWNpdF9hcmcsIEtGX0lNUExJQ0lUX0FSR1MpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jOjE0MDc6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19pbXBsaWNpdF9hcmdfbGVnYWN5LCBLRl9JTVBMSUNJVF9BUkdTKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYy0xNDA4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfaW1wbGljaXRfYXJnX2xlZ2FjeV9pbXBsKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE3OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0ODI1CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNTM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUGxhbjogQlRGIEtGdW5jIEltcGxpY2l0IEFyZ3VtZW50cyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AgaW4gYGtlcm5lbC9icGYvYnRmLmNgLCBhbmQgaW1wb3J0YW50bHksIGl0JiMzOTtzIHVzZWQgd2l0aGluIGBidGZfYXR0YWNoX2Z1bmNfcHJvdG9gIHdoaWNoIGxpdmVzIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiAgVGhhdCBmdW5jdGlvbiBpcyB0aGVuIGNhbGxlZCBieSBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIGFuZCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhlIHNlbGZ0ZXN0LCBga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNgLCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYWxsIGhhbmdzIHRvZ2V0aGVyLiBJdCByZWxpZXMgb24gYGJwZl9rZnVuY19pbXBsaWNpdF9hcmdgLCB3aGljaCBpcyBkZWZpbmVkIGluIGBicGZfdGVzdG1vZC5jYCwgYnV0IHRoYXQmIzM5O3MganVzdCBhIHRlc3QgaGVscGVyLgoKVGhlIGNvcmUgbG9naWMgSSBuZWVkIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nIGlzIGRlZmluaXRlbHkgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2J0Zi5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgZnVuY3Rpb25zIHVzaW5nIHRob3NlIGZsYWdzLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AsIGBidGZfYXR0YWNoX2Z1bmNfcHJvdG9gLCBhbmQgYGZpbmRfa2Z1bmNfaW1wbF9wcm90b2AuCgpGb3IgY29uZmlndXJhdGlvbiwgSSYjMzk7bSBnb2luZyB0byBuZWVkIHRvIGVuYWJsZSBgQlBGX1NZU0NBTExgIOKAkyB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsLiBgREVCVUdfSU5GT19CVEZgIGlzIGFsc28gcmVxdWlyZWQsIG9idmlvdXNseSwgZm9yIEJURiBzdXBwb3J0LiBTaW5jZSB0aGlzIGlzIHJlbGF0ZWQgdG8gdHJhY2luZywgSSYjMzk7bGwgbmVlZCBgQlBGX0VWRU5UU2AgdG9vLiAgYEJQRl9KSVRgIG1pZ2h0IGJlIGhlbHBmdWwsIGJ1dCBgQlBGX1NZU0NBTExgIGFsb25lIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGdldCB0aGluZ3Mgd29ya2luZyBmb3Igbm93LgoKSSBxdWlja2x5IGNoZWNrZWQgdGhlIGNvZGUgYW5kIHJlY29uZmlybWVkIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgcmVhY2hlZCB3aXRoIGBGVFJBQ0VgIGFuZCBgQlBGX0VWRU5UU2AuIFRoZSBgYnBmX3Rlc3Rtb2RgIG1vZHVsZSBpcyBqdXN0IGZvciB0aGUgdGVzdHMuIFRoZSByZWFsIGFjdGlvbiBoYXBwZW5zIGluIHRoZSBjb3JlIHZlcmlmaWVyIGFuZCBCVEYgY29kZS4gRXZlcnl0aGluZyBzZWVtcyBndWFyZGVkIGJ5IGBDT05GSUdfQlBGX1NZU0NBTExgLCBhbmQgYERFQlVHX0lORk9fQlRGYCBpcyBuZWVkZWQgZm9yIEJURiBpbiBnZW5lcmFsLiBTbywgSSBoYXZlIGEgc29saWQgY29uZmlndXJhdGlvbiBiYXNlbGluZS4gTm93LCB0aW1lIHRvIHN0YXJ0IGZ1enppbmcgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE3OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9jaGVja19hdHRhY2hfdGFyZ2V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTE2MT1pbnQgYnBmX2NoZWNrX2J0Zl9pbmZvKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xMTYzLVxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaDoxMTY0OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaC0xMTY1LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi9idGYuYz02ODQ4PWJvb2wgYnRmX2N0eF9hY2Nlc3MoaW50IG9mZiwgaW50IHNpemUsIGVudW0gYnBmX2FjY2Vzc190eXBlIHR5cGUsXG4tLVxua2VybmVsL2JwZi9idGYuYy03MDI1LVx0XHRcdHJldHVybiBmYWxzZTtcbmtlcm5lbC9icGYvYnRmLmM6NzAyNjpcdFx0LyogQ2hlY2tlZCBieSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCAqL1xua2VybmVsL2JwZi9idGYuYy03MDI3LVx0XHR0bmFtZSAmIzQzOz0gc2l6ZW9mKFwmIzM0O2J0Zl90cmFjZV9cJiMzNDspIC0gMTtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0zNjg5PXN0YXRpYyBpbnQgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTM4MjEtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozODIyOlx0XHRlcnIgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChOVUxMLCBwcm9nLCB0Z3RfcHJvZywgYnRmX2lkLFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzgyMy1cdFx0XHRcdFx0ICAgICAgXHUwMDI2dGd0X2luZm8pO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTEwNzY9aW50IGJwZl90cmFtcG9saW5lX2xpbmtfY2dyb3VwX3NoaW0oc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTEwODYtXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxMDg3Olx0ZXJyID0gYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoTlVMTCwgcHJvZywgTlVMTCxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTEwODgtXHRcdFx0XHQgICAgICBwcm9nLVx1MDAzZWF1eC1cdTAwM2VhdHRhY2hfYnRmX2lkLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTg4OD1zdGF0aWMgaW50IHByb2Nlc3Nfa2ZfYXJnX3B0cl90b19yYnRyZWVfbm9kZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTg5OS0gKiBMU00gaG9va3MgYW5kIGl0ZXJzIChib3RoIHNsZWVwYWJsZSBhbmQgbm9uLXNsZWVwYWJsZSkgYXJlIHNhZmUuXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE5MDA6ICogQW55IHNsZWVwYWJsZSBwcm9ncyBhcmUgYWxzbyBzYWZlIHNpbmNlIGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KCkgZW5mb3JjZVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTAxLSAqIHRoZW0gY2FuIG9ubHkgYmUgYXR0YWNoZWQgdG8gc29tZSBzcGVjaWZpYyBob29rIHBvaW50cy5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4ODI9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTEzLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4OTE0OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTE1LVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MzE5PXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTM0OS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTM1MDpcdHJldCA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KFx1MDAyNmVudi1cdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFx1MDAyNnRndF9pbmZvKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTM1MS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTc6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY3NjMKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogNTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBLZXJuZWwgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBmcm9tIGEgQlBGIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZS4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBjZW50ZXIgYXJvdW5kIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgaG93IGl0IGhhbmRsZXMgdGhlIEFCSSBvZiB0cmFjZSB0YXJnZXRzIHdoZW4gZGVhbGluZyB3aXRoIGBLRl9JTVBMSUNJVF9BUkdTYCBrZnVuY3MuIEkgY2FuIHNlZSB0aGF0IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgaXMgYSBrZXkgZnVuY3Rpb24gaGVyZSwgY2FsbGVkIGZyb20gYGJwZl90cmFjaW5nX3Byb2dfYXR0YWNoYCwgYGJwZl90cmFtcG9saW5lX2xpbmtfY2dyb3VwX3NoaW1gLCBhbmQgYGNoZWNrX2F0dGFjaF9idGZfaWRgLiBUaGVzZSBhcmUgYWxsIGNydWNpYWwgcG9pbnRzIHdpdGhpbiB0aGUgQlBGIHN1YnN5c3RlbSwgZXNwZWNpYWxseSB3aGVuIGNvbnNpZGVyaW5nIHRyYWNpbmcgYW5kIGtmdW5jIGF0dGFjaG1lbnQuCgpJIGltbWVkaWF0ZWx5IG5lZWQgdG8gZW5zdXJlIHRoZSBwcm9wZXIgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZS4gTG9va2luZyBhdCB0aGUgZGVwZW5kZW5jaWVzLCBJJiMzOTtsbCBuZWVkIGBCUEZfU1lTQ0FMTGAgdG8gZW5zdXJlIHRoZSBgYnBmKClgIHN5c2NhbGwgaXMgZW5hYmxlZCwgYERFQlVHX0lORk9fQlRGYCBmb3IgQlRGIGdlbmVyYXRpb24sIGFuZCBgQlBGX0VWRU5UU2AgdG8gc3VwcG9ydCBCUEYgdHJhY2luZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYEJQRl9FVkVOVFNgIGlzIGtleSBiZWNhdXNlIHdlIGFyZSBmb2N1c2VkIG9uIHRyYWNpbmcuCgpUaGUgbWFpbiBmb2N1cyBvZiB0aGUgcGF0Y2ggaXMgb24gdGhyZWUgc3ltYm9sczogYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AsIGBidGZfYXR0YWNoX2Z1bmNfcHJvdG9gLCBhbmQgYGZpbmRfa2Z1bmNfaW1wbF9wcm90b2AuIFRoZXNlIGFyZSBhbGwgZnVuZGFtZW50YWwgY29tcG9uZW50cyBpbiB0aGUgdmVyaWZpZXImIzM5O3MgbG9naWMsIGFuZCB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlbSB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBwcm90b3R5cGUgcmVzb2x1dGlvbiBvZiBhIHRyYWNlIHRhcmdldCYjMzk7cyBBQkkuIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgLSBlbnN1cmluZyB0aGF0IHRoZSB2ZXJpZmllciBhY2N1cmF0ZWx5IHVuZGVyc3RhbmRzIGFuZCB2YWxpZGF0ZXMgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgd2hlbiBhIHRyYWNpbmcgcHJvZ3JhbSBhdHRhY2hlcyB0byBhIGtmdW5jLiBUaGlzIGlzIGEgdmVyeSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgcGllY2Ugb2YgY29kZS4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZC4gYGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFnc2AgaXMgaW4gYGtlcm5lbC9icGYvYnRmLmNgLCB3aGlsZSBgZmluZF9rZnVuY19pbXBsX3Byb3RvYCBhbmQgYGJ0Zl9hdHRhY2hfZnVuY19wcm90b2AgYXJlIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLgoKR2l2ZW4gdGhlIGNvcmUgbmF0dXJlIG9mIHRoaXMgbW9kaWZpY2F0aW9uIHRvIHRoZSBCUEYgdmVyaWZpZXIgYW5kIGl0cyBpbXBhY3Qgb24gaG93IHRyYWNpbmcgcHJvZ3JhbXMgaW50ZXJhY3Qgd2l0aCBrZnVuY3MsIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4KCkhlcmXigJlzIHRoZSBzdW1tYXJ5OgotICoqRm9jdXMgU3ltYm9scyoqOiBgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzYCwgYGJ0Zl9hdHRhY2hfZnVuY19wcm90b2AsIGFuZCBgZmluZF9rZnVuY19pbXBsX3Byb3RvYC4KLSAqKkVuYWJsZSBDb25maWdzKio6IGBCUEZfU1lTQ0FMTGAsIGBERUJVR19JTkZPX0JURmAsIGBCUEZfRVZFTlRTYC4KLSAqKlJlYXNvbmluZyoqOiBUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBhIHRyYWNlIHRhcmdldCYjMzk7cyByZWFsIEFCSSBmb3IgYEtGX0lNUExJQ0lUX0FSR1NgIGtmdW5jcy4gVGhpcyBpbXBhY3RzIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBmb3IgYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMgdG8ga2Z1bmNzLCBzbyB0aGlzIGlzIGhpZ2hseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTc6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3MmIzM0OywKICAgICYjMzQ7YnRmX2F0dGFjaF9mdW5jX3Byb3RvJiMzNDssCiAgICAmIzM0O2ZpbmRfa2Z1bmNfaW1wbF9wcm90byYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2YgYSB0cmFjZSB0YXJnZXQmIzM5O3MgcmVhbCBBQkkgZm9yIGBLRl9JTVBMSUNJVF9BUkdTYCBrZnVuY3MuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgZm9yIGF0dGFjaGluZyB0cmFjaW5nIHByb2dyYW1zIHRvIGtmdW5jcywgd2hpY2ggaXMgaGlnaGx5IHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2J0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyYjMzQ7LAogICAgJiMzNDtidGZfYXR0YWNoX2Z1bmNfcHJvdG8mIzM0OywKICAgICYjMzQ7ZmluZF9rZnVuY19pbXBsX3Byb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBhIHRyYWNlIHRhcmdldCYjMzk7cyByZWFsIEFCSSBmb3IgYEtGX0lNUExJQ0lUX0FSR1NgIGtmdW5jcy4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBmb3IgYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMgdG8ga2Z1bmNzLCB3aGljaCBpcyBoaWdobHkgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTFUMTc6MDM6NTMuMDkzMDU1NTQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU5MTQ1MjI5NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzXCIsXG4gICAgXCJidGZfYXR0YWNoX2Z1bmNfcHJvdG9cIixcbiAgICBcImZpbmRfa2Z1bmNfaW1wbF9wcm90b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJIGZvciBgS0ZfSU1QTElDSVRfQVJHU2Aga2Z1bmNzLiBUaGlzIGFmZmVjdHMgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljIGZvciBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcyB0byBrZnVuY3MsIHdoaWNoIGlzIGhpZ2hseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE3OjAzOjUzLjA5MzA2MjU0OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk1MDA2NTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWEzNjQ5YzhjM2VmNzhkMTNhYWYwOTBhOWNkY2ZhYzRkODgxNDE3YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAxMSAxNzowMzo1MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J0Zi5oIGIvaW5jbHVkZS9saW51eC9idGYuaFxcbmluZGV4IDI0MDQwMWQ5YjI1YjllLi5jNTIyNDVhZTBkZjVkNyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2J0Zi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9idGYuaFxcbkBAIC01NzgsNiArNTc4LDcgQEAgY29uc3QgY2hhciAqYnRmX3N0cl9ieV9vZmZzZXQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgb2Zmc2V0KTtcXG4gc3RydWN0IGJ0ZiAqYnRmX3BhcnNlX3ZtbGludXgodm9pZCk7XFxuIHN0cnVjdCBidGYgKmJwZl9wcm9nX2dldF90YXJnZXRfYnRmKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuIHUzMiAqYnRmX2tmdW5jX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcXG4rdTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpO1xcbiBib29sIGJ0Zl9rZnVuY19pc19hbGxvd2VkKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcXG4gdTMyICpidGZfa2Z1bmNfaXNfbW9kaWZ5X3JldHVybihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsXFxuIFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYnRmLmMgYi9rZXJuZWwvYnBmL2J0Zi5jXFxuaW5kZXggNjQ1NzJmODVlZGM4MzIuLjIwYWVjYTZiNGY5NWM5IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvYnRmLmNcXG4rKysgYi9rZXJuZWwvYnBmL2J0Zi5jXFxuQEAgLTkxMTQsNiArOTExNCwyNiBAQCB1MzIgKmJ0Zl9rZnVuY19mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcFxcbiBcXHRyZXR1cm4gYnRmX2tmdW5jX2lkX3NldF9jb250YWlucyhidGYsIGhvb2ssIGtmdW5jX2J0Zl9pZCk7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIFJldHVybiB0aGUgdW5pb24gb2YgYSBrZnVuYydzIGZsYWdzIGFjcm9zcyBhbGwgaG9va3MuXFxuKyAqIFVubGlrZSBidGZfa2Z1bmNfZmxhZ3MoKSwgbm90IHJlc3RyaWN0ZWQgdG8gYSBjYWxsaW5nXFxuKyAqIHByb2dyYW0ncyBob29rLiBVc2VkIHdoZW4gYXR0YWNoaW5nIHRvIGEga2Z1bmMgZm9yIHRyYWNpbmcuXFxuKyAqL1xcbit1MzIgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZClcXG4re1xcbitcXHRlbnVtIGJ0Zl9rZnVuY19ob29rIGhvb2s7XFxuK1xcdHUzMiAqaG9va19mbGFncztcXG4rXFx0dTMyIGZsYWdzID0gMDtcXG4rXFxuK1xcdGZvciAoaG9vayA9IDA7IGhvb2sgXFx1MDAzYyBCVEZfS0ZVTkNfSE9PS19NQVg7IGhvb2srKykge1xcbitcXHRcXHRob29rX2ZsYWdzID0gYnRmX2tmdW5jX2lkX3NldF9jb250YWlucyhidGYsIGhvb2ssIGtmdW5jX2J0Zl9pZCk7XFxuK1xcdFxcdGlmIChob29rX2ZsYWdzKVxcbitcXHRcXHRcXHRmbGFncyB8PSAqaG9va19mbGFncztcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIGZsYWdzO1xcbit9XFxuK1xcbiB1MzIgKmJ0Zl9rZnVuY19pc19tb2RpZnlfcmV0dXJuKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCxcXG4gXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbiB7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDY1MTVkNGQzYzAwMzJmLi4yZjU2YWI4ZDZiNThjOSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtMjU4NCwyNCArMjU4NCwyNCBAQCBzdGF0aWMgc3RydWN0IGJ0ZiAqZmluZF9rZnVuY19kZXNjX2J0ZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMTYgb2Zmc2V0KVxcbiBcXG4gI2RlZmluZSBLRl9JTVBMX1NVRkZJWCBcXFwiX2ltcGxcXFwiXFxuIFxcbi1zdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICpmaW5kX2tmdW5jX2ltcGxfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBidGYgKmJ0ZixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSlcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqXFxuK2ZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSlcXG4ge1xcbi1cXHRjaGFyICpidWYgPSBlbnYtXFx1MDAzZXRtcF9zdHJfYnVmO1xcbiBcXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZ1bmM7XFxuK1xcdGNoYXIgYnVmW0tTWU1fTkFNRV9MRU5dO1xcbiBcXHRzMzIgaW1wbF9pZDtcXG4gXFx0aW50IGxlbjtcXG4gXFxuLVxcdGxlbiA9IHNucHJpbnRmKGJ1ZiwgVE1QX1NUUl9CVUZfTEVOLCBcXFwiJXMlc1xcXCIsIGZ1bmNfbmFtZSwgS0ZfSU1QTF9TVUZGSVgpO1xcbi1cXHRpZiAobGVuIFxcdTAwM2MgMCB8fCBsZW4gXFx1MDAzZT0gVE1QX1NUUl9CVUZfTEVOKSB7XFxuLVxcdFxcdHZlcmJvc2UoZW52LCBcXFwiZnVuY3Rpb24gbmFtZSAlcyVzIGlzIHRvbyBsb25nXFxcXG5cXFwiLCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcXG4rXFx0bGVuID0gc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgXFxcIiVzJXNcXFwiLCBmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcXG4rXFx0aWYgKGxlbiBcXHUwMDNjIDAgfHwgbGVuIFxcdTAwM2U9IHNpemVvZihidWYpKSB7XFxuK1xcdFxcdGJwZl9sb2cobG9nLCBcXFwiZnVuY3Rpb24gbmFtZSAlcyVzIGlzIHRvbyBsb25nXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRmdW5jX25hbWUsIEtGX0lNUExfU1VGRklYKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuIFxcdGltcGxfaWQgPSBidGZfZmluZF9ieV9uYW1lX2tpbmQoYnRmLCBidWYsIEJURl9LSU5EX0ZVTkMpO1xcbiBcXHRpZiAoaW1wbF9pZCBcXHUwMDNjPSAwKSB7XFxuLVxcdFxcdHZlcmJvc2UoZW52LCBcXFwiY2Fubm90IGZpbmQgZnVuY3Rpb24gJXMgaW4gQlRGXFxcXG5cXFwiLCBidWYpO1xcbitcXHRcXHRicGZfbG9nKGxvZywgXFxcImNhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxcXFxuXFxcIiwgYnVmKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTI2NTMsNyArMjY1Myw3IEBAIHN0YXRpYyBpbnQgZmV0Y2hfa2Z1bmNfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHQgKiBjYW4gYmUgZm91bmQgdGhyb3VnaCB0aGUgY291bnRlcnBhcnQgX2ltcGwga2Z1bmMuXFxuIFxcdCAqL1xcbiBcXHRpZiAoa2Z1bmNfZmxhZ3MgXFx1MDAyNlxcdTAwMjYgKCprZnVuY19mbGFncyBcXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpKVxcbi1cXHRcXHRmdW5jX3Byb3RvID0gZmluZF9rZnVuY19pbXBsX3Byb3RvKGVudiwgYnRmLCBmdW5jX25hbWUpO1xcbitcXHRcXHRmdW5jX3Byb3RvID0gZmluZF9rZnVuY19pbXBsX3Byb3RvKFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgYnRmLCBmdW5jX25hbWUpO1xcbiBcXHRlbHNlXFxuIFxcdFxcdGZ1bmNfcHJvdG8gPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXFx1MDAzZXR5cGUpO1xcbiBcXG5AQCAtMTg4NzMsNiArMTg4NzMsNDQgQEAgc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJcXG4gXFx0cmV0dXJuIC1FSU5WQUw7XFxuIH1cXG4gXFxuKy8qXFxuKyAqIFJlc29sdmUgdGhlIHByb3RvdHlwZSBkZXNjcmliaW5nIGEgdHJhY2UgdGFyZ2V0J3MgcmVhbCBBQkkuIEFcXG4rICogS0ZfSU1QTElDSVRfQVJHUyBrZnVuYyBoYXMgaXRzIGluamVjdGVkIGFyZ3Mgc3RyaXBwZWQgZnJvbSB0aGUgcHVibGljXFxuKyAqIHByb3RvdHlwZSwgc28gdXNlIHRoZSBfaW1wbCBwcm90b3R5cGU7IG90aGVyIHRhcmdldHMgdXNlIHRoZWlyIG93bi5cXG4rICovXFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKlxcbitidGZfYXR0YWNoX2Z1bmNfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgZnVuY19pZClcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZ1bmM7XFxuK1xcdHN0cnVjdCBtb2R1bGUgKm1vZCA9IE5VTEw7XFxuK1xcdGNvbnN0IGNoYXIgKm5hbWU7XFxuK1xcdHUzMiBrZnVuY19mbGFncztcXG4rXFxuK1xcdGZ1bmMgPSBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmNfaWQpO1xcbitcXHRpZiAoIWZ1bmMgfHwgIWJ0Zl90eXBlX2lzX2Z1bmMoZnVuYykpXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXG4rXFx0LypcXG4rXFx0ICogYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKCkgcmVhZHMga2Z1bmNfc2V0X3RhYiwgd2hpY2ggZm9yIGFcXG4rXFx0ICogbW9kdWxlIGlzIHN0YWJsZSBvbmx5IG9uY2UgaXQgaXMgbGl2ZTsgaG9sZCBhIG1vZHVsZSByZWYgYWNyb3NzXFxuK1xcdCAqIHRoZSByZWFkIHRvIGV4Y2x1ZGUgYSBjb25jdXJyZW50IG1vZHVsZSBsb2FkLlxcbitcXHQgKi9cXG4rXFx0aWYgKGJ0Zl9pc19tb2R1bGUoYnRmKSkge1xcbitcXHRcXHRtb2QgPSBidGZfdHJ5X2dldF9tb2R1bGUoYnRmKTtcXG4rXFx0XFx0aWYgKCFtb2QpXFxuK1xcdFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuK1xcdGtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7XFxuK1xcdG1vZHVsZV9wdXQobW9kKTtcXG4rXFxuK1xcdGlmIChrZnVuY19mbGFncyBcXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcXG4rXFx0XFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXFx1MDAzZW5hbWVfb2ZmKTtcXG4rXFx0XFx0cmV0dXJuIGZpbmRfa2Z1bmNfaW1wbF9wcm90byhsb2csIGJ0ZiwgbmFtZSk7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXFx1MDAzZXR5cGUpO1xcbit9XFxuK1xcbiBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4gXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4gXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXFxuQEAgLTE5MTIxLDggKzE5MTU5LDggQEAgaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuIFxcdFxcdGlmIChwcm9nX2V4dGVuc2lvbiBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgYnRmX2NoZWNrX3R5cGVfbWF0Y2gobG9nLCBwcm9nLCBidGYsIHQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tXFx0XFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgdC1cXHUwMDNldHlwZSk7XFxuLVxcdFxcdGlmICghYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcXG4rXFx0XFx0dCA9IGJ0Zl9hdHRhY2hfZnVuY19wcm90byhsb2csIGJ0ZiwgYnRmX2lkKTtcXG4rXFx0XFx0aWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuIFxcdFxcdGlmICgocHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VzYXZlZF9kc3RfcHJvZ190eXBlIHx8IHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlc2F2ZWRfZHN0X2F0dGFjaF90eXBlKSBcXHUwMDI2XFx1MDAyNlxcbkBAIC0xOTQwNyw4ICsxOTQ0NSw4IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRpZiAoIWJ0Zl90eXBlX2lzX2Z1bmModCkpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB0LVxcdTAwM2V0eXBlKTtcXG4tXFx0aWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxcbitcXHR0ID0gYnRmX2F0dGFjaF9mdW5jX3Byb3RvKE5VTEwsIGJ0ZiwgYnRmX2lkKTtcXG4rXFx0aWYgKCF0IHx8ICFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0ZXJyID0gYnRmX2Rpc3RpbGxfZnVuY19wcm90byhOVUxMLCBidGYsIHQsIHRuYW1lLCBcXHUwMDI2dGd0X2luZm8tXFx1MDAzZWZtb2RlbCk7XFxuIFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjFjYzVhYWJhMDI1NGRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcXG5AQCAtMCwwICsxLDM2IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2N0ZXN0X3Byb2dzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcXCJrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuc2tlbC5oXFxcIlxcbitcXG4rdm9pZCB0ZXN0X2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZyh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7XFxuK1xcdExJQkJQRl9PUFRTKGJwZl90ZXN0X3J1bl9vcHRzLCB0b3B0cyk7XFxuK1xcdGludCBlcnIsIGZkO1xcbitcXG4rXFx0c2tlbCA9IGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fb3Blbl9hbmRfbG9hZCgpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXFxcIm9wZW5fYW5kX2xvYWRcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0ZXJyID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19hdHRhY2goc2tlbCk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImF0dGFjaFxcXCIpKVxcbitcXHRcXHRnb3RvIGNsZWFudXA7XFxuK1xcbitcXHRmZCA9IGJwZl9wcm9ncmFtX19mZChza2VsLVxcdTAwM2Vwcm9ncy50cmlnZ2VyX2ltcGxpY2l0X2FyZyk7XFxuK1xcdGVyciA9IGJwZl9wcm9nX3Rlc3RfcnVuX29wdHMoZmQsIFxcdTAwMjZ0b3B0cyk7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcInRlc3RfcnVuXFxcIikpXFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFxuK1xcdEFTU0VSVF9FUSh0b3B0cy5yZXR2YWwsIDUsIFxcXCJrZnVuY19yZXR2YWxcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmVudHJ5X2FyZ19jbnQsIDIsIFxcXCJmZW50cnlfYXJnX2NudFxcXCIpO1xcbitcXHRBU1NFUlRfTkVRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmVudHJ5X2F1eF9hcmcsIDAsIFxcXCJmZW50cnlfYXV4X2FyZ1xcXCIpO1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VmZW50cnlfcmVzdWx0LCAxLCBcXFwiZmVudHJ5X3Jlc3VsdFxcXCIpO1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2VmZXhpdF9hcmdfY250LCAyLCBcXFwiZmV4aXRfYXJnX2NudFxcXCIpO1xcbitcXHRBU1NFUlRfTkVRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmV4aXRfYXV4X2FyZywgMCwgXFxcImZleGl0X2F1eF9hcmdcXFwiKTtcXG4rXFx0QVNTRVJUX0VRKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlZmV4aXRfcmVzdWx0LCAxLCBcXFwiZmV4aXRfcmVzdWx0XFxcIik7XFxuK1xcbitjbGVhbnVwOlxcbitcXHRrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2Rlc3Ryb3koc2tlbCk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOTk1ZjhiOGI1YjllOGZcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXFxuQEAgLTAsMCArMSw3NyBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKGMpIDIwMjYgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjdm1saW51eC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2Vycm5vLmhcXHUwMDNlXFxuK1xcbitleHRlcm4gaW50IGJwZl9rZnVuY19pbXBsaWNpdF9hcmcoaW50IGEpIF9fd2VhayBfX2tzeW07XFxuK1xcbitjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG4rXFxuKy8qIFNoYXJlZCBhcmcgY2hlY2tzOyByZXBvcnRzIGFyZyBjb3VudCBhbmQgYXV4LCByZXR1cm5zIDEgb24gc3VjY2Vzcy4gKi9cXG4rc3RhdGljIF9fYWx3YXlzX2lubGluZSBfX3U2NFxcbitjaGVja19pbXBsaWNpdF9hcmdzKHZvaWQgKmN0eCwgX191NjQgKmFyZ19jbnQsIF9fdTY0ICphdXhfYXJnKVxcbit7XFxuK1xcdF9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDtcXG4rXFx0X191NjQgcmVzdWx0O1xcbitcXHRfX3M2NCBlcnI7XFxuK1xcbitcXHQqYXJnX2NudCA9IGJwZl9nZXRfZnVuY19hcmdfY250KGN0eCk7XFxuK1xcdHJlc3VsdCA9ICphcmdfY250ID09IDI7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMCwgXFx1MDAyNmEpO1xcbitcXHRyZXN1bHQgXFx1MDAyNj0gZXJyID09IDAgXFx1MDAyNlxcdTAwMjYgKGludClhID09IDU7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMSwgXFx1MDAyNmF1eCk7XFxuK1xcdCphdXhfYXJnID0gYXV4O1xcbitcXHRyZXN1bHQgXFx1MDAyNj0gZXJyID09IDAgXFx1MDAyNlxcdTAwMjYgYXV4ICE9IDA7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMiwgXFx1MDAyNnopO1xcbitcXHRyZXN1bHQgXFx1MDAyNj0gZXJyID09IC1FSU5WQUw7XFxuK1xcbitcXHRyZXR1cm4gcmVzdWx0O1xcbit9XFxuK1xcbitfX3U2NCBmZW50cnlfcmVzdWx0O1xcbitfX3U2NCBmZW50cnlfYXJnX2NudDtcXG4rX191NjQgZmVudHJ5X2F1eF9hcmc7XFxuK1xcbitTRUMoXFxcImZlbnRyeS9icGZfa2Z1bmNfaW1wbGljaXRfYXJnXFxcIilcXG4raW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZW50cnkpXFxuK3tcXG4rXFx0X191NjQgcmV0ID0gMDtcXG4rXFx0X19zNjQgZXJyO1xcbitcXG4rXFx0ZmVudHJ5X3Jlc3VsdCA9IGNoZWNrX2ltcGxpY2l0X2FyZ3MoY3R4LCBcXHUwMDI2ZmVudHJ5X2FyZ19jbnQsIFxcdTAwMjZmZW50cnlfYXV4X2FyZyk7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXFx1MDAyNnJldCk7XFxuK1xcdGZlbnRyeV9yZXN1bHQgXFx1MDAyNj0gZXJyID09IC1FT1BOT1RTVVBQO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK19fdTY0IGZleGl0X3Jlc3VsdDtcXG4rX191NjQgZmV4aXRfYXJnX2NudDtcXG4rX191NjQgZmV4aXRfYXV4X2FyZztcXG4rXFxuK1NFQyhcXFwiZmV4aXQvYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ1xcXCIpXFxuK2ludCBCUEZfUFJPRyh0cmFjZV9pbXBsaWNpdF9hcmdfZmV4aXQpXFxuK3tcXG4rXFx0X191NjQgcmV0ID0gMDtcXG4rXFx0X19zNjQgZXJyO1xcbitcXG4rXFx0ZmV4aXRfcmVzdWx0ID0gY2hlY2tfaW1wbGljaXRfYXJncyhjdHgsIFxcdTAwMjZmZXhpdF9hcmdfY250LCBcXHUwMDI2ZmV4aXRfYXV4X2FyZyk7XFxuK1xcbitcXHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXFx1MDAyNnJldCk7XFxuK1xcdGZleGl0X3Jlc3VsdCBcXHUwMDI2PSBlcnIgPT0gMCBcXHUwMDI2XFx1MDAyNiByZXQgPT0gNTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcInN5c2NhbGxcXFwiKVxcbitpbnQgdHJpZ2dlcl9pbXBsaWNpdF9hcmcodm9pZCAqY3R4KVxcbit7XFxuK1xcdHJldHVybiBicGZfa2Z1bmNfaW1wbGljaXRfYXJnKDUpO1xcbit9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE3OjAzOjUzLjY4ODkxMzg2NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMTg2NTU2MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzXCIsXG4gICAgXCJidGZfYXR0YWNoX2Z1bmNfcHJvdG9cIixcbiAgICBcImZpbmRfa2Z1bmNfaW1wbF9wcm90b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJIGZvciBgS0ZfSU1QTElDSVRfQVJHU2Aga2Z1bmNzLiBUaGlzIGFmZmVjdHMgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljIGZvciBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcyB0byBrZnVuY3MsIHdoaWNoIGlzIGhpZ2hseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWEzNjQ5YzhjM2VmNzhkMTNhYWYwOTBhOWNkY2ZhYzRkODgxNDE3YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDExIDE3OjAzOjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idGYuaCBiL2luY2x1ZGUvbGludXgvYnRmLmhcbmluZGV4IDI0MDQwMWQ5YjI1YjllLi5jNTIyNDVhZTBkZjVkNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnRmLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYnRmLmhcbkBAIC01NzgsNiArNTc4LDcgQEAgY29uc3QgY2hhciAqYnRmX3N0cl9ieV9vZmZzZXQoY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgb2Zmc2V0KTtcbiBzdHJ1Y3QgYnRmICpidGZfcGFyc2Vfdm1saW51eCh2b2lkKTtcbiBzdHJ1Y3QgYnRmICpicGZfcHJvZ19nZXRfdGFyZ2V0X2J0Zihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuIHUzMiAqYnRmX2tmdW5jX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbit1MzIgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCk7XG4gYm9vbCBidGZfa2Z1bmNfaXNfYWxsb3dlZChjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyk7XG4gdTMyICpidGZfa2Z1bmNfaXNfbW9kaWZ5X3JldHVybihjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQsXG4gXHRcdFx0XHRjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYnRmLmMgYi9rZXJuZWwvYnBmL2J0Zi5jXG5pbmRleCA2NDU3MmY4NWVkYzgzMi4uMjBhZWNhNmI0Zjk1YzkgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2J0Zi5jXG4rKysgYi9rZXJuZWwvYnBmL2J0Zi5jXG5AQCAtOTExNCw2ICs5MTE0LDI2IEBAIHUzMiAqYnRmX2tmdW5jX2ZsYWdzKGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGtmdW5jX2J0Zl9pZCwgY29uc3Qgc3RydWN0IGJwZl9wXG4gXHRyZXR1cm4gYnRmX2tmdW5jX2lkX3NldF9jb250YWlucyhidGYsIGhvb2ssIGtmdW5jX2J0Zl9pZCk7XG4gfVxuIFxuKy8qXG4rICogUmV0dXJuIHRoZSB1bmlvbiBvZiBhIGtmdW5jJ3MgZmxhZ3MgYWNyb3NzIGFsbCBob29rcy5cbisgKiBVbmxpa2UgYnRmX2tmdW5jX2ZsYWdzKCksIG5vdCByZXN0cmljdGVkIHRvIGEgY2FsbGluZ1xuKyAqIHByb2dyYW0ncyBob29rLiBVc2VkIHdoZW4gYXR0YWNoaW5nIHRvIGEga2Z1bmMgZm9yIHRyYWNpbmcuXG4rICovXG4rdTMyIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBrZnVuY19idGZfaWQpXG4re1xuK1x0ZW51bSBidGZfa2Z1bmNfaG9vayBob29rO1xuK1x0dTMyICpob29rX2ZsYWdzO1xuK1x0dTMyIGZsYWdzID0gMDtcbitcbitcdGZvciAoaG9vayA9IDA7IGhvb2sgXHUwMDNjIEJURl9LRlVOQ19IT09LX01BWDsgaG9vaysrKSB7XG4rXHRcdGhvb2tfZmxhZ3MgPSBidGZfa2Z1bmNfaWRfc2V0X2NvbnRhaW5zKGJ0ZiwgaG9vaywga2Z1bmNfYnRmX2lkKTtcbitcdFx0aWYgKGhvb2tfZmxhZ3MpXG4rXHRcdFx0ZmxhZ3MgfD0gKmhvb2tfZmxhZ3M7XG4rXHR9XG4rXG4rXHRyZXR1cm4gZmxhZ3M7XG4rfVxuK1xuIHUzMiAqYnRmX2tmdW5jX2lzX21vZGlmeV9yZXR1cm4oY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCB1MzIga2Z1bmNfYnRmX2lkLFxuIFx0XHRcdFx0Y29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuIHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDY1MTVkNGQzYzAwMzJmLi4yZjU2YWI4ZDZiNThjOSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMjU4NCwyNCArMjU4NCwyNCBAQCBzdGF0aWMgc3RydWN0IGJ0ZiAqZmluZF9rZnVuY19kZXNjX2J0ZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzMTYgb2Zmc2V0KVxuIFxuICNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggXCJfaW1wbFwiXG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqZmluZF9rZnVuY19pbXBsX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tXHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBidGYgKmJ0Zixcbi1cdFx0XHRcdFx0XHQgICAgY29uc3QgY2hhciAqZnVuY19uYW1lKVxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKlxuK2ZpbmRfa2Z1bmNfaW1wbF9wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSlcbiB7XG4tXHRjaGFyICpidWYgPSBlbnYtXHUwMDNldG1wX3N0cl9idWY7XG4gXHRjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKmZ1bmM7XG4rXHRjaGFyIGJ1ZltLU1lNX05BTUVfTEVOXTtcbiBcdHMzMiBpbXBsX2lkO1xuIFx0aW50IGxlbjtcbiBcbi1cdGxlbiA9IHNucHJpbnRmKGJ1ZiwgVE1QX1NUUl9CVUZfTEVOLCBcIiVzJXNcIiwgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4tXHRpZiAobGVuIFx1MDAzYyAwIHx8IGxlbiBcdTAwM2U9IFRNUF9TVFJfQlVGX0xFTikge1xuLVx0XHR2ZXJib3NlKGVudiwgXCJmdW5jdGlvbiBuYW1lICVzJXMgaXMgdG9vIGxvbmdcXG5cIiwgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4rXHRsZW4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBcIiVzJXNcIiwgZnVuY19uYW1lLCBLRl9JTVBMX1NVRkZJWCk7XG4rXHRpZiAobGVuIFx1MDAzYyAwIHx8IGxlbiBcdTAwM2U9IHNpemVvZihidWYpKSB7XG4rXHRcdGJwZl9sb2cobG9nLCBcImZ1bmN0aW9uIG5hbWUgJXMlcyBpcyB0b28gbG9uZ1xcblwiLFxuK1x0XHRcdGZ1bmNfbmFtZSwgS0ZfSU1QTF9TVUZGSVgpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbiBcdGltcGxfaWQgPSBidGZfZmluZF9ieV9uYW1lX2tpbmQoYnRmLCBidWYsIEJURl9LSU5EX0ZVTkMpO1xuIFx0aWYgKGltcGxfaWQgXHUwMDNjPSAwKSB7XG4tXHRcdHZlcmJvc2UoZW52LCBcImNhbm5vdCBmaW5kIGZ1bmN0aW9uICVzIGluIEJURlxcblwiLCBidWYpO1xuK1x0XHRicGZfbG9nKGxvZywgXCJjYW5ub3QgZmluZCBmdW5jdGlvbiAlcyBpbiBCVEZcXG5cIiwgYnVmKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtMjY1Myw3ICsyNjUzLDcgQEAgc3RhdGljIGludCBmZXRjaF9rZnVuY19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHQgKiBjYW4gYmUgZm91bmQgdGhyb3VnaCB0aGUgY291bnRlcnBhcnQgX2ltcGwga2Z1bmMuXG4gXHQgKi9cbiBcdGlmIChrZnVuY19mbGFncyBcdTAwMjZcdTAwMjYgKCprZnVuY19mbGFncyBcdTAwMjYgS0ZfSU1QTElDSVRfQVJHUykpXG4tXHRcdGZ1bmNfcHJvdG8gPSBmaW5kX2tmdW5jX2ltcGxfcHJvdG8oZW52LCBidGYsIGZ1bmNfbmFtZSk7XG4rXHRcdGZ1bmNfcHJvdG8gPSBmaW5kX2tmdW5jX2ltcGxfcHJvdG8oXHUwMDI2ZW52LVx1MDAzZWxvZywgYnRmLCBmdW5jX25hbWUpO1xuIFx0ZWxzZVxuIFx0XHRmdW5jX3Byb3RvID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBmdW5jLVx1MDAzZXR5cGUpO1xuIFxuQEAgLTE4ODczLDYgKzE4ODczLDQ0IEBAIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBiXG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG4gXG4rLypcbisgKiBSZXNvbHZlIHRoZSBwcm90b3R5cGUgZGVzY3JpYmluZyBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJLiBBXG4rICogS0ZfSU1QTElDSVRfQVJHUyBrZnVuYyBoYXMgaXRzIGluamVjdGVkIGFyZ3Mgc3RyaXBwZWQgZnJvbSB0aGUgcHVibGljXG4rICogcHJvdG90eXBlLCBzbyB1c2UgdGhlIF9pbXBsIHByb3RvdHlwZTsgb3RoZXIgdGFyZ2V0cyB1c2UgdGhlaXIgb3duLlxuKyAqL1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKlxuK2J0Zl9hdHRhY2hfZnVuY19wcm90byhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLCBzdHJ1Y3QgYnRmICpidGYsIHUzMiBmdW5jX2lkKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqZnVuYztcbitcdHN0cnVjdCBtb2R1bGUgKm1vZCA9IE5VTEw7XG4rXHRjb25zdCBjaGFyICpuYW1lO1xuK1x0dTMyIGtmdW5jX2ZsYWdzO1xuK1xuK1x0ZnVuYyA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgZnVuY19pZCk7XG4rXHRpZiAoIWZ1bmMgfHwgIWJ0Zl90eXBlX2lzX2Z1bmMoZnVuYykpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0LypcbitcdCAqIGJ0Zl9rZnVuY19hY2N1bXVsYXRlZF9mbGFncygpIHJlYWRzIGtmdW5jX3NldF90YWIsIHdoaWNoIGZvciBhXG4rXHQgKiBtb2R1bGUgaXMgc3RhYmxlIG9ubHkgb25jZSBpdCBpcyBsaXZlOyBob2xkIGEgbW9kdWxlIHJlZiBhY3Jvc3NcbitcdCAqIHRoZSByZWFkIHRvIGV4Y2x1ZGUgYSBjb25jdXJyZW50IG1vZHVsZSBsb2FkLlxuK1x0ICovXG4rXHRpZiAoYnRmX2lzX21vZHVsZShidGYpKSB7XG4rXHRcdG1vZCA9IGJ0Zl90cnlfZ2V0X21vZHVsZShidGYpO1xuK1x0XHRpZiAoIW1vZClcbitcdFx0XHRyZXR1cm4gTlVMTDtcbitcdH1cbitcdGtmdW5jX2ZsYWdzID0gYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzKGJ0ZiwgZnVuY19pZCk7XG4rXHRtb2R1bGVfcHV0KG1vZCk7XG4rXG4rXHRpZiAoa2Z1bmNfZmxhZ3MgXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcbitcdFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXHUwMDNlbmFtZV9vZmYpO1xuK1x0XHRyZXR1cm4gZmluZF9rZnVuY19pbXBsX3Byb3RvKGxvZywgYnRmLCBuYW1lKTtcbitcdH1cbitcbitcdHJldHVybiBidGZfdHlwZV9ieV9pZChidGYsIGZ1bmMtXHUwMDNldHlwZSk7XG4rfVxuK1xuIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4gXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2csXG5AQCAtMTkxMjEsOCArMTkxNTksOCBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbiBcdFx0aWYgKHByb2dfZXh0ZW5zaW9uIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgYnRmX2NoZWNrX3R5cGVfbWF0Y2gobG9nLCBwcm9nLCBidGYsIHQpKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuLVx0XHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB0LVx1MDAzZXR5cGUpO1xuLVx0XHRpZiAoIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4rXHRcdHQgPSBidGZfYXR0YWNoX2Z1bmNfcHJvdG8obG9nLCBidGYsIGJ0Zl9pZCk7XG4rXHRcdGlmICghdCB8fCAhYnRmX3R5cGVfaXNfZnVuY19wcm90byh0KSlcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiBcdFx0aWYgKChwcm9nLVx1MDAzZWF1eC1cdTAwM2VzYXZlZF9kc3RfcHJvZ190eXBlIHx8IHByb2ctXHUwMDNlYXV4LVx1MDAzZXNhdmVkX2RzdF9hdHRhY2hfdHlwZSkgXHUwMDI2XHUwMDI2XG5AQCAtMTk0MDcsOCArMTk0NDUsOCBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdGlmICghYnRmX3R5cGVfaXNfZnVuYyh0KSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCB0LVx1MDAzZXR5cGUpO1xuLVx0aWYgKCFidGZfdHlwZV9pc19mdW5jX3Byb3RvKHQpKVxuK1x0dCA9IGJ0Zl9hdHRhY2hfZnVuY19wcm90byhOVUxMLCBidGYsIGJ0Zl9pZCk7XG4rXHRpZiAoIXQgfHwgIWJ0Zl90eXBlX2lzX2Z1bmNfcHJvdG8odCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0ZXJyID0gYnRmX2Rpc3RpbGxfZnVuY19wcm90byhOVUxMLCBidGYsIHQsIHRuYW1lLCBcdTAwMjZ0Z3RfaW5mby1cdTAwM2VmbW9kZWwpO1xuIFx0aWYgKGVyciBcdTAwM2MgMClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjYxY2M1YWFiYTAyNTRkXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcuY1xuQEAgLTAsMCArMSwzNiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLyogQ29weXJpZ2h0IChjKSAyMDI2IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xuK1xuKyNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuKyNpbmNsdWRlIFwia2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLnNrZWwuaFwiXG4rXG4rdm9pZCB0ZXN0X2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZyh2b2lkKVxuK3tcbitcdHN0cnVjdCBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmcgKnNrZWw7XG4rXHRMSUJCUEZfT1BUUyhicGZfdGVzdF9ydW5fb3B0cywgdG9wdHMpO1xuK1x0aW50IGVyciwgZmQ7XG4rXG4rXHRza2VsID0ga2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nX19vcGVuX2FuZF9sb2FkKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbCwgXCJvcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRlcnIgPSBrZnVuY19pbXBsaWNpdF9hcmdzX3RyYWNpbmdfX2F0dGFjaChza2VsKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJhdHRhY2hcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcbitcdGZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWwtXHUwMDNlcHJvZ3MudHJpZ2dlcl9pbXBsaWNpdF9hcmcpO1xuK1x0ZXJyID0gYnBmX3Byb2dfdGVzdF9ydW5fb3B0cyhmZCwgXHUwMDI2dG9wdHMpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcInRlc3RfcnVuXCIpKVxuK1x0XHRnb3RvIGNsZWFudXA7XG4rXG4rXHRBU1NFUlRfRVEodG9wdHMucmV0dmFsLCA1LCBcImtmdW5jX3JldHZhbFwiKTtcbitcdEFTU0VSVF9FUShza2VsLVx1MDAzZWJzcy1cdTAwM2VmZW50cnlfYXJnX2NudCwgMiwgXCJmZW50cnlfYXJnX2NudFwiKTtcbitcdEFTU0VSVF9ORVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmVudHJ5X2F1eF9hcmcsIDAsIFwiZmVudHJ5X2F1eF9hcmdcIik7XG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmVudHJ5X3Jlc3VsdCwgMSwgXCJmZW50cnlfcmVzdWx0XCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZleGl0X2FyZ19jbnQsIDIsIFwiZmV4aXRfYXJnX2NudFwiKTtcbitcdEFTU0VSVF9ORVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZmV4aXRfYXV4X2FyZywgMCwgXCJmZXhpdF9hdXhfYXJnXCIpO1xuK1x0QVNTRVJUX0VRKHNrZWwtXHUwMDNlYnNzLVx1MDAzZWZleGl0X3Jlc3VsdCwgMSwgXCJmZXhpdF9yZXN1bHRcIik7XG4rXG4rY2xlYW51cDpcbitcdGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZ19fZGVzdHJveShza2VsKTtcbit9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2tmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjk5NWY4YjhiNWI5ZThmXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva2Z1bmNfaW1wbGljaXRfYXJnc190cmFjaW5nLmNcbkBAIC0wLDAgKzEsNzcgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qIENvcHlyaWdodCAoYykgMjAyNiBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy4gKi9cbitcbisjaW5jbHVkZSBcdTAwM2N2bWxpbnV4LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjZXJybm8uaFx1MDAzZVxuK1xuK2V4dGVybiBpbnQgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyhpbnQgYSkgX193ZWFrIF9fa3N5bTtcbitcbitjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4rXG4rLyogU2hhcmVkIGFyZyBjaGVja3M7IHJlcG9ydHMgYXJnIGNvdW50IGFuZCBhdXgsIHJldHVybnMgMSBvbiBzdWNjZXNzLiAqL1xuK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgX191NjRcbitjaGVja19pbXBsaWNpdF9hcmdzKHZvaWQgKmN0eCwgX191NjQgKmFyZ19jbnQsIF9fdTY0ICphdXhfYXJnKVxuK3tcbitcdF9fdTY0IGEgPSAwLCBhdXggPSAwLCB6ID0gMDtcbitcdF9fdTY0IHJlc3VsdDtcbitcdF9fczY0IGVycjtcbitcbitcdCphcmdfY250ID0gYnBmX2dldF9mdW5jX2FyZ19jbnQoY3R4KTtcbitcdHJlc3VsdCA9ICphcmdfY250ID09IDI7XG4rXG4rXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMCwgXHUwMDI2YSk7XG4rXHRyZXN1bHQgXHUwMDI2PSBlcnIgPT0gMCBcdTAwMjZcdTAwMjYgKGludClhID09IDU7XG4rXG4rXHRlcnIgPSBicGZfZ2V0X2Z1bmNfYXJnKGN0eCwgMSwgXHUwMDI2YXV4KTtcbitcdCphdXhfYXJnID0gYXV4O1xuK1x0cmVzdWx0IFx1MDAyNj0gZXJyID09IDAgXHUwMDI2XHUwMDI2IGF1eCAhPSAwO1xuK1xuK1x0ZXJyID0gYnBmX2dldF9mdW5jX2FyZyhjdHgsIDIsIFx1MDAyNnopO1xuK1x0cmVzdWx0IFx1MDAyNj0gZXJyID09IC1FSU5WQUw7XG4rXG4rXHRyZXR1cm4gcmVzdWx0O1xuK31cbitcbitfX3U2NCBmZW50cnlfcmVzdWx0O1xuK19fdTY0IGZlbnRyeV9hcmdfY250O1xuK19fdTY0IGZlbnRyeV9hdXhfYXJnO1xuK1xuK1NFQyhcImZlbnRyeS9icGZfa2Z1bmNfaW1wbGljaXRfYXJnXCIpXG4raW50IEJQRl9QUk9HKHRyYWNlX2ltcGxpY2l0X2FyZ19mZW50cnkpXG4re1xuK1x0X191NjQgcmV0ID0gMDtcbitcdF9fczY0IGVycjtcbitcbitcdGZlbnRyeV9yZXN1bHQgPSBjaGVja19pbXBsaWNpdF9hcmdzKGN0eCwgXHUwMDI2ZmVudHJ5X2FyZ19jbnQsIFx1MDAyNmZlbnRyeV9hdXhfYXJnKTtcbitcbitcdGVyciA9IGJwZl9nZXRfZnVuY19yZXQoY3R4LCBcdTAwMjZyZXQpO1xuK1x0ZmVudHJ5X3Jlc3VsdCBcdTAwMjY9IGVyciA9PSAtRU9QTk9UU1VQUDtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitfX3U2NCBmZXhpdF9yZXN1bHQ7XG4rX191NjQgZmV4aXRfYXJnX2NudDtcbitfX3U2NCBmZXhpdF9hdXhfYXJnO1xuK1xuK1NFQyhcImZleGl0L2JwZl9rZnVuY19pbXBsaWNpdF9hcmdcIilcbitpbnQgQlBGX1BST0codHJhY2VfaW1wbGljaXRfYXJnX2ZleGl0KVxuK3tcbitcdF9fdTY0IHJldCA9IDA7XG4rXHRfX3M2NCBlcnI7XG4rXG4rXHRmZXhpdF9yZXN1bHQgPSBjaGVja19pbXBsaWNpdF9hcmdzKGN0eCwgXHUwMDI2ZmV4aXRfYXJnX2NudCwgXHUwMDI2ZmV4aXRfYXV4X2FyZyk7XG4rXG4rXHRlcnIgPSBicGZfZ2V0X2Z1bmNfcmV0KGN0eCwgXHUwMDI2cmV0KTtcbitcdGZleGl0X3Jlc3VsdCBcdTAwMjY9IGVyciA9PSAwIFx1MDAyNlx1MDAyNiByZXQgPT0gNTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCJzeXNjYWxsXCIpXG4raW50IHRyaWdnZXJfaW1wbGljaXRfYXJnKHZvaWQgKmN0eClcbit7XG4rXHRyZXR1cm4gYnBmX2tmdW5jX2ltcGxpY2l0X2FyZyg1KTtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNzowMzo1My42ODg5MTU4MTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4Mzk4NDY4MDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIEJURi9CUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBCVEYgYW5kIEJQRiB2ZXJpZmllciBsb2dpYy4gSXQncyBpbnRyb2R1Y2luZyBgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzYCBhbmQgdXNpbmcgaXQgdG8gbmFpbCBkb3duIHRoZSByZWFsIEFCSSBmb3IgdHJhY2UgdGFyZ2V0cyB3aXRoaW4gYEtGX0lNUExJQ0lUX0FSR1NgIGtmdW5jcy4gU2VlbXMgcHJldHR5IHRhcmdldGVkLCBidXQgdGhlIGZhY3QgdGhhdCBpdOKAmXMgbW9kaWZ5aW5nIHRoZSB2ZXJpZmllciBpdHNlbGYsIHNwZWNpZmljYWxseSBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgdG91Y2hpbmcgYGtlcm5lbC9icGYvYnRmLmNgLCBpbW1lZGlhdGVseSBzY3JlYW1zIFwiZnV6emluZyB0YXJnZXQuXCIgVGhpcyBpcyBjb3JlIHN0dWZmIHRoYXQncyBoaWdobHkgcmVhY2hhYmxlIGFuZCBnZXRzIGEgbG90IG9mIGF0dGVudGlvbiBmcm9tIHRvb2xzIGxpa2Ugc3l6a2FsbGVyLCBzbyBpdCdzIHByb2JhYmx5IHdvcnRoIHRoZSBlZmZvcnQuXG5cbkxldCdzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBhZmZlY3RlZC4gSSdtIHNlZWluZzpcblxuKiAgIGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgICh0aGlzIGlzIHRoZSBuZXcgb25lLCBzbyBwcmltZSBzdXNwZWN0KVxuKiAgIGBmaW5kX2tmdW5jX2ltcGxfcHJvdG9gIChtb2RpZmllZCAtIGFsd2F5cyBnb29kIHRvIGRvdWJsZS1jaGVjaylcbiogICBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCAoYWxzbyBuZXcsIGdvdHRhIGNoZWNrIGl0IG91dClcbiogICBgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRgIChtb2RpZmllZCAtIGNoYW5nZXMgaGVyZSBjYW4gYmUgc3VidGxlKVxuKiAgIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgKG1vZGlmaWVkIC0gc2ltaWxhciByZWFzb25pbmcpXG5cbkknbGwgY2hlY2sgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYW5kIGBrZXJuZWwvYnBmL2J0Zi5jYCBmb3IgYW55IGBDT05GSUdgIG9wdGlvbnMgdGhhdCBtaWdodCBnYXRlIHRoZSBuZXcgY29kZSBvciBjaGFuZ2UgdGhlIGVudmlyb25tZW50LiBCUEYgdXN1YWxseSByZXF1aXJlcyBgQ09ORklHX0JQRl9TWVNDQUxMYCwgb2YgY291cnNlLCBidXQgaXQncyB3b3J0aCBhIHF1aWNrIHNjYW4uIExldCdzIHNlZSBpZiBgS0ZfSU1QTElDSVRfQVJHU2AgaXMgY29uZGl0aW9uYWxpemVkIGFueXdoZXJlLiBMZXQgbWUgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSBob3cgdGhpcyBgS0ZfSU1QTElDSVRfQVJHU2AgdGhpbmcgaXMgYWN0dWFsbHkgdXNlZCBhbmQgZGVmaW5lZCBpbiB0aGUgY29kZSBiYXNlIOKAkyB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gaG93IHRvIHRyaWdnZXIgdGhlIG5ldyBjb2RlIHBhdGhzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzMzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTc6MDQ6MDIuMDg3NDEzNzhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgzMjA4MDQwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJLRl9JTVBMSUNJVF9BUkdTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q9MzgzPXRob3NlIGtmdW5jcyBpZiBhbmQgd2hlbiBzdWNoIGRpc2N1c3Npb25zIG9jY3VyLlxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg0LVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6Mzg1OjIuNS45IEtGX0lNUExJQ0lUX0FSR1MgZmxhZ1xcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg2LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzg3LVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6Mzg4OlRoZSBLRl9JTVBMSUNJVF9BUkdTIGZsYWcgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBCUEYgc2lnbmF0dXJlXFxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdC0zODktb2YgdGhlIGtmdW5jIGlzIGRpZmZlcmVudCBmcm9tIGl0J3Mga2VybmVsIHNpZ25hdHVyZSwgYW5kIHRoZSB2YWx1ZXNcXG4tLVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q9MzkzPUN1cnJlbnRseSBvbmx5IGBgc3RydWN0IGJwZl9wcm9nX2F1eCAqYGAgdHlwZSBpcyBzdXBwb3J0ZWQuXFxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdC0zOTQtXFxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdDozOTU6QSBrZnVuYyB3aXRoIEtGX0lNUExJQ0lUX0FSR1MgZmxhZyB0aGVyZWZvcmUgaGFzIHR3byB0eXBlcyBpbiBCVEY6IG9uZVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMzk2LWZ1bmN0aW9uIG1hdGNoaW5nIHRoZSBrZXJuZWwgZGVjbGFyYXRpb24gKHdpdGggX2ltcGwgc3VmZml4IGluIHRoZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2NoYW5nZXMucnN0PTE0OD1tb2R1bGVzIGFzIHdlbGwuICBUaGlzIHJlcXVpcmVzIHBhaG9sZSB2MS4yMiBvciBsYXRlci5cXG5Eb2N1bWVudGF0aW9uL3Byb2Nlc3MvY2hhbmdlcy5yc3QtMTQ5LVxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jaGFuZ2VzLnJzdDoxNTA6U2luY2UgTGludXggNy4wLCBrZnVuY3MgYW5ub3RhdGVkIHdpdGggS0ZfSU1QTElDSVRfQVJHUyByZXF1aXJlIHBhaG9sZSB2MS4yNlxcbkRvY3VtZW50YXRpb24vcHJvY2Vzcy9jaGFuZ2VzLnJzdC0xNTEtb3IgbGF0ZXIuICBXaXRob3V0IGl0LCBzdWNoIGtmdW5jcyB3aWxsIGhhdmUgaW5jb3JyZWN0IEJURiBwcm90b3R5cGVzIGluXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2J0Zi5oLTgwLSNkZWZpbmUgS0ZfQVJFTkFfQVJHMiAgICgxIFxcdTAwM2NcXHUwMDNjIDE1KSAvKiBrZnVuYyB0YWtlcyBhbiBhcmVuYSBwb2ludGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgKi9cXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjgxOiNkZWZpbmUgS0ZfSU1QTElDSVRfQVJHUyAoMSBcXHUwMDNjXFx1MDAzYyAxNikgLyoga2Z1bmMgaGFzIGltcGxpY2l0IGFyZ3VtZW50cyBzdXBwbGllZCBieSB0aGUgdmVyaWZpZXIgKi9cXG5pbmNsdWRlL2xpbnV4L2J0Zi5oLTgyLVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgwND1CVEZfSURfRkxBR1MoZnVuYywgY3Jhc2hfa2V4ZWMsIEtGX0RFU1RSVUNUSVZFKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MDUtI2VuZGlmXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgwNjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9uZXcsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgwNy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9uZXdfaW1wbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MDg6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9wZXJjcHVfb2JqX25ldywgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMIHwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODA5LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcGVyY3B1X29ial9uZXdfaW1wbCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTA6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9vYmpfZHJvcCwgS0ZfUkVMRUFTRSB8IEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxMS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX29ial9kcm9wX2ltcGwsIEtGX1JFTEVBU0UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgxMjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfZHJvcCwgS0ZfUkVMRUFTRSB8IEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxMy1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3BlcmNwdV9vYmpfZHJvcF9pbXBsLCBLRl9SRUxFQVNFKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ4MTQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlLCBLRl9BQ1FVSVJFIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1UgfCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTUtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGwsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTCB8IEtGX1JDVSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2Zyb250LCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MTctQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3B1c2hfZnJvbnRfaW1wbClcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODE4OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfbGlzdF9wdXNoX2JhY2ssIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDgxOS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfcHVzaF9iYWNrX2ltcGwpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDgyMDpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2xpc3RfYWRkLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ4MjEtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9saXN0X3BvcF9mcm9udCwgS0ZfQUNRVUlSRSB8IEtGX1JFVF9OVUxMKVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDgzMT1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3JidHJlZV9yZW1vdmUsIEtGX0FDUVVJUkUgfCBLRl9SRVRfTlVMTClcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0ODMyOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00ODMzLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfcmJ0cmVlX2FkZF9pbXBsKVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDkxND1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX2luaXQpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDkxNTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3dxX3NldF9jYWxsYmFjaywgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTE2LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfd3Ffc3RhcnQpXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz00OTYyPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy00OTYzLSNlbmRpZlxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5NjQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY1OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5NjY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjQ5Njc6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjgtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9keW5wdHJfZnJvbV9maWxlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTI2MTM9c3RhdGljIGludCBmZXRjaF9rZnVuY19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1MS1cXHQvKlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyNjUyOlxcdCAqIEFuIGFjdHVhbCBwcm90b3R5cGUgb2YgYSBrZnVuYyB3aXRoIEtGX0lNUExJQ0lUX0FSR1MgZmxhZ1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjUzLVxcdCAqIGNhbiBiZSBmb3VuZCB0aHJvdWdoIHRoZSBjb3VudGVycGFydCBfaW1wbCBrZnVuYy5cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjY1NC1cXHQgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjY1NTpcXHRpZiAoa2Z1bmNfZmxhZ3MgXFx1MDAyNlxcdTAwMjYgKCprZnVuY19mbGFncyBcXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yNjU2LVxcdFxcdGZ1bmNfcHJvdG8gPSBmaW5kX2tmdW5jX2ltcGxfcHJvdG8oXFx1MDAyNmVudi1cXHUwMDNlbG9nLCBidGYsIGZ1bmNfbmFtZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTA5MDQ9c3RhdGljIGJvb2wgaXNfa2Z1bmNfYXJnX3Byb2dfYXV4KGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJ0Zl9wYXJhbSAqYXJnKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTA5LS8qXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwOTEwOiAqIEEga2Z1bmMgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIGhhcyB0d28gcHJvdG90eXBlcyBpbiBCVEY6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwOTExLSAqICAgLSB0aGUgX2ltcGwgcHJvdG90eXBlIHdpdGggZnVsbCBhcmcgbGlzdCAobWV0YS1cXHUwMDNlZnVuY19wcm90bylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDkxNj1zdGF0aWMgYm9vbCBpc19rZnVuY19hcmdfaW1wbGljaXQoY29uc3Qgc3RydWN0IGJwZl9rZnVuY19jYWxsX2FyZ19tZXRhICptZXRhLCB1MzIgYXJnX2lkeClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDkyMC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTA5MjE6XFx0aWYgKCEobWV0YS1cXHUwMDNla2Z1bmNfZmxhZ3MgXFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTA5MjItXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE4ODI3PXN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODg3Ny0gKiBSZXNvbHZlIHRoZSBwcm90b3R5cGUgZGVzY3JpYmluZyBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJLiBBXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4ODc4OiAqIEtGX0lNUExJQ0lUX0FSR1Mga2Z1bmMgaGFzIGl0cyBpbmplY3RlZCBhcmdzIHN0cmlwcGVkIGZyb20gdGhlIHB1YmxpY1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODg3OS0gKiBwcm90b3R5cGUsIHNvIHVzZSB0aGUgX2ltcGwgcHJvdG90eXBlOyBvdGhlciB0YXJnZXRzIHVzZSB0aGVpciBvd24uXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg4ODI9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg5MDUtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4OTA2OlxcdGlmIChrZnVuY19mbGFncyBcXHUwMDI2IEtGX0lNUExJQ0lUX0FSR1MpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg5MDctXFx0XFx0bmFtZSA9IGJ0Zl9uYW1lX2J5X29mZnNldChidGYsIGZ1bmMtXFx1MDAzZW5hbWVfb2ZmKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM9NjgzPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19pbml0KVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Njg0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF9vdmVycmlkZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NMRUVQQUJMRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTY4NS1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2luaXQpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jPTY5Mz1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfY2lkKVxcbmtlcm5lbC9zY2hlZC9leHQvY2lkLmM6Njk0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF90b19jcHUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9jaWQuYzo2OTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3RvX2NpZCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jOjY5NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRfdG9wbywgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2NpZC5jLTY5Ny1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NpZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9ODczOD1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfZW5xdWV1ZV9kaXNwYXRjaClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3Mzk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX2luc2VydCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjg3NDA6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX2luc2VydF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6ODc0MTpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX2RzcV9pbnNlcnRfdnRpbWUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy04NzQyLUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9pbnNlcnRfdnRpbWUsIEtGX1JDVSlcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTEwMz1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfZGlzcGF0Y2gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTA0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2Rpc3BhdGNoX25yX3Nsb3RzLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kaXNwYXRjaF9jYW5jZWwsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo5MTA2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9tb3ZlX3RvX2xvY2FsLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTEwNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV90b19sb2NhbF9fX3YyLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTEwOC0vKiBzY3hfYnBmX2RzcV9tb3ZlKigpIGFsc28gaW4gc2N4X2tmdW5jX2lkc191bmxvY2tlZDogY2FsbGFibGUgZnJvbSB1bmxvY2tlZCBjb250ZXh0cyAqL1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MTEyPUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2RzcV9tb3ZlX3Z0aW1lLCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTEzLSNpZmRlZiBDT05GSUdfRVhUX1NVQl9TQ0hFRFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTExNDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zdWJfZGlzcGF0Y2gsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy05MTE1LSNlbmRpZlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MTUyPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19jcHVfcmVsZWFzZSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkxNTM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcmVlbnF1ZXVlX2xvY2FsLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTE1NC1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2NwdV9yZWxlYXNlKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz05MjIxPUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjkyMjI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3JlYXRlX2RzcSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NMRUVQQUJMRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkyMjMtLyogYWxzbyBpbiBzY3hfa2Z1bmNfaWRzX2Rpc3BhdGNoOiBhbHNvIGNhbGxhYmxlIGZyb20gb3BzLmRpc3BhdGNoKCkgKi9cXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9OTIyNz1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfbW92ZV92dGltZSwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTIyOC0vKiBhbHNvIGluIHNjeF9rZnVuY19pZHNfc2VsZWN0X2NwdTogYWxzbyBjYWxsYWJsZSBmcm9tIG9wcy5zZWxlY3RfY3B1KCkvb3BzLmVucXVldWUoKSAqL1xcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTIyOTpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtOTIzMC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6OTIzMTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2RmbCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTkyMzItQlRGX0tGVU5DU19FTkQoc2N4X2tmdW5jX2lkc191bmxvY2tlZClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTAzODI9QlRGX0tGVU5DU19TVEFSVChzY3hfa2Z1bmNfaWRzX2FueSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzgzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfc2V0X3NsaWNlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKTtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfc2V0X2RzcV92dGltZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSk7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM4NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NwdSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg2OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2tpY2tfY2lkLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX25yX3F1ZXVlZCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzg4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2Rlc3Ryb3lfZHNxLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzODk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZHNxX3BlZWssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1VfUFJPVEVDVEVEIHwgS0ZfUkVUX05VTEwpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9kc3FfcmVlbnEsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDM5MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9yZWVucXVldWVfbG9jYWxfX192MiwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzkyOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX25ldywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0lURVJfTkVXIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwMzkzLUJURl9JRF9GTEFHUyhmdW5jLCBicGZfaXRlcl9zY3hfZHNxX25leHQsIEtGX0lURVJfTkVYVCB8IEtGX1JFVF9OVUxMKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTAzOTQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9pdGVyX3NjeF9kc3FfZGVzdHJveSwgS0ZfSVRFUl9ERVNUUk9ZKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXhpdF9ic3RyLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXJyb3JfYnN0ciwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzk3OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2R1bXBfYnN0ciwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwMzk4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTAzOTk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQwMDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX3NldCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDAxOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZHBlcmZfY2FwLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MDI6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY2lkcGVyZl9jdXIsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQwMzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jaWRwZXJmX3NldCwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDA0LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX25yX25vZGVfaWRzKVxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDQxND1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90YXNrX2NpZCwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X3JxLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0MTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfbG9ja2VkX3JxLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQxNzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfY3VyciwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDE4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NpZF9jdXJyLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkVUX05VTEwgfCBLRl9SQ1VfUFJPVEVDVEVEKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0MTktQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGlkX3RvX3Rhc2ssIEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9MTA0MjE9QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZXZlbnRzKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0MjItI2lmZGVmIENPTkZJR19DR1JPVVBfU0NIRURcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDIzOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfY2dyb3VwLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVIHwgS0ZfQUNRVUlSRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDI0LSNlbmRpZlxcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz0xMDQ0Nz1CVEZfS0ZVTkNTX1NUQVJUKHNjeF9rZnVuY19pZHNfY3B1X29ubHkpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ0ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9raWNrX2NwdSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDQ5LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3Rhc2tfY3B1LCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfcnEsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVfY3VyciwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JFVF9OVUxMIHwgS0ZfUkNVX1BST1RFQ1RFRClcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDUyOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdV9ub2RlLCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1cGVyZl9jYXAsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ1NDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9jcHVwZXJmX2N1ciwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDU1OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2NwdXBlcmZfc2V0LCBLRl9JTVBMSUNJVF9BUkdTKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0NTYtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X3Bvc3NpYmxlX2NwdW1hc2ssIEtGX0FDUVVJUkUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTEwNDU4PUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9jcHVtYXNrLCBLRl9SRUxFQVNFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NTk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc2VsZWN0X2NwdV9kZmwsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2MDpCVEZfSURfRkxBR1MoZnVuYywgX19zY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtMTA0NjEtQlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfc2VsZWN0X2NwdV9hbmQsIEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDYyOkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX2NwdW1hc2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjM6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfY3B1bWFza19ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY0OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX2dldF9pZGxlX3NtdG1hc2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM6MTA0NjU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFza19ub2RlLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfQUNRVUlSRSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDY2LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3B1dF9pZGxlX2NwdW1hc2ssIEtGX1JFTEVBU0UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2NzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl90ZXN0X2FuZF9jbGVhcl9jcHVfaWRsZSwgS0ZfSU1QTElDSVRfQVJHUylcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjEwNDY4OkJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3BpY2tfaWRsZV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ2OTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ3MDpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzoxMDQ3MTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHVfbm9kZSwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTEwNDcyLUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfY3B1X29ubHkpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYz0xNDY0PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19pZGxlKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NjU6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2NjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9jcHVtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0Njc6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfY3B1bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ2ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9nZXRfaWRsZV9zbXRtYXNrX25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9BQ1FVSVJFKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0Njk6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfZ2V0X2lkbGVfc210bWFzaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX0FDUVVJUkUpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTQ3MC1CVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9wdXRfaWRsZV9jcHVtYXNrLCBLRl9SRUxFQVNFKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzE6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfdGVzdF9hbmRfY2xlYXJfY3B1X2lkbGUsIEtGX0lNUExJQ0lUX0FSR1MpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3MjpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3MzpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2lkbGVfY3B1LCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfUkNVKVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0NzQ6QlRGX0lEX0ZMQUdTKGZ1bmMsIHNjeF9icGZfcGlja19hbnlfY3B1X25vZGUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ3NTpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9waWNrX2FueV9jcHUsIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmMtMTQ3Ni1CVEZfS0ZVTkNTX0VORChzY3hfa2Z1bmNfaWRzX2lkbGUpXFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYz0xNDk1PUJURl9LRlVOQ1NfU1RBUlQoc2N4X2tmdW5jX2lkc19zZWxlY3RfY3B1KVxcbmtlcm5lbC9zY2hlZC9leHQvaWRsZS5jOjE0OTY6QlRGX0lEX0ZMQUdTKGZ1bmMsIF9fc2N4X2JwZl9zZWxlY3RfY3B1X2FuZCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDk3LUJURl9JRF9GTEFHUyhmdW5jLCBzY3hfYnBmX3NlbGVjdF9jcHVfYW5kLCBLRl9SQ1UpXFxua2VybmVsL3NjaGVkL2V4dC9pZGxlLmM6MTQ5ODpCVEZfSURfRkxBR1MoZnVuYywgc2N4X2JwZl9zZWxlY3RfY3B1X2RmbCwgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1JDVSlcXG5rZXJuZWwvc2NoZWQvZXh0L2lkbGUuYy0xNDk5LUJURl9LRlVOQ1NfRU5EKHNjeF9rZnVuY19pZHNfc2VsZWN0X2NwdSlcXG4tLVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM9MTIyPXN0cnVjdCBvYmplY3Qge1xcbi0tXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xNTQtXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYzoxNTU6I2RlZmluZSBLRl9JTVBMSUNJVF9BUkdTICgxIFxcdTAwM2NcXHUwMDNjIDE2KVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTU2LSNkZWZpbmUgS0ZfSU1QTF9TVUZGSVggXFxcIl9pbXBsXFxcIlxcbi0tXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYz0xMDY0PXN0YXRpYyBib29sIGlzX2tmX2ltcGxpY2l0X2FyZyhjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBidGZfcGFyYW0gKnApXFxuLS1cXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEwOTItLypcXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jOjEwOTM6ICogRm9yIGEga2Z1bmMgd2l0aCBLRl9JTVBMSUNJVF9BUkdTIHdlIGRvIHRoZSBmb2xsb3dpbmc6XFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMDk0LSAqICAgMS4gQWRkIGEgbmV3IGZ1bmN0aW9uIHdpdGggX2ltcGwgc3VmZml4IGluIHRoZSBuYW1lLCB3aXRoIHRoZSBwcm90b3R5cGVcXG4tLVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTEwNi0gKlxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM6MTEwNzogKiBJZiBhIGtmdW5jIHdpdGggS0ZfSU1QTElDSVRfQVJHUyBhbHJlYWR5IGhhcyBhbiBfaW1wbCBjb3VudGVycGFydFxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmMtMTEwOC0gKiBpbiBCVEYsIHRoZW4gaXQncyBhIGxlZ2FjeSBjYXNlOiBhbiBfaW1wbCBmdW5jdGlvbiBpcyBkZWNsYXJlZCBpbiB0aGVcXG4tLVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM9MTIxND1zdGF0aWMgaW50IGJ0ZjJidGYoc3RydWN0IG9iamVjdCAqb2JqKVxcbi0tXFxudG9vbHMvYnBmL3Jlc29sdmVfYnRmaWRzL21haW4uYy0xMjI1LVxcbnRvb2xzL2JwZi9yZXNvbHZlX2J0Zmlkcy9tYWluLmM6MTIyNjpcXHRcXHRpZiAoIShrZnVuYy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBLRl9JTVBMSUNJVF9BUkdTKSlcXG50b29scy9icGYvcmVzb2x2ZV9idGZpZHMvbWFpbi5jLTEyMjctXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jPTE0MDQ9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9rZnVuY19tdWx0aV9zdF9vcHNfdGVzdF8xKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNTpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX211bHRpX3N0X29wc190ZXN0XzFfYXNzb2MsIEtGX0lNUExJQ0lUX0FSR1MpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYzoxNDA2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfaW1wbGljaXRfYXJnLCBLRl9JTVBMSUNJVF9BUkdTKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTQwNzpCVEZfSURfRkxBR1MoZnVuYywgYnBmX2tmdW5jX2ltcGxpY2l0X2FyZ19sZWdhY3ksIEtGX0lNUExJQ0lUX0FSR1MpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYy0xNDA4LUJURl9JRF9GTEFHUyhmdW5jLCBicGZfa2Z1bmNfaW1wbGljaXRfYXJnX2xlZ2FjeV9pbXBsKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNzowNDowNC45MTk1MDAwOTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Nzg2ODU1MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUGxhbjogQlRGIEtGdW5jIEltcGxpY2l0IEFyZ3VtZW50cyoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzYCBpbiBga2VybmVsL2JwZi9idGYuY2AsIGFuZCBpbXBvcnRhbnRseSwgaXQncyB1c2VkIHdpdGhpbiBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCB3aGljaCBsaXZlcyBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gIFRoYXQgZnVuY3Rpb24gaXMgdGhlbiBjYWxsZWQgYnkgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBhbmQgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoZSBzZWxmdGVzdCwgYGtmdW5jX2ltcGxpY2l0X2FyZ3NfdHJhY2luZy5jYCwgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGFsbCBoYW5ncyB0b2dldGhlci4gSXQgcmVsaWVzIG9uIGBicGZfa2Z1bmNfaW1wbGljaXRfYXJnYCwgd2hpY2ggaXMgZGVmaW5lZCBpbiBgYnBmX3Rlc3Rtb2QuY2AsIGJ1dCB0aGF0J3MganVzdCBhIHRlc3QgaGVscGVyLlxuXG5UaGUgY29yZSBsb2dpYyBJIG5lZWQgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcgaXMgZGVmaW5pdGVseSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgYGtlcm5lbC9icGYvYnRmLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBmdW5jdGlvbnMgdXNpbmcgdGhvc2UgZmxhZ3MuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgLCBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCwgYW5kIGBmaW5kX2tmdW5jX2ltcGxfcHJvdG9gLlxuXG5Gb3IgY29uZmlndXJhdGlvbiwgSSdtIGdvaW5nIHRvIG5lZWQgdG8gZW5hYmxlIGBCUEZfU1lTQ0FMTGAg4oCTIHRoYXQncyBmdW5kYW1lbnRhbC4gYERFQlVHX0lORk9fQlRGYCBpcyBhbHNvIHJlcXVpcmVkLCBvYnZpb3VzbHksIGZvciBCVEYgc3VwcG9ydC4gU2luY2UgdGhpcyBpcyByZWxhdGVkIHRvIHRyYWNpbmcsIEknbGwgbmVlZCBgQlBGX0VWRU5UU2AgdG9vLiAgYEJQRl9KSVRgIG1pZ2h0IGJlIGhlbHBmdWwsIGJ1dCBgQlBGX1NZU0NBTExgIGFsb25lIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGdldCB0aGluZ3Mgd29ya2luZyBmb3Igbm93LlxuXG5JIHF1aWNrbHkgY2hlY2tlZCB0aGUgY29kZSBhbmQgcmVjb25maXJtZWQgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBpcyByZWFjaGVkIHdpdGggYEZUUkFDRWAgYW5kIGBCUEZfRVZFTlRTYC4gVGhlIGBicGZfdGVzdG1vZGAgbW9kdWxlIGlzIGp1c3QgZm9yIHRoZSB0ZXN0cy4gVGhlIHJlYWwgYWN0aW9uIGhhcHBlbnMgaW4gdGhlIGNvcmUgdmVyaWZpZXIgYW5kIEJURiBjb2RlLiBFdmVyeXRoaW5nIHNlZW1zIGd1YXJkZWQgYnkgYENPTkZJR19CUEZfU1lTQ0FMTGAsIGFuZCBgREVCVUdfSU5GT19CVEZgIGlzIG5lZWRlZCBmb3IgQlRGIGluIGdlbmVyYWwuIFNvLCBJIGhhdmUgYSBzb2xpZCBjb25maWd1cmF0aW9uIGJhc2VsaW5lLiBOb3csIHRpbWUgdG8gc3RhcnQgZnV6emluZyBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0ODI1LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE3OjA0OjE0LjcwNjM1NzM5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODA5MDEwODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9jaGVja19hdHRhY2hfdGFyZ2V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmg9MTE2MT1pbnQgYnBmX2NoZWNrX2J0Zl9pbmZvKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZl92ZXJpZmllci5oLTExNjMtXFxuaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaDoxMTY0OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbmluY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgtMTE2NS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi9idGYuYz02ODQ4PWJvb2wgYnRmX2N0eF9hY2Nlc3MoaW50IG9mZiwgaW50IHNpemUsIGVudW0gYnBmX2FjY2Vzc190eXBlIHR5cGUsXFxuLS1cXG5rZXJuZWwvYnBmL2J0Zi5jLTcwMjUtXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbmtlcm5lbC9icGYvYnRmLmM6NzAyNjpcXHRcXHQvKiBDaGVja2VkIGJ5IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0ICovXFxua2VybmVsL2JwZi9idGYuYy03MDI3LVxcdFxcdHRuYW1lICs9IHNpemVvZihcXFwiYnRmX3RyYWNlX1xcXCIpIC0gMTtcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTM2ODk9c3RhdGljIGludCBicGZfdHJhY2luZ19wcm9nX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zODIxLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjM4MjI6XFx0XFx0ZXJyID0gYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoTlVMTCwgcHJvZywgdGd0X3Byb2csIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zODIzLVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZ0Z3RfaW5mbyk7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xMDc2PWludCBicGZfdHJhbXBvbGluZV9saW5rX2Nncm91cF9zaGltKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTEwODYtXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTA4NzpcXHRlcnIgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChOVUxMLCBwcm9nLCBOVUxMLFxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTEwODgtXFx0XFx0XFx0XFx0ICAgICAgcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2VhdHRhY2hfYnRmX2lkLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExODg4PXN0YXRpYyBpbnQgcHJvY2Vzc19rZl9hcmdfcHRyX3RvX3JidHJlZV9ub2RlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4OTktICogTFNNIGhvb2tzIGFuZCBpdGVycyAoYm90aCBzbGVlcGFibGUgYW5kIG5vbi1zbGVlcGFibGUpIGFyZSBzYWZlLlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTkwMDogKiBBbnkgc2xlZXBhYmxlIHByb2dzIGFyZSBhbHNvIHNhZmUgc2luY2UgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoKSBlbmZvcmNlXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExOTAxLSAqIHRoZW0gY2FuIG9ubHkgYmUgYXR0YWNoZWQgdG8gc29tZSBzcGVjaWZpYyBob29rIHBvaW50cy5cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODg4Mj1idGZfYXR0YWNoX2Z1bmNfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgZnVuY19pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODkxMy1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTg5MTQ6aW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTE1LVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTkzMTk9c3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkzNDktXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MzUwOlxcdHJldCA9IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgcHJvZywgdGd0X3Byb2csIGJ0Zl9pZCwgXFx1MDAyNnRndF9pbmZvKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkzNTEtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTc6MDQ6MTcuNTE1MzgxODI1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEzMzAxMzM4ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIEtlcm5lbCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBmcm9tIGEgQlBGIGV4cGVydCdzIHBlcnNwZWN0aXZlLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGNlbnRlciBhcm91bmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBob3cgaXQgaGFuZGxlcyB0aGUgQUJJIG9mIHRyYWNlIHRhcmdldHMgd2hlbiBkZWFsaW5nIHdpdGggYEtGX0lNUExJQ0lUX0FSR1NgIGtmdW5jcy4gSSBjYW4gc2VlIHRoYXQgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBpcyBhIGtleSBmdW5jdGlvbiBoZXJlLCBjYWxsZWQgZnJvbSBgYnBmX3RyYWNpbmdfcHJvZ19hdHRhY2hgLCBgYnBmX3RyYW1wb2xpbmVfbGlua19jZ3JvdXBfc2hpbWAsIGFuZCBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAuIFRoZXNlIGFyZSBhbGwgY3J1Y2lhbCBwb2ludHMgd2l0aGluIHRoZSBCUEYgc3Vic3lzdGVtLCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgdHJhY2luZyBhbmQga2Z1bmMgYXR0YWNobWVudC5cblxuSSBpbW1lZGlhdGVseSBuZWVkIHRvIGVuc3VyZSB0aGUgcHJvcGVyIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkIHRvIHJlcHJvZHVjZSB0aGUgaXNzdWUuIExvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcywgSSdsbCBuZWVkIGBCUEZfU1lTQ0FMTGAgdG8gZW5zdXJlIHRoZSBgYnBmKClgIHN5c2NhbGwgaXMgZW5hYmxlZCwgYERFQlVHX0lORk9fQlRGYCBmb3IgQlRGIGdlbmVyYXRpb24sIGFuZCBgQlBGX0VWRU5UU2AgdG8gc3VwcG9ydCBCUEYgdHJhY2luZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYEJQRl9FVkVOVFNgIGlzIGtleSBiZWNhdXNlIHdlIGFyZSBmb2N1c2VkIG9uIHRyYWNpbmcuXG5cblRoZSBtYWluIGZvY3VzIG9mIHRoZSBwYXRjaCBpcyBvbiB0aHJlZSBzeW1ib2xzOiBgYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzYCwgYGJ0Zl9hdHRhY2hfZnVuY19wcm90b2AsIGFuZCBgZmluZF9rZnVuY19pbXBsX3Byb3RvYC4gVGhlc2UgYXJlIGFsbCBmdW5kYW1lbnRhbCBjb21wb25lbnRzIGluIHRoZSB2ZXJpZmllcidzIGxvZ2ljLCBhbmQgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZW0gdG8gY29ycmVjdGx5IGhhbmRsZSB0aGUgcHJvdG90eXBlIHJlc29sdXRpb24gb2YgYSB0cmFjZSB0YXJnZXQncyBBQkkuIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgLSBlbnN1cmluZyB0aGF0IHRoZSB2ZXJpZmllciBhY2N1cmF0ZWx5IHVuZGVyc3RhbmRzIGFuZCB2YWxpZGF0ZXMgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgd2hlbiBhIHRyYWNpbmcgcHJvZ3JhbSBhdHRhY2hlcyB0byBhIGtmdW5jLiBUaGlzIGlzIGEgdmVyeSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgcGllY2Ugb2YgY29kZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQuIGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgIGlzIGluIGBrZXJuZWwvYnBmL2J0Zi5jYCwgd2hpbGUgYGZpbmRfa2Z1bmNfaW1wbF9wcm90b2AgYW5kIGBidGZfYXR0YWNoX2Z1bmNfcHJvdG9gIGFyZSBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC5cblxuR2l2ZW4gdGhlIGNvcmUgbmF0dXJlIG9mIHRoaXMgbW9kaWZpY2F0aW9uIHRvIHRoZSBCUEYgdmVyaWZpZXIgYW5kIGl0cyBpbXBhY3Qgb24gaG93IHRyYWNpbmcgcHJvZ3JhbXMgaW50ZXJhY3Qgd2l0aCBrZnVuY3MsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLlxuXG5IZXJl4oCZcyB0aGUgc3VtbWFyeTpcbi0gKipGb2N1cyBTeW1ib2xzKio6IGBidGZfa2Z1bmNfYWNjdW11bGF0ZWRfZmxhZ3NgLCBgYnRmX2F0dGFjaF9mdW5jX3Byb3RvYCwgYW5kIGBmaW5kX2tmdW5jX2ltcGxfcHJvdG9gLlxuLSAqKkVuYWJsZSBDb25maWdzKio6IGBCUEZfU1lTQ0FMTGAsIGBERUJVR19JTkZPX0JURmAsIGBCUEZfRVZFTlRTYC5cbi0gKipSZWFzb25pbmcqKjogVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHRoZSBwcm90b3R5cGUgb2YgYSB0cmFjZSB0YXJnZXQncyByZWFsIEFCSSBmb3IgYEtGX0lNUExJQ0lUX0FSR1NgIGtmdW5jcy4gVGhpcyBpbXBhY3RzIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyBmb3IgYXR0YWNoaW5nIHRyYWNpbmcgcHJvZ3JhbXMgdG8ga2Z1bmNzLCBzbyB0aGlzIGlzIGhpZ2hseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NzYzLCJPdXRwdXRUb2tlbnMiOjE0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNzowNDoyOC44NDU1MTk3ODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjA0NDQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzXCIsXG4gICAgXCJidGZfYXR0YWNoX2Z1bmNfcHJvdG9cIixcbiAgICBcImZpbmRfa2Z1bmNfaW1wbF9wcm90b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJIGZvciBgS0ZfSU1QTElDSVRfQVJHU2Aga2Z1bmNzLiBUaGlzIGFmZmVjdHMgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljIGZvciBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcyB0byBrZnVuY3MsIHdoaWNoIGlzIGhpZ2hseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnRmX2tmdW5jX2FjY3VtdWxhdGVkX2ZsYWdzXCIsXG4gICAgXCJidGZfYXR0YWNoX2Z1bmNfcHJvdG9cIixcbiAgICBcImZpbmRfa2Z1bmNfaW1wbF9wcm90b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgdGhlIHByb3RvdHlwZSBvZiBhIHRyYWNlIHRhcmdldCdzIHJlYWwgQUJJIGZvciBgS0ZfSU1QTElDSVRfQVJHU2Aga2Z1bmNzLiBUaGlzIGFmZmVjdHMgdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljIGZvciBhdHRhY2hpbmcgdHJhY2luZyBwcm9ncmFtcyB0byBrZnVuY3MsIHdoaWNoIGlzIGhpZ2hseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowhg4xk[1] Phase: Succeeded StartedAt: 2026-07-11 17:04:40 +0000 UTC FinishedAt: 2026-07-11 17:04:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-11 17:04:40 +0000 UTC FinishedAt: 2026-07-11 17:04:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[2] Phase: Succeeded StartedAt: 2026-07-11 17:04:40 +0000 UTC FinishedAt: 2026-07-11 21:53:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-11 17:04:40 +0000 UTC FinishedAt: 2026-07-11 21:53:46 +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_EVENTS"],"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"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","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-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-11 17:04:40 +0000 UTC FinishedAt: 2026-07-11 17:05:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-11 17:04:40 +0000 UTC FinishedAt: 2026-07-11 17:04:58 +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_EVENTS"],"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-workflowhg4xk/series-workflowhg4xk-convert-artifact-4122056860/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-11 17:05:37 +0000 UTC FinishedAt: 2026-07-11 18:08:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-11 17:05:37 +0000 UTC FinishedAt: 2026-07-11 18:08:01 +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:*873c1f19-90a3-4185-9e10-0536bfc97fb4,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-workflowhg4xk/series-workflowhg4xk-convert-artifact-4122056860/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": "cf68e613-963a-4422-9851-c22d2d47c15b", "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-workflowhg4xk/series-workflowhg4xk-build-action-1952202442/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-11 17:05:37 +0000 UTC FinishedAt: 2026-07-11 18:07:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*873c1f19-90a3-4185-9e10-0536bfc97fb4,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-workflowhg4xk/series-workflowhg4xk-convert-artifact-4122056860/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": "cf68e613-963a-4422-9851-c22d2d47c15b", "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-workflowhg4xk/series-workflowhg4xk-build-action-1952202442/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-11 18:08:01 +0000 UTC FinishedAt: 2026-07-11 18:08:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-11 18:08:01 +0000 UTC FinishedAt: 2026-07-11 18:08:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-11 18:08:01 +0000 UTC FinishedAt: 2026-07-11 18:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-11 18:08:01 +0000 UTC FinishedAt: 2026-07-11 18:08:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","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-workflowhg4xk/series-workflowhg4xk-convert-artifact-329303259/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-11 18:08:11 +0000 UTC FinishedAt: 2026-07-11 18:10:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-11 18:08:11 +0000 UTC FinishedAt: 2026-07-11 18:10:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cf68e613-963a-4422-9851-c22d2d47c15b,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-workflowhg4xk/series-workflowhg4xk-build-action-1952202442/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-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-11 18:10:30 +0000 UTC FinishedAt: 2026-07-11 18:10:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-11 18:10:30 +0000 UTC FinishedAt: 2026-07-11 18:10:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-11 18:10:30 +0000 UTC FinishedAt: 2026-07-11 18:49:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-11 18:10:30 +0000 UTC FinishedAt: 2026-07-11 18:49:34 +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:*873c1f19-90a3-4185-9e10-0536bfc97fb4,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-workflowhg4xk/series-workflowhg4xk-convert-artifact-329303259/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": "e66a078c-f521-4e48-b43f-e7051e1c2a7d", "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-workflowhg4xk/series-workflowhg4xk-build-action-366242687/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-11 18:10:30 +0000 UTC FinishedAt: 2026-07-11 18:49:24 +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:*873c1f19-90a3-4185-9e10-0536bfc97fb4,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-workflowhg4xk/series-workflowhg4xk-convert-artifact-329303259/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": "e66a078c-f521-4e48-b43f-e7051e1c2a7d", "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-workflowhg4xk/series-workflowhg4xk-build-action-366242687/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-11 18:49:34 +0000 UTC FinishedAt: 2026-07-11 18:49:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-11 18:49:34 +0000 UTC FinishedAt: 2026-07-11 18:49:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-11 18:49:34 +0000 UTC FinishedAt: 2026-07-11 18:51:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-11 18:49:34 +0000 UTC FinishedAt: 2026-07-11 18:51:27 +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:*e66a078c-f521-4e48-b43f-e7051e1c2a7d,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-workflowhg4xk/series-workflowhg4xk-build-action-366242687/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-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-11 18:51:37 +0000 UTC FinishedAt: 2026-07-11 21:53:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-11 18:51:37 +0000 UTC FinishedAt: 2026-07-11 21:53:46 +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"],"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:*cf68e613-963a-4422-9851-c22d2d47c15b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e66a078c-f521-4e48-b43f-e7051e1c2a7d,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-workflowhg4xk/series-workflowhg4xk-build-action-1952202442/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-workflowhg4xk/series-workflowhg4xk-build-action-366242687/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-11 18:51:37 +0000 UTC FinishedAt: 2026-07-11 18:52:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-11 18:51:37 +0000 UTC FinishedAt: 2026-07-11 18:51:57 +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"],"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-workflowhg4xk/series-workflowhg4xk-convert-artifact-3954972884/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-11 18:51:37 +0000 UTC FinishedAt: 2026-07-11 18:51:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-11 18:51:37 +0000 UTC FinishedAt: 2026-07-11 18:51:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-11 18:51:37 +0000 UTC FinishedAt: 2026-07-11 18:51:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-11 18:52:05 +0000 UTC FinishedAt: 2026-07-11 21:53:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhg4xk[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_EVENTS"],"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"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbd0c4cebe4c9f678d15e6b9ba975e1155a107f","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"c1c50f13-1c4b-4bb4-9ae7-67a12058101a","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-11 18:52:05 +0000 UTC FinishedAt: 2026-07-11 21:53:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cf68e613-963a-4422-9851-c22d2d47c15b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e66a078c-f521-4e48-b43f-e7051e1c2a7d,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-workflowhg4xk/series-workflowhg4xk-build-action-1952202442/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-workflowhg4xk/series-workflowhg4xk-build-action-366242687/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-workflowhg4xk/series-workflowhg4xk-convert-artifact-3954972884/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,}