Name: series-workflowtgcxh Phase: Succeeded StartedAt: 2026-07-23 17:18:42 +0000 UTC FinishedAt: 2026-07-23 22:09:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[0] Phase: Succeeded StartedAt: 2026-07-23 17:18:42 +0000 UTC FinishedAt: 2026-07-23 17:36:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 17:18:42 +0000 UTC FinishedAt: 2026-07-23 17:36:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "87267b89459813cb50ab5377e076b639c07b4491", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT", "BPF_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "87267b89459813cb50ab5377e076b639c07b4491", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT", "BPF_EVENTS" ], "series_id": "6f6719cf-37be-434e-ab31-313e6d6b648d" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "check_attach_btf_id", "bpf_trampoline_set_flags" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIzIDE3OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NoZWNrX2F0dGFjaF9idGZfaWQmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgdHJhbXBvbGluZSBmbGFncyB3ZXJlIG92ZXJ3cml0dGVuIGluc3RlYWQgb2YgYmVpbmcgT1ItZWQsIGFuZCB3aXRob3V0IGEgbG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgYWZmZWN0cyB0YWlsIGNhbGxzIGFuZCB0cmFtcG9saW5lcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE3M2QzNjlkODA1NTMwMmJjZGExY2NiMDRiZjZhMTQzODQ3ZjBiNWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAxNzozNTowOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS9saW51eC9icGYuaFxuaW5kZXggZTA2NmY0NGE5YzA1ODAuLjdiZmMyODY3MzEyNDQ5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9icGYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9icGYuaFxuQEAgLTE1MjMsNiAmIzQzOzE1MjMsNyBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXG4gXHRcdFx0XHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluayk7XG4gaW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4gXHRcdFx0XHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluayk7XG4mIzQzO3ZvaWQgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBmbGFncyk7XG4gXG4gLypcbiAgKiBXaGVuIHRoZSBhcmNoaXRlY3R1cmUgc3VwcG9ydHMgU1RBVElDX0NBTEwgcmVwbGFjZSB0aGUgYnBmX2Rpc3BhdGNoZXJfZm5cbkBAIC0xNjQ2LDYgJiM0MzsxNjQ3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbiB7XG4gXHRyZXR1cm4gLUVOT1RTVVBQO1xuIH1cbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGJwZl90cmFtcG9saW5lX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgZmxhZ3MpIHt9XG4gI2VuZGlmXG4gXG4gc3RydWN0IGJwZl9mdW5jX2luZm9fYXV4IHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXG5pbmRleCA2ZWFkZjY0ZjdlYzkwZi4uMTI5ZDA3ZGIxMTdlYzcgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbkBAIC02NzAsNiAmIzQzOzY3MCwxMyBAQCBzdGF0aWMgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqYnBmX3RyYW1wX2ltYWdlX2FsbG9jKHU2NCBrZXksIGludCBzaXplKVxuIFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiB9XG4gXG4mIzQzO3ZvaWQgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBmbGFncylcbiYjNDM7e1xuJiM0MztcdHRyYW1wb2xpbmVfbG9jayh0cik7XG4mIzQzO1x0dHItXHUwMDNlZmxhZ3MgfD0gZmxhZ3M7XG4mIzQzO1x0dHJhbXBvbGluZV91bmxvY2sodHIpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIGJvb2wgbG9ja19kaXJlY3RfbXV0ZXgsXG4gXHRcdFx0XHQgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLCB2b2lkICpkYXRhKVxuIHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDUyYmUwYTExOGNjZTA3Li42NmQ4ZDllYWVjMDVmOSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTk1MjMsNyAmIzQzOzE5NTIzLDcgQEAgc3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0aWYgKHRndF9wcm9nIFx1MDAyNlx1MDAyNiB0Z3RfcHJvZy1cdTAwM2VhdXgtXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSlcbi1cdFx0dHItXHUwMDNlZmxhZ3MgPSBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYO1xuJiM0MztcdFx0YnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHRyLCBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKTtcbiBcbiBcdHByb2ctXHUwMDNlYXV4LVx1MDAzZWRzdF90cmFtcG9saW5lID0gdHI7XG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jXG5pbmRleCBjNjYwMzcxNjJkYTVhZS4uYzVjOWQ2YzM1OWJiMDkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcbkBAIC0xMyw2ICYjNDM7MTMsOCBAQFxuICNpbmNsdWRlIFwmIzM0O3RhaWxjYWxsX2NncnBfc3RvcmFnZS5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0YWlsY2FsbF9zbGVlcGFibGUuc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dGFpbGNhbGxfY2FsbGJhY2suc2tlbC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3RhaWxjYWxsX2JwZjJicGYyLnNrZWwuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDt0YWlsY2FsbF9icGYyYnBmX2ZleGl0LnNrZWwuaFwmIzM0O1xuIFxuIC8qIHRlc3RfdGFpbGNhbGxfMSBjaGVja3MgYmFzaWMgZnVuY3Rpb25hbGl0eSBieSBwYXRjaGluZyBtdWx0aXBsZSBsb2NhdGlvbnNcbiAgKiBpbiBhIHNpbmdsZSBwcm9ncmFtIGZvciBhIHNpbmdsZSB0YWlsIGNhbGwgc2xvdCB3aXRoIG5vcC1cdTAwM2VqbXAsIGptcC1cdTAwM2Vub3BcbkBAIC0xOTA3LDYgJiM0MzsxOTA5LDUwIEBAIHN0YXRpYyB2b2lkIHRlc3RfdGFpbGNhbGxfY2FsbGJhY2sodm9pZClcbiBcdFJVTl9URVNUUyh0YWlsY2FsbF9jYWxsYmFjayk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3Modm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB0YWlsY2FsbF9icGYyYnBmX2ZleGl0ICpza2VsMSA9IE5VTEwsICpza2VsMiA9IE5VTEw7XG4mIzQzO1x0c3RydWN0IHRhaWxjYWxsX2JwZjJicGYyICpza2VsX3RjO1xuJiM0MztcdGludCBlcnIsIHByb2dfZmQ7XG4mIzQzO1xuJiM0MztcdHNrZWxfdGMgPSB0YWlsY2FsbF9icGYyYnBmMl9fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsX3RjLCBcJiMzNDt0YWlsY2FsbF9icGYyYnBmMl9fb3Blbl9hbmRfbG9hZFwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdHNrZWwxID0gdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlbigpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsMSwgXCYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlblwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0cHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsX3RjLVx1MDAzZXByb2dzLmNsYXNzaWZpZXJfMCk7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwxLVx1MDAzZXByb2dzLmZleGl0LCBwcm9nX2ZkLCBcJiMzNDtzdWJwcm9nX3RhaWxcJiMzNDspO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0XCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRlcnIgPSB0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19sb2FkKHNrZWwxKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdHNrZWwxLVx1MDAzZWxpbmtzLmZleGl0ID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZShza2VsMS1cdTAwM2Vwcm9ncy5mZXhpdCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwxLVx1MDAzZWxpbmtzLmZleGl0LCBcJiMzNDticGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRza2VsMiA9IHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW4oKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbDIsIFwmIzM0O3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW5cJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldChza2VsMi1cdTAwM2Vwcm9ncy5mZXhpdCwgcHJvZ19mZCwgXCYjMzQ7c3VicHJvZ190YWlsXCYjMzQ7KTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O2JwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldFwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZChza2VsMik7XG4mIzQzO1x0QVNTRVJUX09LKGVyciwgXCYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZFwmIzM0Oyk7XG4mIzQzO1xuJiM0MztvdXQ6XG4mIzQzO1x0dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fZGVzdHJveShza2VsMSk7XG4mIzQzO1x0dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fZGVzdHJveShza2VsMik7XG4mIzQzO1x0dGFpbGNhbGxfYnBmMmJwZjJfX2Rlc3Ryb3koc2tlbF90Yyk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCB0ZXN0X3RhaWxjYWxscyh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RhaWxjYWxsXzFcJiMzNDspKVxuQEAgLTE5NzQsNCAmIzQzOzIwMjAsNiBAQCB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpXG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2VcJiMzNDspKVxuIFx0XHR0ZXN0X3RhaWxjYWxsX2NncnBfc3RvcmFnZV9ub19zdG9yYWdlX2JyaWRnZSgpO1xuIFx0dGVzdF90YWlsY2FsbF9jYWxsYmFjaygpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3NcJiMzNDspKVxuJiM0MztcdFx0dGVzdF90YWlsY2FsbF9icGYyYnBmX2ZleGl0X2xpbmtzKCk7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE3OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaGVja19hdHRhY2hfYnRmX2lkJiMzNDssCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX3NldF9mbGFncyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIHRyYW1wb2xpbmUgZmxhZ3Mgd2VyZSBvdmVyd3JpdHRlbiBpbnN0ZWFkIG9mIGJlaW5nIE9SLWVkLCBhbmQgd2l0aG91dCBhIGxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGFmZmVjdHMgdGFpbCBjYWxscyBhbmQgdHJhbXBvbGluZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE3M2QzNjlkODA1NTMwMmJjZGExY2NiMDRiZjZhMTQzODQ3ZjBiNWIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyMyAxNzozNTowOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmLmggYi9pbmNsdWRlL2xpbnV4L2JwZi5oCmluZGV4IGUwNjZmNDRhOWMwNTgwLi43YmZjMjg2NzMxMjQ0OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9icGYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2JwZi5oCkBAIC0xNTIzLDYgJiM0MzsxNTIzLDcgQEAgaW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLAogCQkJCXN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTsKIGludCBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLAogCQkJCXN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTsKJiM0Mzt2b2lkIGJwZl90cmFtcG9saW5lX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgZmxhZ3MpOwogCiAvKgogICogV2hlbiB0aGUgYXJjaGl0ZWN0dXJlIHN1cHBvcnRzIFNUQVRJQ19DQUxMIHJlcGxhY2UgdGhlIGJwZl9kaXNwYXRjaGVyX2ZuCkBAIC0xNjQ2LDYgJiM0MzsxNjQ3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywKIHsKIAlyZXR1cm4gLUVOT1RTVVBQOwogfQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3Moc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIGZsYWdzKSB7fQogI2VuZGlmCiAKIHN0cnVjdCBicGZfZnVuY19pbmZvX2F1eCB7CmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jCmluZGV4IDZlYWRmNjRmN2VjOTBmLi4xMjlkMDdkYjExN2VjNyAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi90cmFtcG9saW5lLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi90cmFtcG9saW5lLmMKQEAgLTY3MCw2ICYjNDM7NjcwLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICpicGZfdHJhbXBfaW1hZ2VfYWxsb2ModTY0IGtleSwgaW50IHNpemUpCiAJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIH0KIAomIzQzO3ZvaWQgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBmbGFncykKJiM0Mzt7CiYjNDM7CXRyYW1wb2xpbmVfbG9jayh0cik7CiYjNDM7CXRyLSZndDtmbGFncyB8PSBmbGFnczsKJiM0MzsJdHJhbXBvbGluZV91bmxvY2sodHIpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIGJvb2wgbG9ja19kaXJlY3RfbXV0ZXgsCiAJCQkJIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgKm9wcywgdm9pZCAqZGF0YSkKIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCA1MmJlMGExMThjY2UwNy4uNjZkOGQ5ZWFlYzA1ZjkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTE5NTIzLDcgJiM0MzsxOTUyMyw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KQogCQlyZXR1cm4gLUVOT01FTTsKIAogCWlmICh0Z3RfcHJvZyAmYW1wOyZhbXA7IHRndF9wcm9nLSZndDthdXgtJmd0O3RhaWxfY2FsbF9yZWFjaGFibGUpCi0JCXRyLSZndDtmbGFncyA9IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFg7CiYjNDM7CQlicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3ModHIsIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpOwogCiAJcHJvZy0mZ3Q7YXV4LSZndDtkc3RfdHJhbXBvbGluZSA9IHRyOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuYwppbmRleCBjNjYwMzcxNjJkYTVhZS4uYzVjOWQ2YzM1OWJiMDkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jCkBAIC0xMyw2ICYjNDM7MTMsOCBAQAogI2luY2x1ZGUgJiMzNDt0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Uuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dGFpbGNhbGxfc2xlZXBhYmxlLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3RhaWxjYWxsX2NhbGxiYWNrLnNrZWwuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDt0YWlsY2FsbF9icGYyYnBmMi5za2VsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9mZXhpdC5za2VsLmgmIzM0OwogCiAvKiB0ZXN0X3RhaWxjYWxsXzEgY2hlY2tzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYnkgcGF0Y2hpbmcgbXVsdGlwbGUgbG9jYXRpb25zCiAgKiBpbiBhIHNpbmdsZSBwcm9ncmFtIGZvciBhIHNpbmdsZSB0YWlsIGNhbGwgc2xvdCB3aXRoIG5vcC0mZ3Q7am1wLCBqbXAtJmd0O25vcApAQCAtMTkwNyw2ICYjNDM7MTkwOSw1MCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3RhaWxjYWxsX2NhbGxiYWNrKHZvaWQpCiAJUlVOX1RFU1RTKHRhaWxjYWxsX2NhbGxiYWNrKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHRlc3RfdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9saW5rcyh2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IHRhaWxjYWxsX2JwZjJicGZfZmV4aXQgKnNrZWwxID0gTlVMTCwgKnNrZWwyID0gTlVMTDsKJiM0MzsJc3RydWN0IHRhaWxjYWxsX2JwZjJicGYyICpza2VsX3RjOwomIzQzOwlpbnQgZXJyLCBwcm9nX2ZkOwomIzQzOwomIzQzOwlza2VsX3RjID0gdGFpbGNhbGxfYnBmMmJwZjJfX29wZW5fYW5kX2xvYWQoKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfdGMsICYjMzQ7dGFpbGNhbGxfYnBmMmJwZjJfX29wZW5fYW5kX2xvYWQmIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXNrZWwxID0gdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlbigpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoc2tlbDEsICYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlbiYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlwcm9nX2ZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWxfdGMtJmd0O3Byb2dzLmNsYXNzaWZpZXJfMCk7CiYjNDM7CWVyciA9IGJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldChza2VsMS0mZ3Q7cHJvZ3MuZmV4aXQsIHByb2dfZmQsICYjMzQ7c3VicHJvZ190YWlsJiMzNDspOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7YnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0JiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CWVyciA9IHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX2xvYWQoc2tlbDEpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZCYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsMS0mZ3Q7bGlua3MuZmV4aXQgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlKHNrZWwxLSZndDtwcm9ncy5mZXhpdCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsMS0mZ3Q7bGlua3MuZmV4aXQsICYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsMiA9IHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW4oKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwyLCAmIzM0O3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW4mIzM0OykpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwyLSZndDtwcm9ncy5mZXhpdCwgcHJvZ19mZCwgJiMzNDtzdWJwcm9nX3RhaWwmIzM0Oyk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXQmIzM0OykpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKJiM0MzsJZXJyID0gdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZChza2VsMik7CiYjNDM7CUFTU0VSVF9PSyhlcnIsICYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZCYjMzQ7KTsKJiM0MzsKJiM0MztvdXQ6CiYjNDM7CXRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX2Rlc3Ryb3koc2tlbDEpOwomIzQzOwl0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19kZXN0cm95KHNrZWwyKTsKJiM0MzsJdGFpbGNhbGxfYnBmMmJwZjJfX2Rlc3Ryb3koc2tlbF90Yyk7CiYjNDM7fQomIzQzOwogdm9pZCB0ZXN0X3RhaWxjYWxscyh2b2lkKQogewogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7dGFpbGNhbGxfMSYjMzQ7KSkKQEAgLTE5NzQsNCAmIzQzOzIwMjAsNiBAQCB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpCiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2UmIzM0OykpCiAJCXRlc3RfdGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfYnJpZGdlKCk7CiAJdGVzdF90YWlsY2FsbF9jYWxsYmFjaygpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3MmIzM0OykpCiYjNDM7CQl0ZXN0X3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3MoKTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYzMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBUcmFtcG9saW5lIEZsYWcgVXBkYXRlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBpbnRyb2R1Y2VzIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgLCB3aGljaCBpcyB1c2VkIHdpdGhpbiBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIEltbWVkaWF0ZWx5LCBJIHNlZSBhIHNpZ25pZmljYW50IGNoYW5nZSBoZXJlLiBUaGUgcHJldmlvdXMgY29kZSBkaXJlY3RseSBhc3NpZ25lZCBgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWGAgdG8gYHRyLSZndDtmbGFnc2AuIE5vdywgaXQgY2FsbHMgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AsIHdoaWNoIGlzIGRlZmluZWQgd2l0aCBhIGxvY2sgYW5kIHVzZXMgYSBiaXR3aXNlIE9SIGFzc2lnbm1lbnQgKGB8PWApLgoKSG1tLCB0aGUgaW50cm9kdWN0aW9uIG9mIGEgc3BpbmxvY2sgdXNpbmcgYHRyYW1wb2xpbmVfbG9ja2AgYW5kIGB0cmFtcG9saW5lX3VubG9ja2AgdG8gcHJvdGVjdCBtb2RpZmljYXRpb25zIHRvIGB0ci0mZ3Q7ZmxhZ3NgIGlzIGEgY2xlYXIgaW5kaWNhdGlvbiB0aGF0IGEgcmFjZSBjb25kaXRpb24gd2FzIGlkZW50aWZpZWQsIG9yIGF0IGxlYXN0IGEgcG90ZW50aWFsIG9uZSB0aGF0IG5lZWRlZCBtaXRpZ2F0aW9uLiBUaGUgZmFjdCB0aGF0IHRoZXkmIzM5O3ZlIHJlcGxhY2VkIGEgc2ltcGxlIGFzc2lnbm1lbnQgKGA9YCkgd2l0aCBhIGJpdHdpc2UgT1IgKGB8PWApIGlzIGFsc28gZnVuY3Rpb25hbGx5IGRpZmZlcmVudC4gUHJldmlvdXNseSwgYW55IGF0dGVtcHQgdG8gYXR0YWNoIGEgZnVuY3Rpb24gd2l0aCBkaWZmZXJlbnQgZmxhZ3Mgd291bGQgYmUgb3ZlcndyaXR0ZW4uIFRoaXMgbmV3IGFwcHJvYWNoIHByZXNlcnZlcyBleGlzdGluZyBmbGFncyBhbmQgYWRkcyB0byB0aGUgc2V0LgoKU28sIHRoaXMgY2xlYXJseSBpbmRpY2F0ZXMgYSBidWcgZml4IHJlbGF0ZWQgdG8gZmxhZyBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgQlBGIHRyYW1wb2xpbmUgbWVjaGFuaXNtLiBOb3csIEkgbmVlZCB0byBjaGVjayBob3cgYGNoZWNrX2F0dGFjaF9idGZfaWRgIHVzZXMgdGhpcywgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgbmF0dXJlIG9mIHRoZSByYWNlIG9yIG92ZXJ3cml0ZSBiZWluZyBmaXhlZC4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhhdCBzcGVjaWZpYyBmdW5jdGlvbiBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgc2VlIHdoZXJlIHRoaXMgZml0cyBpbiB0aGUgYXR0YWNobWVudCBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE3OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX2F0dGFjaF9idGZfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE5NDA1PXN0YXRpYyBib29sIGNhbl9iZV9zbGVlcGFibGUoc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzMS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTQzMjpzdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzMy17XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTMxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NTMyOmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzMy1cdFx0XHRcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yMDA1Nz1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAyMDItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjAyMDM6XHRyZXQgPSBjaGVja19hdHRhY2hfYnRmX2lkKGVudik7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAyMDQtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE3OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MDgKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgQlBGIFZlcmlmaWVyOiBBIEZvY3VzZWQgQXBwcm9hY2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGNoZWNrX2F0dGFjaF9idGZfaWRgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgY2FsbGVkIGR1cmluZyBgYnBmX2NoZWNrYCAtIHRoYXQmIzM5O3MgYSBrZXkgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyLiBJIGtub3cgZm9yIGEgZmFjdCBpdCYjMzk7cyByZWFjaGFibGUgYW5kIGFjdHVhbGx5IHVzZWQsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIGl0IGEgc3Ryb25nIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gRGVmaW5pdGVseSB3b3J0aCBpdCBzaW5jZSBpdCYjMzk7cyBhIGNvcmUgQlBGIHZlcmlmaWVyIGNoYW5nZS4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gYGNoZWNrX2F0dGFjaF9idGZfaWRgIGlzIHRoZSBwcmltYXJ5IG9uZSwgYnV0IEkgYWxzbyBzZWUgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AgYmVpbmcgY2FsbGVkLiBIbW0sIGJ1dCB0aGF0IGZ1bmN0aW9uIGlzIHRpbnksIGEgc2ltcGxlIGhlbHBlciAtIHByb2JhYmx5IG5vdCB0aGUgYmVzdCB0YXJnZXQgZm9yIGZ1enppbmcuIFNvLCBmb2N1c2luZyBvbiBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAgZm9yIG5vdywgb3IgcGVyaGFwcyBpdHMgbXVsdGktdmFyaWFudCBjb3VudGVycGFydC4gTm93LCBiZWZvcmUgSSBkaXZlIGludG8gdGhlIGZ1enppbmcgaXRzZWxmLCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gQlBGIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hpY2ggaXMgZ29vZCwgYnV0IEkgc2hvdWxkIGRlZmluaXRlbHkgaW5jbHVkZSBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0pJVGAgdG8gY292ZXIgdGhlIGZ1bGwgc3BlY3RydW0gb2YgcG9zc2libGUgc2NlbmFyaW9zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE3OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnPTE3PWlmIFJDX0NPUkVcbmRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZzoxOTpjb25maWcgQlBGX0xJUkNfTU9ERTJcbmRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZy0yMC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgZUJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byBsaXJjIGRldmljZXNcJiMzNDtcbi0tXG5rZXJuZWwvS2NvbmZpZy5sb2Nrcz0yNDI9Y29uZmlnIFFVRVVFRF9TUElOTE9DS1Ncbi0tXG5rZXJuZWwvS2NvbmZpZy5sb2Nrcy0yNDUtXG5rZXJuZWwvS2NvbmZpZy5sb2NrczoyNDY6Y29uZmlnIEJQRl9BUkNIX1NQSU5MT0NLXG5rZXJuZWwvS2NvbmZpZy5sb2Nrcy0yNDctXHRib29sXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTMtIyBCUEYgaW50ZXJwcmV0ZXIgdGhhdCwgZm9yIGV4YW1wbGUsIGNsYXNzaWMgc29ja2V0IGZpbHRlcnMgZGVwZW5kIG9uLlxua2VybmVsL2JwZi9LY29uZmlnOjQ6Y29uZmlnIEJQRlxua2VybmVsL2JwZi9LY29uZmlnLTUtXHRib29sXG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cdGJvb2wgXCYjMzQ7RW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNTctXG5rZXJuZWwvYnBmL0tjb25maWc6NTg6Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL0tjb25maWctNTktXHRib29sIFwmIzM0O1Blcm1hbmVudGx5IGVuYWJsZSBCUEYgSklUIGFuZCByZW1vdmUgQlBGIGludGVycHJldGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTY4LVxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNzItXG5rZXJuZWwvYnBmL0tjb25maWc6NzM6Y29uZmlnIEJQRl9VTlBSSVZfREVGQVVMVF9PRkZcbmtlcm5lbC9icGYvS2NvbmZpZy03NC1cdGJvb2wgXCYjMzQ7RGlzYWJsZSB1bnByaXZpbGVnZWQgQlBGIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9OTA9c291cmNlIFwmIzM0O2tlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnXCYjMzQ7XG5rZXJuZWwvYnBmL0tjb25maWctOTEtXG5rZXJuZWwvYnBmL0tjb25maWc6OTI6Y29uZmlnIEJQRl9MU01cbmtlcm5lbC9icGYvS2NvbmZpZy05My1cdGJvb2wgXCYjMzQ7RW5hYmxlIEJQRiBMU00gSW5zdHJ1bWVudGF0aW9uXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnOjI6bWVudWNvbmZpZyBCUEZfUFJFTE9BRFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWctMy1cdGJvb2wgXCYjMzQ7UHJlbG9hZCBCUEYgZmlsZSBzeXN0ZW0gd2l0aCBrZXJuZWwgc3BlY2lmaWMgcHJvZ3JhbSBhbmQgbWFwIGl0ZXJhdG9yc1wmIzM0O1xuLS1cbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnPTE0PWlmIEJQRl9QUkVMT0FEXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZzoxNTpjb25maWcgQlBGX1BSRUxPQURfVU1EXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O2JwZl9wcmVsb2FkIGtlcm5lbCBtb2R1bGVcJiMzNDtcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz04Mzk9Y29uZmlnIEVQUk9CRV9FVkVOVFNcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTItXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4NTM6Y29uZmlnIEJQRl9FVkVOVFNcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz04NjU9Y29uZmlnIFBST0JFX0VWRU5UU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTg2Ny1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjg2ODpjb25maWcgQlBGX0tQUk9CRV9PVkVSUklERVxua2VybmVsL3RyYWNlL0tjb25maWctODY5LVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIHByb2dyYW1zIHRvIG92ZXJyaWRlIGEga3Byb2JlZCBmdW5jdGlvblwmIzM0O1xuLS1cbm5ldC9LY29uZmlnPTM1ND1jb25maWcgQlFMXG4tLVxubmV0L0tjb25maWctMzYwLVxubmV0L0tjb25maWc6MzYxOmNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxubmV0L0tjb25maWctMzYyLVx0Ym9vbCBcJiMzNDtlbmFibGUgQlBGIFNUUkVBTV9QQVJTRVJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDMzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgQlBGIFRyYW1wb2xpbmUgSW1wbGVtZW50YXRpb24qKgoKQWxyaWdodCwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgIGFuZCBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiAgR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgQlBGIHN1YnN5c3RlbSwgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBhbHRlcmluZyBib3RoIHRyYW1wb2xpbmUgY29kZSBhbmQgdGhlIHZlcmlmaWVyIHN0cm9uZ2x5IHN1Z2dlc3RzIHNvbWUga2luZCBvZiBpbnN0cnVtZW50YXRpb24sIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgb3IsIHBvdGVudGlhbGx5LCBhIHNlY3VyaXR5LXJlbGF0ZWQgY2hhbmdlLiAgVGhlIHZlcmlmaWVyIGlzIHRoZSBoZWFydCBvZiBCUEYgc2VjdXJpdHksIHNvIGFueSBhbHRlcmF0aW9uIHRoZXJlIHdhcnJhbnRzICpjYXJlZnVsKiBzY3J1dGlueS4gSXQgY291bGQgYmUgZml4aW5nIGEgYnVnLCBleHBhbmRpbmcgZnVuY3Rpb25hbGl0eSwgb3IgZXZlbiBoYXJkZW5pbmcgYWdhaW5zdCBhIG5ldyBhdHRhY2sgdmVjdG9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlIHRyYW1wb2xpbmUgYW5kIHRoZSB2ZXJpZmllciBpbiB0aGlzIGNvbnRleHQuCgpNeSBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIHdpbGwgYmUgdG8gZGV0ZXJtaW5lIHdoYXQga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFjdHVhbGx5IGVuYWJsZSB0aGlzIHRyYW1wb2xpbmUgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBhcHBsaWNhYmlsaXR5IG9mIHRoZXNlIGNoYW5nZXMuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgZmVhdHVyZSB0aGF0JiMzOTtzIHVuaXZlcnNhbGx5IGF2YWlsYWJsZSwgb3IgaXMgaXQgc3BlY2lmaWMgdG8gY2VydGFpbiBhcmNoaXRlY3R1cmVzLCBrZXJuZWwgdmVyc2lvbnMsIG9yIHVzZSBjYXNlcz8gVGhpcyBjb250ZXh0IGlzIGNydWNpYWwgdG8gZ3Jhc3BpbmcgdGhlIHRydWUgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIEtub3dpbmcgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zIHdpbGwgZGljdGF0ZSBteSBpbnZlc3RpZ2F0aW9uIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJhbXBvbGluZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGRpc2FzbS5vIG1wcm9nLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSB0cmFtcG9saW5lLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDcxCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBwcmVzZW50ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6CgoqKlVuZGVyc3RhbmRpbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2Uga2VybmVsIGJ1aWxkIGRlcGVuZGVuY2llcywgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBjcnVjaWFsLiBJIHNlZSB0aGF0IHRoZSBvYmplY3QgZmlsZSBgdHJhbXBvbGluZS5vYCBleHBsaWNpdGx5ICpuZWVkcyogYENPTkZJR19CUEZfSklUYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyB0aGUgSnVzdC1Jbi1UaW1lIGNvbXBpbGVyIGlzIGZ1bmRhbWVudGFsIHRvIGhvdyBCUEYgdHJhbXBvbGluZXMgZnVuY3Rpb24gYW5kIGV4ZWN1dGUgZWZmaWNpZW50bHkuIE5vIEpJVCwgbm8gdHJhbXBvbGluZSDigJMgaXQmIzM5O3MgYSBkaXJlY3QgcmVxdWlyZW1lbnQgZm9yIHRoYXQgb3B0aW1pemVkIGV4ZWN1dGlvbiBwYXRoLgoKVGhlbiwgdGhlcmUmIzM5O3MgYHZlcmlmaWVyLm9gLiBJdCYjMzk7cyBkZXBlbmRlbnQgb24gYENPTkZJR19CUEZfU1lTQ0FMTGAuIEFnYWluLCBsb2dpY2FsLiBUaGUgdmVyaWZpZXIgaGFzIHRvIGludGVyZmFjZSB3aXRoIHRoZSBzeXN0ZW0gY2FsbCBsYXllciwgdmFsaWRhdGluZyB0aGUgQlBGIGJ5dGVjb2RlIHRvIGVuc3VyZSBpdCYjMzk7cyBzYWZlIHRvIHJ1biBpbiB0aGUga2VybmVsLiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGF0IGNydWNpYWwgYnJpZGdlLCBhbGxvd2luZyB0aGUgdmVyaWZpZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgc3lzdGVtIGNhbGxzIGFuZCBlbmZvcmNlIHNlY3VyaXR5LiBXaXRob3V0IGl0LCB0aGUgd2hvbGUgdmVyaWZpY2F0aW9uIHByb2Nlc3MgZmFsbHMgYXBhcnQuIEl0IGlzIGEgY3JpdGljYWwgZGVwZW5kZW5jeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmVyaWZpZXIubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTI0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFRoaXMgQlBGIFBhdGNoKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaW52b2x2ZXMgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9KSVRgLCB3aGljaCBpbW1lZGlhdGVseSBzaWduYWxzIGl0cyBpbXBvcnRhbmNlLiBMZXQmIzM5O3MgZGlnIGluLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIHNuaXBwZXQgYWdhaW46CgpgYGBjCiAJaWYgKHRndF9wcm9nICZhbXA7JmFtcDsgdGd0X3Byb2ctJmd0O2F1eC0mZ3Q7dGFpbF9jYWxsX3JlYWNoYWJsZSkKLQkJdHItJmd0O2ZsYWdzID0gQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWDsKJiM0MzsJCWJwZl90cmFtcG9saW5lX3NldF9mbGFncyh0ciwgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCk7CmBgYAoKUmlnaHQsIGl0JiMzOTtzIGZpeGluZyBhIHN1YnRsZSBidXQgY3JpdGljYWwgYnVnLiBFc3NlbnRpYWxseSwgdGhlIGNvZGUgd2FzIG92ZXJ3cml0aW5nIGB0ci0mZ3Q7ZmxhZ3NgIGluc3RlYWQgb2YgdXNpbmcgYSBiaXR3aXNlIE9SLCBhbmQgY3JpdGljYWxseSwgdGhlcmUgd2FzIG5vIGxvY2tpbmcgaW4gcGxhY2UsIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBzY2VuYXJpby4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY29ycmVjdG5lc3MgZml4LCBub3RoaW5nIHN1cGVyZmljaWFsLgoKVGhlIHByaW1hcnkgc3ltYm9scyBvZiBpbnRlcmVzdCBhcmUgZ29pbmcgdG8gYmUgYGNoZWNrX2F0dGFjaF9idGZfaWRgIGFuZCBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYC4gV2FpdCBhIG1pbnV0ZSwgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AgaXMgdGlueSEgSXQmIzM5O3MgbGlrZWx5IGEgdmVyeSBzaW1wbGUgaGVscGVyIGZ1bmN0aW9uLiBIbW1tLCBwZXJoYXBzIGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIG1vcmUgcmVsZXZhbnQ/IEkgc2hvdWxkIGRvdWJsZSBjaGVjayB3aGVyZSBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYCBpcyBjYWxsZWQuIEFoLCBpdCYjMzk7cyBjYWxsZWQgaW5zaWRlIGBjaGVja19hdHRhY2hfYnRmX2lkYCwgdGhhdCYjMzk7cyB0aGUga2V5IGNhbGwgc2l0ZS4gSSB0aGluayBJIHdpbGwgZm9jdXMgb24gYGNoZWNrX2F0dGFjaF9idGZfaWRgLCBJJiMzOTtsbCBpbmNsdWRlIHRoYXQgaW4gbXkgc2NvcGUuCgpOb3csIGxldCBtZSBnbyB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBleGFtaW5lIGBjaGVja19hdHRhY2hfYnRmX2lkYCBpbiBtb3JlIGRldGFpbC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBsb2dpYyBpcyBsaWtlbHkgdG8gcmVzaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19hdHRhY2hfYnRmX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTQwNT1zdGF0aWMgYm9vbCBjYW5fYmVfc2xlZXBhYmxlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MzEtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk0MzI6c3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MzMte1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzMS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTUzMjppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1MzMtXHRcdFx0XHQgIHN0cnVjdCBicGZfYXR0YWNoX3RhcmdldF9pbmZvICp0Z3RfaW5mbylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAwNTc9aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjAyLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMjAzOlx0cmV0ID0gY2hlY2tfYXR0YWNoX2J0Zl9pZChlbnYpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjA0LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk2MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDoKCioqQW5hbHl6aW5nIEJQRiBGdW5jdGlvbmFsaXR5IGZvciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21lIGNvZGUgcmVsYXRlZCB0byBCUEYsIHNwZWNpZmljYWxseSBhcm91bmQgZnVuY3Rpb24gY2FsbHMgYW5kIGxpbmtpbmcuIGBjaGVja19hdHRhY2hfYnRmX2lkYCBhbmQgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2Agc2VlbSB0byBiZSB0aGUga2V5IGFyZWFzIEkgbmVlZCB0byBmb2N1cyBvbi4gSSYjMzk7bSBzZWVpbmcgdGhhdCB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0pJVGAuCgpJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgdGhlcmUgYXJlIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmbG9hdGluZyBhcm91bmQuIFRoZSB0ZXN0IGFkZGVkLCBgdGVzdF90YWlsY2FsbF9icGYyYnBmX2ZleGl0X2xpbmtzYCwgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBsZXZlcmFnZXMgYm90aCBgZmV4aXRgIGFuZCBgdGFpbGNhbGxgLCB3aGljaCBpcyBhIGNvbXBsZXggY29tYmluYXRpb24sIGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lcyB0byBjb250ZXh0IHN3aXRjaGVzLiBJIHJlbWVtYmVyIHRoYXQgdGhlIGBmZXhpdGAgZmVhdHVyZSBoYXMgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiBEb2VzIGBmZXhpdGAgcmVxdWlyZSBgQlBGX0VWRU5UU2Agb3IgYEJQRl9KSVRgPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0IGRlcGVuZGVuY3kuIFRpbWUgdG8gZGl2ZSBpbnRvIGBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYYCBhbmQgc2VlIHdoYXQgaXQgdGVsbHMgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE3OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0xODM3PXN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGppdF9jdHggKmN0eCwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xOTQyLVx0LyogUm9vbSBvZiB0cmFtcG9saW5lIGZyYW1lIHRvIHN0b3JlIHRhaWxfY2FsbF9jbnRfcHRyICovXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE5NDM6XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpIHtcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTk0NC1cdFx0c3RhY2tfc2l6ZSAmIzQzOz0gODtcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5ODMtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE5ODQ6XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5ODUtXHRcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9GUCwgLXRjY19wdHJfb2ZmKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIwNTEtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIwNTI6XHRcdGlmIChmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjA1My1cdFx0XHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfRlAsIC10Y2NfcHRyX29mZik7XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMTA0LVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMTA1Olx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMTA2LVx0XHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfRlAsIC10Y2NfcHRyX29mZik7XG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz04MTI9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcndfaW1hZ2UsXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy05NTAtXHRpZiAoKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9DQUxMX09SSUcpIFx1MDAyNlx1MDAyNlxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzo5NTE6XHRcdChmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCkpXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTk1Mi1cdFx0YnBmX2ZyYW1lX3NpemUgJiM0Mzs9IEJQRl9QUENfVEFJTENBTEw7XG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMDczLVx0XHQvKiBSZXBsaWNhdGUgdGFpbF9jYWxsX2NudCBiZWZvcmUgY2FsbGluZyB0aGUgb3JpZ2luYWwgQlBGIHByb2cgKi9cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6MTA3NDpcdFx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMDc1LVx0XHRcdGJwZl90cmFtcG9saW5lX3NldHVwX3RhaWxfY2FsbF9pbmZvKGltYWdlLCBjdHgsIGJwZl9mcmFtZV9zaXplLCByNF9vZmYpO1xuLS1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtMTA5MC1cdFx0LyogUmVzdG9yZSB1cGRhdGVkIHRhaWxfY2FsbF9jbnQgKi9cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6MTA5MTpcdFx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMDkyLVx0XHRcdGJwZl90cmFtcG9saW5lX3Jlc3RvcmVfdGFpbF9jYWxsX2NudChpbWFnZSwgY3R4LCBicGZfZnJhbWVfc2l6ZSwgcjRfb2ZmKTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTk5Mj1zdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTA1Mi1cdCAqXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEwNTM6XHQgKiBGUCAtIHRjY19vZmYgICAgIFsgdGFpbCBjYWxsIGNvdW50XHRdIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFhcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTA1NC1cdCAqXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMTAxLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMTAyOlx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTExMDMtXHRcdHN0YWNrX3NpemUgJiM0Mzs9IDg7XG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMTQxLVx0Lyogc3RvcmUgdGFpbCBjYWxsIGNvdW50ICovXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjExNDI6XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTExNDMtXHRcdGVtaXRfc2QoUlZfUkVHX0ZQLCAtdGNjX29mZiwgUlZfUkVHX1RDQywgY3R4KTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEyMDMtXHRcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGNhbGxpbmcgdGhlIG9yaWcgYnBmIGZ1bmMgKi9cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTIwNDpcdFx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMjA1LVx0XHRcdGVtaXRfbGQoUlZfUkVHX1RDQywgLXRjY19vZmYsIFJWX1JFR19GUCwgY3R4KTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEyMDktXHRcdC8qIHN0b3JlIHVwZGF0ZWQgVENDIGJhY2sgdG8gc3RhY2sgYWZ0ZXIgY2FsbGluZyB0aGUgb3JpZyBicGYgZnVuYyAqL1xuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMjEwOlx0XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEyMTEtXHRcdFx0ZW1pdF9zZChSVl9SRUdfRlAsIC10Y2Nfb2ZmLCBSVl9SRUdfVENDLCBjdHgpO1xuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTI2NC1cdC8qIHJlc3RvcmUgVENDIGZyb20gc3RhY2sgdG8gUlZfUkVHX1RDQyAqL1xuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMjY1Olx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMjY2LVx0XHRlbWl0X2xkKFJWX1JFR19UQ0MsIC10Y2Nfb2ZmLCBSVl9SRUdfRlAsIGN0eCk7XG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTMzNDY9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcndfaW1hZ2UsXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM0MDctXHQgKiBSQlAgLSBhcmdfc3RhY2tfb2ZmIFsgc3RhY2tfYXJnMSBdXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzQwODpcdCAqIFJTUCAgICAgICAgICAgICAgICAgWyB0YWlsX2NhbGxfY250X3B0ciBdIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFhcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNDA5LVx0ICovXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM0OTQtXHR9XG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzQ5NTpcdGlmIChmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNDk2LVx0XHRFTUlUMSgweDUwKTtcdFx0LyogcHVzaCByYXggKi9cbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzU1Mi1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNTUzOlx0XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpIHtcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNTU0LVx0XHRcdC8qIEJlZm9yZSBjYWxsaW5nIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiwgbG9hZCB0aGVcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzYxOS1cdFx0fVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjM2MjA6XHR9IGVsc2UgaWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzYyMS1cdFx0LyogQmVmb3JlIHJ1bm5pbmcgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLCBsb2FkIHRoZVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MTIxNj1zdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwge1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMTI1Ni0gKi9cbmluY2x1ZGUvbGludXgvYnBmLmg6MTI1NzojZGVmaW5lIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFhcdEJJVCg3KVxuaW5jbHVkZS9saW51eC9icGYuaC0xMjU4LVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTY4MD1zdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTY5OC1cdC8qIGNsZWFyIGFsbCBiaXRzIGV4Y2VwdCBTSEFSRV9JUE1PRElGWSBhbmQgVEFJTF9DQUxMX0NUWCAqL1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6Njk5Olx0dHItXHUwMDNlZmxhZ3MgXHUwMDI2PSAoQlBGX1RSQU1QX0ZfU0hBUkVfSVBNT0RJRlkgfCBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTcwMC1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk0MzI9c3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTI1LVx0aWYgKHRndF9wcm9nIFx1MDAyNlx1MDAyNiB0Z3RfcHJvZy1cdTAwM2VhdXgtXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTUyNjpcdFx0YnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHRyLCBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUyNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwMTUKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBDb2RlIGZvciBgZmV4aXRgIGFuZCBUcmFjaW5nKioKCk9rYXksIHNvIHRoaXMgdGVzdCBlbXBsb3lzIGBmZXhpdGAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGBCUEZfRVZFTlRTYCBpcyBlc3NlbnRpYWwgaGVyZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIEJQRiwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYGZleGl0YCBmYWxscyB1bmRlciB0aGUgY2F0ZWdvcnkgb2YgYSB0cmFjaW5nIHByb2dyYW0gdHlwZS4gQW5kLCBhcyBJIHJlY2FsbCwgdGhlc2UgdHJhY2luZyBwcm9ncmFtcyBnZW5lcmFsbHkgcmVseSBvbiB0aGUgZW5hYmxpbmcgb2YgYEJQRl9FVkVOVFNgLiBUaGVyZWZvcmUsIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBhbmQgZW5zdXJlIHRoZSBjb2RlIGZ1bmN0aW9ucyBjb3JyZWN0bHksIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gYEJQRl9FVkVOVFNgLiBJdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0VWRU5UUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZz04Mzk9Y29uZmlnIEVQUk9CRV9FVkVOVFNcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTItXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4NTM6Y29uZmlnIEJQRl9FVkVOVFNcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzMTMKCQkJCQkJCW91dHB1dDogMTIyCgkJCQkJCQl0aG91Z2h0czogNDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEJQRiBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGJlc3QgZnV6emluZyBjb25maWd1cmF0aW9uIGZvciB0aGlzIEJQRiBwYXRjaC4gQmFzZWQgb24gdGhlIGNvZGUgY2hhbmdlcywgYEJQRl9FVkVOVFNgIGRlZmluaXRlbHkgbmVlZHMgdG8gYmUgaW5jbHVkZWQg4oCTIGl0JiMzOTtzIGNydWNpYWwgZm9yIHRoZSB0cmFjaW5nIHByb2dyYW1zIGFmZmVjdGVkIGJ5IHRoaXMuIEFuZCwgb2YgY291cnNlLCB3ZSYjMzk7bGwgbmVlZCBgQlBGX0pJVGAgc2luY2UgdHJhbXBvbGluZXMgYXJlIGludm9sdmVkLCBhbmQgYEJQRl9TWVNDQUxMYCBnb2VzIHdpdGhvdXQgc2F5aW5nIGFzIHRoZSBmb3VuZGF0aW9uIGZvciBCUEYuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQgYXJlIGNsZWFybHkgYGNoZWNrX2F0dGFjaF9idGZfaWRgIGFuZCBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYC4gV2FpdCwgSSBuZWVkIHRvIG1ha2UgYSBub3RlIGhlcmU7IHdoaWxlIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgIGNhbiBiZSBpbmxpbmVkLCBpdCYjMzk7cyBhbHNvIGltcGxlbWVudGVkIGluIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AsIG1ha2luZyBpdCBhIHZhbGlkIGZvY3VzLiBJdCYjMzk7cyBub3Qgc3RhdGljIGVpdGhlciwgZ29vZCB0byBrbm93LgoKQWxyaWdodCwgbGV0IG1lIHN1bW1hcml6ZSBteSB0aGlua2luZyBoZXJlIHNvIGZhci4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmc7IHRoZSBwYXRjaCBpcyBmaXhpbmcgYSBjb3JlIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgaW52b2x2ZXMgcG90ZW50aWFsbHkgb3ZlcndyaXRpbmcgZmxhZ3Mgd2l0aG91dCBwcm9wZXIgbG9ja2luZy4gSXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aCBzZWN1cml0eSBpbXBsaWNhdGlvbnMuIEkmIzM5O3ZlIGdvdCB0d28gY2xlYXIgZm9jdXMgc3ltYm9sczogYGNoZWNrX2F0dGFjaF9idGZfaWRgIGFuZCBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYC4gQW5kIHRoZSBjb25maWcgZmxhZ3MgSSYjMzk7bSB1c2luZyBhcmUgYEJQRl9TWVNDQUxMYCwgYEJQRl9KSVRgLCBhbmQgYEJQRl9FVkVOVFNgLgoKSG9sZCBvbiwgSSBzZWUgdGhhdCBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYCBpcyBleGNsdXNpdmVseSBjYWxsZWQgZnJvbSBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAuIFNob3VsZCBJIGFkZCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYD8gTm8sIG5vLCBJIHRoaW5rIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgIGlzIHRoZSByaWdodCBjYWxsIGhlcmUuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRob3NlIGNvbmZpZyBvcHRpb25zLiBZZXMsIGBCUEZfRVZFTlRTYCBpcyBjb3JyZWN0LiBJdCBlbmFibGVzIHRob3NlIGZlbnRyeS9mZXhpdC10eXBlIHRyYWNpbmcgcHJvZ3JhbXMgdGhhdCBhcmUgbGlrZWx5IHJlbGV2YW50IGhlcmUuIEFuZCBgQlBGX0pJVGAgaXMgdml0YWwgZm9yIHRyYW1wb2xpbmVzIHRvIGZ1bmN0aW9uLiBgQlBGX1NZU0NBTExgIGlzIGEgbm8tYnJhaW5lci4KCk5vdyB0aGF0IEkmIzM5O3ZlIHJlZmluZWQgbXkgYXBwcm9hY2gsIGl0JiMzOTtzIHRpbWUgdG8gc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfYXR0YWNoX2J0Zl9pZCYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9zZXRfZmxhZ3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSB0cmFtcG9saW5lIGZsYWdzIHdlcmUgb3ZlcndyaXR0ZW4gaW5zdGVhZCBvZiBiZWluZyBPUi1lZCwgYW5kIHdpdGhvdXQgYSBsb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHRhaWwgY2FsbHMgYW5kIHRyYW1wb2xpbmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaGVja19hdHRhY2hfYnRmX2lkJiMzNDssCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX3NldF9mbGFncyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIHRyYW1wb2xpbmUgZmxhZ3Mgd2VyZSBvdmVyd3JpdHRlbiBpbnN0ZWFkIG9mIGJlaW5nIE9SLWVkLCBhbmQgd2l0aG91dCBhIGxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGFmZmVjdHMgdGFpbCBjYWxscyBhbmQgdHJhbXBvbGluZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNToxMS4xMTcyMDI2OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTMzODAxNTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfYXR0YWNoX2J0Zl9pZFwiLFxuICAgIFwiYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSB0cmFtcG9saW5lIGZsYWdzIHdlcmUgb3ZlcndyaXR0ZW4gaW5zdGVhZCBvZiBiZWluZyBPUi1lZCwgYW5kIHdpdGhvdXQgYSBsb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHRhaWwgY2FsbHMgYW5kIHRyYW1wb2xpbmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNToxMS4xMTcyMDk2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxNzUwODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTczZDM2OWQ4MDU1MzAyYmNkYTFjY2IwNGJmNmExNDM4NDdmMGI1YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAxNzozNTowOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS9saW51eC9icGYuaFxcbmluZGV4IGUwNjZmNDRhOWMwNTgwLi43YmZjMjg2NzMxMjQ0OSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JwZi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9icGYuaFxcbkBAIC0xNTIzLDYgKzE1MjMsNyBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTtcXG4gaW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTtcXG4rdm9pZCBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3Moc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIGZsYWdzKTtcXG4gXFxuIC8qXFxuICAqIFdoZW4gdGhlIGFyY2hpdGVjdHVyZSBzdXBwb3J0cyBTVEFUSUNfQ0FMTCByZXBsYWNlIHRoZSBicGZfZGlzcGF0Y2hlcl9mblxcbkBAIC0xNjQ2LDYgKzE2NDcsNyBAQCBzdGF0aWMgaW5saW5lIGludCBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbiB7XFxuIFxcdHJldHVybiAtRU5PVFNVUFA7XFxuIH1cXG4rc3RhdGljIGlubGluZSB2b2lkIGJwZl90cmFtcG9saW5lX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgZmxhZ3MpIHt9XFxuICNlbmRpZlxcbiBcXG4gc3RydWN0IGJwZl9mdW5jX2luZm9fYXV4IHtcXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi90cmFtcG9saW5lLmMgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xcbmluZGV4IDZlYWRmNjRmN2VjOTBmLi4xMjlkMDdkYjExN2VjNyAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xcbisrKyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXFxuQEAgLTY3MCw2ICs2NzAsMTMgQEAgc3RhdGljIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmJwZl90cmFtcF9pbWFnZV9hbGxvYyh1NjQga2V5LCBpbnQgc2l6ZSlcXG4gXFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4gfVxcbiBcXG4rdm9pZCBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3Moc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIGZsYWdzKVxcbit7XFxuK1xcdHRyYW1wb2xpbmVfbG9jayh0cik7XFxuK1xcdHRyLVxcdTAwM2VmbGFncyB8PSBmbGFncztcXG4rXFx0dHJhbXBvbGluZV91bmxvY2sodHIpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxcbiBcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLCB2b2lkICpkYXRhKVxcbiB7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDUyYmUwYTExOGNjZTA3Li42NmQ4ZDllYWVjMDVmOSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtMTk1MjMsNyArMTk1MjMsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRpZiAodGd0X3Byb2cgXFx1MDAyNlxcdTAwMjYgdGd0X3Byb2ctXFx1MDAzZWF1eC1cXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSlcXG4tXFx0XFx0dHItXFx1MDAzZWZsYWdzID0gQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWDtcXG4rXFx0XFx0YnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHRyLCBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKTtcXG4gXFxuIFxcdHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlZHN0X3RyYW1wb2xpbmUgPSB0cjtcXG4gXFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcXG5pbmRleCBjNjYwMzcxNjJkYTVhZS4uYzVjOWQ2YzM1OWJiMDkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuY1xcbkBAIC0xMyw2ICsxMyw4IEBAXFxuICNpbmNsdWRlIFxcXCJ0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Uuc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidGFpbGNhbGxfc2xlZXBhYmxlLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRhaWxjYWxsX2NhbGxiYWNrLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInRhaWxjYWxsX2JwZjJicGYyLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInRhaWxjYWxsX2JwZjJicGZfZmV4aXQuc2tlbC5oXFxcIlxcbiBcXG4gLyogdGVzdF90YWlsY2FsbF8xIGNoZWNrcyBiYXNpYyBmdW5jdGlvbmFsaXR5IGJ5IHBhdGNoaW5nIG11bHRpcGxlIGxvY2F0aW9uc1xcbiAgKiBpbiBhIHNpbmdsZSBwcm9ncmFtIGZvciBhIHNpbmdsZSB0YWlsIGNhbGwgc2xvdCB3aXRoIG5vcC1cXHUwMDNlam1wLCBqbXAtXFx1MDAzZW5vcFxcbkBAIC0xOTA3LDYgKzE5MDksNTAgQEAgc3RhdGljIHZvaWQgdGVzdF90YWlsY2FsbF9jYWxsYmFjayh2b2lkKVxcbiBcXHRSVU5fVEVTVFModGFpbGNhbGxfY2FsbGJhY2spO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0ZXN0X3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3Modm9pZClcXG4re1xcbitcXHRzdHJ1Y3QgdGFpbGNhbGxfYnBmMmJwZl9mZXhpdCAqc2tlbDEgPSBOVUxMLCAqc2tlbDIgPSBOVUxMO1xcbitcXHRzdHJ1Y3QgdGFpbGNhbGxfYnBmMmJwZjIgKnNrZWxfdGM7XFxuK1xcdGludCBlcnIsIHByb2dfZmQ7XFxuK1xcbitcXHRza2VsX3RjID0gdGFpbGNhbGxfYnBmMmJwZjJfX29wZW5fYW5kX2xvYWQoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfdGMsIFxcXCJ0YWlsY2FsbF9icGYyYnBmMl9fb3Blbl9hbmRfbG9hZFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRza2VsMSA9IHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW4oKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwxLCBcXFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlblxcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdHByb2dfZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbF90Yy1cXHUwMDNlcHJvZ3MuY2xhc3NpZmllcl8wKTtcXG4rXFx0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwxLVxcdTAwM2Vwcm9ncy5mZXhpdCwgcHJvZ19mZCwgXFxcInN1YnByb2dfdGFpbFxcXCIpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJicGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXRcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRlcnIgPSB0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19sb2FkKHNrZWwxKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZFxcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdHNrZWwxLVxcdTAwM2VsaW5rcy5mZXhpdCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Uoc2tlbDEtXFx1MDAzZXByb2dzLmZleGl0KTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwxLVxcdTAwM2VsaW5rcy5mZXhpdCwgXFxcImJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2VcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRza2VsMiA9IHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW4oKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwyLCBcXFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlblxcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdGVyciA9IGJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldChza2VsMi1cXHUwMDNlcHJvZ3MuZmV4aXQsIHByb2dfZmQsIFxcXCJzdWJwcm9nX3RhaWxcXFwiKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0XFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0ZXJyID0gdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZChza2VsMik7XFxuK1xcdEFTU0VSVF9PSyhlcnIsIFxcXCJ0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19sb2FkXFxcIik7XFxuK1xcbitvdXQ6XFxuK1xcdHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX2Rlc3Ryb3koc2tlbDEpO1xcbitcXHR0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19kZXN0cm95KHNrZWwyKTtcXG4rXFx0dGFpbGNhbGxfYnBmMmJwZjJfX2Rlc3Ryb3koc2tlbF90Yyk7XFxuK31cXG4rXFxuIHZvaWQgdGVzdF90YWlsY2FsbHModm9pZClcXG4ge1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidGFpbGNhbGxfMVxcXCIpKVxcbkBAIC0xOTc0LDQgKzIwMjAsNiBAQCB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpXFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2VcXFwiKSlcXG4gXFx0XFx0dGVzdF90YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2UoKTtcXG4gXFx0dGVzdF90YWlsY2FsbF9jYWxsYmFjaygpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9saW5rc1xcXCIpKVxcbitcXHRcXHR0ZXN0X3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3MoKTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNToxMS43NDk0NTk0NTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0ODUwMTUzNjIxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX2F0dGFjaF9idGZfaWRcIixcbiAgICBcImJwZl90cmFtcG9saW5lX3NldF9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgdHJhbXBvbGluZSBmbGFncyB3ZXJlIG92ZXJ3cml0dGVuIGluc3RlYWQgb2YgYmVpbmcgT1ItZWQsIGFuZCB3aXRob3V0IGEgbG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgYWZmZWN0cyB0YWlsIGNhbGxzIGFuZCB0cmFtcG9saW5lcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNzNkMzY5ZDgwNTUzMDJiY2RhMWNjYjA0YmY2YTE0Mzg0N2YwYjViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMTc6MzU6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS9saW51eC9icGYuaFxuaW5kZXggZTA2NmY0NGE5YzA1ODAuLjdiZmMyODY3MzEyNDQ5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9icGYuaFxuKysrIGIvaW5jbHVkZS9saW51eC9icGYuaFxuQEAgLTE1MjMsNiArMTUyMyw3IEBAIGludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcbiBcdFx0XHRcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTtcbiBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbiBcdFx0XHRcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTtcbit2b2lkIGJwZl90cmFtcG9saW5lX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgZmxhZ3MpO1xuIFxuIC8qXG4gICogV2hlbiB0aGUgYXJjaGl0ZWN0dXJlIHN1cHBvcnRzIFNUQVRJQ19DQUxMIHJlcGxhY2UgdGhlIGJwZl9kaXNwYXRjaGVyX2ZuXG5AQCAtMTY0Niw2ICsxNjQ3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbiB7XG4gXHRyZXR1cm4gLUVOT1RTVVBQO1xuIH1cbitzdGF0aWMgaW5saW5lIHZvaWQgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBmbGFncykge31cbiAjZW5kaWZcbiBcbiBzdHJ1Y3QgYnBmX2Z1bmNfaW5mb19hdXgge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jIGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbmluZGV4IDZlYWRmNjRmN2VjOTBmLi4xMjlkMDdkYjExN2VjNyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXG4rKysgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuQEAgLTY3MCw2ICs2NzAsMTMgQEAgc3RhdGljIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmJwZl90cmFtcF9pbWFnZV9hbGxvYyh1NjQga2V5LCBpbnQgc2l6ZSlcbiBcdHJldHVybiBFUlJfUFRSKGVycik7XG4gfVxuIFxuK3ZvaWQgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBmbGFncylcbit7XG4rXHR0cmFtcG9saW5lX2xvY2sodHIpO1xuK1x0dHItXHUwMDNlZmxhZ3MgfD0gZmxhZ3M7XG4rXHR0cmFtcG9saW5lX3VubG9jayh0cik7XG4rfVxuK1xuIHN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIGJvb2wgbG9ja19kaXJlY3RfbXV0ZXgsXG4gXHRcdFx0XHQgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLCB2b2lkICpkYXRhKVxuIHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDUyYmUwYTExOGNjZTA3Li42NmQ4ZDllYWVjMDVmOSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTk1MjMsNyArMTk1MjMsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRpZiAodGd0X3Byb2cgXHUwMDI2XHUwMDI2IHRndF9wcm9nLVx1MDAzZWF1eC1cdTAwM2V0YWlsX2NhbGxfcmVhY2hhYmxlKVxuLVx0XHR0ci1cdTAwM2VmbGFncyA9IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFg7XG4rXHRcdGJwZl90cmFtcG9saW5lX3NldF9mbGFncyh0ciwgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCk7XG4gXG4gXHRwcm9nLVx1MDAzZWF1eC1cdTAwM2Vkc3RfdHJhbXBvbGluZSA9IHRyO1xuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuY1xuaW5kZXggYzY2MDM3MTYyZGE1YWUuLmM1YzlkNmMzNTliYjA5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jXG5AQCAtMTMsNiArMTMsOCBAQFxuICNpbmNsdWRlIFwidGFpbGNhbGxfY2dycF9zdG9yYWdlLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ0YWlsY2FsbF9zbGVlcGFibGUuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInRhaWxjYWxsX2NhbGxiYWNrLnNrZWwuaFwiXG4rI2luY2x1ZGUgXCJ0YWlsY2FsbF9icGYyYnBmMi5za2VsLmhcIlxuKyNpbmNsdWRlIFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdC5za2VsLmhcIlxuIFxuIC8qIHRlc3RfdGFpbGNhbGxfMSBjaGVja3MgYmFzaWMgZnVuY3Rpb25hbGl0eSBieSBwYXRjaGluZyBtdWx0aXBsZSBsb2NhdGlvbnNcbiAgKiBpbiBhIHNpbmdsZSBwcm9ncmFtIGZvciBhIHNpbmdsZSB0YWlsIGNhbGwgc2xvdCB3aXRoIG5vcC1cdTAwM2VqbXAsIGptcC1cdTAwM2Vub3BcbkBAIC0xOTA3LDYgKzE5MDksNTAgQEAgc3RhdGljIHZvaWQgdGVzdF90YWlsY2FsbF9jYWxsYmFjayh2b2lkKVxuIFx0UlVOX1RFU1RTKHRhaWxjYWxsX2NhbGxiYWNrKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdGVzdF90YWlsY2FsbF9icGYyYnBmX2ZleGl0X2xpbmtzKHZvaWQpXG4re1xuK1x0c3RydWN0IHRhaWxjYWxsX2JwZjJicGZfZmV4aXQgKnNrZWwxID0gTlVMTCwgKnNrZWwyID0gTlVMTDtcbitcdHN0cnVjdCB0YWlsY2FsbF9icGYyYnBmMiAqc2tlbF90YztcbitcdGludCBlcnIsIHByb2dfZmQ7XG4rXG4rXHRza2VsX3RjID0gdGFpbGNhbGxfYnBmMmJwZjJfX29wZW5fYW5kX2xvYWQoKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsX3RjLCBcInRhaWxjYWxsX2JwZjJicGYyX19vcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRza2VsMSA9IHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW4oKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsMSwgXCJ0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19vcGVuXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdHByb2dfZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbF90Yy1cdTAwM2Vwcm9ncy5jbGFzc2lmaWVyXzApO1xuK1x0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwxLVx1MDAzZXByb2dzLmZleGl0LCBwcm9nX2ZkLCBcInN1YnByb2dfdGFpbFwiKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJicGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXRcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0ZXJyID0gdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZChza2VsMSk7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZFwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRza2VsMS1cdTAwM2VsaW5rcy5mZXhpdCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Uoc2tlbDEtXHUwMDNlcHJvZ3MuZmV4aXQpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwxLVx1MDAzZWxpbmtzLmZleGl0LCBcImJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2VcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0c2tlbDIgPSB0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19vcGVuKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbDIsIFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlblwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRlcnIgPSBicGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXQoc2tlbDItXHUwMDNlcHJvZ3MuZmV4aXQsIHByb2dfZmQsIFwic3VicHJvZ190YWlsXCIpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcImJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldFwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRlcnIgPSB0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19sb2FkKHNrZWwyKTtcbitcdEFTU0VSVF9PSyhlcnIsIFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZFwiKTtcbitcbitvdXQ6XG4rXHR0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19kZXN0cm95KHNrZWwxKTtcbitcdHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX2Rlc3Ryb3koc2tlbDIpO1xuK1x0dGFpbGNhbGxfYnBmMmJwZjJfX2Rlc3Ryb3koc2tlbF90Yyk7XG4rfVxuK1xuIHZvaWQgdGVzdF90YWlsY2FsbHModm9pZClcbiB7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRhaWxjYWxsXzFcIikpXG5AQCAtMTk3NCw0ICsyMDIwLDYgQEAgdm9pZCB0ZXN0X3RhaWxjYWxscyh2b2lkKVxuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2VcIikpXG4gXHRcdHRlc3RfdGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfYnJpZGdlKCk7XG4gXHR0ZXN0X3RhaWxjYWxsX2NhbGxiYWNrKCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3NcIikpXG4rXHRcdHRlc3RfdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9saW5rcygpO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE3OjM1OjExLjc0OTQ2MDgxNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwOTgwOTgyMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgVHJhbXBvbGluZSBGbGFnIFVwZGF0ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IGludHJvZHVjZXMgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AsIHdoaWNoIGlzIHVzZWQgd2l0aGluIGBjaGVja19hdHRhY2hfYnRmX2lkYCBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIGEgc2lnbmlmaWNhbnQgY2hhbmdlIGhlcmUuIFRoZSBwcmV2aW91cyBjb2RlIGRpcmVjdGx5IGFzc2lnbmVkIGBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYYCB0byBgdHItXHUwMDNlZmxhZ3NgLiBOb3csIGl0IGNhbGxzIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgLCB3aGljaCBpcyBkZWZpbmVkIHdpdGggYSBsb2NrIGFuZCB1c2VzIGEgYml0d2lzZSBPUiBhc3NpZ25tZW50IChgfD1gKS5cblxuSG1tLCB0aGUgaW50cm9kdWN0aW9uIG9mIGEgc3BpbmxvY2sgdXNpbmcgYHRyYW1wb2xpbmVfbG9ja2AgYW5kIGB0cmFtcG9saW5lX3VubG9ja2AgdG8gcHJvdGVjdCBtb2RpZmljYXRpb25zIHRvIGB0ci1cdTAwM2VmbGFnc2AgaXMgYSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgYSByYWNlIGNvbmRpdGlvbiB3YXMgaWRlbnRpZmllZCwgb3IgYXQgbGVhc3QgYSBwb3RlbnRpYWwgb25lIHRoYXQgbmVlZGVkIG1pdGlnYXRpb24uIFRoZSBmYWN0IHRoYXQgdGhleSd2ZSByZXBsYWNlZCBhIHNpbXBsZSBhc3NpZ25tZW50IChgPWApIHdpdGggYSBiaXR3aXNlIE9SIChgfD1gKSBpcyBhbHNvIGZ1bmN0aW9uYWxseSBkaWZmZXJlbnQuIFByZXZpb3VzbHksIGFueSBhdHRlbXB0IHRvIGF0dGFjaCBhIGZ1bmN0aW9uIHdpdGggZGlmZmVyZW50IGZsYWdzIHdvdWxkIGJlIG92ZXJ3cml0dGVuLiBUaGlzIG5ldyBhcHByb2FjaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgZmxhZ3MgYW5kIGFkZHMgdG8gdGhlIHNldC5cblxuU28sIHRoaXMgY2xlYXJseSBpbmRpY2F0ZXMgYSBidWcgZml4IHJlbGF0ZWQgdG8gZmxhZyBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgQlBGIHRyYW1wb2xpbmUgbWVjaGFuaXNtLiBOb3csIEkgbmVlZCB0byBjaGVjayBob3cgYGNoZWNrX2F0dGFjaF9idGZfaWRgIHVzZXMgdGhpcywgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgbmF0dXJlIG9mIHRoZSByYWNlIG9yIG92ZXJ3cml0ZSBiZWluZyBmaXhlZC4gTGV0J3MgZGVsdmUgaW50byB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCBzZWUgd2hlcmUgdGhpcyBmaXRzIGluIHRoZSBhdHRhY2htZW50IHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MzIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNToxNy44NDc1NjY0MThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE1NDA1MDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX2F0dGFjaF9idGZfaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTQwNT1zdGF0aWMgYm9vbCBjYW5fYmVfc2xlZXBhYmxlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzMS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk0MzI6c3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDMzLXtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzMS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1MzI6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzMy1cXHRcXHRcXHRcXHQgIHN0cnVjdCBicGZfYXR0YWNoX3RhcmdldF9pbmZvICp0Z3RfaW5mbylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yMDA1Nz1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDIwMi1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjAyMDM6XFx0cmV0ID0gY2hlY2tfYXR0YWNoX2J0Zl9pZChlbnYpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDIwNC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNToxOC4xNjI5NzYxOTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM4MDgzMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIEJQRiBWZXJpZmllcjogQSBGb2N1c2VkIEFwcHJvYWNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAgZnVuY3Rpb24sIGFuZCBpdCdzIGNhbGxlZCBkdXJpbmcgYGJwZl9jaGVja2AgLSB0aGF0J3MgYSBrZXkgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyLiBJIGtub3cgZm9yIGEgZmFjdCBpdCdzIHJlYWNoYWJsZSBhbmQgYWN0dWFsbHkgdXNlZCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgaXQgYSBzdHJvbmcgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBEZWZpbml0ZWx5IHdvcnRoIGl0IHNpbmNlIGl0J3MgYSBjb3JlIEJQRiB2ZXJpZmllciBjaGFuZ2UuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUuIGBjaGVja19hdHRhY2hfYnRmX2lkYCBpcyB0aGUgcHJpbWFyeSBvbmUsIGJ1dCBJIGFsc28gc2VlIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgIGJlaW5nIGNhbGxlZC4gSG1tLCBidXQgdGhhdCBmdW5jdGlvbiBpcyB0aW55LCBhIHNpbXBsZSBoZWxwZXIgLSBwcm9iYWJseSBub3QgdGhlIGJlc3QgdGFyZ2V0IGZvciBmdXp6aW5nLiBTbywgZm9jdXNpbmcgb24gYGNoZWNrX2F0dGFjaF9idGZfaWRgIGZvciBub3csIG9yIHBlcmhhcHMgaXRzIG11bHRpLXZhcmlhbnQgY291bnRlcnBhcnQuIE5vdywgYmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBmdXp6aW5nIGl0c2VsZiwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEJQRiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHdoaWNoIGlzIGdvb2QsIGJ1dCBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9KSVRgIHRvIGNvdmVyIHRoZSBmdWxsIHNwZWN0cnVtIG9mIHBvc3NpYmxlIHNjZW5hcmlvcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYwOCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNToyMi45MDEwNjEyMjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg3MTU5MjEzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3JjL0tjb25maWc9MTc9aWYgUkNfQ09SRVxcbmRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL21lZGlhL3JjL0tjb25maWc6MTk6Y29uZmlnIEJQRl9MSVJDX01PREUyXFxuZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnLTIwLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIGVCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gbGlyYyBkZXZpY2VzXFxcIlxcbi0tXFxua2VybmVsL0tjb25maWcubG9ja3M9MjQyPWNvbmZpZyBRVUVVRURfU1BJTkxPQ0tTXFxuLS1cXG5rZXJuZWwvS2NvbmZpZy5sb2Nrcy0yNDUtXFxua2VybmVsL0tjb25maWcubG9ja3M6MjQ2OmNvbmZpZyBCUEZfQVJDSF9TUElOTE9DS1xcbmtlcm5lbC9LY29uZmlnLmxvY2tzLTI0Ny1cXHRib29sXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctMy0jIEJQRiBpbnRlcnByZXRlciB0aGF0LCBmb3IgZXhhbXBsZSwgY2xhc3NpYyBzb2NrZXQgZmlsdGVycyBkZXBlbmQgb24uXFxua2VybmVsL2JwZi9LY29uZmlnOjQ6Y29uZmlnIEJQRlxcbmtlcm5lbC9icGYvS2NvbmZpZy01LVxcdGJvb2xcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNTctXFxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cXHRib29sIFxcXCJQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNzItXFxua2VybmVsL2JwZi9LY29uZmlnOjczOmNvbmZpZyBCUEZfVU5QUklWX0RFRkFVTFRfT0ZGXFxua2VybmVsL2JwZi9LY29uZmlnLTc0LVxcdGJvb2wgXFxcIkRpc2FibGUgdW5wcml2aWxlZ2VkIEJQRiBieSBkZWZhdWx0XFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnPTkwPXNvdXJjZSBcXFwia2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWdcXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTkxLVxcbmtlcm5lbC9icGYvS2NvbmZpZzo5Mjpjb25maWcgQlBGX0xTTVxcbmtlcm5lbC9icGYvS2NvbmZpZy05My1cXHRib29sIFxcXCJFbmFibGUgQlBGIExTTSBJbnN0cnVtZW50YXRpb25cXFwiXFxuLS1cXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnOjI6bWVudWNvbmZpZyBCUEZfUFJFTE9BRFxcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnLTMtXFx0Ym9vbCBcXFwiUHJlbG9hZCBCUEYgZmlsZSBzeXN0ZW0gd2l0aCBrZXJuZWwgc3BlY2lmaWMgcHJvZ3JhbSBhbmQgbWFwIGl0ZXJhdG9yc1xcXCJcXG4tLVxcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnPTE0PWlmIEJQRl9QUkVMT0FEXFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWc6MTU6Y29uZmlnIEJQRl9QUkVMT0FEX1VNRFxcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnLTE2LVxcdHRyaXN0YXRlIFxcXCJicGZfcHJlbG9hZCBrZXJuZWwgbW9kdWxlXFxcIlxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWc9ODM5PWNvbmZpZyBFUFJPQkVfRVZFTlRTXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTItXFxua2VybmVsL3RyYWNlL0tjb25maWc6ODUzOmNvbmZpZyBCUEZfRVZFTlRTXFxua2VybmVsL3RyYWNlL0tjb25maWctODU0LVxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnPTg2NT1jb25maWcgUFJPQkVfRVZFTlRTXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NjctXFxua2VybmVsL3RyYWNlL0tjb25maWc6ODY4OmNvbmZpZyBCUEZfS1BST0JFX09WRVJSSURFXFxua2VybmVsL3RyYWNlL0tjb25maWctODY5LVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgcHJvZ3JhbXMgdG8gb3ZlcnJpZGUgYSBrcHJvYmVkIGZ1bmN0aW9uXFxcIlxcbi0tXFxubmV0L0tjb25maWc9MzU0PWNvbmZpZyBCUUxcXG4tLVxcbm5ldC9LY29uZmlnLTM2MC1cXG5uZXQvS2NvbmZpZzozNjE6Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWctMzYyLVxcdGJvb2wgXFxcImVuYWJsZSBCUEYgU1RSRUFNX1BBUlNFUlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6MjUuNzcyNjU5NDMxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2MzgwNzcyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBCUEYgVHJhbXBvbGluZSBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGtlcm5lbC9icGYvdHJhbXBvbGluZS5jYCBhbmQgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuICBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIEJQRiBzdWJzeXN0ZW0sIHRoZSBmYWN0IHRoYXQgaXQncyBhbHRlcmluZyBib3RoIHRyYW1wb2xpbmUgY29kZSBhbmQgdGhlIHZlcmlmaWVyIHN0cm9uZ2x5IHN1Z2dlc3RzIHNvbWUga2luZCBvZiBpbnN0cnVtZW50YXRpb24sIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgb3IsIHBvdGVudGlhbGx5LCBhIHNlY3VyaXR5LXJlbGF0ZWQgY2hhbmdlLiAgVGhlIHZlcmlmaWVyIGlzIHRoZSBoZWFydCBvZiBCUEYgc2VjdXJpdHksIHNvIGFueSBhbHRlcmF0aW9uIHRoZXJlIHdhcnJhbnRzICpjYXJlZnVsKiBzY3J1dGlueS4gSXQgY291bGQgYmUgZml4aW5nIGEgYnVnLCBleHBhbmRpbmcgZnVuY3Rpb25hbGl0eSwgb3IgZXZlbiBoYXJkZW5pbmcgYWdhaW5zdCBhIG5ldyBhdHRhY2sgdmVjdG9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlIHRyYW1wb2xpbmUgYW5kIHRoZSB2ZXJpZmllciBpbiB0aGlzIGNvbnRleHQuXG5cbk15IGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgd2lsbCBiZSB0byBkZXRlcm1pbmUgd2hhdCBrZXJuZWwgY29uZmlndXJhdGlvbnMgYWN0dWFsbHkgZW5hYmxlIHRoaXMgdHJhbXBvbGluZSBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGFwcGxpY2FiaWxpdHkgb2YgdGhlc2UgY2hhbmdlcy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBmZWF0dXJlIHRoYXQncyB1bml2ZXJzYWxseSBhdmFpbGFibGUsIG9yIGlzIGl0IHNwZWNpZmljIHRvIGNlcnRhaW4gYXJjaGl0ZWN0dXJlcywga2VybmVsIHZlcnNpb25zLCBvciB1c2UgY2FzZXM/IFRoaXMgY29udGV4dCBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIHRoZSB0cnVlIGltcGFjdCBvZiB0aGlzIHBhdGNoLiBLbm93aW5nIHRoZSBlbmFibGluZyBjb25maWd1cmF0aW9ucyB3aWxsIGRpY3RhdGUgbXkgaW52ZXN0aWdhdGlvbiBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDMzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6MjkuMTM2NDY5MTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NDExMTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyYW1wb2xpbmUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBkaXNhc20ubyBtcHJvZy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gdHJhbXBvbGluZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE3OjM1OjI5LjI0Mjg4NjI5M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTQwOTI2NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgYnVpbGQgZGVwZW5kZW5jaWVzLCBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgY3J1Y2lhbC4gSSBzZWUgdGhhdCB0aGUgb2JqZWN0IGZpbGUgYHRyYW1wb2xpbmUub2AgZXhwbGljaXRseSAqbmVlZHMqIGBDT05GSUdfQlBGX0pJVGAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhlIEp1c3QtSW4tVGltZSBjb21waWxlciBpcyBmdW5kYW1lbnRhbCB0byBob3cgQlBGIHRyYW1wb2xpbmVzIGZ1bmN0aW9uIGFuZCBleGVjdXRlIGVmZmljaWVudGx5LiBObyBKSVQsIG5vIHRyYW1wb2xpbmUg4oCTIGl0J3MgYSBkaXJlY3QgcmVxdWlyZW1lbnQgZm9yIHRoYXQgb3B0aW1pemVkIGV4ZWN1dGlvbiBwYXRoLlxuXG5UaGVuLCB0aGVyZSdzIGB2ZXJpZmllci5vYC4gSXQncyBkZXBlbmRlbnQgb24gYENPTkZJR19CUEZfU1lTQ0FMTGAuIEFnYWluLCBsb2dpY2FsLiBUaGUgdmVyaWZpZXIgaGFzIHRvIGludGVyZmFjZSB3aXRoIHRoZSBzeXN0ZW0gY2FsbCBsYXllciwgdmFsaWRhdGluZyB0aGUgQlBGIGJ5dGVjb2RlIHRvIGVuc3VyZSBpdCdzIHNhZmUgdG8gcnVuIGluIHRoZSBrZXJuZWwuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoYXQgY3J1Y2lhbCBicmlkZ2UsIGFsbG93aW5nIHRoZSB2ZXJpZmllciB0byBpbnRlcmFjdCB3aXRoIHRoZSBzeXN0ZW0gY2FsbHMgYW5kIGVuZm9yY2Ugc2VjdXJpdHkuIFdpdGhvdXQgaXQsIHRoZSB3aG9sZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBmYWxscyBhcGFydC4gSXQgaXMgYSBjcml0aWNhbCBkZXBlbmRlbmN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDcxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6MzMuMDU2OTgxNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYyNjA4NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmVyaWZpZXIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6MzMuMTQzMjQ5NTczWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDg4NjM0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVGhpcyBCUEYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIHBhdGNoIGludm9sdmVzIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfSklUYCwgd2hpY2ggaW1tZWRpYXRlbHkgc2lnbmFscyBpdHMgaW1wb3J0YW5jZS4gTGV0J3MgZGlnIGluLiBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgc25pcHBldCBhZ2FpbjpcblxuYGBgY1xuIFx0aWYgKHRndF9wcm9nIFx1MDAyNlx1MDAyNiB0Z3RfcHJvZy1cdTAwM2VhdXgtXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSlcbi1cdFx0dHItXHUwMDNlZmxhZ3MgPSBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYO1xuK1x0XHRicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3ModHIsIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpO1xuYGBgXG5cblJpZ2h0LCBpdCdzIGZpeGluZyBhIHN1YnRsZSBidXQgY3JpdGljYWwgYnVnLiBFc3NlbnRpYWxseSwgdGhlIGNvZGUgd2FzIG92ZXJ3cml0aW5nIGB0ci1cdTAwM2VmbGFnc2AgaW5zdGVhZCBvZiB1c2luZyBhIGJpdHdpc2UgT1IsIGFuZCBjcml0aWNhbGx5LCB0aGVyZSB3YXMgbm8gbG9ja2luZyBpbiBwbGFjZSwgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIHNjZW5hcmlvLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjb3JyZWN0bmVzcyBmaXgsIG5vdGhpbmcgc3VwZXJmaWNpYWwuXG5cblRoZSBwcmltYXJ5IHN5bWJvbHMgb2YgaW50ZXJlc3QgYXJlIGdvaW5nIHRvIGJlIGBjaGVja19hdHRhY2hfYnRmX2lkYCBhbmQgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AuIFdhaXQgYSBtaW51dGUsIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgIGlzIHRpbnkhIEl0J3MgbGlrZWx5IGEgdmVyeSBzaW1wbGUgaGVscGVyIGZ1bmN0aW9uLiBIbW1tLCBwZXJoYXBzIGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIG1vcmUgcmVsZXZhbnQ/IEkgc2hvdWxkIGRvdWJsZSBjaGVjayB3aGVyZSBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYCBpcyBjYWxsZWQuIEFoLCBpdCdzIGNhbGxlZCBpbnNpZGUgYGNoZWNrX2F0dGFjaF9idGZfaWRgLCB0aGF0J3MgdGhlIGtleSBjYWxsIHNpdGUuIEkgdGhpbmsgSSB3aWxsIGZvY3VzIG9uIGBjaGVja19hdHRhY2hfYnRmX2lkYCwgSSdsbCBpbmNsdWRlIHRoYXQgaW4gbXkgc2NvcGUuXG5cbk5vdywgbGV0IG1lIGdvIHRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIGV4YW1pbmUgYGNoZWNrX2F0dGFjaF9idGZfaWRgIGluIG1vcmUgZGV0YWlsLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbG9naWMgaXMgbGlrZWx5IHRvIHJlc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkyNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNTozOS4xOTIxMTU4OTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTQ3NzI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19hdHRhY2hfYnRmX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk0MDU9c3RhdGljIGJvb2wgY2FuX2JlX3NsZWVwYWJsZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MzEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NDMyOnN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzMy17XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1MzEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NTMyOmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1MzMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAwNTc9aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAyMDItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMjAzOlxcdHJldCA9IGNoZWNrX2F0dGFjaF9idGZfaWQoZW52KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAyMDQtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6MzkuMzM3NTk4MjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM0MTA5NzIyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OlxuXG4qKkFuYWx5emluZyBCUEYgRnVuY3Rpb25hbGl0eSBmb3IgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHNvbWUgY29kZSByZWxhdGVkIHRvIEJQRiwgc3BlY2lmaWNhbGx5IGFyb3VuZCBmdW5jdGlvbiBjYWxscyBhbmQgbGlua2luZy4gYGNoZWNrX2F0dGFjaF9idGZfaWRgIGFuZCBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYCBzZWVtIHRvIGJlIHRoZSBrZXkgYXJlYXMgSSBuZWVkIHRvIGZvY3VzIG9uLiBJJ20gc2VlaW5nIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhcmUgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9KSVRgLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgdGhlcmUgYXJlIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmbG9hdGluZyBhcm91bmQuIFRoZSB0ZXN0IGFkZGVkLCBgdGVzdF90YWlsY2FsbF9icGYyYnBmX2ZleGl0X2xpbmtzYCwgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBsZXZlcmFnZXMgYm90aCBgZmV4aXRgIGFuZCBgdGFpbGNhbGxgLCB3aGljaCBpcyBhIGNvbXBsZXggY29tYmluYXRpb24sIGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lcyB0byBjb250ZXh0IHN3aXRjaGVzLiBJIHJlbWVtYmVyIHRoYXQgdGhlIGBmZXhpdGAgZmVhdHVyZSBoYXMgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiBEb2VzIGBmZXhpdGAgcmVxdWlyZSBgQlBGX0VWRU5UU2Agb3IgYEJQRl9KSVRgPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0IGRlcGVuZGVuY3kuIFRpbWUgdG8gZGl2ZSBpbnRvIGBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYYCBhbmQgc2VlIHdoYXQgaXQgdGVsbHMgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NjEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6NDMuNjc4Njk4NDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDc5Mjc3MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0xODM3PXN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGppdF9jdHggKmN0eCwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5NDItXFx0LyogUm9vbSBvZiB0cmFtcG9saW5lIGZyYW1lIHRvIHN0b3JlIHRhaWxfY2FsbF9jbnRfcHRyICovXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoxOTQzOlxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpIHtcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5NDQtXFx0XFx0c3RhY2tfc2l6ZSArPSA4O1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xOTgzLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MTk4NDpcXHRpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTk4NS1cXHRcXHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfRlAsIC10Y2NfcHRyX29mZik7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIwNTEtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMDUyOlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMDUzLVxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9GUCwgLXRjY19wdHJfb2ZmKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjEwNC1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIxMDU6XFx0aWYgKGZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIxMDYtXFx0XFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX0ZQLCAtdGNjX3B0cl9vZmYpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz04MTI9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcndfaW1hZ2UsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTk1MC1cXHRpZiAoKGZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfQ0FMTF9PUklHKSBcXHUwMDI2XFx1MDAyNlxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6OTUxOlxcdFxcdChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpKVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtOTUyLVxcdFxcdGJwZl9mcmFtZV9zaXplICs9IEJQRl9QUENfVEFJTENBTEw7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTEwNzMtXFx0XFx0LyogUmVwbGljYXRlIHRhaWxfY2FsbF9jbnQgYmVmb3JlIGNhbGxpbmcgdGhlIG9yaWdpbmFsIEJQRiBwcm9nICovXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzoxMDc0OlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMDc1LVxcdFxcdFxcdGJwZl90cmFtcG9saW5lX3NldHVwX3RhaWxfY2FsbF9pbmZvKGltYWdlLCBjdHgsIGJwZl9mcmFtZV9zaXplLCByNF9vZmYpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMDkwLVxcdFxcdC8qIFJlc3RvcmUgdXBkYXRlZCB0YWlsX2NhbGxfY250ICovXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzoxMDkxOlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMDkyLVxcdFxcdFxcdGJwZl90cmFtcG9saW5lX3Jlc3RvcmVfdGFpbF9jYWxsX2NudChpbWFnZSwgY3R4LCBicGZfZnJhbWVfc2l6ZSwgcjRfb2ZmKTtcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9OTkyPXN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEwNTItXFx0ICpcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEwNTM6XFx0ICogRlAgLSB0Y2Nfb2ZmICAgICBbIHRhaWwgY2FsbCBjb3VudFxcdF0gQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTA1NC1cXHQgKlxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMTAxLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTEwMjpcXHRpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMTAzLVxcdFxcdHN0YWNrX3NpemUgKz0gODtcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTE0MS1cXHQvKiBzdG9yZSB0YWlsIGNhbGwgY291bnQgKi9cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjExNDI6XFx0aWYgKGZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTExNDMtXFx0XFx0ZW1pdF9zZChSVl9SRUdfRlAsIC10Y2Nfb2ZmLCBSVl9SRUdfVENDLCBjdHgpO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMjAzLVxcdFxcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGNhbGxpbmcgdGhlIG9yaWcgYnBmIGZ1bmMgKi9cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEyMDQ6XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEyMDUtXFx0XFx0XFx0ZW1pdF9sZChSVl9SRUdfVENDLCAtdGNjX29mZiwgUlZfUkVHX0ZQLCBjdHgpO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMjA5LVxcdFxcdC8qIHN0b3JlIHVwZGF0ZWQgVENDIGJhY2sgdG8gc3RhY2sgYWZ0ZXIgY2FsbGluZyB0aGUgb3JpZyBicGYgZnVuYyAqL1xcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTIxMDpcXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTIxMS1cXHRcXHRcXHRlbWl0X3NkKFJWX1JFR19GUCwgLXRjY19vZmYsIFJWX1JFR19UQ0MsIGN0eCk7XFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEyNjQtXFx0LyogcmVzdG9yZSBUQ0MgZnJvbSBzdGFjayB0byBSVl9SRUdfVENDICovXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMjY1OlxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMjY2LVxcdFxcdGVtaXRfbGQoUlZfUkVHX1RDQywgLXRjY19vZmYsIFJWX1JFR19GUCwgY3R4KTtcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz0zMzQ2PXN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnJ3X2ltYWdlLFxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM0MDctXFx0ICogUkJQIC0gYXJnX3N0YWNrX29mZiBbIHN0YWNrX2FyZzEgXVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNDA4OlxcdCAqIFJTUCAgICAgICAgICAgICAgICAgWyB0YWlsX2NhbGxfY250X3B0ciBdIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFhcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzQwOS1cXHQgKi9cXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNDk0LVxcdH1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzQ5NTpcXHRpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNDk2LVxcdFxcdEVNSVQxKDB4NTApO1xcdFxcdC8qIHB1c2ggcmF4ICovXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzU1Mi1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzU1MzpcXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM1NTQtXFx0XFx0XFx0LyogQmVmb3JlIGNhbGxpbmcgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLCBsb2FkIHRoZVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM2MTktXFx0XFx0fVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNjIwOlxcdH0gZWxzZSBpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM2MjEtXFx0XFx0LyogQmVmb3JlIHJ1bm5pbmcgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLCBsb2FkIHRoZVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0xMjE2PXN0cnVjdCBidGZfZnVuY19tb2RlbCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEyNTYtICovXFxuaW5jbHVkZS9saW51eC9icGYuaDoxMjU3OiNkZWZpbmUgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWFxcdEJJVCg3KVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTI1OC1cXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTY4MD1zdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjk4LVxcdC8qIGNsZWFyIGFsbCBiaXRzIGV4Y2VwdCBTSEFSRV9JUE1PRElGWSBhbmQgVEFJTF9DQUxMX0NUWCAqL1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjY5OTpcXHR0ci1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gKEJQRl9UUkFNUF9GX1NIQVJFX0lQTU9ESUZZIHwgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNzAwLVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NDMyPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTI1LVxcdGlmICh0Z3RfcHJvZyBcXHUwMDI2XFx1MDAyNiB0Z3RfcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2V0YWlsX2NhbGxfcmVhY2hhYmxlKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTUyNjpcXHRcXHRicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3ModHIsIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUyNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6NDYuMDg2NjMxNjQ3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODk2ODQwMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgQ29kZSBmb3IgYGZleGl0YCBhbmQgVHJhY2luZyoqXG5cbk9rYXksIHNvIHRoaXMgdGVzdCBlbXBsb3lzIGBmZXhpdGAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGBCUEZfRVZFTlRTYCBpcyBlc3NlbnRpYWwgaGVyZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIEJQRiwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgZmV4aXRgIGZhbGxzIHVuZGVyIHRoZSBjYXRlZ29yeSBvZiBhIHRyYWNpbmcgcHJvZ3JhbSB0eXBlLiBBbmQsIGFzIEkgcmVjYWxsLCB0aGVzZSB0cmFjaW5nIHByb2dyYW1zIGdlbmVyYWxseSByZWx5IG9uIHRoZSBlbmFibGluZyBvZiBgQlBGX0VWRU5UU2AuIFRoZXJlZm9yZSwgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBlbnN1cmUgdGhlIGNvZGUgZnVuY3Rpb25zIGNvcnJlY3RseSwgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBCUEZfRVZFTlRTYC4gSXQncyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAxNSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE3OjM1OjQ5LjQ3NjMxODY0NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzMjMzMjI2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX0VWRU5UU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3RyYWNlL0tjb25maWc9ODM5PWNvbmZpZyBFUFJPQkVfRVZFTlRTXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTItXFxua2VybmVsL3RyYWNlL0tjb25maWc6ODUzOmNvbmZpZyBCUEZfRVZFTlRTXFxua2VybmVsL3RyYWNlL0tjb25maWctODU0LVxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6NTEuOTA4NjU2MzZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE3OTcxMTEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBCUEYgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIGxldCdzIG5haWwgZG93biB0aGUgYmVzdCBmdXp6aW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgQlBGIHBhdGNoLiBCYXNlZCBvbiB0aGUgY29kZSBjaGFuZ2VzLCBgQlBGX0VWRU5UU2AgZGVmaW5pdGVseSBuZWVkcyB0byBiZSBpbmNsdWRlZCDigJMgaXQncyBjcnVjaWFsIGZvciB0aGUgdHJhY2luZyBwcm9ncmFtcyBhZmZlY3RlZCBieSB0aGlzLiBBbmQsIG9mIGNvdXJzZSwgd2UnbGwgbmVlZCBgQlBGX0pJVGAgc2luY2UgdHJhbXBvbGluZXMgYXJlIGludm9sdmVkLCBhbmQgYEJQRl9TWVNDQUxMYCBnb2VzIHdpdGhvdXQgc2F5aW5nIGFzIHRoZSBmb3VuZGF0aW9uIGZvciBCUEYuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldCBhcmUgY2xlYXJseSBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAgYW5kIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgLiBXYWl0LCBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgaGVyZTsgd2hpbGUgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AgY2FuIGJlIGlubGluZWQsIGl0J3MgYWxzbyBpbXBsZW1lbnRlZCBpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLCBtYWtpbmcgaXQgYSB2YWxpZCBmb2N1cy4gSXQncyBub3Qgc3RhdGljIGVpdGhlciwgZ29vZCB0byBrbm93LlxuXG5BbHJpZ2h0LCBsZXQgbWUgc3VtbWFyaXplIG15IHRoaW5raW5nIGhlcmUgc28gZmFyLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZzsgdGhlIHBhdGNoIGlzIGZpeGluZyBhIGNvcmUgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBpbnZvbHZlcyBwb3RlbnRpYWxseSBvdmVyd3JpdGluZyBmbGFncyB3aXRob3V0IHByb3BlciBsb2NraW5nLiBJdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gSSd2ZSBnb3QgdHdvIGNsZWFyIGZvY3VzIHN5bWJvbHM6IGBjaGVja19hdHRhY2hfYnRmX2lkYCBhbmQgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AuIEFuZCB0aGUgY29uZmlnIGZsYWdzIEknbSB1c2luZyBhcmUgYEJQRl9TWVNDQUxMYCwgYEJQRl9KSVRgLCBhbmQgYEJQRl9FVkVOVFNgLlxuXG5Ib2xkIG9uLCBJIHNlZSB0aGF0IGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgIGlzIGV4Y2x1c2l2ZWx5IGNhbGxlZCBmcm9tIGBjaGVja19hdHRhY2hfYnRmX2lkYC4gU2hvdWxkIEkgYWRkIGBicGZfdHJhbXBvbGluZV91cGRhdGVgPyBObywgbm8sIEkgdGhpbmsgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS5cblxuTGV0J3MgZG91YmxlLWNoZWNrIHRob3NlIGNvbmZpZyBvcHRpb25zLiBZZXMsIGBCUEZfRVZFTlRTYCBpcyBjb3JyZWN0LiBJdCBlbmFibGVzIHRob3NlIGZlbnRyeS9mZXhpdC10eXBlIHRyYWNpbmcgcHJvZ3JhbXMgdGhhdCBhcmUgbGlrZWx5IHJlbGV2YW50IGhlcmUuIEFuZCBgQlBGX0pJVGAgaXMgdml0YWwgZm9yIHRyYW1wb2xpbmVzIHRvIGZ1bmN0aW9uLiBgQlBGX1NZU0NBTExgIGlzIGEgbm8tYnJhaW5lci5cblxuTm93IHRoYXQgSSd2ZSByZWZpbmVkIG15IGFwcHJvYWNoLCBpdCdzIHRpbWUgdG8gc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTMxMywiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzY6MDAuMDg4MzcwNjA0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNjIwNzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX2F0dGFjaF9idGZfaWRcIixcbiAgICBcImJwZl90cmFtcG9saW5lX3NldF9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgdHJhbXBvbGluZSBmbGFncyB3ZXJlIG92ZXJ3cml0dGVuIGluc3RlYWQgb2YgYmVpbmcgT1ItZWQsIGFuZCB3aXRob3V0IGEgbG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgYWZmZWN0cyB0YWlsIGNhbGxzIGFuZCB0cmFtcG9saW5lcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX2F0dGFjaF9idGZfaWRcIixcbiAgICBcImJwZl90cmFtcG9saW5lX3NldF9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgdHJhbXBvbGluZSBmbGFncyB3ZXJlIG92ZXJ3cml0dGVuIGluc3RlYWQgb2YgYmVpbmcgT1ItZWQsIGFuZCB3aXRob3V0IGEgbG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgYWZmZWN0cyB0YWlsIGNhbGxzIGFuZCB0cmFtcG9saW5lcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgcxh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 17:18:42 +0000 UTC FinishedAt: 2026-07-23 17:36:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "87267b89459813cb50ab5377e076b639c07b4491", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT", "BPF_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "87267b89459813cb50ab5377e076b639c07b4491", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT", "BPF_EVENTS" ], "series_id": "6f6719cf-37be-434e-ab31-313e6d6b648d" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "check_attach_btf_id", "bpf_trampoline_set_flags" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIzIDE3OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NoZWNrX2F0dGFjaF9idGZfaWQmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgdHJhbXBvbGluZSBmbGFncyB3ZXJlIG92ZXJ3cml0dGVuIGluc3RlYWQgb2YgYmVpbmcgT1ItZWQsIGFuZCB3aXRob3V0IGEgbG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgYWZmZWN0cyB0YWlsIGNhbGxzIGFuZCB0cmFtcG9saW5lcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE3M2QzNjlkODA1NTMwMmJjZGExY2NiMDRiZjZhMTQzODQ3ZjBiNWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyMyAxNzozNTowOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS9saW51eC9icGYuaFxuaW5kZXggZTA2NmY0NGE5YzA1ODAuLjdiZmMyODY3MzEyNDQ5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9icGYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9icGYuaFxuQEAgLTE1MjMsNiAmIzQzOzE1MjMsNyBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXG4gXHRcdFx0XHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluayk7XG4gaW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4gXHRcdFx0XHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluayk7XG4mIzQzO3ZvaWQgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBmbGFncyk7XG4gXG4gLypcbiAgKiBXaGVuIHRoZSBhcmNoaXRlY3R1cmUgc3VwcG9ydHMgU1RBVElDX0NBTEwgcmVwbGFjZSB0aGUgYnBmX2Rpc3BhdGNoZXJfZm5cbkBAIC0xNjQ2LDYgJiM0MzsxNjQ3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbiB7XG4gXHRyZXR1cm4gLUVOT1RTVVBQO1xuIH1cbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGJwZl90cmFtcG9saW5lX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgZmxhZ3MpIHt9XG4gI2VuZGlmXG4gXG4gc3RydWN0IGJwZl9mdW5jX2luZm9fYXV4IHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXG5pbmRleCA2ZWFkZjY0ZjdlYzkwZi4uMTI5ZDA3ZGIxMTdlYzcgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbkBAIC02NzAsNiAmIzQzOzY3MCwxMyBAQCBzdGF0aWMgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqYnBmX3RyYW1wX2ltYWdlX2FsbG9jKHU2NCBrZXksIGludCBzaXplKVxuIFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiB9XG4gXG4mIzQzO3ZvaWQgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBmbGFncylcbiYjNDM7e1xuJiM0MztcdHRyYW1wb2xpbmVfbG9jayh0cik7XG4mIzQzO1x0dHItXHUwMDNlZmxhZ3MgfD0gZmxhZ3M7XG4mIzQzO1x0dHJhbXBvbGluZV91bmxvY2sodHIpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIGJvb2wgbG9ja19kaXJlY3RfbXV0ZXgsXG4gXHRcdFx0XHQgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLCB2b2lkICpkYXRhKVxuIHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDUyYmUwYTExOGNjZTA3Li42NmQ4ZDllYWVjMDVmOSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTk1MjMsNyAmIzQzOzE5NTIzLDcgQEAgc3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0aWYgKHRndF9wcm9nIFx1MDAyNlx1MDAyNiB0Z3RfcHJvZy1cdTAwM2VhdXgtXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSlcbi1cdFx0dHItXHUwMDNlZmxhZ3MgPSBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYO1xuJiM0MztcdFx0YnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHRyLCBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKTtcbiBcbiBcdHByb2ctXHUwMDNlYXV4LVx1MDAzZWRzdF90cmFtcG9saW5lID0gdHI7XG4gXHRyZXR1cm4gMDtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jXG5pbmRleCBjNjYwMzcxNjJkYTVhZS4uYzVjOWQ2YzM1OWJiMDkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcbkBAIC0xMyw2ICYjNDM7MTMsOCBAQFxuICNpbmNsdWRlIFwmIzM0O3RhaWxjYWxsX2NncnBfc3RvcmFnZS5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0YWlsY2FsbF9zbGVlcGFibGUuc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7dGFpbGNhbGxfY2FsbGJhY2suc2tlbC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3RhaWxjYWxsX2JwZjJicGYyLnNrZWwuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDt0YWlsY2FsbF9icGYyYnBmX2ZleGl0LnNrZWwuaFwmIzM0O1xuIFxuIC8qIHRlc3RfdGFpbGNhbGxfMSBjaGVja3MgYmFzaWMgZnVuY3Rpb25hbGl0eSBieSBwYXRjaGluZyBtdWx0aXBsZSBsb2NhdGlvbnNcbiAgKiBpbiBhIHNpbmdsZSBwcm9ncmFtIGZvciBhIHNpbmdsZSB0YWlsIGNhbGwgc2xvdCB3aXRoIG5vcC1cdTAwM2VqbXAsIGptcC1cdTAwM2Vub3BcbkBAIC0xOTA3LDYgJiM0MzsxOTA5LDUwIEBAIHN0YXRpYyB2b2lkIHRlc3RfdGFpbGNhbGxfY2FsbGJhY2sodm9pZClcbiBcdFJVTl9URVNUUyh0YWlsY2FsbF9jYWxsYmFjayk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3Modm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB0YWlsY2FsbF9icGYyYnBmX2ZleGl0ICpza2VsMSA9IE5VTEwsICpza2VsMiA9IE5VTEw7XG4mIzQzO1x0c3RydWN0IHRhaWxjYWxsX2JwZjJicGYyICpza2VsX3RjO1xuJiM0MztcdGludCBlcnIsIHByb2dfZmQ7XG4mIzQzO1xuJiM0MztcdHNrZWxfdGMgPSB0YWlsY2FsbF9icGYyYnBmMl9fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsX3RjLCBcJiMzNDt0YWlsY2FsbF9icGYyYnBmMl9fb3Blbl9hbmRfbG9hZFwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdHNrZWwxID0gdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlbigpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsMSwgXCYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlblwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0cHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsX3RjLVx1MDAzZXByb2dzLmNsYXNzaWZpZXJfMCk7XG4mIzQzO1x0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwxLVx1MDAzZXByb2dzLmZleGl0LCBwcm9nX2ZkLCBcJiMzNDtzdWJwcm9nX3RhaWxcJiMzNDspO1xuJiM0MztcdGlmICghQVNTRVJUX09LKGVyciwgXCYjMzQ7YnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0XCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRlcnIgPSB0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19sb2FkKHNrZWwxKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdHNrZWwxLVx1MDAzZWxpbmtzLmZleGl0ID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZShza2VsMS1cdTAwM2Vwcm9ncy5mZXhpdCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwxLVx1MDAzZWxpbmtzLmZleGl0LCBcJiMzNDticGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRza2VsMiA9IHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW4oKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbDIsIFwmIzM0O3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW5cJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IGJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldChza2VsMi1cdTAwM2Vwcm9ncy5mZXhpdCwgcHJvZ19mZCwgXCYjMzQ7c3VicHJvZ190YWlsXCYjMzQ7KTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O2JwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldFwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZChza2VsMik7XG4mIzQzO1x0QVNTRVJUX09LKGVyciwgXCYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZFwmIzM0Oyk7XG4mIzQzO1xuJiM0MztvdXQ6XG4mIzQzO1x0dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fZGVzdHJveShza2VsMSk7XG4mIzQzO1x0dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fZGVzdHJveShza2VsMik7XG4mIzQzO1x0dGFpbGNhbGxfYnBmMmJwZjJfX2Rlc3Ryb3koc2tlbF90Yyk7XG4mIzQzO31cbiYjNDM7XG4gdm9pZCB0ZXN0X3RhaWxjYWxscyh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RhaWxjYWxsXzFcJiMzNDspKVxuQEAgLTE5NzQsNCAmIzQzOzIwMjAsNiBAQCB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpXG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDt0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2VcJiMzNDspKVxuIFx0XHR0ZXN0X3RhaWxjYWxsX2NncnBfc3RvcmFnZV9ub19zdG9yYWdlX2JyaWRnZSgpO1xuIFx0dGVzdF90YWlsY2FsbF9jYWxsYmFjaygpO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3NcJiMzNDspKVxuJiM0MztcdFx0dGVzdF90YWlsY2FsbF9icGYyYnBmX2ZleGl0X2xpbmtzKCk7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE3OjM1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaGVja19hdHRhY2hfYnRmX2lkJiMzNDssCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX3NldF9mbGFncyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIHRyYW1wb2xpbmUgZmxhZ3Mgd2VyZSBvdmVyd3JpdHRlbiBpbnN0ZWFkIG9mIGJlaW5nIE9SLWVkLCBhbmQgd2l0aG91dCBhIGxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGFmZmVjdHMgdGFpbCBjYWxscyBhbmQgdHJhbXBvbGluZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE3M2QzNjlkODA1NTMwMmJjZGExY2NiMDRiZjZhMTQzODQ3ZjBiNWIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAyMyAxNzozNTowOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmLmggYi9pbmNsdWRlL2xpbnV4L2JwZi5oCmluZGV4IGUwNjZmNDRhOWMwNTgwLi43YmZjMjg2NzMxMjQ0OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9icGYuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2JwZi5oCkBAIC0xNTIzLDYgJiM0MzsxNTIzLDcgQEAgaW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLAogCQkJCXN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTsKIGludCBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLAogCQkJCXN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTsKJiM0Mzt2b2lkIGJwZl90cmFtcG9saW5lX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgZmxhZ3MpOwogCiAvKgogICogV2hlbiB0aGUgYXJjaGl0ZWN0dXJlIHN1cHBvcnRzIFNUQVRJQ19DQUxMIHJlcGxhY2UgdGhlIGJwZl9kaXNwYXRjaGVyX2ZuCkBAIC0xNjQ2LDYgJiM0MzsxNjQ3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywKIHsKIAlyZXR1cm4gLUVOT1RTVVBQOwogfQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3Moc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIGZsYWdzKSB7fQogI2VuZGlmCiAKIHN0cnVjdCBicGZfZnVuY19pbmZvX2F1eCB7CmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jCmluZGV4IDZlYWRmNjRmN2VjOTBmLi4xMjlkMDdkYjExN2VjNyAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi90cmFtcG9saW5lLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi90cmFtcG9saW5lLmMKQEAgLTY3MCw2ICYjNDM7NjcwLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICpicGZfdHJhbXBfaW1hZ2VfYWxsb2ModTY0IGtleSwgaW50IHNpemUpCiAJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIH0KIAomIzQzO3ZvaWQgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBmbGFncykKJiM0Mzt7CiYjNDM7CXRyYW1wb2xpbmVfbG9jayh0cik7CiYjNDM7CXRyLSZndDtmbGFncyB8PSBmbGFnczsKJiM0MzsJdHJhbXBvbGluZV91bmxvY2sodHIpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIGJvb2wgbG9ja19kaXJlY3RfbXV0ZXgsCiAJCQkJIGNvbnN0IHN0cnVjdCBicGZfdHJhbXBvbGluZV9vcHMgKm9wcywgdm9pZCAqZGF0YSkKIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCA1MmJlMGExMThjY2UwNy4uNjZkOGQ5ZWFlYzA1ZjkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTE5NTIzLDcgJiM0MzsxOTUyMyw3IEBAIHN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KQogCQlyZXR1cm4gLUVOT01FTTsKIAogCWlmICh0Z3RfcHJvZyAmYW1wOyZhbXA7IHRndF9wcm9nLSZndDthdXgtJmd0O3RhaWxfY2FsbF9yZWFjaGFibGUpCi0JCXRyLSZndDtmbGFncyA9IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFg7CiYjNDM7CQlicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3ModHIsIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpOwogCiAJcHJvZy0mZ3Q7YXV4LSZndDtkc3RfdHJhbXBvbGluZSA9IHRyOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuYwppbmRleCBjNjYwMzcxNjJkYTVhZS4uYzVjOWQ2YzM1OWJiMDkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jCkBAIC0xMyw2ICYjNDM7MTMsOCBAQAogI2luY2x1ZGUgJiMzNDt0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Uuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dGFpbGNhbGxfc2xlZXBhYmxlLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3RhaWxjYWxsX2NhbGxiYWNrLnNrZWwuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDt0YWlsY2FsbF9icGYyYnBmMi5za2VsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9mZXhpdC5za2VsLmgmIzM0OwogCiAvKiB0ZXN0X3RhaWxjYWxsXzEgY2hlY2tzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYnkgcGF0Y2hpbmcgbXVsdGlwbGUgbG9jYXRpb25zCiAgKiBpbiBhIHNpbmdsZSBwcm9ncmFtIGZvciBhIHNpbmdsZSB0YWlsIGNhbGwgc2xvdCB3aXRoIG5vcC0mZ3Q7am1wLCBqbXAtJmd0O25vcApAQCAtMTkwNyw2ICYjNDM7MTkwOSw1MCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3RhaWxjYWxsX2NhbGxiYWNrKHZvaWQpCiAJUlVOX1RFU1RTKHRhaWxjYWxsX2NhbGxiYWNrKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHRlc3RfdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9saW5rcyh2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IHRhaWxjYWxsX2JwZjJicGZfZmV4aXQgKnNrZWwxID0gTlVMTCwgKnNrZWwyID0gTlVMTDsKJiM0MzsJc3RydWN0IHRhaWxjYWxsX2JwZjJicGYyICpza2VsX3RjOwomIzQzOwlpbnQgZXJyLCBwcm9nX2ZkOwomIzQzOwomIzQzOwlza2VsX3RjID0gdGFpbGNhbGxfYnBmMmJwZjJfX29wZW5fYW5kX2xvYWQoKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfdGMsICYjMzQ7dGFpbGNhbGxfYnBmMmJwZjJfX29wZW5fYW5kX2xvYWQmIzM0OykpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXNrZWwxID0gdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlbigpOwomIzQzOwlpZiAoIUFTU0VSVF9PS19QVFIoc2tlbDEsICYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlbiYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlwcm9nX2ZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWxfdGMtJmd0O3Byb2dzLmNsYXNzaWZpZXJfMCk7CiYjNDM7CWVyciA9IGJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldChza2VsMS0mZ3Q7cHJvZ3MuZmV4aXQsIHByb2dfZmQsICYjMzQ7c3VicHJvZ190YWlsJiMzNDspOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7YnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0JiMzNDspKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CWVyciA9IHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX2xvYWQoc2tlbDEpOwomIzQzOwlpZiAoIUFTU0VSVF9PSyhlcnIsICYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZCYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsMS0mZ3Q7bGlua3MuZmV4aXQgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlKHNrZWwxLSZndDtwcm9ncy5mZXhpdCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsMS0mZ3Q7bGlua3MuZmV4aXQsICYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsMiA9IHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW4oKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwyLCAmIzM0O3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW4mIzM0OykpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKJiM0MzsJZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwyLSZndDtwcm9ncy5mZXhpdCwgcHJvZ19mZCwgJiMzNDtzdWJwcm9nX3RhaWwmIzM0Oyk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXQmIzM0OykpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKJiM0MzsJZXJyID0gdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZChza2VsMik7CiYjNDM7CUFTU0VSVF9PSyhlcnIsICYjMzQ7dGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZCYjMzQ7KTsKJiM0MzsKJiM0MztvdXQ6CiYjNDM7CXRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX2Rlc3Ryb3koc2tlbDEpOwomIzQzOwl0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19kZXN0cm95KHNrZWwyKTsKJiM0MzsJdGFpbGNhbGxfYnBmMmJwZjJfX2Rlc3Ryb3koc2tlbF90Yyk7CiYjNDM7fQomIzQzOwogdm9pZCB0ZXN0X3RhaWxjYWxscyh2b2lkKQogewogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7dGFpbGNhbGxfMSYjMzQ7KSkKQEAgLTE5NzQsNCAmIzQzOzIwMjAsNiBAQCB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpCiAJaWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoJiMzNDt0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2UmIzM0OykpCiAJCXRlc3RfdGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfYnJpZGdlKCk7CiAJdGVzdF90YWlsY2FsbF9jYWxsYmFjaygpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3MmIzM0OykpCiYjNDM7CQl0ZXN0X3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3MoKTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYzMgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBUcmFtcG9saW5lIEZsYWcgVXBkYXRlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBpbnRyb2R1Y2VzIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgLCB3aGljaCBpcyB1c2VkIHdpdGhpbiBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAgaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIEltbWVkaWF0ZWx5LCBJIHNlZSBhIHNpZ25pZmljYW50IGNoYW5nZSBoZXJlLiBUaGUgcHJldmlvdXMgY29kZSBkaXJlY3RseSBhc3NpZ25lZCBgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWGAgdG8gYHRyLSZndDtmbGFnc2AuIE5vdywgaXQgY2FsbHMgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AsIHdoaWNoIGlzIGRlZmluZWQgd2l0aCBhIGxvY2sgYW5kIHVzZXMgYSBiaXR3aXNlIE9SIGFzc2lnbm1lbnQgKGB8PWApLgoKSG1tLCB0aGUgaW50cm9kdWN0aW9uIG9mIGEgc3BpbmxvY2sgdXNpbmcgYHRyYW1wb2xpbmVfbG9ja2AgYW5kIGB0cmFtcG9saW5lX3VubG9ja2AgdG8gcHJvdGVjdCBtb2RpZmljYXRpb25zIHRvIGB0ci0mZ3Q7ZmxhZ3NgIGlzIGEgY2xlYXIgaW5kaWNhdGlvbiB0aGF0IGEgcmFjZSBjb25kaXRpb24gd2FzIGlkZW50aWZpZWQsIG9yIGF0IGxlYXN0IGEgcG90ZW50aWFsIG9uZSB0aGF0IG5lZWRlZCBtaXRpZ2F0aW9uLiBUaGUgZmFjdCB0aGF0IHRoZXkmIzM5O3ZlIHJlcGxhY2VkIGEgc2ltcGxlIGFzc2lnbm1lbnQgKGA9YCkgd2l0aCBhIGJpdHdpc2UgT1IgKGB8PWApIGlzIGFsc28gZnVuY3Rpb25hbGx5IGRpZmZlcmVudC4gUHJldmlvdXNseSwgYW55IGF0dGVtcHQgdG8gYXR0YWNoIGEgZnVuY3Rpb24gd2l0aCBkaWZmZXJlbnQgZmxhZ3Mgd291bGQgYmUgb3ZlcndyaXR0ZW4uIFRoaXMgbmV3IGFwcHJvYWNoIHByZXNlcnZlcyBleGlzdGluZyBmbGFncyBhbmQgYWRkcyB0byB0aGUgc2V0LgoKU28sIHRoaXMgY2xlYXJseSBpbmRpY2F0ZXMgYSBidWcgZml4IHJlbGF0ZWQgdG8gZmxhZyBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgQlBGIHRyYW1wb2xpbmUgbWVjaGFuaXNtLiBOb3csIEkgbmVlZCB0byBjaGVjayBob3cgYGNoZWNrX2F0dGFjaF9idGZfaWRgIHVzZXMgdGhpcywgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgbmF0dXJlIG9mIHRoZSByYWNlIG9yIG92ZXJ3cml0ZSBiZWluZyBmaXhlZC4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhhdCBzcGVjaWZpYyBmdW5jdGlvbiBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBhbmQgc2VlIHdoZXJlIHRoaXMgZml0cyBpbiB0aGUgYXR0YWNobWVudCBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE3OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX2F0dGFjaF9idGZfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE5NDA1PXN0YXRpYyBib29sIGNhbl9iZV9zbGVlcGFibGUoc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzMS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTQzMjpzdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzMy17XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTMxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NTMyOmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzMy1cdFx0XHRcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yMDA1Nz1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAyMDItXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjAyMDM6XHRyZXQgPSBjaGVja19hdHRhY2hfYnRmX2lkKGVudik7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAyMDQtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE3OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MDgKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgQlBGIFZlcmlmaWVyOiBBIEZvY3VzZWQgQXBwcm9hY2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGNoZWNrX2F0dGFjaF9idGZfaWRgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgY2FsbGVkIGR1cmluZyBgYnBmX2NoZWNrYCAtIHRoYXQmIzM5O3MgYSBrZXkgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyLiBJIGtub3cgZm9yIGEgZmFjdCBpdCYjMzk7cyByZWFjaGFibGUgYW5kIGFjdHVhbGx5IHVzZWQsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIGl0IGEgc3Ryb25nIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gRGVmaW5pdGVseSB3b3J0aCBpdCBzaW5jZSBpdCYjMzk7cyBhIGNvcmUgQlBGIHZlcmlmaWVyIGNoYW5nZS4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gYGNoZWNrX2F0dGFjaF9idGZfaWRgIGlzIHRoZSBwcmltYXJ5IG9uZSwgYnV0IEkgYWxzbyBzZWUgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AgYmVpbmcgY2FsbGVkLiBIbW0sIGJ1dCB0aGF0IGZ1bmN0aW9uIGlzIHRpbnksIGEgc2ltcGxlIGhlbHBlciAtIHByb2JhYmx5IG5vdCB0aGUgYmVzdCB0YXJnZXQgZm9yIGZ1enppbmcuIFNvLCBmb2N1c2luZyBvbiBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAgZm9yIG5vdywgb3IgcGVyaGFwcyBpdHMgbXVsdGktdmFyaWFudCBjb3VudGVycGFydC4gTm93LCBiZWZvcmUgSSBkaXZlIGludG8gdGhlIGZ1enppbmcgaXRzZWxmLCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucy4gQlBGIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgd2hpY2ggaXMgZ29vZCwgYnV0IEkgc2hvdWxkIGRlZmluaXRlbHkgaW5jbHVkZSBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0pJVGAgdG8gY292ZXIgdGhlIGZ1bGwgc3BlY3RydW0gb2YgcG9zc2libGUgc2NlbmFyaW9zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE3OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnPTE3PWlmIFJDX0NPUkVcbmRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZzoxOTpjb25maWcgQlBGX0xJUkNfTU9ERTJcbmRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZy0yMC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgZUJQRiBwcm9ncmFtcyBhdHRhY2hlZCB0byBsaXJjIGRldmljZXNcJiMzNDtcbi0tXG5rZXJuZWwvS2NvbmZpZy5sb2Nrcz0yNDI9Y29uZmlnIFFVRVVFRF9TUElOTE9DS1Ncbi0tXG5rZXJuZWwvS2NvbmZpZy5sb2Nrcy0yNDUtXG5rZXJuZWwvS2NvbmZpZy5sb2NrczoyNDY6Y29uZmlnIEJQRl9BUkNIX1NQSU5MT0NLXG5rZXJuZWwvS2NvbmZpZy5sb2Nrcy0yNDctXHRib29sXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTMtIyBCUEYgaW50ZXJwcmV0ZXIgdGhhdCwgZm9yIGV4YW1wbGUsIGNsYXNzaWMgc29ja2V0IGZpbHRlcnMgZGVwZW5kIG9uLlxua2VybmVsL2JwZi9LY29uZmlnOjQ6Y29uZmlnIEJQRlxua2VybmVsL2JwZi9LY29uZmlnLTUtXHRib29sXG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cdGJvb2wgXCYjMzQ7RW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNTctXG5rZXJuZWwvYnBmL0tjb25maWc6NTg6Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL0tjb25maWctNTktXHRib29sIFwmIzM0O1Blcm1hbmVudGx5IGVuYWJsZSBCUEYgSklUIGFuZCByZW1vdmUgQlBGIGludGVycHJldGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTY4LVxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNzItXG5rZXJuZWwvYnBmL0tjb25maWc6NzM6Y29uZmlnIEJQRl9VTlBSSVZfREVGQVVMVF9PRkZcbmtlcm5lbC9icGYvS2NvbmZpZy03NC1cdGJvb2wgXCYjMzQ7RGlzYWJsZSB1bnByaXZpbGVnZWQgQlBGIGJ5IGRlZmF1bHRcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9OTA9c291cmNlIFwmIzM0O2tlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnXCYjMzQ7XG5rZXJuZWwvYnBmL0tjb25maWctOTEtXG5rZXJuZWwvYnBmL0tjb25maWc6OTI6Y29uZmlnIEJQRl9MU01cbmtlcm5lbC9icGYvS2NvbmZpZy05My1cdGJvb2wgXCYjMzQ7RW5hYmxlIEJQRiBMU00gSW5zdHJ1bWVudGF0aW9uXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnOjI6bWVudWNvbmZpZyBCUEZfUFJFTE9BRFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWctMy1cdGJvb2wgXCYjMzQ7UHJlbG9hZCBCUEYgZmlsZSBzeXN0ZW0gd2l0aCBrZXJuZWwgc3BlY2lmaWMgcHJvZ3JhbSBhbmQgbWFwIGl0ZXJhdG9yc1wmIzM0O1xuLS1cbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnPTE0PWlmIEJQRl9QUkVMT0FEXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZzoxNTpjb25maWcgQlBGX1BSRUxPQURfVU1EXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O2JwZl9wcmVsb2FkIGtlcm5lbCBtb2R1bGVcJiMzNDtcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz04Mzk9Y29uZmlnIEVQUk9CRV9FVkVOVFNcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTItXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4NTM6Y29uZmlnIEJQRl9FVkVOVFNcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZz04NjU9Y29uZmlnIFBST0JFX0VWRU5UU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTg2Ny1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjg2ODpjb25maWcgQlBGX0tQUk9CRV9PVkVSUklERVxua2VybmVsL3RyYWNlL0tjb25maWctODY5LVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIHByb2dyYW1zIHRvIG92ZXJyaWRlIGEga3Byb2JlZCBmdW5jdGlvblwmIzM0O1xuLS1cbm5ldC9LY29uZmlnPTM1ND1jb25maWcgQlFMXG4tLVxubmV0L0tjb25maWctMzYwLVxubmV0L0tjb25maWc6MzYxOmNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxubmV0L0tjb25maWctMzYyLVx0Ym9vbCBcJiMzNDtlbmFibGUgQlBGIFNUUkVBTV9QQVJTRVJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDMzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgQlBGIFRyYW1wb2xpbmUgSW1wbGVtZW50YXRpb24qKgoKQWxyaWdodCwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgIGFuZCBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiAgR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgQlBGIHN1YnN5c3RlbSwgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBhbHRlcmluZyBib3RoIHRyYW1wb2xpbmUgY29kZSBhbmQgdGhlIHZlcmlmaWVyIHN0cm9uZ2x5IHN1Z2dlc3RzIHNvbWUga2luZCBvZiBpbnN0cnVtZW50YXRpb24sIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgb3IsIHBvdGVudGlhbGx5LCBhIHNlY3VyaXR5LXJlbGF0ZWQgY2hhbmdlLiAgVGhlIHZlcmlmaWVyIGlzIHRoZSBoZWFydCBvZiBCUEYgc2VjdXJpdHksIHNvIGFueSBhbHRlcmF0aW9uIHRoZXJlIHdhcnJhbnRzICpjYXJlZnVsKiBzY3J1dGlueS4gSXQgY291bGQgYmUgZml4aW5nIGEgYnVnLCBleHBhbmRpbmcgZnVuY3Rpb25hbGl0eSwgb3IgZXZlbiBoYXJkZW5pbmcgYWdhaW5zdCBhIG5ldyBhdHRhY2sgdmVjdG9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlIHRyYW1wb2xpbmUgYW5kIHRoZSB2ZXJpZmllciBpbiB0aGlzIGNvbnRleHQuCgpNeSBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIHdpbGwgYmUgdG8gZGV0ZXJtaW5lIHdoYXQga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFjdHVhbGx5IGVuYWJsZSB0aGlzIHRyYW1wb2xpbmUgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBhcHBsaWNhYmlsaXR5IG9mIHRoZXNlIGNoYW5nZXMuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgZmVhdHVyZSB0aGF0JiMzOTtzIHVuaXZlcnNhbGx5IGF2YWlsYWJsZSwgb3IgaXMgaXQgc3BlY2lmaWMgdG8gY2VydGFpbiBhcmNoaXRlY3R1cmVzLCBrZXJuZWwgdmVyc2lvbnMsIG9yIHVzZSBjYXNlcz8gVGhpcyBjb250ZXh0IGlzIGNydWNpYWwgdG8gZ3Jhc3BpbmcgdGhlIHRydWUgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIEtub3dpbmcgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zIHdpbGwgZGljdGF0ZSBteSBpbnZlc3RpZ2F0aW9uIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dHJhbXBvbGluZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGRpc2FzbS5vIG1wcm9nLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSB0cmFtcG9saW5lLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnRmLm8gbWVtYWxsb2MubyBycXNwaW5sb2NrLm8gc3RyZWFtLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDcxCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBwcmVzZW50ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6CgoqKlVuZGVyc3RhbmRpbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2Uga2VybmVsIGJ1aWxkIGRlcGVuZGVuY2llcywgYW5kIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGJ1dCBjcnVjaWFsLiBJIHNlZSB0aGF0IHRoZSBvYmplY3QgZmlsZSBgdHJhbXBvbGluZS5vYCBleHBsaWNpdGx5ICpuZWVkcyogYENPTkZJR19CUEZfSklUYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyB0aGUgSnVzdC1Jbi1UaW1lIGNvbXBpbGVyIGlzIGZ1bmRhbWVudGFsIHRvIGhvdyBCUEYgdHJhbXBvbGluZXMgZnVuY3Rpb24gYW5kIGV4ZWN1dGUgZWZmaWNpZW50bHkuIE5vIEpJVCwgbm8gdHJhbXBvbGluZSDigJMgaXQmIzM5O3MgYSBkaXJlY3QgcmVxdWlyZW1lbnQgZm9yIHRoYXQgb3B0aW1pemVkIGV4ZWN1dGlvbiBwYXRoLgoKVGhlbiwgdGhlcmUmIzM5O3MgYHZlcmlmaWVyLm9gLiBJdCYjMzk7cyBkZXBlbmRlbnQgb24gYENPTkZJR19CUEZfU1lTQ0FMTGAuIEFnYWluLCBsb2dpY2FsLiBUaGUgdmVyaWZpZXIgaGFzIHRvIGludGVyZmFjZSB3aXRoIHRoZSBzeXN0ZW0gY2FsbCBsYXllciwgdmFsaWRhdGluZyB0aGUgQlBGIGJ5dGVjb2RlIHRvIGVuc3VyZSBpdCYjMzk7cyBzYWZlIHRvIHJ1biBpbiB0aGUga2VybmVsLiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGF0IGNydWNpYWwgYnJpZGdlLCBhbGxvd2luZyB0aGUgdmVyaWZpZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgc3lzdGVtIGNhbGxzIGFuZCBlbmZvcmNlIHNlY3VyaXR5LiBXaXRob3V0IGl0LCB0aGUgd2hvbGUgdmVyaWZpY2F0aW9uIHByb2Nlc3MgZmFsbHMgYXBhcnQuIEl0IGlzIGEgY3JpdGljYWwgZGVwZW5kZW5jeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTc6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmVyaWZpZXIubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEwLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTI0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFRoaXMgQlBGIFBhdGNoKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaW52b2x2ZXMgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9KSVRgLCB3aGljaCBpbW1lZGlhdGVseSBzaWduYWxzIGl0cyBpbXBvcnRhbmNlLiBMZXQmIzM5O3MgZGlnIGluLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIHNuaXBwZXQgYWdhaW46CgpgYGBjCiAJaWYgKHRndF9wcm9nICZhbXA7JmFtcDsgdGd0X3Byb2ctJmd0O2F1eC0mZ3Q7dGFpbF9jYWxsX3JlYWNoYWJsZSkKLQkJdHItJmd0O2ZsYWdzID0gQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWDsKJiM0MzsJCWJwZl90cmFtcG9saW5lX3NldF9mbGFncyh0ciwgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCk7CmBgYAoKUmlnaHQsIGl0JiMzOTtzIGZpeGluZyBhIHN1YnRsZSBidXQgY3JpdGljYWwgYnVnLiBFc3NlbnRpYWxseSwgdGhlIGNvZGUgd2FzIG92ZXJ3cml0aW5nIGB0ci0mZ3Q7ZmxhZ3NgIGluc3RlYWQgb2YgdXNpbmcgYSBiaXR3aXNlIE9SLCBhbmQgY3JpdGljYWxseSwgdGhlcmUgd2FzIG5vIGxvY2tpbmcgaW4gcGxhY2UsIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBzY2VuYXJpby4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY29ycmVjdG5lc3MgZml4LCBub3RoaW5nIHN1cGVyZmljaWFsLgoKVGhlIHByaW1hcnkgc3ltYm9scyBvZiBpbnRlcmVzdCBhcmUgZ29pbmcgdG8gYmUgYGNoZWNrX2F0dGFjaF9idGZfaWRgIGFuZCBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYC4gV2FpdCBhIG1pbnV0ZSwgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AgaXMgdGlueSEgSXQmIzM5O3MgbGlrZWx5IGEgdmVyeSBzaW1wbGUgaGVscGVyIGZ1bmN0aW9uLiBIbW1tLCBwZXJoYXBzIGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIG1vcmUgcmVsZXZhbnQ/IEkgc2hvdWxkIGRvdWJsZSBjaGVjayB3aGVyZSBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYCBpcyBjYWxsZWQuIEFoLCBpdCYjMzk7cyBjYWxsZWQgaW5zaWRlIGBjaGVja19hdHRhY2hfYnRmX2lkYCwgdGhhdCYjMzk7cyB0aGUga2V5IGNhbGwgc2l0ZS4gSSB0aGluayBJIHdpbGwgZm9jdXMgb24gYGNoZWNrX2F0dGFjaF9idGZfaWRgLCBJJiMzOTtsbCBpbmNsdWRlIHRoYXQgaW4gbXkgc2NvcGUuCgpOb3csIGxldCBtZSBnbyB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBleGFtaW5lIGBjaGVja19hdHRhY2hfYnRmX2lkYCBpbiBtb3JlIGRldGFpbC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBsb2dpYyBpcyBsaWtlbHkgdG8gcmVzaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19hdHRhY2hfYnRmX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTQwNT1zdGF0aWMgYm9vbCBjYW5fYmVfc2xlZXBhYmxlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MzEtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk0MzI6c3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MzMte1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzMS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTUzMjppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1MzMtXHRcdFx0XHQgIHN0cnVjdCBicGZfYXR0YWNoX3RhcmdldF9pbmZvICp0Z3RfaW5mbylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAwNTc9aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjAyLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMjAzOlx0cmV0ID0gY2hlY2tfYXR0YWNoX2J0Zl9pZChlbnYpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjA0LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk2MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDoKCioqQW5hbHl6aW5nIEJQRiBGdW5jdGlvbmFsaXR5IGZvciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21lIGNvZGUgcmVsYXRlZCB0byBCUEYsIHNwZWNpZmljYWxseSBhcm91bmQgZnVuY3Rpb24gY2FsbHMgYW5kIGxpbmtpbmcuIGBjaGVja19hdHRhY2hfYnRmX2lkYCBhbmQgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2Agc2VlbSB0byBiZSB0aGUga2V5IGFyZWFzIEkgbmVlZCB0byBmb2N1cyBvbi4gSSYjMzk7bSBzZWVpbmcgdGhhdCB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0pJVGAuCgpJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgdGhlcmUgYXJlIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmbG9hdGluZyBhcm91bmQuIFRoZSB0ZXN0IGFkZGVkLCBgdGVzdF90YWlsY2FsbF9icGYyYnBmX2ZleGl0X2xpbmtzYCwgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBsZXZlcmFnZXMgYm90aCBgZmV4aXRgIGFuZCBgdGFpbGNhbGxgLCB3aGljaCBpcyBhIGNvbXBsZXggY29tYmluYXRpb24sIGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lcyB0byBjb250ZXh0IHN3aXRjaGVzLiBJIHJlbWVtYmVyIHRoYXQgdGhlIGBmZXhpdGAgZmVhdHVyZSBoYXMgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiBEb2VzIGBmZXhpdGAgcmVxdWlyZSBgQlBGX0VWRU5UU2Agb3IgYEJQRl9KSVRgPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0IGRlcGVuZGVuY3kuIFRpbWUgdG8gZGl2ZSBpbnRvIGBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYYCBhbmQgc2VlIHdoYXQgaXQgdGVsbHMgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDE3OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0xODM3PXN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGppdF9jdHggKmN0eCwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xOTQyLVx0LyogUm9vbSBvZiB0cmFtcG9saW5lIGZyYW1lIHRvIHN0b3JlIHRhaWxfY2FsbF9jbnRfcHRyICovXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE5NDM6XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpIHtcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTk0NC1cdFx0c3RhY2tfc2l6ZSAmIzQzOz0gODtcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5ODMtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE5ODQ6XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5ODUtXHRcdGVtaXRfaW5zbihjdHgsIHN0ZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9GUCwgLXRjY19wdHJfb2ZmKTtcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIwNTEtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIwNTI6XHRcdGlmIChmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjA1My1cdFx0XHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfRlAsIC10Y2NfcHRyX29mZik7XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMTA0LVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMTA1Olx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMTA2LVx0XHRlbWl0X2luc24oY3R4LCBsZGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfRlAsIC10Y2NfcHRyX29mZik7XG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz04MTI9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcndfaW1hZ2UsXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy05NTAtXHRpZiAoKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9DQUxMX09SSUcpIFx1MDAyNlx1MDAyNlxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzo5NTE6XHRcdChmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCkpXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTk1Mi1cdFx0YnBmX2ZyYW1lX3NpemUgJiM0Mzs9IEJQRl9QUENfVEFJTENBTEw7XG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMDczLVx0XHQvKiBSZXBsaWNhdGUgdGFpbF9jYWxsX2NudCBiZWZvcmUgY2FsbGluZyB0aGUgb3JpZ2luYWwgQlBGIHByb2cgKi9cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6MTA3NDpcdFx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMDc1LVx0XHRcdGJwZl90cmFtcG9saW5lX3NldHVwX3RhaWxfY2FsbF9pbmZvKGltYWdlLCBjdHgsIGJwZl9mcmFtZV9zaXplLCByNF9vZmYpO1xuLS1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtMTA5MC1cdFx0LyogUmVzdG9yZSB1cGRhdGVkIHRhaWxfY2FsbF9jbnQgKi9cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6MTA5MTpcdFx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMDkyLVx0XHRcdGJwZl90cmFtcG9saW5lX3Jlc3RvcmVfdGFpbF9jYWxsX2NudChpbWFnZSwgY3R4LCBicGZfZnJhbWVfc2l6ZSwgcjRfb2ZmKTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTk5Mj1zdGF0aWMgaW50IF9fYXJjaF9wcmVwYXJlX2JwZl90cmFtcG9saW5lKHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmltLFxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTA1Mi1cdCAqXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEwNTM6XHQgKiBGUCAtIHRjY19vZmYgICAgIFsgdGFpbCBjYWxsIGNvdW50XHRdIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFhcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTA1NC1cdCAqXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMTAxLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMTAyOlx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTExMDMtXHRcdHN0YWNrX3NpemUgJiM0Mzs9IDg7XG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMTQxLVx0Lyogc3RvcmUgdGFpbCBjYWxsIGNvdW50ICovXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjExNDI6XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTExNDMtXHRcdGVtaXRfc2QoUlZfUkVHX0ZQLCAtdGNjX29mZiwgUlZfUkVHX1RDQywgY3R4KTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEyMDMtXHRcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGNhbGxpbmcgdGhlIG9yaWcgYnBmIGZ1bmMgKi9cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTIwNDpcdFx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMjA1LVx0XHRcdGVtaXRfbGQoUlZfUkVHX1RDQywgLXRjY19vZmYsIFJWX1JFR19GUCwgY3R4KTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEyMDktXHRcdC8qIHN0b3JlIHVwZGF0ZWQgVENDIGJhY2sgdG8gc3RhY2sgYWZ0ZXIgY2FsbGluZyB0aGUgb3JpZyBicGYgZnVuYyAqL1xuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMjEwOlx0XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEyMTEtXHRcdFx0ZW1pdF9zZChSVl9SRUdfRlAsIC10Y2Nfb2ZmLCBSVl9SRUdfVENDLCBjdHgpO1xuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTI2NC1cdC8qIHJlc3RvcmUgVENDIGZyb20gc3RhY2sgdG8gUlZfUkVHX1RDQyAqL1xuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMjY1Olx0aWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMjY2LVx0XHRlbWl0X2xkKFJWX1JFR19UQ0MsIC10Y2Nfb2ZmLCBSVl9SRUdfRlAsIGN0eCk7XG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTMzNDY9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcndfaW1hZ2UsXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM0MDctXHQgKiBSQlAgLSBhcmdfc3RhY2tfb2ZmIFsgc3RhY2tfYXJnMSBdXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzQwODpcdCAqIFJTUCAgICAgICAgICAgICAgICAgWyB0YWlsX2NhbGxfY250X3B0ciBdIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFhcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNDA5LVx0ICovXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM0OTQtXHR9XG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzQ5NTpcdGlmIChmbGFncyBcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNDk2LVx0XHRFTUlUMSgweDUwKTtcdFx0LyogcHVzaCByYXggKi9cbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzU1Mi1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNTUzOlx0XHRpZiAoZmxhZ3MgXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpIHtcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNTU0LVx0XHRcdC8qIEJlZm9yZSBjYWxsaW5nIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiwgbG9hZCB0aGVcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzYxOS1cdFx0fVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jOjM2MjA6XHR9IGVsc2UgaWYgKGZsYWdzIFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzYyMS1cdFx0LyogQmVmb3JlIHJ1bm5pbmcgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLCBsb2FkIHRoZVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MTIxNj1zdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwge1xuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMTI1Ni0gKi9cbmluY2x1ZGUvbGludXgvYnBmLmg6MTI1NzojZGVmaW5lIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFhcdEJJVCg3KVxuaW5jbHVkZS9saW51eC9icGYuaC0xMjU4LVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTY4MD1zdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTY5OC1cdC8qIGNsZWFyIGFsbCBiaXRzIGV4Y2VwdCBTSEFSRV9JUE1PRElGWSBhbmQgVEFJTF9DQUxMX0NUWCAqL1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6Njk5Olx0dHItXHUwMDNlZmxhZ3MgXHUwMDI2PSAoQlBGX1RSQU1QX0ZfU0hBUkVfSVBNT0RJRlkgfCBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTcwMC1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk0MzI9c3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTI1LVx0aWYgKHRndF9wcm9nIFx1MDAyNlx1MDAyNiB0Z3RfcHJvZy1cdTAwM2VhdXgtXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTUyNjpcdFx0YnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHRyLCBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUyNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwMTUKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBDb2RlIGZvciBgZmV4aXRgIGFuZCBUcmFjaW5nKioKCk9rYXksIHNvIHRoaXMgdGVzdCBlbXBsb3lzIGBmZXhpdGAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGBCUEZfRVZFTlRTYCBpcyBlc3NlbnRpYWwgaGVyZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIEJQRiwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYGZleGl0YCBmYWxscyB1bmRlciB0aGUgY2F0ZWdvcnkgb2YgYSB0cmFjaW5nIHByb2dyYW0gdHlwZS4gQW5kLCBhcyBJIHJlY2FsbCwgdGhlc2UgdHJhY2luZyBwcm9ncmFtcyBnZW5lcmFsbHkgcmVseSBvbiB0aGUgZW5hYmxpbmcgb2YgYEJQRl9FVkVOVFNgLiBUaGVyZWZvcmUsIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBhbmQgZW5zdXJlIHRoZSBjb2RlIGZ1bmN0aW9ucyBjb3JyZWN0bHksIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gYEJQRl9FVkVOVFNgLiBJdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0VWRU5UUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvdHJhY2UvS2NvbmZpZz04Mzk9Y29uZmlnIEVQUk9CRV9FVkVOVFNcbi0tXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTItXG5rZXJuZWwvdHJhY2UvS2NvbmZpZzo4NTM6Y29uZmlnIEJQRl9FVkVOVFNcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMTc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzMTMKCQkJCQkJCW91dHB1dDogMTIyCgkJCQkJCQl0aG91Z2h0czogNDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEJQRiBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGJlc3QgZnV6emluZyBjb25maWd1cmF0aW9uIGZvciB0aGlzIEJQRiBwYXRjaC4gQmFzZWQgb24gdGhlIGNvZGUgY2hhbmdlcywgYEJQRl9FVkVOVFNgIGRlZmluaXRlbHkgbmVlZHMgdG8gYmUgaW5jbHVkZWQg4oCTIGl0JiMzOTtzIGNydWNpYWwgZm9yIHRoZSB0cmFjaW5nIHByb2dyYW1zIGFmZmVjdGVkIGJ5IHRoaXMuIEFuZCwgb2YgY291cnNlLCB3ZSYjMzk7bGwgbmVlZCBgQlBGX0pJVGAgc2luY2UgdHJhbXBvbGluZXMgYXJlIGludm9sdmVkLCBhbmQgYEJQRl9TWVNDQUxMYCBnb2VzIHdpdGhvdXQgc2F5aW5nIGFzIHRoZSBmb3VuZGF0aW9uIGZvciBCUEYuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQgYXJlIGNsZWFybHkgYGNoZWNrX2F0dGFjaF9idGZfaWRgIGFuZCBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYC4gV2FpdCwgSSBuZWVkIHRvIG1ha2UgYSBub3RlIGhlcmU7IHdoaWxlIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgIGNhbiBiZSBpbmxpbmVkLCBpdCYjMzk7cyBhbHNvIGltcGxlbWVudGVkIGluIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AsIG1ha2luZyBpdCBhIHZhbGlkIGZvY3VzLiBJdCYjMzk7cyBub3Qgc3RhdGljIGVpdGhlciwgZ29vZCB0byBrbm93LgoKQWxyaWdodCwgbGV0IG1lIHN1bW1hcml6ZSBteSB0aGlua2luZyBoZXJlIHNvIGZhci4gVGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmc7IHRoZSBwYXRjaCBpcyBmaXhpbmcgYSBjb3JlIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgaW52b2x2ZXMgcG90ZW50aWFsbHkgb3ZlcndyaXRpbmcgZmxhZ3Mgd2l0aG91dCBwcm9wZXIgbG9ja2luZy4gSXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aCBzZWN1cml0eSBpbXBsaWNhdGlvbnMuIEkmIzM5O3ZlIGdvdCB0d28gY2xlYXIgZm9jdXMgc3ltYm9sczogYGNoZWNrX2F0dGFjaF9idGZfaWRgIGFuZCBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYC4gQW5kIHRoZSBjb25maWcgZmxhZ3MgSSYjMzk7bSB1c2luZyBhcmUgYEJQRl9TWVNDQUxMYCwgYEJQRl9KSVRgLCBhbmQgYEJQRl9FVkVOVFNgLgoKSG9sZCBvbiwgSSBzZWUgdGhhdCBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYCBpcyBleGNsdXNpdmVseSBjYWxsZWQgZnJvbSBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAuIFNob3VsZCBJIGFkZCBgYnBmX3RyYW1wb2xpbmVfdXBkYXRlYD8gTm8sIG5vLCBJIHRoaW5rIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgIGlzIHRoZSByaWdodCBjYWxsIGhlcmUuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRob3NlIGNvbmZpZyBvcHRpb25zLiBZZXMsIGBCUEZfRVZFTlRTYCBpcyBjb3JyZWN0LiBJdCBlbmFibGVzIHRob3NlIGZlbnRyeS9mZXhpdC10eXBlIHRyYWNpbmcgcHJvZ3JhbXMgdGhhdCBhcmUgbGlrZWx5IHJlbGV2YW50IGhlcmUuIEFuZCBgQlBGX0pJVGAgaXMgdml0YWwgZm9yIHRyYW1wb2xpbmVzIHRvIGZ1bmN0aW9uLiBgQlBGX1NZU0NBTExgIGlzIGEgbm8tYnJhaW5lci4KCk5vdyB0aGF0IEkmIzM5O3ZlIHJlZmluZWQgbXkgYXBwcm9hY2gsIGl0JiMzOTtzIHRpbWUgdG8gc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAxNzozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfYXR0YWNoX2J0Zl9pZCYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9zZXRfZmxhZ3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSB0cmFtcG9saW5lIGZsYWdzIHdlcmUgb3ZlcndyaXR0ZW4gaW5zdGVhZCBvZiBiZWluZyBPUi1lZCwgYW5kIHdpdGhvdXQgYSBsb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHRhaWwgY2FsbHMgYW5kIHRyYW1wb2xpbmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaGVja19hdHRhY2hfYnRmX2lkJiMzNDssCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX3NldF9mbGFncyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgQlBGIHZlcmlmaWVyIHdoZXJlIHRyYW1wb2xpbmUgZmxhZ3Mgd2VyZSBvdmVyd3JpdHRlbiBpbnN0ZWFkIG9mIGJlaW5nIE9SLWVkLCBhbmQgd2l0aG91dCBhIGxvY2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEJQRiBsb2dpYyB0aGF0IGFmZmVjdHMgdGFpbCBjYWxscyBhbmQgdHJhbXBvbGluZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNToxMS4xMTcyMDI2OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTMzODAxNTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfYXR0YWNoX2J0Zl9pZFwiLFxuICAgIFwiYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIEJQRiB2ZXJpZmllciB3aGVyZSB0cmFtcG9saW5lIGZsYWdzIHdlcmUgb3ZlcndyaXR0ZW4gaW5zdGVhZCBvZiBiZWluZyBPUi1lZCwgYW5kIHdpdGhvdXQgYSBsb2NrLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBCUEYgbG9naWMgdGhhdCBhZmZlY3RzIHRhaWwgY2FsbHMgYW5kIHRyYW1wb2xpbmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNToxMS4xMTcyMDk2OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxNzUwODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTczZDM2OWQ4MDU1MzAyYmNkYTFjY2IwNGJmNmExNDM4NDdmMGI1YlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAxNzozNTowOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS9saW51eC9icGYuaFxcbmluZGV4IGUwNjZmNDRhOWMwNTgwLi43YmZjMjg2NzMxMjQ0OSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JwZi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9icGYuaFxcbkBAIC0xNTIzLDYgKzE1MjMsNyBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTtcXG4gaW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTtcXG4rdm9pZCBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3Moc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIGZsYWdzKTtcXG4gXFxuIC8qXFxuICAqIFdoZW4gdGhlIGFyY2hpdGVjdHVyZSBzdXBwb3J0cyBTVEFUSUNfQ0FMTCByZXBsYWNlIHRoZSBicGZfZGlzcGF0Y2hlcl9mblxcbkBAIC0xNjQ2LDYgKzE2NDcsNyBAQCBzdGF0aWMgaW5saW5lIGludCBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbiB7XFxuIFxcdHJldHVybiAtRU5PVFNVUFA7XFxuIH1cXG4rc3RhdGljIGlubGluZSB2b2lkIGJwZl90cmFtcG9saW5lX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgZmxhZ3MpIHt9XFxuICNlbmRpZlxcbiBcXG4gc3RydWN0IGJwZl9mdW5jX2luZm9fYXV4IHtcXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi90cmFtcG9saW5lLmMgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xcbmluZGV4IDZlYWRmNjRmN2VjOTBmLi4xMjlkMDdkYjExN2VjNyAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xcbisrKyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXFxuQEAgLTY3MCw2ICs2NzAsMTMgQEAgc3RhdGljIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmJwZl90cmFtcF9pbWFnZV9hbGxvYyh1NjQga2V5LCBpbnQgc2l6ZSlcXG4gXFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4gfVxcbiBcXG4rdm9pZCBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3Moc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdTMyIGZsYWdzKVxcbit7XFxuK1xcdHRyYW1wb2xpbmVfbG9jayh0cik7XFxuK1xcdHRyLVxcdTAwM2VmbGFncyB8PSBmbGFncztcXG4rXFx0dHJhbXBvbGluZV91bmxvY2sodHIpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxcbiBcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLCB2b2lkICpkYXRhKVxcbiB7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDUyYmUwYTExOGNjZTA3Li42NmQ4ZDllYWVjMDVmOSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtMTk1MjMsNyArMTk1MjMsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRpZiAodGd0X3Byb2cgXFx1MDAyNlxcdTAwMjYgdGd0X3Byb2ctXFx1MDAzZWF1eC1cXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSlcXG4tXFx0XFx0dHItXFx1MDAzZWZsYWdzID0gQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWDtcXG4rXFx0XFx0YnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHRyLCBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKTtcXG4gXFxuIFxcdHByb2ctXFx1MDAzZWF1eC1cXHUwMDNlZHN0X3RyYW1wb2xpbmUgPSB0cjtcXG4gXFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcXG5pbmRleCBjNjYwMzcxNjJkYTVhZS4uYzVjOWQ2YzM1OWJiMDkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuY1xcbkBAIC0xMyw2ICsxMyw4IEBAXFxuICNpbmNsdWRlIFxcXCJ0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Uuc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidGFpbGNhbGxfc2xlZXBhYmxlLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRhaWxjYWxsX2NhbGxiYWNrLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInRhaWxjYWxsX2JwZjJicGYyLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInRhaWxjYWxsX2JwZjJicGZfZmV4aXQuc2tlbC5oXFxcIlxcbiBcXG4gLyogdGVzdF90YWlsY2FsbF8xIGNoZWNrcyBiYXNpYyBmdW5jdGlvbmFsaXR5IGJ5IHBhdGNoaW5nIG11bHRpcGxlIGxvY2F0aW9uc1xcbiAgKiBpbiBhIHNpbmdsZSBwcm9ncmFtIGZvciBhIHNpbmdsZSB0YWlsIGNhbGwgc2xvdCB3aXRoIG5vcC1cXHUwMDNlam1wLCBqbXAtXFx1MDAzZW5vcFxcbkBAIC0xOTA3LDYgKzE5MDksNTAgQEAgc3RhdGljIHZvaWQgdGVzdF90YWlsY2FsbF9jYWxsYmFjayh2b2lkKVxcbiBcXHRSVU5fVEVTVFModGFpbGNhbGxfY2FsbGJhY2spO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0ZXN0X3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3Modm9pZClcXG4re1xcbitcXHRzdHJ1Y3QgdGFpbGNhbGxfYnBmMmJwZl9mZXhpdCAqc2tlbDEgPSBOVUxMLCAqc2tlbDIgPSBOVUxMO1xcbitcXHRzdHJ1Y3QgdGFpbGNhbGxfYnBmMmJwZjIgKnNrZWxfdGM7XFxuK1xcdGludCBlcnIsIHByb2dfZmQ7XFxuK1xcbitcXHRza2VsX3RjID0gdGFpbGNhbGxfYnBmMmJwZjJfX29wZW5fYW5kX2xvYWQoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfdGMsIFxcXCJ0YWlsY2FsbF9icGYyYnBmMl9fb3Blbl9hbmRfbG9hZFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRza2VsMSA9IHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW4oKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwxLCBcXFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlblxcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdHByb2dfZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbF90Yy1cXHUwMDNlcHJvZ3MuY2xhc3NpZmllcl8wKTtcXG4rXFx0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwxLVxcdTAwM2Vwcm9ncy5mZXhpdCwgcHJvZ19mZCwgXFxcInN1YnByb2dfdGFpbFxcXCIpO1xcbitcXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFxcXCJicGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXRcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRlcnIgPSB0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19sb2FkKHNrZWwxKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZFxcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdHNrZWwxLVxcdTAwM2VsaW5rcy5mZXhpdCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Uoc2tlbDEtXFx1MDAzZXByb2dzLmZleGl0KTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwxLVxcdTAwM2VsaW5rcy5mZXhpdCwgXFxcImJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2VcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRza2VsMiA9IHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW4oKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwyLCBcXFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlblxcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdGVyciA9IGJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldChza2VsMi1cXHUwMDNlcHJvZ3MuZmV4aXQsIHByb2dfZmQsIFxcXCJzdWJwcm9nX3RhaWxcXFwiKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwiYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0XFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0ZXJyID0gdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZChza2VsMik7XFxuK1xcdEFTU0VSVF9PSyhlcnIsIFxcXCJ0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19sb2FkXFxcIik7XFxuK1xcbitvdXQ6XFxuK1xcdHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX2Rlc3Ryb3koc2tlbDEpO1xcbitcXHR0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19kZXN0cm95KHNrZWwyKTtcXG4rXFx0dGFpbGNhbGxfYnBmMmJwZjJfX2Rlc3Ryb3koc2tlbF90Yyk7XFxuK31cXG4rXFxuIHZvaWQgdGVzdF90YWlsY2FsbHModm9pZClcXG4ge1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidGFpbGNhbGxfMVxcXCIpKVxcbkBAIC0xOTc0LDQgKzIwMjAsNiBAQCB2b2lkIHRlc3RfdGFpbGNhbGxzKHZvaWQpXFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJ0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2VcXFwiKSlcXG4gXFx0XFx0dGVzdF90YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2UoKTtcXG4gXFx0dGVzdF90YWlsY2FsbF9jYWxsYmFjaygpO1xcbitcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9saW5rc1xcXCIpKVxcbitcXHRcXHR0ZXN0X3RhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3MoKTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNToxMS43NDk0NTk0NTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0ODUwMTUzNjIxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX2F0dGFjaF9idGZfaWRcIixcbiAgICBcImJwZl90cmFtcG9saW5lX3NldF9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgdHJhbXBvbGluZSBmbGFncyB3ZXJlIG92ZXJ3cml0dGVuIGluc3RlYWQgb2YgYmVpbmcgT1ItZWQsIGFuZCB3aXRob3V0IGEgbG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgYWZmZWN0cyB0YWlsIGNhbGxzIGFuZCB0cmFtcG9saW5lcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNzNkMzY5ZDgwNTUzMDJiY2RhMWNjYjA0YmY2YTE0Mzg0N2YwYjViXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMTc6MzU6MDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JwZi5oIGIvaW5jbHVkZS9saW51eC9icGYuaFxuaW5kZXggZTA2NmY0NGE5YzA1ODAuLjdiZmMyODY3MzEyNDQ5IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9icGYuaFxuKysrIGIvaW5jbHVkZS9saW51eC9icGYuaFxuQEAgLTE1MjMsNiArMTUyMyw3IEBAIGludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcbiBcdFx0XHRcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTtcbiBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbiBcdFx0XHRcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTtcbit2b2lkIGJwZl90cmFtcG9saW5lX3NldF9mbGFncyhzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB1MzIgZmxhZ3MpO1xuIFxuIC8qXG4gICogV2hlbiB0aGUgYXJjaGl0ZWN0dXJlIHN1cHBvcnRzIFNUQVRJQ19DQUxMIHJlcGxhY2UgdGhlIGJwZl9kaXNwYXRjaGVyX2ZuXG5AQCAtMTY0Niw2ICsxNjQ3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbiB7XG4gXHRyZXR1cm4gLUVOT1RTVVBQO1xuIH1cbitzdGF0aWMgaW5saW5lIHZvaWQgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBmbGFncykge31cbiAjZW5kaWZcbiBcbiBzdHJ1Y3QgYnBmX2Z1bmNfaW5mb19hdXgge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jIGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbmluZGV4IDZlYWRmNjRmN2VjOTBmLi4xMjlkMDdkYjExN2VjNyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXG4rKysgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuQEAgLTY3MCw2ICs2NzAsMTMgQEAgc3RhdGljIHN0cnVjdCBicGZfdHJhbXBfaW1hZ2UgKmJwZl90cmFtcF9pbWFnZV9hbGxvYyh1NjQga2V5LCBpbnQgc2l6ZSlcbiBcdHJldHVybiBFUlJfUFRSKGVycik7XG4gfVxuIFxuK3ZvaWQgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIHUzMiBmbGFncylcbit7XG4rXHR0cmFtcG9saW5lX2xvY2sodHIpO1xuK1x0dHItXHUwMDNlZmxhZ3MgfD0gZmxhZ3M7XG4rXHR0cmFtcG9saW5lX3VubG9jayh0cik7XG4rfVxuK1xuIHN0YXRpYyBpbnQgYnBmX3RyYW1wb2xpbmVfdXBkYXRlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIsIGJvb2wgbG9ja19kaXJlY3RfbXV0ZXgsXG4gXHRcdFx0XHQgY29uc3Qgc3RydWN0IGJwZl90cmFtcG9saW5lX29wcyAqb3BzLCB2b2lkICpkYXRhKVxuIHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDUyYmUwYTExOGNjZTA3Li42NmQ4ZDllYWVjMDVmOSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTk1MjMsNyArMTk1MjMsNyBAQCBzdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRpZiAodGd0X3Byb2cgXHUwMDI2XHUwMDI2IHRndF9wcm9nLVx1MDAzZWF1eC1cdTAwM2V0YWlsX2NhbGxfcmVhY2hhYmxlKVxuLVx0XHR0ci1cdTAwM2VmbGFncyA9IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFg7XG4rXHRcdGJwZl90cmFtcG9saW5lX3NldF9mbGFncyh0ciwgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCk7XG4gXG4gXHRwcm9nLVx1MDAzZWF1eC1cdTAwM2Vkc3RfdHJhbXBvbGluZSA9IHRyO1xuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90YWlsY2FsbHMuY1xuaW5kZXggYzY2MDM3MTYyZGE1YWUuLmM1YzlkNmMzNTliYjA5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGFpbGNhbGxzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3RhaWxjYWxscy5jXG5AQCAtMTMsNiArMTMsOCBAQFxuICNpbmNsdWRlIFwidGFpbGNhbGxfY2dycF9zdG9yYWdlLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ0YWlsY2FsbF9zbGVlcGFibGUuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInRhaWxjYWxsX2NhbGxiYWNrLnNrZWwuaFwiXG4rI2luY2x1ZGUgXCJ0YWlsY2FsbF9icGYyYnBmMi5za2VsLmhcIlxuKyNpbmNsdWRlIFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdC5za2VsLmhcIlxuIFxuIC8qIHRlc3RfdGFpbGNhbGxfMSBjaGVja3MgYmFzaWMgZnVuY3Rpb25hbGl0eSBieSBwYXRjaGluZyBtdWx0aXBsZSBsb2NhdGlvbnNcbiAgKiBpbiBhIHNpbmdsZSBwcm9ncmFtIGZvciBhIHNpbmdsZSB0YWlsIGNhbGwgc2xvdCB3aXRoIG5vcC1cdTAwM2VqbXAsIGptcC1cdTAwM2Vub3BcbkBAIC0xOTA3LDYgKzE5MDksNTAgQEAgc3RhdGljIHZvaWQgdGVzdF90YWlsY2FsbF9jYWxsYmFjayh2b2lkKVxuIFx0UlVOX1RFU1RTKHRhaWxjYWxsX2NhbGxiYWNrKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdGVzdF90YWlsY2FsbF9icGYyYnBmX2ZleGl0X2xpbmtzKHZvaWQpXG4re1xuK1x0c3RydWN0IHRhaWxjYWxsX2JwZjJicGZfZmV4aXQgKnNrZWwxID0gTlVMTCwgKnNrZWwyID0gTlVMTDtcbitcdHN0cnVjdCB0YWlsY2FsbF9icGYyYnBmMiAqc2tlbF90YztcbitcdGludCBlcnIsIHByb2dfZmQ7XG4rXG4rXHRza2VsX3RjID0gdGFpbGNhbGxfYnBmMmJwZjJfX29wZW5fYW5kX2xvYWQoKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsX3RjLCBcInRhaWxjYWxsX2JwZjJicGYyX19vcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRza2VsMSA9IHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX29wZW4oKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsMSwgXCJ0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19vcGVuXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdHByb2dfZmQgPSBicGZfcHJvZ3JhbV9fZmQoc2tlbF90Yy1cdTAwM2Vwcm9ncy5jbGFzc2lmaWVyXzApO1xuK1x0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwxLVx1MDAzZXByb2dzLmZleGl0LCBwcm9nX2ZkLCBcInN1YnByb2dfdGFpbFwiKTtcbitcdGlmICghQVNTRVJUX09LKGVyciwgXCJicGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXRcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0ZXJyID0gdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZChza2VsMSk7XG4rXHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZFwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRza2VsMS1cdTAwM2VsaW5rcy5mZXhpdCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2Uoc2tlbDEtXHUwMDNlcHJvZ3MuZmV4aXQpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwxLVx1MDAzZWxpbmtzLmZleGl0LCBcImJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2VcIikpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0c2tlbDIgPSB0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19vcGVuKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbDIsIFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fb3BlblwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRlcnIgPSBicGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXQoc2tlbDItXHUwMDNlcHJvZ3MuZmV4aXQsIHByb2dfZmQsIFwic3VicHJvZ190YWlsXCIpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcImJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldFwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRlcnIgPSB0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19sb2FkKHNrZWwyKTtcbitcdEFTU0VSVF9PSyhlcnIsIFwidGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9fbG9hZFwiKTtcbitcbitvdXQ6XG4rXHR0YWlsY2FsbF9icGYyYnBmX2ZleGl0X19kZXN0cm95KHNrZWwxKTtcbitcdHRhaWxjYWxsX2JwZjJicGZfZmV4aXRfX2Rlc3Ryb3koc2tlbDIpO1xuK1x0dGFpbGNhbGxfYnBmMmJwZjJfX2Rlc3Ryb3koc2tlbF90Yyk7XG4rfVxuK1xuIHZvaWQgdGVzdF90YWlsY2FsbHModm9pZClcbiB7XG4gXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRhaWxjYWxsXzFcIikpXG5AQCAtMTk3NCw0ICsyMDIwLDYgQEAgdm9pZCB0ZXN0X3RhaWxjYWxscyh2b2lkKVxuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJ0YWlsY2FsbF9jZ3JwX3N0b3JhZ2Vfbm9fc3RvcmFnZV9icmlkZ2VcIikpXG4gXHRcdHRlc3RfdGFpbGNhbGxfY2dycF9zdG9yYWdlX25vX3N0b3JhZ2VfYnJpZGdlKCk7XG4gXHR0ZXN0X3RhaWxjYWxsX2NhbGxiYWNrKCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInRhaWxjYWxsX2JwZjJicGZfZmV4aXRfbGlua3NcIikpXG4rXHRcdHRlc3RfdGFpbGNhbGxfYnBmMmJwZl9mZXhpdF9saW5rcygpO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE3OjM1OjExLjc0OTQ2MDgxNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwOTgwOTgyMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgVHJhbXBvbGluZSBGbGFnIFVwZGF0ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IGludHJvZHVjZXMgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AsIHdoaWNoIGlzIHVzZWQgd2l0aGluIGBjaGVja19hdHRhY2hfYnRmX2lkYCBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIGEgc2lnbmlmaWNhbnQgY2hhbmdlIGhlcmUuIFRoZSBwcmV2aW91cyBjb2RlIGRpcmVjdGx5IGFzc2lnbmVkIGBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYYCB0byBgdHItXHUwMDNlZmxhZ3NgLiBOb3csIGl0IGNhbGxzIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgLCB3aGljaCBpcyBkZWZpbmVkIHdpdGggYSBsb2NrIGFuZCB1c2VzIGEgYml0d2lzZSBPUiBhc3NpZ25tZW50IChgfD1gKS5cblxuSG1tLCB0aGUgaW50cm9kdWN0aW9uIG9mIGEgc3BpbmxvY2sgdXNpbmcgYHRyYW1wb2xpbmVfbG9ja2AgYW5kIGB0cmFtcG9saW5lX3VubG9ja2AgdG8gcHJvdGVjdCBtb2RpZmljYXRpb25zIHRvIGB0ci1cdTAwM2VmbGFnc2AgaXMgYSBjbGVhciBpbmRpY2F0aW9uIHRoYXQgYSByYWNlIGNvbmRpdGlvbiB3YXMgaWRlbnRpZmllZCwgb3IgYXQgbGVhc3QgYSBwb3RlbnRpYWwgb25lIHRoYXQgbmVlZGVkIG1pdGlnYXRpb24uIFRoZSBmYWN0IHRoYXQgdGhleSd2ZSByZXBsYWNlZCBhIHNpbXBsZSBhc3NpZ25tZW50IChgPWApIHdpdGggYSBiaXR3aXNlIE9SIChgfD1gKSBpcyBhbHNvIGZ1bmN0aW9uYWxseSBkaWZmZXJlbnQuIFByZXZpb3VzbHksIGFueSBhdHRlbXB0IHRvIGF0dGFjaCBhIGZ1bmN0aW9uIHdpdGggZGlmZmVyZW50IGZsYWdzIHdvdWxkIGJlIG92ZXJ3cml0dGVuLiBUaGlzIG5ldyBhcHByb2FjaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgZmxhZ3MgYW5kIGFkZHMgdG8gdGhlIHNldC5cblxuU28sIHRoaXMgY2xlYXJseSBpbmRpY2F0ZXMgYSBidWcgZml4IHJlbGF0ZWQgdG8gZmxhZyBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgQlBGIHRyYW1wb2xpbmUgbWVjaGFuaXNtLiBOb3csIEkgbmVlZCB0byBjaGVjayBob3cgYGNoZWNrX2F0dGFjaF9idGZfaWRgIHVzZXMgdGhpcywgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgbmF0dXJlIG9mIHRoZSByYWNlIG9yIG92ZXJ3cml0ZSBiZWluZyBmaXhlZC4gTGV0J3MgZGVsdmUgaW50byB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uIGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCBzZWUgd2hlcmUgdGhpcyBmaXRzIGluIHRoZSBhdHRhY2htZW50IHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MzIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNToxNy44NDc1NjY0MThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE1NDA1MDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX2F0dGFjaF9idGZfaWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTQwNT1zdGF0aWMgYm9vbCBjYW5fYmVfc2xlZXBhYmxlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzMS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk0MzI6c3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NDMzLXtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzMS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1MzI6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzMy1cXHRcXHRcXHRcXHQgIHN0cnVjdCBicGZfYXR0YWNoX3RhcmdldF9pbmZvICp0Z3RfaW5mbylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0yMDA1Nz1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDIwMi1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjAyMDM6XFx0cmV0ID0gY2hlY2tfYXR0YWNoX2J0Zl9pZChlbnYpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDIwNC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNToxOC4xNjI5NzYxOTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM4MDgzMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIEJQRiBWZXJpZmllcjogQSBGb2N1c2VkIEFwcHJvYWNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAgZnVuY3Rpb24sIGFuZCBpdCdzIGNhbGxlZCBkdXJpbmcgYGJwZl9jaGVja2AgLSB0aGF0J3MgYSBrZXkgcGFydCBvZiB0aGUgQlBGIHZlcmlmaWVyLiBJIGtub3cgZm9yIGEgZmFjdCBpdCdzIHJlYWNoYWJsZSBhbmQgYWN0dWFsbHkgdXNlZCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgaXQgYSBzdHJvbmcgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBEZWZpbml0ZWx5IHdvcnRoIGl0IHNpbmNlIGl0J3MgYSBjb3JlIEJQRiB2ZXJpZmllciBjaGFuZ2UuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGhlcmUuIGBjaGVja19hdHRhY2hfYnRmX2lkYCBpcyB0aGUgcHJpbWFyeSBvbmUsIGJ1dCBJIGFsc28gc2VlIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgIGJlaW5nIGNhbGxlZC4gSG1tLCBidXQgdGhhdCBmdW5jdGlvbiBpcyB0aW55LCBhIHNpbXBsZSBoZWxwZXIgLSBwcm9iYWJseSBub3QgdGhlIGJlc3QgdGFyZ2V0IGZvciBmdXp6aW5nLiBTbywgZm9jdXNpbmcgb24gYGNoZWNrX2F0dGFjaF9idGZfaWRgIGZvciBub3csIG9yIHBlcmhhcHMgaXRzIG11bHRpLXZhcmlhbnQgY291bnRlcnBhcnQuIE5vdywgYmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBmdXp6aW5nIGl0c2VsZiwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIEJQRiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHdoaWNoIGlzIGdvb2QsIGJ1dCBJIHNob3VsZCBkZWZpbml0ZWx5IGluY2x1ZGUgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9KSVRgIHRvIGNvdmVyIHRoZSBmdWxsIHNwZWN0cnVtIG9mIHBvc3NpYmxlIHNjZW5hcmlvcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYwOCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNToyMi45MDEwNjEyMjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg3MTU5MjEzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL21lZGlhL3JjL0tjb25maWc9MTc9aWYgUkNfQ09SRVxcbmRyaXZlcnMvbWVkaWEvcmMvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL21lZGlhL3JjL0tjb25maWc6MTk6Y29uZmlnIEJQRl9MSVJDX01PREUyXFxuZHJpdmVycy9tZWRpYS9yYy9LY29uZmlnLTIwLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIGVCUEYgcHJvZ3JhbXMgYXR0YWNoZWQgdG8gbGlyYyBkZXZpY2VzXFxcIlxcbi0tXFxua2VybmVsL0tjb25maWcubG9ja3M9MjQyPWNvbmZpZyBRVUVVRURfU1BJTkxPQ0tTXFxuLS1cXG5rZXJuZWwvS2NvbmZpZy5sb2Nrcy0yNDUtXFxua2VybmVsL0tjb25maWcubG9ja3M6MjQ2OmNvbmZpZyBCUEZfQVJDSF9TUElOTE9DS1xcbmtlcm5lbC9LY29uZmlnLmxvY2tzLTI0Ny1cXHRib29sXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctMy0jIEJQRiBpbnRlcnByZXRlciB0aGF0LCBmb3IgZXhhbXBsZSwgY2xhc3NpYyBzb2NrZXQgZmlsdGVycyBkZXBlbmQgb24uXFxua2VybmVsL2JwZi9LY29uZmlnOjQ6Y29uZmlnIEJQRlxcbmtlcm5lbC9icGYvS2NvbmZpZy01LVxcdGJvb2xcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNTctXFxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cXHRib29sIFxcXCJQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNzItXFxua2VybmVsL2JwZi9LY29uZmlnOjczOmNvbmZpZyBCUEZfVU5QUklWX0RFRkFVTFRfT0ZGXFxua2VybmVsL2JwZi9LY29uZmlnLTc0LVxcdGJvb2wgXFxcIkRpc2FibGUgdW5wcml2aWxlZ2VkIEJQRiBieSBkZWZhdWx0XFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnPTkwPXNvdXJjZSBcXFwia2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWdcXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTkxLVxcbmtlcm5lbC9icGYvS2NvbmZpZzo5Mjpjb25maWcgQlBGX0xTTVxcbmtlcm5lbC9icGYvS2NvbmZpZy05My1cXHRib29sIFxcXCJFbmFibGUgQlBGIExTTSBJbnN0cnVtZW50YXRpb25cXFwiXFxuLS1cXG5rZXJuZWwvYnBmL3ByZWxvYWQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnOjI6bWVudWNvbmZpZyBCUEZfUFJFTE9BRFxcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnLTMtXFx0Ym9vbCBcXFwiUHJlbG9hZCBCUEYgZmlsZSBzeXN0ZW0gd2l0aCBrZXJuZWwgc3BlY2lmaWMgcHJvZ3JhbSBhbmQgbWFwIGl0ZXJhdG9yc1xcXCJcXG4tLVxcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnPTE0PWlmIEJQRl9QUkVMT0FEXFxua2VybmVsL2JwZi9wcmVsb2FkL0tjb25maWc6MTU6Y29uZmlnIEJQRl9QUkVMT0FEX1VNRFxcbmtlcm5lbC9icGYvcHJlbG9hZC9LY29uZmlnLTE2LVxcdHRyaXN0YXRlIFxcXCJicGZfcHJlbG9hZCBrZXJuZWwgbW9kdWxlXFxcIlxcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWc9ODM5PWNvbmZpZyBFUFJPQkVfRVZFTlRTXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTItXFxua2VybmVsL3RyYWNlL0tjb25maWc6ODUzOmNvbmZpZyBCUEZfRVZFTlRTXFxua2VybmVsL3RyYWNlL0tjb25maWctODU0LVxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG4tLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnPTg2NT1jb25maWcgUFJPQkVfRVZFTlRTXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NjctXFxua2VybmVsL3RyYWNlL0tjb25maWc6ODY4OmNvbmZpZyBCUEZfS1BST0JFX09WRVJSSURFXFxua2VybmVsL3RyYWNlL0tjb25maWctODY5LVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgcHJvZ3JhbXMgdG8gb3ZlcnJpZGUgYSBrcHJvYmVkIGZ1bmN0aW9uXFxcIlxcbi0tXFxubmV0L0tjb25maWc9MzU0PWNvbmZpZyBCUUxcXG4tLVxcbm5ldC9LY29uZmlnLTM2MC1cXG5uZXQvS2NvbmZpZzozNjE6Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWctMzYyLVxcdGJvb2wgXFxcImVuYWJsZSBCUEYgU1RSRUFNX1BBUlNFUlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6MjUuNzcyNjU5NDMxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2MzgwNzcyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBCUEYgVHJhbXBvbGluZSBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGtlcm5lbC9icGYvdHJhbXBvbGluZS5jYCBhbmQgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuICBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIEJQRiBzdWJzeXN0ZW0sIHRoZSBmYWN0IHRoYXQgaXQncyBhbHRlcmluZyBib3RoIHRyYW1wb2xpbmUgY29kZSBhbmQgdGhlIHZlcmlmaWVyIHN0cm9uZ2x5IHN1Z2dlc3RzIHNvbWUga2luZCBvZiBpbnN0cnVtZW50YXRpb24sIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgb3IsIHBvdGVudGlhbGx5LCBhIHNlY3VyaXR5LXJlbGF0ZWQgY2hhbmdlLiAgVGhlIHZlcmlmaWVyIGlzIHRoZSBoZWFydCBvZiBCUEYgc2VjdXJpdHksIHNvIGFueSBhbHRlcmF0aW9uIHRoZXJlIHdhcnJhbnRzICpjYXJlZnVsKiBzY3J1dGlueS4gSXQgY291bGQgYmUgZml4aW5nIGEgYnVnLCBleHBhbmRpbmcgZnVuY3Rpb25hbGl0eSwgb3IgZXZlbiBoYXJkZW5pbmcgYWdhaW5zdCBhIG5ldyBhdHRhY2sgdmVjdG9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlIHRyYW1wb2xpbmUgYW5kIHRoZSB2ZXJpZmllciBpbiB0aGlzIGNvbnRleHQuXG5cbk15IGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgd2lsbCBiZSB0byBkZXRlcm1pbmUgd2hhdCBrZXJuZWwgY29uZmlndXJhdGlvbnMgYWN0dWFsbHkgZW5hYmxlIHRoaXMgdHJhbXBvbGluZSBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGFwcGxpY2FiaWxpdHkgb2YgdGhlc2UgY2hhbmdlcy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBmZWF0dXJlIHRoYXQncyB1bml2ZXJzYWxseSBhdmFpbGFibGUsIG9yIGlzIGl0IHNwZWNpZmljIHRvIGNlcnRhaW4gYXJjaGl0ZWN0dXJlcywga2VybmVsIHZlcnNpb25zLCBvciB1c2UgY2FzZXM/IFRoaXMgY29udGV4dCBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIHRoZSB0cnVlIGltcGFjdCBvZiB0aGlzIHBhdGNoLiBLbm93aW5nIHRoZSBlbmFibGluZyBjb25maWd1cmF0aW9ucyB3aWxsIGRpY3RhdGUgbXkgaW52ZXN0aWdhdGlvbiBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDMzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6MjkuMTM2NDY5MTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NDExMTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyYW1wb2xpbmUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9MTY9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBkaXNhc20ubyBtcHJvZy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gdHJhbXBvbGluZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE3OjM1OjI5LjI0Mjg4NjI5M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTQwOTI2NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBrZXJuZWwgYnVpbGQgZGVwZW5kZW5jaWVzLCBhbmQgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgY3J1Y2lhbC4gSSBzZWUgdGhhdCB0aGUgb2JqZWN0IGZpbGUgYHRyYW1wb2xpbmUub2AgZXhwbGljaXRseSAqbmVlZHMqIGBDT05GSUdfQlBGX0pJVGAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhlIEp1c3QtSW4tVGltZSBjb21waWxlciBpcyBmdW5kYW1lbnRhbCB0byBob3cgQlBGIHRyYW1wb2xpbmVzIGZ1bmN0aW9uIGFuZCBleGVjdXRlIGVmZmljaWVudGx5LiBObyBKSVQsIG5vIHRyYW1wb2xpbmUg4oCTIGl0J3MgYSBkaXJlY3QgcmVxdWlyZW1lbnQgZm9yIHRoYXQgb3B0aW1pemVkIGV4ZWN1dGlvbiBwYXRoLlxuXG5UaGVuLCB0aGVyZSdzIGB2ZXJpZmllci5vYC4gSXQncyBkZXBlbmRlbnQgb24gYENPTkZJR19CUEZfU1lTQ0FMTGAuIEFnYWluLCBsb2dpY2FsLiBUaGUgdmVyaWZpZXIgaGFzIHRvIGludGVyZmFjZSB3aXRoIHRoZSBzeXN0ZW0gY2FsbCBsYXllciwgdmFsaWRhdGluZyB0aGUgQlBGIGJ5dGVjb2RlIHRvIGVuc3VyZSBpdCdzIHNhZmUgdG8gcnVuIGluIHRoZSBrZXJuZWwuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoYXQgY3J1Y2lhbCBicmlkZ2UsIGFsbG93aW5nIHRoZSB2ZXJpZmllciB0byBpbnRlcmFjdCB3aXRoIHRoZSBzeXN0ZW0gY2FsbHMgYW5kIGVuZm9yY2Ugc2VjdXJpdHkuIFdpdGhvdXQgaXQsIHRoZSB3aG9sZSB2ZXJpZmljYXRpb24gcHJvY2VzcyBmYWxscyBhcGFydC4gSXQgaXMgYSBjcml0aWNhbCBkZXBlbmRlbmN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDcxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6MzMuMDU2OTgxNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYyNjA4NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmVyaWZpZXIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXFxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6MzMuMTQzMjQ5NTczWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDg4NjM0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVGhpcyBCUEYgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIHBhdGNoIGludm9sdmVzIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfSklUYCwgd2hpY2ggaW1tZWRpYXRlbHkgc2lnbmFscyBpdHMgaW1wb3J0YW5jZS4gTGV0J3MgZGlnIGluLiBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgc25pcHBldCBhZ2FpbjpcblxuYGBgY1xuIFx0aWYgKHRndF9wcm9nIFx1MDAyNlx1MDAyNiB0Z3RfcHJvZy1cdTAwM2VhdXgtXHUwMDNldGFpbF9jYWxsX3JlYWNoYWJsZSlcbi1cdFx0dHItXHUwMDNlZmxhZ3MgPSBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYO1xuK1x0XHRicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3ModHIsIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpO1xuYGBgXG5cblJpZ2h0LCBpdCdzIGZpeGluZyBhIHN1YnRsZSBidXQgY3JpdGljYWwgYnVnLiBFc3NlbnRpYWxseSwgdGhlIGNvZGUgd2FzIG92ZXJ3cml0aW5nIGB0ci1cdTAwM2VmbGFnc2AgaW5zdGVhZCBvZiB1c2luZyBhIGJpdHdpc2UgT1IsIGFuZCBjcml0aWNhbGx5LCB0aGVyZSB3YXMgbm8gbG9ja2luZyBpbiBwbGFjZSwgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIHNjZW5hcmlvLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjb3JyZWN0bmVzcyBmaXgsIG5vdGhpbmcgc3VwZXJmaWNpYWwuXG5cblRoZSBwcmltYXJ5IHN5bWJvbHMgb2YgaW50ZXJlc3QgYXJlIGdvaW5nIHRvIGJlIGBjaGVja19hdHRhY2hfYnRmX2lkYCBhbmQgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AuIFdhaXQgYSBtaW51dGUsIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgIGlzIHRpbnkhIEl0J3MgbGlrZWx5IGEgdmVyeSBzaW1wbGUgaGVscGVyIGZ1bmN0aW9uLiBIbW1tLCBwZXJoYXBzIGBicGZfdHJhbXBvbGluZV91cGRhdGVgIGlzIG1vcmUgcmVsZXZhbnQ/IEkgc2hvdWxkIGRvdWJsZSBjaGVjayB3aGVyZSBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYCBpcyBjYWxsZWQuIEFoLCBpdCdzIGNhbGxlZCBpbnNpZGUgYGNoZWNrX2F0dGFjaF9idGZfaWRgLCB0aGF0J3MgdGhlIGtleSBjYWxsIHNpdGUuIEkgdGhpbmsgSSB3aWxsIGZvY3VzIG9uIGBjaGVja19hdHRhY2hfYnRmX2lkYCwgSSdsbCBpbmNsdWRlIHRoYXQgaW4gbXkgc2NvcGUuXG5cbk5vdywgbGV0IG1lIGdvIHRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIHRvIGV4YW1pbmUgYGNoZWNrX2F0dGFjaF9idGZfaWRgIGluIG1vcmUgZGV0YWlsLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgbG9naWMgaXMgbGlrZWx5IHRvIHJlc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkyNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QxNzozNTozOS4xOTIxMTU4OTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTQ3NzI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19hdHRhY2hfYnRmX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk0MDU9c3RhdGljIGJvb2wgY2FuX2JlX3NsZWVwYWJsZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk0MzEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NDMyOnN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTQzMy17XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1MzEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NTMyOmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1MzMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAwNTc9aW50IGJwZl9jaGVjayhzdHJ1Y3QgYnBmX3Byb2cgKipwcm9nLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAyMDItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMjAzOlxcdHJldCA9IGNoZWNrX2F0dGFjaF9idGZfaWQoZW52KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAyMDQtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6MzkuMzM3NTk4MjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM0MTA5NzIyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIEkgc2VlIGl0OlxuXG4qKkFuYWx5emluZyBCUEYgRnVuY3Rpb25hbGl0eSBmb3IgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHNvbWUgY29kZSByZWxhdGVkIHRvIEJQRiwgc3BlY2lmaWNhbGx5IGFyb3VuZCBmdW5jdGlvbiBjYWxscyBhbmQgbGlua2luZy4gYGNoZWNrX2F0dGFjaF9idGZfaWRgIGFuZCBgYnBmX3RyYW1wb2xpbmVfc2V0X2ZsYWdzYCBzZWVtIHRvIGJlIHRoZSBrZXkgYXJlYXMgSSBuZWVkIHRvIGZvY3VzIG9uLiBJJ20gc2VlaW5nIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhcmUgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9KSVRgLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgdGhlcmUgYXJlIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmbG9hdGluZyBhcm91bmQuIFRoZSB0ZXN0IGFkZGVkLCBgdGVzdF90YWlsY2FsbF9icGYyYnBmX2ZleGl0X2xpbmtzYCwgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBsZXZlcmFnZXMgYm90aCBgZmV4aXRgIGFuZCBgdGFpbGNhbGxgLCB3aGljaCBpcyBhIGNvbXBsZXggY29tYmluYXRpb24sIGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lcyB0byBjb250ZXh0IHN3aXRjaGVzLiBJIHJlbWVtYmVyIHRoYXQgdGhlIGBmZXhpdGAgZmVhdHVyZSBoYXMgc3BlY2lmaWMgcmVxdWlyZW1lbnRzLiBEb2VzIGBmZXhpdGAgcmVxdWlyZSBgQlBGX0VWRU5UU2Agb3IgYEJQRl9KSVRgPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0IGRlcGVuZGVuY3kuIFRpbWUgdG8gZGl2ZSBpbnRvIGBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYYCBhbmQgc2VlIHdoYXQgaXQgdGVsbHMgbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NjEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6NDMuNjc4Njk4NDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDc5Mjc3MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0xODM3PXN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGppdF9jdHggKmN0eCwgc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5NDItXFx0LyogUm9vbSBvZiB0cmFtcG9saW5lIGZyYW1lIHRvIHN0b3JlIHRhaWxfY2FsbF9jbnRfcHRyICovXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoxOTQzOlxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpIHtcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE5NDQtXFx0XFx0c3RhY2tfc2l6ZSArPSA4O1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xOTgzLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MTk4NDpcXHRpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTk4NS1cXHRcXHRlbWl0X2luc24oY3R4LCBzdGQsIFJFR19UQ0MsIExPT05HQVJDSF9HUFJfRlAsIC10Y2NfcHRyX29mZik7XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIwNTEtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMDUyOlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMDUzLVxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGxkZCwgUkVHX1RDQywgTE9PTkdBUkNIX0dQUl9GUCwgLXRjY19wdHJfb2ZmKTtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjEwNC1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIxMDU6XFx0aWYgKGZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIxMDYtXFx0XFx0ZW1pdF9pbnNuKGN0eCwgbGRkLCBSRUdfVENDLCBMT09OR0FSQ0hfR1BSX0ZQLCAtdGNjX3B0cl9vZmYpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYz04MTI9c3RhdGljIGludCBfX2FyY2hfcHJlcGFyZV9icGZfdHJhbXBvbGluZShzdHJ1Y3QgYnBmX3RyYW1wX2ltYWdlICppbSwgdm9pZCAqcndfaW1hZ2UsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTk1MC1cXHRpZiAoKGZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfQ0FMTF9PUklHKSBcXHUwMDI2XFx1MDAyNlxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6OTUxOlxcdFxcdChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpKVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtOTUyLVxcdFxcdGJwZl9mcmFtZV9zaXplICs9IEJQRl9QUENfVEFJTENBTEw7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTEwNzMtXFx0XFx0LyogUmVwbGljYXRlIHRhaWxfY2FsbF9jbnQgYmVmb3JlIGNhbGxpbmcgdGhlIG9yaWdpbmFsIEJQRiBwcm9nICovXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzoxMDc0OlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMDc1LVxcdFxcdFxcdGJwZl90cmFtcG9saW5lX3NldHVwX3RhaWxfY2FsbF9pbmZvKGltYWdlLCBjdHgsIGJwZl9mcmFtZV9zaXplLCByNF9vZmYpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMDkwLVxcdFxcdC8qIFJlc3RvcmUgdXBkYXRlZCB0YWlsX2NhbGxfY250ICovXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzoxMDkxOlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0xMDkyLVxcdFxcdFxcdGJwZl90cmFtcG9saW5lX3Jlc3RvcmVfdGFpbF9jYWxsX2NudChpbWFnZSwgY3R4LCBicGZfZnJhbWVfc2l6ZSwgcjRfb2ZmKTtcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9OTkyPXN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEwNTItXFx0ICpcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEwNTM6XFx0ICogRlAgLSB0Y2Nfb2ZmICAgICBbIHRhaWwgY2FsbCBjb3VudFxcdF0gQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTA1NC1cXHQgKlxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMTAxLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTEwMjpcXHRpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMTAzLVxcdFxcdHN0YWNrX3NpemUgKz0gODtcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTE0MS1cXHQvKiBzdG9yZSB0YWlsIGNhbGwgY291bnQgKi9cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjExNDI6XFx0aWYgKGZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTExNDMtXFx0XFx0ZW1pdF9zZChSVl9SRUdfRlAsIC10Y2Nfb2ZmLCBSVl9SRUdfVENDLCBjdHgpO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMjAzLVxcdFxcdC8qIHJlc3RvcmUgVENDIHRvIFJWX1JFR19UQ0MgYmVmb3JlIGNhbGxpbmcgdGhlIG9yaWcgYnBmIGZ1bmMgKi9cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjEyMDQ6XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWClcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEyMDUtXFx0XFx0XFx0ZW1pdF9sZChSVl9SRUdfVENDLCAtdGNjX29mZiwgUlZfUkVHX0ZQLCBjdHgpO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMjA5LVxcdFxcdC8qIHN0b3JlIHVwZGF0ZWQgVENDIGJhY2sgdG8gc3RhY2sgYWZ0ZXIgY2FsbGluZyB0aGUgb3JpZyBicGYgZnVuYyAqL1xcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTIxMDpcXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTIxMS1cXHRcXHRcXHRlbWl0X3NkKFJWX1JFR19GUCwgLXRjY19vZmYsIFJWX1JFR19UQ0MsIGN0eCk7XFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTEyNjQtXFx0LyogcmVzdG9yZSBUQ0MgZnJvbSBzdGFjayB0byBSVl9SRUdfVENDICovXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoxMjY1OlxcdGlmIChmbGFncyBcXHUwMDI2IEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xMjY2LVxcdFxcdGVtaXRfbGQoUlZfUkVHX1RDQywgLXRjY19vZmYsIFJWX1JFR19GUCwgY3R4KTtcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYz0zMzQ2PXN0YXRpYyBpbnQgX19hcmNoX3ByZXBhcmVfYnBmX3RyYW1wb2xpbmUoc3RydWN0IGJwZl90cmFtcF9pbWFnZSAqaW0sIHZvaWQgKnJ3X2ltYWdlLFxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM0MDctXFx0ICogUkJQIC0gYXJnX3N0YWNrX29mZiBbIHN0YWNrX2FyZzEgXVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNDA4OlxcdCAqIFJTUCAgICAgICAgICAgICAgICAgWyB0YWlsX2NhbGxfY250X3B0ciBdIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFhcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzQwOS1cXHQgKi9cXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNDk0LVxcdH1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzQ5NTpcXHRpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zNDk2LVxcdFxcdEVNSVQxKDB4NTApO1xcdFxcdC8qIHB1c2ggcmF4ICovXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzU1Mi1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6MzU1MzpcXHRcXHRpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM1NTQtXFx0XFx0XFx0LyogQmVmb3JlIGNhbGxpbmcgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLCBsb2FkIHRoZVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM2MTktXFx0XFx0fVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozNjIwOlxcdH0gZWxzZSBpZiAoZmxhZ3MgXFx1MDAyNiBCUEZfVFJBTVBfRl9UQUlMX0NBTExfQ1RYKSB7XFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM2MjEtXFx0XFx0LyogQmVmb3JlIHJ1bm5pbmcgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLCBsb2FkIHRoZVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaD0xMjE2PXN0cnVjdCBidGZfZnVuY19tb2RlbCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTEyNTYtICovXFxuaW5jbHVkZS9saW51eC9icGYuaDoxMjU3OiNkZWZpbmUgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWFxcdEJJVCg3KVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTI1OC1cXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTY4MD1zdGF0aWMgaW50IGJwZl90cmFtcG9saW5lX3VwZGF0ZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4LFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNjk4LVxcdC8qIGNsZWFyIGFsbCBiaXRzIGV4Y2VwdCBTSEFSRV9JUE1PRElGWSBhbmQgVEFJTF9DQUxMX0NUWCAqL1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjY5OTpcXHR0ci1cXHUwMDNlZmxhZ3MgXFx1MDAyNj0gKEJQRl9UUkFNUF9GX1NIQVJFX0lQTU9ESUZZIHwgQlBGX1RSQU1QX0ZfVEFJTF9DQUxMX0NUWCk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtNzAwLVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NDMyPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTI1LVxcdGlmICh0Z3RfcHJvZyBcXHUwMDI2XFx1MDAyNiB0Z3RfcHJvZy1cXHUwMDNlYXV4LVxcdTAwM2V0YWlsX2NhbGxfcmVhY2hhYmxlKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTUyNjpcXHRcXHRicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3ModHIsIEJQRl9UUkFNUF9GX1RBSUxfQ0FMTF9DVFgpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUyNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6NDYuMDg2NjMxNjQ3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODk2ODQwMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgQ29kZSBmb3IgYGZleGl0YCBhbmQgVHJhY2luZyoqXG5cbk9rYXksIHNvIHRoaXMgdGVzdCBlbXBsb3lzIGBmZXhpdGAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGBCUEZfRVZFTlRTYCBpcyBlc3NlbnRpYWwgaGVyZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIEJQRiwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgZmV4aXRgIGZhbGxzIHVuZGVyIHRoZSBjYXRlZ29yeSBvZiBhIHRyYWNpbmcgcHJvZ3JhbSB0eXBlLiBBbmQsIGFzIEkgcmVjYWxsLCB0aGVzZSB0cmFjaW5nIHByb2dyYW1zIGdlbmVyYWxseSByZWx5IG9uIHRoZSBlbmFibGluZyBvZiBgQlBGX0VWRU5UU2AuIFRoZXJlZm9yZSwgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBlbnN1cmUgdGhlIGNvZGUgZnVuY3Rpb25zIGNvcnJlY3RseSwgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBCUEZfRVZFTlRTYC4gSXQncyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAxNSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDE3OjM1OjQ5LjQ3NjMxODY0NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzMjMzMjI2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX0VWRU5UU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3RyYWNlL0tjb25maWc9ODM5PWNvbmZpZyBFUFJPQkVfRVZFTlRTXFxuLS1cXG5rZXJuZWwvdHJhY2UvS2NvbmZpZy04NTItXFxua2VybmVsL3RyYWNlL0tjb25maWc6ODUzOmNvbmZpZyBCUEZfRVZFTlRTXFxua2VybmVsL3RyYWNlL0tjb25maWctODU0LVxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzU6NTEuOTA4NjU2MzZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE3OTcxMTEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBCUEYgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIGxldCdzIG5haWwgZG93biB0aGUgYmVzdCBmdXp6aW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgQlBGIHBhdGNoLiBCYXNlZCBvbiB0aGUgY29kZSBjaGFuZ2VzLCBgQlBGX0VWRU5UU2AgZGVmaW5pdGVseSBuZWVkcyB0byBiZSBpbmNsdWRlZCDigJMgaXQncyBjcnVjaWFsIGZvciB0aGUgdHJhY2luZyBwcm9ncmFtcyBhZmZlY3RlZCBieSB0aGlzLiBBbmQsIG9mIGNvdXJzZSwgd2UnbGwgbmVlZCBgQlBGX0pJVGAgc2luY2UgdHJhbXBvbGluZXMgYXJlIGludm9sdmVkLCBhbmQgYEJQRl9TWVNDQUxMYCBnb2VzIHdpdGhvdXQgc2F5aW5nIGFzIHRoZSBmb3VuZGF0aW9uIGZvciBCUEYuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldCBhcmUgY2xlYXJseSBgY2hlY2tfYXR0YWNoX2J0Zl9pZGAgYW5kIGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgLiBXYWl0LCBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgaGVyZTsgd2hpbGUgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AgY2FuIGJlIGlubGluZWQsIGl0J3MgYWxzbyBpbXBsZW1lbnRlZCBpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLCBtYWtpbmcgaXQgYSB2YWxpZCBmb2N1cy4gSXQncyBub3Qgc3RhdGljIGVpdGhlciwgZ29vZCB0byBrbm93LlxuXG5BbHJpZ2h0LCBsZXQgbWUgc3VtbWFyaXplIG15IHRoaW5raW5nIGhlcmUgc28gZmFyLiBUaGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZzsgdGhlIHBhdGNoIGlzIGZpeGluZyBhIGNvcmUgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBpbnZvbHZlcyBwb3RlbnRpYWxseSBvdmVyd3JpdGluZyBmbGFncyB3aXRob3V0IHByb3BlciBsb2NraW5nLiBJdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gSSd2ZSBnb3QgdHdvIGNsZWFyIGZvY3VzIHN5bWJvbHM6IGBjaGVja19hdHRhY2hfYnRmX2lkYCBhbmQgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AuIEFuZCB0aGUgY29uZmlnIGZsYWdzIEknbSB1c2luZyBhcmUgYEJQRl9TWVNDQUxMYCwgYEJQRl9KSVRgLCBhbmQgYEJQRl9FVkVOVFNgLlxuXG5Ib2xkIG9uLCBJIHNlZSB0aGF0IGBicGZfdHJhbXBvbGluZV9zZXRfZmxhZ3NgIGlzIGV4Y2x1c2l2ZWx5IGNhbGxlZCBmcm9tIGBjaGVja19hdHRhY2hfYnRmX2lkYC4gU2hvdWxkIEkgYWRkIGBicGZfdHJhbXBvbGluZV91cGRhdGVgPyBObywgbm8sIEkgdGhpbmsgYGJwZl90cmFtcG9saW5lX3NldF9mbGFnc2AgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS5cblxuTGV0J3MgZG91YmxlLWNoZWNrIHRob3NlIGNvbmZpZyBvcHRpb25zLiBZZXMsIGBCUEZfRVZFTlRTYCBpcyBjb3JyZWN0LiBJdCBlbmFibGVzIHRob3NlIGZlbnRyeS9mZXhpdC10eXBlIHRyYWNpbmcgcHJvZ3JhbXMgdGhhdCBhcmUgbGlrZWx5IHJlbGV2YW50IGhlcmUuIEFuZCBgQlBGX0pJVGAgaXMgdml0YWwgZm9yIHRyYW1wb2xpbmVzIHRvIGZ1bmN0aW9uLiBgQlBGX1NZU0NBTExgIGlzIGEgbm8tYnJhaW5lci5cblxuTm93IHRoYXQgSSd2ZSByZWZpbmVkIG15IGFwcHJvYWNoLCBpdCdzIHRpbWUgdG8gc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTMxMywiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMTc6MzY6MDAuMDg4MzcwNjA0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNjIwNzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX2F0dGFjaF9idGZfaWRcIixcbiAgICBcImJwZl90cmFtcG9saW5lX3NldF9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgdHJhbXBvbGluZSBmbGFncyB3ZXJlIG92ZXJ3cml0dGVuIGluc3RlYWQgb2YgYmVpbmcgT1ItZWQsIGFuZCB3aXRob3V0IGEgbG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgYWZmZWN0cyB0YWlsIGNhbGxzIGFuZCB0cmFtcG9saW5lcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX2F0dGFjaF9idGZfaWRcIixcbiAgICBcImJwZl90cmFtcG9saW5lX3NldF9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBCUEYgdmVyaWZpZXIgd2hlcmUgdHJhbXBvbGluZSBmbGFncyB3ZXJlIG92ZXJ3cml0dGVuIGluc3RlYWQgb2YgYmVpbmcgT1ItZWQsIGFuZCB3aXRob3V0IGEgbG9jay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgQlBGIGxvZ2ljIHRoYXQgYWZmZWN0cyB0YWlsIGNhbGxzIGFuZCB0cmFtcG9saW5lcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgcxh[1] Phase: Succeeded StartedAt: 2026-07-23 17:36:11 +0000 UTC FinishedAt: 2026-07-23 17:36:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-23 17:36:11 +0000 UTC FinishedAt: 2026-07-23 17:36:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2] Phase: Succeeded StartedAt: 2026-07-23 17:36:11 +0000 UTC FinishedAt: 2026-07-23 22:09:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-23 17:36:11 +0000 UTC FinishedAt: 2026-07-23 22:09:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-23 17:36:11 +0000 UTC FinishedAt: 2026-07-23 17:36:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-23 17:36:11 +0000 UTC FinishedAt: 2026-07-23 17:36:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtgcxh/series-workflowtgcxh-convert-artifact-4048251943/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-23 17:36:21 +0000 UTC FinishedAt: 2026-07-23 18:13:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-23 17:36:21 +0000 UTC FinishedAt: 2026-07-23 18:13:03 +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:*e2b47455-1b52-4dff-a658-212165fe3fd0,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-workflowtgcxh/series-workflowtgcxh-convert-artifact-4048251943/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": "e474ad6b-ccb7-4911-8f5f-00657d927919", "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-workflowtgcxh/series-workflowtgcxh-build-action-3225664445/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-23 17:36:21 +0000 UTC FinishedAt: 2026-07-23 18:12:53 +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:*e2b47455-1b52-4dff-a658-212165fe3fd0,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-workflowtgcxh/series-workflowtgcxh-convert-artifact-4048251943/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": "e474ad6b-ccb7-4911-8f5f-00657d927919", "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-workflowtgcxh/series-workflowtgcxh-build-action-3225664445/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-23 18:13:03 +0000 UTC FinishedAt: 2026-07-23 18:13:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-23 18:13:03 +0000 UTC FinishedAt: 2026-07-23 18:13:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-23 18:13:03 +0000 UTC FinishedAt: 2026-07-23 18:13:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-23 18:13:03 +0000 UTC FinishedAt: 2026-07-23 18:13:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowtgcxh/series-workflowtgcxh-convert-artifact-2445062614/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-23 18:13:14 +0000 UTC FinishedAt: 2026-07-23 18:15:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-23 18:13:14 +0000 UTC FinishedAt: 2026-07-23 18:15:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e474ad6b-ccb7-4911-8f5f-00657d927919,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-workflowtgcxh/series-workflowtgcxh-build-action-3225664445/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-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-23 18:15:23 +0000 UTC FinishedAt: 2026-07-23 18:15:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-23 18:15:23 +0000 UTC FinishedAt: 2026-07-23 18:15:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-23 18:15:23 +0000 UTC FinishedAt: 2026-07-23 19:04:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-23 18:15:23 +0000 UTC FinishedAt: 2026-07-23 19:04:08 +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:*e2b47455-1b52-4dff-a658-212165fe3fd0,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-workflowtgcxh/series-workflowtgcxh-convert-artifact-2445062614/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": "7d66b685-281c-4a39-9516-4bde7fb008f6", "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-workflowtgcxh/series-workflowtgcxh-build-action-3262207962/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-23 18:15:23 +0000 UTC FinishedAt: 2026-07-23 19:03:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e2b47455-1b52-4dff-a658-212165fe3fd0,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-workflowtgcxh/series-workflowtgcxh-convert-artifact-2445062614/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": "7d66b685-281c-4a39-9516-4bde7fb008f6", "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-workflowtgcxh/series-workflowtgcxh-build-action-3262207962/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-23 19:04:08 +0000 UTC FinishedAt: 2026-07-23 19:04:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-23 19:04:08 +0000 UTC FinishedAt: 2026-07-23 19:04:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-23 19:04:08 +0000 UTC FinishedAt: 2026-07-23 19:05:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-23 19:04:08 +0000 UTC FinishedAt: 2026-07-23 19:05:49 +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:*7d66b685-281c-4a39-9516-4bde7fb008f6,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-workflowtgcxh/series-workflowtgcxh-build-action-3262207962/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-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-23 19:05:59 +0000 UTC FinishedAt: 2026-07-23 22:09:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-23 19:05:59 +0000 UTC FinishedAt: 2026-07-23 22:09:30 +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":["check_attach_btf_id","bpf_trampoline_set_flags"],"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:*e474ad6b-ccb7-4911-8f5f-00657d927919,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7d66b685-281c-4a39-9516-4bde7fb008f6,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-workflowtgcxh/series-workflowtgcxh-build-action-3225664445/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-workflowtgcxh/series-workflowtgcxh-build-action-3262207962/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-23 19:05:59 +0000 UTC FinishedAt: 2026-07-23 19:06:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-23 19:05:59 +0000 UTC FinishedAt: 2026-07-23 19:06:03 +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":["check_attach_btf_id","bpf_trampoline_set_flags"],"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-workflowtgcxh/series-workflowtgcxh-convert-artifact-3096982395/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-23 19:05:59 +0000 UTC FinishedAt: 2026-07-23 19:05:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-23 19:05:59 +0000 UTC FinishedAt: 2026-07-23 19:05:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-23 19:05:59 +0000 UTC FinishedAt: 2026-07-23 19:05:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-23 19:06:09 +0000 UTC FinishedAt: 2026-07-23 22:09:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtgcxh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_attach_btf_id","bpf_trampoline_set_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87267b89459813cb50ab5377e076b639c07b4491","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS"],"series_id":"6f6719cf-37be-434e-ab31-313e6d6b648d","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-23 19:06:09 +0000 UTC FinishedAt: 2026-07-23 22:09:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e474ad6b-ccb7-4911-8f5f-00657d927919,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7d66b685-281c-4a39-9516-4bde7fb008f6,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-workflowtgcxh/series-workflowtgcxh-build-action-3225664445/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-workflowtgcxh/series-workflowtgcxh-build-action-3262207962/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-workflowtgcxh/series-workflowtgcxh-convert-artifact-3096982395/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,}