Name: series-workflowc654q Phase: Succeeded StartedAt: 2026-07-16 13:15:15 +0000 UTC FinishedAt: 2026-07-16 14:54:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[0] Phase: Succeeded StartedAt: 2026-07-16 13:15:15 +0000 UTC FinishedAt: 2026-07-16 13:50:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 13:15:15 +0000 UTC FinishedAt: 2026-07-16 13:50:27 +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": "d1f4b56417a3dc1a0600f960b14f46bd25eda89d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT", "BPF_EVENTS", "DYNAMIC_FTRACE_WITH_DIRECT_CALLS" ], "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": "d1f4b56417a3dc1a0600f960b14f46bd25eda89d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT", "BPF_EVENTS", "DYNAMIC_FTRACE_WITH_DIRECT_CALLS" ], "series_id": "2225e7eb-3941-4ec6-ac29-5c7997de8a84" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_trampoline_multi_detach", "bpf_trampoline_multi_attach_free", "bpf_trampoline_multi_attach_rollback" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX211bHRpX2RldGFjaCYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZSYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSBidWcgaW4gdGhlIEJQRiB0cmFtcG9saW5lIG11bHRpLWRldGFjaCBsb2dpYyBieSBjb3JyZWN0bHkgaGFuZGxpbmcgZnRyYWNlIHVwZGF0ZSBmYWlsdXJlcyBhbmQgcm9sbGluZyBiYWNrIHRoZSBhY3RpdmUgaW1hZ2UuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIGZvciBCUEYgdHJhY2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNjZmIwNjhjZGYwMTU3NWY2ZGNiNjFiNjI1YzIyMjZlMDJlYWIyNmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAxMzo0NzoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXG5pbmRleCA2ZWFkZjY0ZjdlYzkwZi4uNDRlZjI1YmViNGNjNWMgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbkBAIC0xNTg1LDcgJiM0MzsxNTg1LDE3IEBAIHN0YXRpYyB2b2lkIGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9pbml0KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpXG4gXG4gc3RhdGljIHZvaWQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUoc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcbiB7XG4tXHRpZiAodHItXHUwMDNlbXVsdGlfYXR0YWNoLm9sZF9pbWFnZSlcbiYjNDM7XHQvKiBPbmx5IGZyZWUgb2xkX2ltYWdlIGlmIGl0IGlzIG5vIGxvbmdlciB0aGUgYWN0aXZlIGltYWdlLlxuJiM0MztcdCAqIFdoZW4gYnBmX3RyYW1wb2xpbmVfdXBkYXRlKCkgZmFpbHMgYmVmb3JlIG1vZGlmeV9mZW50cnlfbXVsdGkoKS9cbiYjNDM7XHQgKiB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aSgpIGlzIGNhbGxlZCwgY3VyX2ltYWdlIGlzIHVuY2hhbmdlZFxuJiM0MztcdCAqIChjdXJfaW1hZ2UgPT0gb2xkX2ltYWdlKSBhbmQgZnRyYWNlIHN0aWxsIHBvaW50cyB0byBpdC4gRnJlZWluZ1xuJiM0MztcdCAqIGl0IHdvdWxkIGNhdXNlIGEgVUFGIHdoZW4gZnRyYWNlIGNhbGxzIGludG8gdGhlIGZyZWVkIG1lbW9yeS5cbiYjNDM7XHQgKiBPbiBzdWNjZXNzLCBjdXJfaW1hZ2UgaXMgZWl0aGVyIGEgbmV3IGltYWdlIG9yIE5VTEwsIHNvXG4mIzQzO1x0ICogb2xkX2ltYWdlICE9IGN1cl9pbWFnZSBjb3JyZWN0bHkgaWRlbnRpZmllcyBhIHN0YWxlIGltYWdlIHRoYXRcbiYjNDM7XHQgKiBpcyBzYWZlIHRvIGZyZWUuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgIT0gdHItXHUwMDNlY3VyX2ltYWdlKVxuIFx0XHRicGZfdHJhbXBfaW1hZ2VfcHV0KHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UpO1xuIFxuIFx0dHItXHUwMDNlbXVsdGlfYXR0YWNoLm9sZF9pbWFnZSA9IE5VTEw7XG5AQCAtMTcxMyw3ICYjNDM7MTcyMyw3IEBAIGludCBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfXG4ge1xuIFx0c3RydWN0IGJwZl90cmFjaW5nX211bHRpX2RhdGEgKmRhdGEgPSBcdTAwMjZsaW5rLVx1MDAzZWRhdGE7XG4gXHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbm9kZSAqbW5vZGU7XG4tXHRpbnQgaTtcbiYjNDM7XHRpbnQgaSwgZXJyX3VucmVnID0gMCwgZXJyX21vZCA9IDA7XG4gXG4gXHR0cmFtcG9saW5lX2xvY2tfYWxsKCk7XG4gXG5AQCAtMTcyNCwxMyAmIzQzOzE3MzQsNDEgQEAgaW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9cbiBcdFx0XHRcdFx0TlVMTCwgXHUwMDI2dHJhbXBvbGluZV9tdWx0aV9vcHMsIGRhdGEpKTtcbiBcdH1cbiBcbi1cdGlmIChmdHJhY2VfaGFzaF9jb3VudChkYXRhLVx1MDAzZXVucmVnKSlcbi1cdFx0V0FSTl9PTl9PTkNFKHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbChcdTAwMjZkaXJlY3Rfb3BzLCBkYXRhLVx1MDAzZXVucmVnKSk7XG4tXHRpZiAoZnRyYWNlX2hhc2hfY291bnQoZGF0YS1cdTAwM2Vtb2RpZnkpKVxuLVx0XHRXQVJOX09OX09OQ0UodXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXHUwMDNlbW9kaWZ5LCB0cnVlKSk7XG4mIzQzO1x0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNldW5yZWcpKSB7XG4mIzQzO1x0XHRlcnJfdW5yZWcgPSB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoXHUwMDI2ZGlyZWN0X29wcywgZGF0YS1cdTAwM2V1bnJlZyk7XG4mIzQzO1x0XHRXQVJOX09OX09OQ0UoZXJyX3VucmVnKTtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNlbW9kaWZ5KSkge1xuJiM0MztcdFx0ZXJyX21vZCA9IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChcdTAwMjZkaXJlY3Rfb3BzLCBkYXRhLVx1MDAzZW1vZGlmeSwgdHJ1ZSk7XG4mIzQzO1x0XHRXQVJOX09OX09OQ0UoZXJyX21vZCk7XG4mIzQzO1x0fVxuIFxuLVx0Zm9yX2VhY2hfbW5vZGUobW5vZGUsIGxpbmspXG4tXHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKG1ub2RlLVx1MDAzZXRyYW1wb2xpbmUpO1xuJiM0MztcdGZvcl9lYWNoX21ub2RlKG1ub2RlLCBsaW5rKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyID0gbW5vZGUtXHUwMDNldHJhbXBvbGluZTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBJZiB0aGUgYmF0Y2ggZnRyYWNlIHVwZGF0ZSBmYWlsZWQgZm9yIHRoaXMgbW5vZGUmIzM5O3MgcGF0aCxcbiYjNDM7XHRcdCAqIGZ0cmFjZSBzdGlsbCBwb2ludHMgdG8gb2xkX2ltYWdlLiBVc2Ugcm9sbGJhY2sgdG8gcmVzdG9yZVxuJiM0MztcdFx0ICogY3VyX2ltYWdlIHRvIG9sZF9pbWFnZSAocHV0dGluZyB0aGUgbmV3IGN1cl9pbWFnZSBpZiBhbnkpXG4mIzQzO1x0XHQgKiBzbyB0aGUgdHJhbXBvbGluZSBrZWVwcyB0aGUgaW1hZ2UgZnRyYWNlIGlzIGNhbGxpbmcuXG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogVGhpcyByZWxpZXMgb24gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsL21vZCBiZWluZyBhdG9taWM6XG4mIzQzO1x0XHQgKiBvbiBmYWlsdXJlLCBOTyBJUHMgaW4gdGhlIGhhc2ggYXJlIG1vZGlmaWVkIGluIGZ0cmFjZSAoYWxsXG4mIzQzO1x0XHQgKiB2YWxpZGF0aW9uL2FsbG9jYXRpb24gaGFwcGVucyBiZWZvcmUgYW55IGZ0cmFjZSByZWNvcmQgaXNcbiYjNDM7XHRcdCAqIHRvdWNoZWQpLiBJZiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuIGluIHRoZSBmdXR1cmUgKGkuZS4sXG4mIzQzO1x0XHQgKiBwYXJ0aWFsIHN1Y2Nlc3MgYmVjb21lcyBwb3NzaWJsZSksIHRoaXMgcm9sbGJhY2sgbG9naWMgd291bGRcbiYjNDM7XHRcdCAqIG5lZWQgdG8gYmUgcmV2aXNpdGVkLlxuJiM0MztcdFx0ICpcbiYjNDM7XHRcdCAqIGN1cl9pbWFnZSA9PSBOVUxMIGluZGljYXRlcyB0aGUgdW5yZWcgcGF0aCAodG90YWwgPT0gMCk7XG4mIzQzO1x0XHQgKiBjdXJfaW1hZ2UgIT0gTlVMTCBpbmRpY2F0ZXMgdGhlIG1vZGlmeSBwYXRoICh0b3RhbCBcdTAwM2UgMCkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmICh0ci1cdTAwM2VtdWx0aV9hdHRhY2gub2xkX2ltYWdlIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgIT0gdHItXHUwMDNlY3VyX2ltYWdlIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICgoZXJyX3VucmVnIFx1MDAyNlx1MDAyNiAhdHItXHUwMDNlY3VyX2ltYWdlKSB8fFxuJiM0MztcdFx0ICAgICAoZXJyX21vZCBcdTAwMjZcdTAwMjYgdHItXHUwMDNlY3VyX2ltYWdlKSkpXG4mIzQzO1x0XHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFjayh0cik7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKHRyKTtcbiYjNDM7XHR9XG4gXG4gXHR0cmFtcG9saW5lX3VubG9ja19hbGwoKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMzo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OywKICAgICYjMzQ7RFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2gmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGluIHRoZSBCUEYgdHJhbXBvbGluZSBtdWx0aS1kZXRhY2ggbG9naWMgYnkgY29ycmVjdGx5IGhhbmRsaW5nIGZ0cmFjZSB1cGRhdGUgZmFpbHVyZXMgYW5kIHJvbGxpbmcgYmFjayB0aGUgYWN0aXZlIGltYWdlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyBmb3IgQlBGIHRyYWNpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNjZmIwNjhjZGYwMTU3NWY2ZGNiNjFiNjI1YzIyMjZlMDJlYWIyNmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAxMzo0NzoxNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jIGIva2VybmVsL2JwZi90cmFtcG9saW5lLmMKaW5kZXggNmVhZGY2NGY3ZWM5MGYuLjQ0ZWYyNWJlYjRjYzVjIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYwpAQCAtMTU4NSw3ICYjNDM7MTU4NSwxNyBAQCBzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfaW5pdChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKQogCiBzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKQogewotCWlmICh0ci0mZ3Q7bXVsdGlfYXR0YWNoLm9sZF9pbWFnZSkKJiM0MzsJLyogT25seSBmcmVlIG9sZF9pbWFnZSBpZiBpdCBpcyBubyBsb25nZXIgdGhlIGFjdGl2ZSBpbWFnZS4KJiM0MzsJICogV2hlbiBicGZfdHJhbXBvbGluZV91cGRhdGUoKSBmYWlscyBiZWZvcmUgbW9kaWZ5X2ZlbnRyeV9tdWx0aSgpLwomIzQzOwkgKiB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aSgpIGlzIGNhbGxlZCwgY3VyX2ltYWdlIGlzIHVuY2hhbmdlZAomIzQzOwkgKiAoY3VyX2ltYWdlID09IG9sZF9pbWFnZSkgYW5kIGZ0cmFjZSBzdGlsbCBwb2ludHMgdG8gaXQuIEZyZWVpbmcKJiM0MzsJICogaXQgd291bGQgY2F1c2UgYSBVQUYgd2hlbiBmdHJhY2UgY2FsbHMgaW50byB0aGUgZnJlZWQgbWVtb3J5LgomIzQzOwkgKiBPbiBzdWNjZXNzLCBjdXJfaW1hZ2UgaXMgZWl0aGVyIGEgbmV3IGltYWdlIG9yIE5VTEwsIHNvCiYjNDM7CSAqIG9sZF9pbWFnZSAhPSBjdXJfaW1hZ2UgY29ycmVjdGx5IGlkZW50aWZpZXMgYSBzdGFsZSBpbWFnZSB0aGF0CiYjNDM7CSAqIGlzIHNhZmUgdG8gZnJlZS4KJiM0MzsJICovCiYjNDM7CWlmICh0ci0mZ3Q7bXVsdGlfYXR0YWNoLm9sZF9pbWFnZSAmYW1wOyZhbXA7CiYjNDM7CSAgICB0ci0mZ3Q7bXVsdGlfYXR0YWNoLm9sZF9pbWFnZSAhPSB0ci0mZ3Q7Y3VyX2ltYWdlKQogCQlicGZfdHJhbXBfaW1hZ2VfcHV0KHRyLSZndDttdWx0aV9hdHRhY2gub2xkX2ltYWdlKTsKIAogCXRyLSZndDttdWx0aV9hdHRhY2gub2xkX2ltYWdlID0gTlVMTDsKQEAgLTE3MTMsNyAmIzQzOzE3MjMsNyBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpXwogewogCXN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9kYXRhICpkYXRhID0gJmFtcDtsaW5rLSZndDtkYXRhOwogCXN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9ub2RlICptbm9kZTsKLQlpbnQgaTsKJiM0MzsJaW50IGksIGVycl91bnJlZyA9IDAsIGVycl9tb2QgPSAwOwogCiAJdHJhbXBvbGluZV9sb2NrX2FsbCgpOwogCkBAIC0xNzI0LDEzICYjNDM7MTczNCw0MSBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpXwogCQkJCQlOVUxMLCAmYW1wO3RyYW1wb2xpbmVfbXVsdGlfb3BzLCBkYXRhKSk7CiAJfQogCi0JaWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtJmd0O3VucmVnKSkKLQkJV0FSTl9PTl9PTkNFKHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbCgmYW1wO2RpcmVjdF9vcHMsIGRhdGEtJmd0O3VucmVnKSk7Ci0JaWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtJmd0O21vZGlmeSkpCi0JCVdBUk5fT05fT05DRSh1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2QoJmFtcDtkaXJlY3Rfb3BzLCBkYXRhLSZndDttb2RpZnksIHRydWUpKTsKJiM0MzsJaWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtJmd0O3VucmVnKSkgewomIzQzOwkJZXJyX3VucmVnID0gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKCZhbXA7ZGlyZWN0X29wcywgZGF0YS0mZ3Q7dW5yZWcpOwomIzQzOwkJV0FSTl9PTl9PTkNFKGVycl91bnJlZyk7CiYjNDM7CX0KJiM0MzsJaWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtJmd0O21vZGlmeSkpIHsKJiM0MzsJCWVycl9tb2QgPSB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2QoJmFtcDtkaXJlY3Rfb3BzLCBkYXRhLSZndDttb2RpZnksIHRydWUpOwomIzQzOwkJV0FSTl9PTl9PTkNFKGVycl9tb2QpOwomIzQzOwl9CiAKLQlmb3JfZWFjaF9tbm9kZShtbm9kZSwgbGluaykKLQkJYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUobW5vZGUtJmd0O3RyYW1wb2xpbmUpOwomIzQzOwlmb3JfZWFjaF9tbm9kZShtbm9kZSwgbGluaykgewomIzQzOwkJc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciA9IG1ub2RlLSZndDt0cmFtcG9saW5lOwomIzQzOwomIzQzOwkJLyogSWYgdGhlIGJhdGNoIGZ0cmFjZSB1cGRhdGUgZmFpbGVkIGZvciB0aGlzIG1ub2RlJiMzOTtzIHBhdGgsCiYjNDM7CQkgKiBmdHJhY2Ugc3RpbGwgcG9pbnRzIHRvIG9sZF9pbWFnZS4gVXNlIHJvbGxiYWNrIHRvIHJlc3RvcmUKJiM0MzsJCSAqIGN1cl9pbWFnZSB0byBvbGRfaW1hZ2UgKHB1dHRpbmcgdGhlIG5ldyBjdXJfaW1hZ2UgaWYgYW55KQomIzQzOwkJICogc28gdGhlIHRyYW1wb2xpbmUga2VlcHMgdGhlIGltYWdlIGZ0cmFjZSBpcyBjYWxsaW5nLgomIzQzOwkJICoKJiM0MzsJCSAqIFRoaXMgcmVsaWVzIG9uIHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbC9tb2QgYmVpbmcgYXRvbWljOgomIzQzOwkJICogb24gZmFpbHVyZSwgTk8gSVBzIGluIHRoZSBoYXNoIGFyZSBtb2RpZmllZCBpbiBmdHJhY2UgKGFsbAomIzQzOwkJICogdmFsaWRhdGlvbi9hbGxvY2F0aW9uIGhhcHBlbnMgYmVmb3JlIGFueSBmdHJhY2UgcmVjb3JkIGlzCiYjNDM7CQkgKiB0b3VjaGVkKS4gSWYgdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbiBpbiB0aGUgZnV0dXJlIChpLmUuLAomIzQzOwkJICogcGFydGlhbCBzdWNjZXNzIGJlY29tZXMgcG9zc2libGUpLCB0aGlzIHJvbGxiYWNrIGxvZ2ljIHdvdWxkCiYjNDM7CQkgKiBuZWVkIHRvIGJlIHJldmlzaXRlZC4KJiM0MzsJCSAqCiYjNDM7CQkgKiBjdXJfaW1hZ2UgPT0gTlVMTCBpbmRpY2F0ZXMgdGhlIHVucmVnIHBhdGggKHRvdGFsID09IDApOwomIzQzOwkJICogY3VyX2ltYWdlICE9IE5VTEwgaW5kaWNhdGVzIHRoZSBtb2RpZnkgcGF0aCAodG90YWwgJmd0OyAwKS4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKHRyLSZndDttdWx0aV9hdHRhY2gub2xkX2ltYWdlICZhbXA7JmFtcDsKJiM0MzsJCSAgICB0ci0mZ3Q7bXVsdGlfYXR0YWNoLm9sZF9pbWFnZSAhPSB0ci0mZ3Q7Y3VyX2ltYWdlICZhbXA7JmFtcDsKJiM0MzsJCSAgICAoKGVycl91bnJlZyAmYW1wOyZhbXA7ICF0ci0mZ3Q7Y3VyX2ltYWdlKSB8fAomIzQzOwkJICAgICAoZXJyX21vZCAmYW1wOyZhbXA7IHRyLSZndDtjdXJfaW1hZ2UpKSkKJiM0MzsJCQlicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sodHIpOwomIzQzOwkJZWxzZQomIzQzOwkJCWJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKHRyKTsKJiM0MzsJfQogCiAJdHJhbXBvbGluZV91bmxvY2tfYWxsKCk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzNgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDIzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgVHJhbXBvbGluZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBrZXJuZWwgcGF0Y2ggc3BlY2lmaWNhbGx5IHRhcmdldGluZyBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBGcm9tIHdoYXQgSSBzZWUsIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlYCBhbmQgYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAgZnVuY3Rpb25zLiBJdCBzZWVtcyBsaWtlIGEgbmV3IGNoZWNrLCBgdHItJmd0O211bHRpX2F0dGFjaC5vbGRfaW1hZ2UgIT0gdHItJmd0O2N1cl9pbWFnZWAsIGhhcyBiZWVuIGFkZGVkIGJlZm9yZSBmcmVlaW5nIGBvbGRfaW1hZ2VgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQgYWxzbyBhcHBlYXJzIHRoZSBwYXRjaCBpcyBub3cgaGFuZGxpbmcgcG90ZW50aWFsIGVycm9ycyBmcm9tIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWxgIGFuZCBgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kYCBpbiBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYC4gSW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLCBpdCYjMzk7cyBjYWxsaW5nIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sodHIpYC4KClRoaXMgbWFrZXMgc2Vuc2UsIGl0IGxvb2tzIGxpa2UgYSB0YXJnZXRlZCBjaGFuZ2Ugd2l0aGluIHRoZSBCUEYgdHJhbXBvbGluZSBtdWx0aS1hdHRhY2gvZGV0YWNoIGxvZ2ljLiBUbyB2ZXJpZnkgaXRzIGJlaGF2aW9yIGFuZCByb2J1c3RuZXNzLCBJIHNob3VsZCBwdXQgdG9nZXRoZXIgc29tZSBmdXp6aW5nIHJvdXRpbmVzIGZvciBib3RoIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWVgLgoKTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgZW5hYmxlIHRoaXMgQlBGIHRyYW1wb2xpbmUgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBxdWlja2x5IGxvY2F0ZSB0aGUgY29uZmlndXJhdGlvbiBrbm9icyBhc3NvY2lhdGVkIHdpdGggYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAgYW5kIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmLmg9MTUyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1MjMtXHRcdFx0XHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluayk7XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1MjQ6aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1MjUtXHRcdFx0XHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluayk7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0xNjM5PXN0YXRpYyBpbmxpbmUgaW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMTY0My19XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE2NDQ6c3RhdGljIGlubGluZSBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTY0NS1cdFx0XHRcdFx0ICAgICAgc3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbmsgKmxpbmspXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTYyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTcyMS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3MjI6aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTcyMy17XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM2ODU9c3RhdGljIHZvaWQgYnBmX3RyYWNpbmdfbXVsdGlfbGlua19yZWxlYXNlKHN0cnVjdCBicGZfbGluayAqbGluaylcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzY4OS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozNjkwOlx0V0FSTl9PTl9PTkNFKGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChsaW5rLVx1MDAzZXByb2csIHRyX2xpbmspKTtcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zNjkxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBkZWVwIGluIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgZmFtaWxpYXIgd2l0aCBCUEY6CgoqKk5hdmlnYXRpbmcgdGhlIEJQRiBUcmFtcG9saW5lIExhbmRzY2FwZSoqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYC4gSSBrbm93IHRoYXQgZnVuY3Rpb24sIGl0JiMzOTtzIGEga2V5IHBhcnQgb2YgdGhlIG11bHRpLWRldGFjaCBmdW5jdGlvbmFsaXR5IHdlJiMzOTt2ZSBnb3QgaW4gQlBGLiBOb3csIHdoZXJlIGlzIHRoYXQgYWN0dWFsbHkgZGVmaW5lZD8gT2theSwgbWVtb3J5IGpvZ2dlZCwgaXQmIzM5O3Mgc2l0dGluZyBpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBHb29kLCBnb29kLiBCdXQgSSBuZWVkIHRvIHJlZnJlc2ggdGhlIGRldGFpbHMsIGVzcGVjaWFsbHkgYXMgaXQgcmVsYXRlcyB0byBjb25maWcgb3B0aW9ucy4gTGV0JiMzOTtzIHB1bGwgdXAgdGhlIEtjb25maWcgZm9yIHRoYXQgZmlsZSB0byBzZWUgd2hhdCBmZWF0dXJlcyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIGl0IHRvIGJlIGNvbXBpbGVkIGluLiBHb3R0YSBtYWtlIHN1cmUgYWxsIHRoZSByaWdodCBjb25maWd1cmF0aW9uIGtub2JzIGFyZSBmbGlwcGVkLCBzbyB0aGF0IG11bHRpLWRldGFjaCBpcyBhY3RpdmUgYW5kIHJlYWR5IHRvIHVzZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmFtcG9saW5lXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkaXNhc20ubyBtcHJvZy5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gdHJhbXBvbGluZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5OQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3RyYWNpbmdfbXVsdGlfbGlua19yZWxlYXNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0zNjgwPV9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM2ODQtXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MzY4NTpzdGF0aWMgdm9pZCBicGZfdHJhY2luZ19tdWx0aV9saW5rX3JlbGVhc2Uoc3RydWN0IGJwZl9saW5rICpsaW5rKVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM2ODYte1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0zNzg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2xpbmtfb3BzIGJwZl90cmFjaW5nX211bHRpX2xpbmtfbG9wcyA9IHtcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozNzg1Olx0LnJlbGVhc2UgPSBicGZfdHJhY2luZ19tdWx0aV9saW5rX3JlbGVhc2UsXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzc4Ni1cdC5kZWFsbG9jX2RlZmVycmVkID0gYnBmX3RyYWNpbmdfbXVsdGlfbGlua19kZWFsbG9jLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNDYKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdHJhY2luZ19tdWx0aV9saW5rX2xvcHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM3NTg9c3RhdGljIHZvaWQgYnBmX3RyYWNpbmdfbXVsdGlfc2hvd19mZGluZm8oY29uc3Qgc3RydWN0IGJwZl9saW5rICpsaW5rLFxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zNzgzLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM3ODQ6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfbGlua19vcHMgYnBmX3RyYWNpbmdfbXVsdGlfbGlua19sb3BzID0ge1xua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM3ODUtXHQucmVsZWFzZSA9IGJwZl90cmFjaW5nX211bHRpX2xpbmtfcmVsZWFzZSxcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9Mzg0MD1pbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MDEtXHRicGZfbGlua19pbml0KFx1MDAyNmxpbmstXHUwMDNlbGluaywgQlBGX0xJTktfVFlQRV9UUkFDSU5HX01VTFRJLFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM5MDI6XHRcdCAgICAgIFx1MDAyNmJwZl90cmFjaW5nX211bHRpX2xpbmtfbG9wcywgcHJvZywgcHJvZy1cdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZSk7XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkwMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU2MQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90cmFjaW5nX211bHRpX2F0dGFjaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc4OT1pbnQgYnBmX3Vwcm9iZV9tdWx0aV9saW5rX2F0dGFjaChjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6NzkwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cik7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc5MS0jZWxzZVxuLS1cbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9ODQ4PXN0YXRpYyBpbmxpbmUgaW50XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjg0OTpicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODUwLXtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NzY1PXN0YXRpYyBpbnQgbGlua19jcmVhdGUodW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU4MTUtXHRcdGVsc2UgaWYgKGlzX3RyYWNpbmdfbXVsdGkocHJvZy1cdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZSkpXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1ODE2Olx0XHRcdHJldCA9IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChwcm9nLCBhdHRyKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU4MTctXHRcdGVsc2Vcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MzgxOT1zdGF0aWMgaW50IGNoZWNrX2R1cF9pZHModTMyICppZHMsIHU2NCAqY29va2llcywgdTMyIGNudClcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzgzOS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozODQwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zODQxLXtcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkyOS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozOTMwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTMxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM4NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBCUEYgVHJhY2luZyBNdWx0aS1BdHRhY2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBCUEZfTElOS19UWVBFX1RSQUNJTkdfTVVMVElgLiBUaGF0JiMzOTtzIGNyZWF0ZWQgdGhyb3VnaCB0aGUgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgZnVuY3Rpb24sIHdoaWNoIGlzIHVsdGltYXRlbHkgY2FsbGVkIGZyb20gYGxpbmtfY3JlYXRlYCBpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBHb29kLCB0aGF0IG1lYW5zIGl0JiMzOTtzIGEgZGVmaW5pdGUgcGF0aHdheSwgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGluIHRoZSBrZXJuZWwuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQuIERlZmluaXRlbHkgbmVlZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19CUEZfSklUYC4gVGhvc2UgYXJlIGVzc2VudGlhbC4gQW5kLCBzaW5jZSB0aGlzIGludm9sdmVzIHRyYWNpbmcsIGl0JiMzOTtzIGhpZ2hseSBwcm9iYWJsZSB0aGF0IGBDT05GSUdfRlRSQUNFYCBpcyBhbHNvIHJlcXVpcmVkLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBieSBleGFtaW5pbmcgYGtlcm5lbC90cmFjZS9NYWtlZmlsZWAgdG8gc2VlIGlmIGBicGZfdHJhY2UuY2AgaXMgYmVpbmcgY29tcGlsZWQuIEp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluIHRoYXQgdHJhY2luZyBzdXBwb3J0IGlzIGF2YWlsYWJsZSBhbmQgcHJvcGVybHkgbGlua2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdHJhY2VcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9NYWtlZmlsZT01ND1LQ09WX0lOU1RSVU1FTlRfdHJhY2VfaXJxc29mZi5vIDo9IG5cbmtlcm5lbC90cmFjZS9NYWtlZmlsZS01NS1cbmtlcm5lbC90cmFjZS9NYWtlZmlsZTo1NjpDRkxBR1NfYnBmX3RyYWNlLm8gOj0gLUkkKHNyYylcbmtlcm5lbC90cmFjZS9NYWtlZmlsZS01Ny1cbi0tXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU9MTA5PW9iai0kKENPTkZJR19VU0VSX0VWRU5UUykgJiM0Mzs9IHRyYWNlX2V2ZW50c191c2VyLm9cbmtlcm5lbC90cmFjZS9NYWtlZmlsZToxMTA6b2JqLSQoQ09ORklHX0JQRl9FVkVOVFMpICYjNDM7PSBicGZfdHJhY2Uub1xua2VybmVsL3RyYWNlL01ha2VmaWxlLTExMS1vYmotJChDT05GSUdfS1BST0JFX0VWRU5UUykgJiM0Mzs9IHRyYWNlX2twcm9iZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MTEKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVHJhbXBvbGluZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgdG91Y2hpbmcgYGtlcm5lbC9icGYvdHJhbXBvbGluZS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYCBhbmQgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlYCBmdW5jdGlvbnMuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3Rpbmc7IHRoZXNlIGFyZSBjb3JlIGNvbXBvbmVudHMgZm9yIG1hbmFnaW5nIEJQRiB0cmFtcG9saW5lcy4gVGhlIGFkZGl0aW9uIG9mIHJvbGxiYWNrIGxvZ2ljIGhlcmUgaXMgd2hhdCYjMzk7cyBjcnVjaWFsLiBJdCBtZWFucyB0aGV5JiMzOTtyZSBhZGRpbmcgYSBzYWZldHkgbmV0IHdoZW4gYHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbGAgb3IgYHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZGAgZmFpbCwgd2hpY2ggaXMgZ29vZC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSByZWFjaGFibGUgY29kZSBwYXRoIHRocm91Z2ggYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgYW5kIGl0cyBhc3NvY2lhdGVkIHJlbGVhc2UgbWVjaGFuaXNtcy4gVGhhdCBtYWtlcyBzZW5zZSBmb3IgdGhlIHVzZSBjYXNlLgoKRnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIGBDT05GSUdfQlBGX0pJVGAsIGBDT05GSUdfQlBGX0VWRU5UU2AsIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBhcmUgdGhlIGtleSBlbmFibGluZyBjb25maWd1cmF0aW9ucy4gV2l0aG91dCB0aG9zZSwgdGhpcyBpcyBhbGwgYWNhZGVtaWMuIFRoZSByZWFsIG1lYXQgb2YgdGhlIGNoYW5nZXMgaXMgY2VudGVyZWQgYXJvdW5kIHRoZXNlIHRyYW1wb2xpbmUgbWFuYWdlbWVudCBmdW5jdGlvbnM6IGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgLCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWVgLCBhbmQgYWxzbyBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrYC4gV2FpdCwgd2hhdCYjMzk7cyB0aGlzIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tgPyBJdCYjMzk7cyBiZWluZyAqY2FsbGVkKiBpbiB0aGUgcGF0Y2gsIGJ1dCBpcyBpdCAqZGVmaW5lZCogaGVyZT8gVGhlIGNvbnRleHQgaXNuJiMzOTt0IHNob3dpbmcgYSBkZWZpbml0aW9uLCB3aGljaCBpcyBub3QgdW51c3VhbCwgaXQgY291bGQgYmUgZGVmaW5lZCBlbHNld2hlcmUuCgpMZXQmIzM5O3MgZGlnIGRlZXBlci4gVGhlIHBhdGNoIGNhbGxzIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sodHIpYC4gSSBuZWVkIHRvIGVuc3VyZSBpdCYjMzk7cyBiZWVuIGRlZmluZWQsIGFuZCBlbnN1cmUgdGhhdCB0aGUgY29kZSBpcyB3ZWxsLWZvcm1lZC4gSXQgaGFzIHRvIGJlIGRlZmluZWQuIExldCYjMzk7cyBtYWtlIHN1cmUgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFja2AgZXhpc3RzIGluIHRoZSBjb2RlYmFzZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1ODY9c3RhdGljIHZvaWQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUoc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjA0LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTYwNTpzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2soc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2MDYte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE2MjI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MDYtXHRcdGJwZl90cmFtcG9saW5lX3JlbW92ZV9wcm9nKG1ub2RlLVx1MDAzZXRyYW1wb2xpbmUsIFx1MDAyNm1ub2RlLVx1MDAzZW5vZGUpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTcwNzpcdFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrKG1ub2RlLVx1MDAzZXRyYW1wb2xpbmUpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTcwOC1cdH1cbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNzIyPWludCBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluaylcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzY3LVx0XHQgICAgIChlcnJfbW9kIFx1MDAyNlx1MDAyNiB0ci1cdTAwM2VjdXJfaW1hZ2UpKSlcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3Njg6XHRcdFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrKHRyKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3NjktXHRcdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMyMAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDQxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgVHJhbXBvbGluZSBVQUYgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBhZGRyZXNzaW5nIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIEJQRiB0cmFtcG9saW5lIG11bHRpLWF0dGFjaC9kZXRhY2ggbG9naWMuIEl0IGFwcGVhcnMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSBmb2N1c2luZyBvbiBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYCBhbmQgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlYCBpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBtb2RpZmllcyBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYCB0byBwcm9wZXJseSBoYW5kbGUgZXJyb3JzIHRoYXQgbWlnaHQgY29tZSBmcm9tIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWxgIGFuZCBgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kYC4gVGhpcyBpcyBjcml0aWNhbCwgYXMgZmFpbHVyZSB0byBoYW5kbGUgdGhlc2UgZXJyb3JzIHdvdWxkIHByb3BhZ2F0ZSBhbmQgbGVhZCB0byBVQUYgaXNzdWVzLgoKVGhlIG90aGVyIHBhcnQgbW9kaWZpZXMgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlYCB0byBiZSBzbWFydGVyIGFib3V0IHJlbGVhc2luZyBgb2xkX2ltYWdlYC4gSXQgc2VlbXMgaXQgb25seSByZWxlYXNlcyB0aGUgYG9sZF9pbWFnZWAgaWYgaXQmIzM5O3MgKm5vIGxvbmdlciogdGhlIGFjdGl2ZSBpbWFnZS4gVGhpcyBwcmV2ZW50cyBwcmVtYXR1cmUgZnJlZWluZywgd2hpY2ggaXMgbGlrZWx5IHRoZSByb290IGNhdXNlIG9mIHRoZSBVQUYuIFRoZSBCUEYgc3lzY2FsbCBgbGlua19jcmVhdGVgIHdpdGggc29tZXRoaW5nIGxpa2UgYEJQRl9UUkFDRV9GRU5UUllgIG9yIG90aGVyIG11bHRpLWF0dGFjaCB0cmFjaW5nIHByb2dyYW1zIHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgdHJpZ2dlcmluZyB0aGlzIGJ1Zy4KCkkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgYW5kIGRlcGVuZGVuY2llcy4gYENPTkZJR19CUEZfU1lTQ0FMTGAsIGBDT05GSUdfQlBGX0pJVGAsIGFuZCBgQ09ORklHX0JQRl9FVkVOVFNgIGFyZSBvYnZpb3VzbHkgcmVsZXZhbnQuIGBDT05GSUdfQlBGX0pJVGAgaXMga2V5IHNpbmNlIGl0JiMzOTtzIHJlcXVpcmVkIGZvciBgdHJhbXBvbGluZS5vYCBhbmQgYGtlcm5lbC9icGYvdHJhbXBvbGluZS5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGBDT05GSUdfQlBGX0VWRU5UU2AgaXMgYWxzbyBlbmFibGVkIHNpbmNlIGl0IGxlYWRzIHRvIGBicGZfdHJhY2Uub2Agd2hpY2gsIGluIHR1cm4sIGNhbGxzIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgLiBJJiMzOTttIGd1ZXNzaW5nIGBDT05GSUdfRlRSQUNFYCBpcyBpbXBsaWVkIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbGAuIEFuZCBJIG5lZWQgdG8gY2hlY2sgYENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgYXMgdGhhdCBpcyBwcm9iYWJseSBuZWVkZWQgZm9yIGRpcmVjdCBmdHJhY2UgY2FsbHMuCgpOb3csIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBsaW5lcyB1cC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgIGdldHMgY29tcGlsZWQgaWYgYENPTkZJR19CUEZfSklUYCBpcyBzZXQgYW5kIHRoYXQgYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9FVkVOVFNgIGlzIGVuYWJsZWQuIFRpbWUgdG8gdmVyaWZ5IHRoZXNlIGNvbmZpZ3MuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZnRyYWNlLmg9NTUwPWludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9hZGQoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKTtcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NTUxOmludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKTtcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTUyLWludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2Qoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoLCBib29sIGRvX2RpcmVjdF9sb2NrKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTU4Mj1zdGF0aWMgaW5saW5lIGludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9hZGQoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKVxuLS1cbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTg2LVxuaW5jbHVkZS9saW51eC9mdHJhY2UuaDo1ODc6c3RhdGljIGlubGluZSBpbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaClcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTg4LXtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0yNjk9c3RhdGljIGludCBkaXJlY3Rfb3BzX2RlbChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB2b2lkICphZGRyKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTI3NS1cdFx0cmV0dXJuIC1FTk9NRU07XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoyNzY6XHRlcnIgPSB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwodHItXHUwMDNlZm9wcywgaGFzaCk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0yNzctXHRmcmVlX2Z0cmFjZV9oYXNoKGhhc2gpO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE2MjI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2OTAtXHRcdFx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNlcmVnKSlcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2OTE6XHRcdFx0XHRXQVJOX09OX09OQ0UodXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXHUwMDNlcmVnKSk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjkyLVx0XHRcdGdvdG8gcm9sbGJhY2tfdW5saW5rO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MjI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MzctXHRpZiAoZnRyYWNlX2hhc2hfY291bnQoZGF0YS1cdTAwM2V1bnJlZykpIHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3Mzg6XHRcdGVycl91bnJlZyA9IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbChcdTAwMjZkaXJlY3Rfb3BzLCBkYXRhLVx1MDAzZXVucmVnKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MzktXHRcdFdBUk5fT05fT05DRShlcnJfdW5yZWcpO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3NTMtXHRcdCAqXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNzU0Olx0XHQgKiBUaGlzIHJlbGllcyBvbiB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwvbW9kIGJlaW5nIGF0b21pYzpcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3NTUtXHRcdCAqIG9uIGZhaWx1cmUsIE5PIElQcyBpbiB0aGUgaGFzaCBhcmUgbW9kaWZpZWQgaW4gZnRyYWNlIChhbGxcbi0tXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM9NjQ2MT1zdGF0aWMgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoX3N1YihzdHJ1Y3QgZnRyYWNlX2hhc2ggKmEsIHN0cnVjdCBmdHJhY2VfaGFzaCAqYilcbi0tXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjQ4Ni0vKipcbmtlcm5lbC90cmFjZS9mdHJhY2UuYzo2NDg3OiAqIHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbCAtIFVwZGF0ZXMgQG9wcyBieSByZW1vdmluZyBpdHMgZGlyZWN0XG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjQ4OC0gKiBjYWxsZXJzIHByb3ZpZGVkIGluIEBoYXNoXG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTY0OTktICovXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6NjUwMDppbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaClcbmtlcm5lbC90cmFjZS9mdHJhY2UuYy02NTAxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgxMQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTU1MT1pbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCk7XG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oOjU1MjppbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCwgYm9vbCBkb19kaXJlY3RfbG9jayk7XG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTU1My1cbi0tXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTU4Nz1zdGF0aWMgaW5saW5lIGludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKVxuLS1cbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTkxLVxuaW5jbHVkZS9saW51eC9mdHJhY2UuaDo1OTI6c3RhdGljIGlubGluZSBpbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCwgYm9vbCBkb19kaXJlY3RfbG9jaylcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTkzLXtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0yODE9c3RhdGljIGludCBkaXJlY3Rfb3BzX21vZChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB2b2lkICphZGRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4KVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTI4Ny1cdFx0cmV0dXJuIC1FTk9NRU07XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoyODg6XHRlcnIgPSB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2QodHItXHUwMDNlZm9wcywgaGFzaCwgbG9ja19kaXJlY3RfbXV0ZXgpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMjg5LVx0ZnJlZV9mdHJhY2VfaGFzaChoYXNoKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNjIyPWludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjg3LVx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNlbW9kaWZ5KSkge1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTY4ODpcdFx0ZXJyID0gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXHUwMDNlbW9kaWZ5LCB0cnVlKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2ODktXHRcdGlmIChlcnIpIHtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNzIyPWludCBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluaylcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzQxLVx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNlbW9kaWZ5KSkge1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTc0MjpcdFx0ZXJyX21vZCA9IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChcdTAwMjZkaXJlY3Rfb3BzLCBkYXRhLVx1MDAzZW1vZGlmeSwgdHJ1ZSk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzQzLVx0XHRXQVJOX09OX09OQ0UoZXJyX21vZCk7XG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jPTY1MDA9aW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gpXG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTY1ODMtLyoqXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6NjU4NDogKiB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2QgLSBVcGRhdGVzIEBvcHMgYnkgbW9kaWZpbmcgaXRzIGRpcmVjdFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTY1ODUtICogY2FsbGVycyBwcm92aWRlZCBpbiBAaGFzaFxuLS1cbmtlcm5lbC90cmFjZS9mdHJhY2UuYy02NjAwLSAqL1xua2VybmVsL3RyYWNlL2Z0cmFjZS5jOjY2MDE6aW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gsIGJvb2wgZG9fZGlyZWN0X2xvY2spXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjYwMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MTMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggVmVyaWZpY2F0aW9uIGFuZCBDb25maWd1cmF0aW9uIEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHNvbGlkIGZpeDsgaXQgZGVmaW5pdGVseSBhZGRyZXNzZXMgdGhhdCBVc2UtQWZ0ZXItRnJlZSBidWcgaW4gdGhlIEJQRiB0cmFtcG9saW5lJiMzOTtzIG11bHRpLWRldGFjaCBzZXF1ZW5jZS4gVGhhdCYjMzk7cyBnb29kIHRvIHNlZS4gTm93LCBsZXQmIzM5O3MgdGFsayBhYm91dCB0aGUgcmVxdWlyZWQga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBsaXN0IGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYW5kIGBCUEZfRVZFTlRTYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSB0byB3b3JrIGNvcnJlY3RseS4KCkhvd2V2ZXIsIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gbWVudGlvbiBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLiBXaGlsZSB0aGUgY29yZSBCUEYgZWxlbWVudHMgYXJlIHRoZSBtYWluIGRyaXZlcnMgaGVyZSwgdGhlIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWxgIGZ1bmN0aW9uLCB3aGljaCBtaWdodCBiZSByZWxldmFudCBpbiBjZXJ0YWluIHNjZW5hcmlvcywgaGFzIGEgZnVsbCBpbXBsZW1lbnRhdGlvbiBvbmx5IGlmIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgaXMgZW5hYmxlZDsgb3RoZXJ3aXNlLCBpdCYjMzk7cyBqdXN0IGEgc3R1Yi4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4gYWJvdXQgdGhhdCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWxgIHdpdGhpbiBgaW5jbHVkZS9saW51eC9mdHJhY2UuaGAuIEl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIGJlIHRob3JvdWdoLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9mdHJhY2UuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTU1MD1pbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfYWRkKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCk7XG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oOjU1MTppbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCk7XG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTU1Mi1pbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCwgYm9vbCBkb19kaXJlY3RfbG9jayk7XG4tLVxuaW5jbHVkZS9saW51eC9mdHJhY2UuaD01ODI9c3RhdGljIGlubGluZSBpbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfYWRkKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaClcbi0tXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTU4Ni1cbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NTg3OnN0YXRpYyBpbmxpbmUgaW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gpXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTU4OC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTM2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9mdHJhY2UuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTQ0OT1zdHJ1Y3QgZnRyYWNlX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC00NjQtXHRzdHJ1Y3QgZnRyYWNlX29wc1x0XHQqbWFuYWdlZDtcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NDY1OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNDY2LVx0dW5zaWduZWQgbG9uZ1x0XHRcdGRpcmVjdF9jYWxsO1xuLS1cbmluY2x1ZGUvbGludXgvZnRyYWNlLmg9NTM2PXN0cnVjdCBmdHJhY2VfZnVuY19lbnRyeSB7XG4tLVxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01NDEtXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oOjU0MjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTU0My11bnNpZ25lZCBsb25nIGZ0cmFjZV9maW5kX3JlY19kaXJlY3QodW5zaWduZWQgbG9uZyBpcCk7XG4tLVxuaW5jbHVkZS9saW51eC9mdHJhY2UuaD02MTU9c3RhdGljIGlubGluZSB2b2lkIGFyY2hfZnRyYWNlX3NldF9kaXJlY3RfY2FsbGVyKHN0cnVjdCBmdHJhY2VfcmVncyAqZnJlZ3MsXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTYxNi1cdFx0XHRcdFx0XHQgdW5zaWduZWQgbG9uZyBhZGRyKSB7IH1cbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NjE3OiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFMgKi9cbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNjE4LVxuLS1cbmluY2x1ZGUvbGludXgvZnRyYWNlLmg9MTAxNz1leHRlcm4gaW50IGZ0cmFjZV9tYWtlX2NhbGwoc3RydWN0IGR5bl9mdHJhY2UgKnJlYywgdW5zaWduZWQgbG9uZyBhZGRyKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTEwMjAtXHRkZWZpbmVkKENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0NBTExfT1BTKSB8fCBcXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaDoxMDIxOlx0ZGVmaW5lZChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFMpXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTEwMjItLyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDA3CgkJCQkJCQlvdXRwdXQ6IDE1MwoJCQkJCQkJdGhvdWdodHM6IDM4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQlBGIFRyYW1wb2xpbmUgTXVsdGktRGV0YWNoIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgIGlzIHRoZSBrZXkgY29uZmlnIGZvciBlbmFibGluZyBkaXJlY3QgY2FsbHMgaW4gdGhpcyBCUEYgY29udGV4dC4gTm93LCB0byBiZSBhYnNvbHV0ZWx5IGNsZWFyIG9uIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgZWZmZWN0aXZlIHRlc3RpbmcsIEkgbmVlZCB0byBsaXN0IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uczogYEJQRl9TWVNDQUxMYCwgYEJQRl9KSVRgLCBgQlBGX0VWRU5UU2AsIGFuZCBjcnVjaWFsbHksIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AuIEFuZCwgb2YgY291cnNlLCB0aGUgdW5kZXJseWluZyBgQ09ORklHX0ZUUkFDRWAgaXMgYSByZXF1aXJlbWVudCBmb3IgdGhlIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgdG8gZnVuY3Rpb24uCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGNlbnRlcnMgb24gYWRkcmVzc2luZyBhIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBCUEYgdHJhbXBvbGluZSYjMzk7cyBtdWx0aS1kZXRhY2ggbG9naWMuIFRoZSBmaXggaXMgYWJvdXQgcm9idXN0bHkgaGFuZGxpbmcgZnRyYWNlIHVwZGF0ZSBmYWlsdXJlcy4gVGhlIHBhdGNoIHJvbGxzIGJhY2sgdGhlIGFjdGl2ZSBpbWFnZSBpZiB0aGVyZSYjMzk7cyBhIHByb2JsZW0uIFRoaXMgaXMgY3JpdGljYWwgQlBGIHRyYWNpbmcgbG9naWMsIGFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4KCkkmIzM5O3ZlIGdvdCBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRoYXQgbmVlZCBjbG9zZSBhdHRlbnRpb246IGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgLCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWVgLCBhbmQgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFja2AuICBMZXQmIzM5O3MgZG91YmxlIGNoZWNrLi4uIFllcywgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFja2AgaXMgaW5kZWVkIGRlZmluZWQgaW4gdGhlIHNvdXJjZSwgSSBjYW4gc2VlIGl0IGF0IGxpbmUgMTYwNS4KCkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgZnV6emluZyB0aGlzIGFyZWEgc2VlbXMgd29ydGh3aGlsZS4gQW5kLCBhcyBJIHNhaWQsIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcgd2lsbCBiZSB0aGUgYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAsIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrYCBmdW5jdGlvbnMuIFNvLCBJIG5lZWQgdG8gZW5zdXJlIHRob3NlIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLiAgVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY292ZXJhZ2UgSSBuZWVkIHRvIGVmZmVjdGl2ZWx5IHRlc3QgdGhpcyBwYXRjaC4gTGV0JiMzOTtzIGdldCB0aGUgcmVzdWx0cyBzZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OywKICAgICYjMzQ7RFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2gmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGluIHRoZSBCUEYgdHJhbXBvbGluZSBtdWx0aS1kZXRhY2ggbG9naWMgYnkgY29ycmVjdGx5IGhhbmRsaW5nIGZ0cmFjZSB1cGRhdGUgZmFpbHVyZXMgYW5kIHJvbGxpbmcgYmFjayB0aGUgYWN0aXZlIGltYWdlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyBmb3IgQlBGIHRyYWNpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX211bHRpX2RldGFjaCYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZSYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSBidWcgaW4gdGhlIEJQRiB0cmFtcG9saW5lIG11bHRpLWRldGFjaCBsb2dpYyBieSBjb3JyZWN0bHkgaGFuZGxpbmcgZnRyYWNlIHVwZGF0ZSBmYWlsdXJlcyBhbmQgcm9sbGluZyBiYWNrIHRoZSBhY3RpdmUgaW1hZ2UuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIGZvciBCUEYgdHJhY2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ3OjE4LjgxNDE4NDQ4MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzI5NTQ0NTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiLFxuICAgIFwiRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hcIixcbiAgICBcImJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBpbiB0aGUgQlBGIHRyYW1wb2xpbmUgbXVsdGktZGV0YWNoIGxvZ2ljIGJ5IGNvcnJlY3RseSBoYW5kbGluZyBmdHJhY2UgdXBkYXRlIGZhaWx1cmVzIGFuZCByb2xsaW5nIGJhY2sgdGhlIGFjdGl2ZSBpbWFnZS4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgZm9yIEJQRiB0cmFjaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0NzoxOC44MTQxOTAwNzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTQ1NTY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNjZmIwNjhjZGYwMTU3NWY2ZGNiNjFiNjI1YzIyMjZlMDJlYWIyNmVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMTYgMTM6NDc6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi90cmFtcG9saW5lLmMgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xcbmluZGV4IDZlYWRmNjRmN2VjOTBmLi40NGVmMjViZWI0Y2M1YyAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xcbisrKyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXFxuQEAgLTE1ODUsNyArMTU4NSwxNyBAQCBzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfaW5pdChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKVxcbiBcXG4gc3RhdGljIHZvaWQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUoc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcXG4ge1xcbi1cXHRpZiAodHItXFx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UpXFxuK1xcdC8qIE9ubHkgZnJlZSBvbGRfaW1hZ2UgaWYgaXQgaXMgbm8gbG9uZ2VyIHRoZSBhY3RpdmUgaW1hZ2UuXFxuK1xcdCAqIFdoZW4gYnBmX3RyYW1wb2xpbmVfdXBkYXRlKCkgZmFpbHMgYmVmb3JlIG1vZGlmeV9mZW50cnlfbXVsdGkoKS9cXG4rXFx0ICogdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoKSBpcyBjYWxsZWQsIGN1cl9pbWFnZSBpcyB1bmNoYW5nZWRcXG4rXFx0ICogKGN1cl9pbWFnZSA9PSBvbGRfaW1hZ2UpIGFuZCBmdHJhY2Ugc3RpbGwgcG9pbnRzIHRvIGl0LiBGcmVlaW5nXFxuK1xcdCAqIGl0IHdvdWxkIGNhdXNlIGEgVUFGIHdoZW4gZnRyYWNlIGNhbGxzIGludG8gdGhlIGZyZWVkIG1lbW9yeS5cXG4rXFx0ICogT24gc3VjY2VzcywgY3VyX2ltYWdlIGlzIGVpdGhlciBhIG5ldyBpbWFnZSBvciBOVUxMLCBzb1xcbitcXHQgKiBvbGRfaW1hZ2UgIT0gY3VyX2ltYWdlIGNvcnJlY3RseSBpZGVudGlmaWVzIGEgc3RhbGUgaW1hZ2UgdGhhdFxcbitcXHQgKiBpcyBzYWZlIHRvIGZyZWUuXFxuK1xcdCAqL1xcbitcXHRpZiAodHItXFx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHRyLVxcdTAwM2VtdWx0aV9hdHRhY2gub2xkX2ltYWdlICE9IHRyLVxcdTAwM2VjdXJfaW1hZ2UpXFxuIFxcdFxcdGJwZl90cmFtcF9pbWFnZV9wdXQodHItXFx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UpO1xcbiBcXG4gXFx0dHItXFx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgPSBOVUxMO1xcbkBAIC0xNzEzLDcgKzE3MjMsNyBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpX1xcbiB7XFxuIFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9kYXRhICpkYXRhID0gXFx1MDAyNmxpbmstXFx1MDAzZWRhdGE7XFxuIFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9ub2RlICptbm9kZTtcXG4tXFx0aW50IGk7XFxuK1xcdGludCBpLCBlcnJfdW5yZWcgPSAwLCBlcnJfbW9kID0gMDtcXG4gXFxuIFxcdHRyYW1wb2xpbmVfbG9ja19hbGwoKTtcXG4gXFxuQEAgLTE3MjQsMTMgKzE3MzQsNDEgQEAgaW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9cXG4gXFx0XFx0XFx0XFx0XFx0TlVMTCwgXFx1MDAyNnRyYW1wb2xpbmVfbXVsdGlfb3BzLCBkYXRhKSk7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChmdHJhY2VfaGFzaF9jb3VudChkYXRhLVxcdTAwM2V1bnJlZykpXFxuLVxcdFxcdFdBUk5fT05fT05DRSh1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoXFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXFx1MDAzZXVucmVnKSk7XFxuLVxcdGlmIChmdHJhY2VfaGFzaF9jb3VudChkYXRhLVxcdTAwM2Vtb2RpZnkpKVxcbi1cXHRcXHRXQVJOX09OX09OQ0UodXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKFxcdTAwMjZkaXJlY3Rfb3BzLCBkYXRhLVxcdTAwM2Vtb2RpZnksIHRydWUpKTtcXG4rXFx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXFx1MDAzZXVucmVnKSkge1xcbitcXHRcXHRlcnJfdW5yZWcgPSB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoXFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXFx1MDAzZXVucmVnKTtcXG4rXFx0XFx0V0FSTl9PTl9PTkNFKGVycl91bnJlZyk7XFxuK1xcdH1cXG4rXFx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXFx1MDAzZW1vZGlmeSkpIHtcXG4rXFx0XFx0ZXJyX21vZCA9IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChcXHUwMDI2ZGlyZWN0X29wcywgZGF0YS1cXHUwMDNlbW9kaWZ5LCB0cnVlKTtcXG4rXFx0XFx0V0FSTl9PTl9PTkNFKGVycl9tb2QpO1xcbitcXHR9XFxuIFxcbi1cXHRmb3JfZWFjaF9tbm9kZShtbm9kZSwgbGluaylcXG4tXFx0XFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUobW5vZGUtXFx1MDAzZXRyYW1wb2xpbmUpO1xcbitcXHRmb3JfZWFjaF9tbm9kZShtbm9kZSwgbGluaykge1xcbitcXHRcXHRzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyID0gbW5vZGUtXFx1MDAzZXRyYW1wb2xpbmU7XFxuK1xcbitcXHRcXHQvKiBJZiB0aGUgYmF0Y2ggZnRyYWNlIHVwZGF0ZSBmYWlsZWQgZm9yIHRoaXMgbW5vZGUncyBwYXRoLFxcbitcXHRcXHQgKiBmdHJhY2Ugc3RpbGwgcG9pbnRzIHRvIG9sZF9pbWFnZS4gVXNlIHJvbGxiYWNrIHRvIHJlc3RvcmVcXG4rXFx0XFx0ICogY3VyX2ltYWdlIHRvIG9sZF9pbWFnZSAocHV0dGluZyB0aGUgbmV3IGN1cl9pbWFnZSBpZiBhbnkpXFxuK1xcdFxcdCAqIHNvIHRoZSB0cmFtcG9saW5lIGtlZXBzIHRoZSBpbWFnZSBmdHJhY2UgaXMgY2FsbGluZy5cXG4rXFx0XFx0ICpcXG4rXFx0XFx0ICogVGhpcyByZWxpZXMgb24gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsL21vZCBiZWluZyBhdG9taWM6XFxuK1xcdFxcdCAqIG9uIGZhaWx1cmUsIE5PIElQcyBpbiB0aGUgaGFzaCBhcmUgbW9kaWZpZWQgaW4gZnRyYWNlIChhbGxcXG4rXFx0XFx0ICogdmFsaWRhdGlvbi9hbGxvY2F0aW9uIGhhcHBlbnMgYmVmb3JlIGFueSBmdHJhY2UgcmVjb3JkIGlzXFxuK1xcdFxcdCAqIHRvdWNoZWQpLiBJZiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuIGluIHRoZSBmdXR1cmUgKGkuZS4sXFxuK1xcdFxcdCAqIHBhcnRpYWwgc3VjY2VzcyBiZWNvbWVzIHBvc3NpYmxlKSwgdGhpcyByb2xsYmFjayBsb2dpYyB3b3VsZFxcbitcXHRcXHQgKiBuZWVkIHRvIGJlIHJldmlzaXRlZC5cXG4rXFx0XFx0ICpcXG4rXFx0XFx0ICogY3VyX2ltYWdlID09IE5VTEwgaW5kaWNhdGVzIHRoZSB1bnJlZyBwYXRoICh0b3RhbCA9PSAwKTtcXG4rXFx0XFx0ICogY3VyX2ltYWdlICE9IE5VTEwgaW5kaWNhdGVzIHRoZSBtb2RpZnkgcGF0aCAodG90YWwgXFx1MDAzZSAwKS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmICh0ci1cXHUwMDNlbXVsdGlfYXR0YWNoLm9sZF9pbWFnZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgdHItXFx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgIT0gdHItXFx1MDAzZWN1cl9pbWFnZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgKChlcnJfdW5yZWcgXFx1MDAyNlxcdTAwMjYgIXRyLVxcdTAwM2VjdXJfaW1hZ2UpIHx8XFxuK1xcdFxcdCAgICAgKGVycl9tb2QgXFx1MDAyNlxcdTAwMjYgdHItXFx1MDAzZWN1cl9pbWFnZSkpKVxcbitcXHRcXHRcXHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sodHIpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKHRyKTtcXG4rXFx0fVxcbiBcXG4gXFx0dHJhbXBvbGluZV91bmxvY2tfYWxsKCk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0NzoxOS40MDY1OTI1MjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NjcwMzAyMzkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiLFxuICAgIFwiRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hcIixcbiAgICBcImJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBpbiB0aGUgQlBGIHRyYW1wb2xpbmUgbXVsdGktZGV0YWNoIGxvZ2ljIGJ5IGNvcnJlY3RseSBoYW5kbGluZyBmdHJhY2UgdXBkYXRlIGZhaWx1cmVzIGFuZCByb2xsaW5nIGJhY2sgdGhlIGFjdGl2ZSBpbWFnZS4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgZm9yIEJQRiB0cmFjaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNjZmIwNjhjZGYwMTU3NWY2ZGNiNjFiNjI1YzIyMjZlMDJlYWIyNmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAxMzo0NzoxNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jIGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbmluZGV4IDZlYWRmNjRmN2VjOTBmLi40NGVmMjViZWI0Y2M1YyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXG4rKysgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuQEAgLTE1ODUsNyArMTU4NSwxNyBAQCBzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfaW5pdChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKVxuIFxuIHN0YXRpYyB2b2lkIGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpXG4ge1xuLVx0aWYgKHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UpXG4rXHQvKiBPbmx5IGZyZWUgb2xkX2ltYWdlIGlmIGl0IGlzIG5vIGxvbmdlciB0aGUgYWN0aXZlIGltYWdlLlxuK1x0ICogV2hlbiBicGZfdHJhbXBvbGluZV91cGRhdGUoKSBmYWlscyBiZWZvcmUgbW9kaWZ5X2ZlbnRyeV9tdWx0aSgpL1xuK1x0ICogdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoKSBpcyBjYWxsZWQsIGN1cl9pbWFnZSBpcyB1bmNoYW5nZWRcbitcdCAqIChjdXJfaW1hZ2UgPT0gb2xkX2ltYWdlKSBhbmQgZnRyYWNlIHN0aWxsIHBvaW50cyB0byBpdC4gRnJlZWluZ1xuK1x0ICogaXQgd291bGQgY2F1c2UgYSBVQUYgd2hlbiBmdHJhY2UgY2FsbHMgaW50byB0aGUgZnJlZWQgbWVtb3J5LlxuK1x0ICogT24gc3VjY2VzcywgY3VyX2ltYWdlIGlzIGVpdGhlciBhIG5ldyBpbWFnZSBvciBOVUxMLCBzb1xuK1x0ICogb2xkX2ltYWdlICE9IGN1cl9pbWFnZSBjb3JyZWN0bHkgaWRlbnRpZmllcyBhIHN0YWxlIGltYWdlIHRoYXRcbitcdCAqIGlzIHNhZmUgdG8gZnJlZS5cbitcdCAqL1xuK1x0aWYgKHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgXHUwMDI2XHUwMDI2XG4rXHQgICAgdHItXHUwMDNlbXVsdGlfYXR0YWNoLm9sZF9pbWFnZSAhPSB0ci1cdTAwM2VjdXJfaW1hZ2UpXG4gXHRcdGJwZl90cmFtcF9pbWFnZV9wdXQodHItXHUwMDNlbXVsdGlfYXR0YWNoLm9sZF9pbWFnZSk7XG4gXG4gXHR0ci1cdTAwM2VtdWx0aV9hdHRhY2gub2xkX2ltYWdlID0gTlVMTDtcbkBAIC0xNzEzLDcgKzE3MjMsNyBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpX1xuIHtcbiBcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9kYXRhICpkYXRhID0gXHUwMDI2bGluay1cdTAwM2VkYXRhO1xuIFx0c3RydWN0IGJwZl90cmFjaW5nX211bHRpX25vZGUgKm1ub2RlO1xuLVx0aW50IGk7XG4rXHRpbnQgaSwgZXJyX3VucmVnID0gMCwgZXJyX21vZCA9IDA7XG4gXG4gXHR0cmFtcG9saW5lX2xvY2tfYWxsKCk7XG4gXG5AQCAtMTcyNCwxMyArMTczNCw0MSBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpX1xuIFx0XHRcdFx0XHROVUxMLCBcdTAwMjZ0cmFtcG9saW5lX211bHRpX29wcywgZGF0YSkpO1xuIFx0fVxuIFxuLVx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNldW5yZWcpKVxuLVx0XHRXQVJOX09OX09OQ0UodXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXHUwMDNldW5yZWcpKTtcbi1cdGlmIChmdHJhY2VfaGFzaF9jb3VudChkYXRhLVx1MDAzZW1vZGlmeSkpXG4tXHRcdFdBUk5fT05fT05DRSh1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2QoXHUwMDI2ZGlyZWN0X29wcywgZGF0YS1cdTAwM2Vtb2RpZnksIHRydWUpKTtcbitcdGlmIChmdHJhY2VfaGFzaF9jb3VudChkYXRhLVx1MDAzZXVucmVnKSkge1xuK1x0XHRlcnJfdW5yZWcgPSB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoXHUwMDI2ZGlyZWN0X29wcywgZGF0YS1cdTAwM2V1bnJlZyk7XG4rXHRcdFdBUk5fT05fT05DRShlcnJfdW5yZWcpO1xuK1x0fVxuK1x0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNlbW9kaWZ5KSkge1xuK1x0XHRlcnJfbW9kID0gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXHUwMDNlbW9kaWZ5LCB0cnVlKTtcbitcdFx0V0FSTl9PTl9PTkNFKGVycl9tb2QpO1xuK1x0fVxuIFxuLVx0Zm9yX2VhY2hfbW5vZGUobW5vZGUsIGxpbmspXG4tXHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKG1ub2RlLVx1MDAzZXRyYW1wb2xpbmUpO1xuK1x0Zm9yX2VhY2hfbW5vZGUobW5vZGUsIGxpbmspIHtcbitcdFx0c3RydWN0IGJwZl90cmFtcG9saW5lICp0ciA9IG1ub2RlLVx1MDAzZXRyYW1wb2xpbmU7XG4rXG4rXHRcdC8qIElmIHRoZSBiYXRjaCBmdHJhY2UgdXBkYXRlIGZhaWxlZCBmb3IgdGhpcyBtbm9kZSdzIHBhdGgsXG4rXHRcdCAqIGZ0cmFjZSBzdGlsbCBwb2ludHMgdG8gb2xkX2ltYWdlLiBVc2Ugcm9sbGJhY2sgdG8gcmVzdG9yZVxuK1x0XHQgKiBjdXJfaW1hZ2UgdG8gb2xkX2ltYWdlIChwdXR0aW5nIHRoZSBuZXcgY3VyX2ltYWdlIGlmIGFueSlcbitcdFx0ICogc28gdGhlIHRyYW1wb2xpbmUga2VlcHMgdGhlIGltYWdlIGZ0cmFjZSBpcyBjYWxsaW5nLlxuK1x0XHQgKlxuK1x0XHQgKiBUaGlzIHJlbGllcyBvbiB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwvbW9kIGJlaW5nIGF0b21pYzpcbitcdFx0ICogb24gZmFpbHVyZSwgTk8gSVBzIGluIHRoZSBoYXNoIGFyZSBtb2RpZmllZCBpbiBmdHJhY2UgKGFsbFxuK1x0XHQgKiB2YWxpZGF0aW9uL2FsbG9jYXRpb24gaGFwcGVucyBiZWZvcmUgYW55IGZ0cmFjZSByZWNvcmQgaXNcbitcdFx0ICogdG91Y2hlZCkuIElmIHRoaXMgYXNzdW1wdGlvbiBpcyBicm9rZW4gaW4gdGhlIGZ1dHVyZSAoaS5lLixcbitcdFx0ICogcGFydGlhbCBzdWNjZXNzIGJlY29tZXMgcG9zc2libGUpLCB0aGlzIHJvbGxiYWNrIGxvZ2ljIHdvdWxkXG4rXHRcdCAqIG5lZWQgdG8gYmUgcmV2aXNpdGVkLlxuK1x0XHQgKlxuK1x0XHQgKiBjdXJfaW1hZ2UgPT0gTlVMTCBpbmRpY2F0ZXMgdGhlIHVucmVnIHBhdGggKHRvdGFsID09IDApO1xuK1x0XHQgKiBjdXJfaW1hZ2UgIT0gTlVMTCBpbmRpY2F0ZXMgdGhlIG1vZGlmeSBwYXRoICh0b3RhbCBcdTAwM2UgMCkuXG4rXHRcdCAqL1xuK1x0XHRpZiAodHItXHUwMDNlbXVsdGlfYXR0YWNoLm9sZF9pbWFnZSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgIT0gdHItXHUwMDNlY3VyX2ltYWdlIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgKChlcnJfdW5yZWcgXHUwMDI2XHUwMDI2ICF0ci1cdTAwM2VjdXJfaW1hZ2UpIHx8XG4rXHRcdCAgICAgKGVycl9tb2QgXHUwMDI2XHUwMDI2IHRyLVx1MDAzZWN1cl9pbWFnZSkpKVxuK1x0XHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFjayh0cik7XG4rXHRcdGVsc2VcbitcdFx0XHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZSh0cik7XG4rXHR9XG4gXG4gXHR0cmFtcG9saW5lX3VubG9ja19hbGwoKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ3OjE5LjQwNjU5Mzc4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyOTg2MTg0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFRyYW1wb2xpbmUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGtlcm5lbCBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AuIEZyb20gd2hhdCBJIHNlZSwgaXQncyBtb2RpZnlpbmcgdGhlIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAgYW5kIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIGZ1bmN0aW9ucy4gSXQgc2VlbXMgbGlrZSBhIG5ldyBjaGVjaywgYHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgIT0gdHItXHUwMDNlY3VyX2ltYWdlYCwgaGFzIGJlZW4gYWRkZWQgYmVmb3JlIGZyZWVpbmcgYG9sZF9pbWFnZWAsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBhbHNvIGFwcGVhcnMgdGhlIHBhdGNoIGlzIG5vdyBoYW5kbGluZyBwb3RlbnRpYWwgZXJyb3JzIGZyb20gYHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbGAgYW5kIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2RgIGluIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgLiBJbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IsIGl0J3MgY2FsbGluZyBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrKHRyKWAuXG5cblRoaXMgbWFrZXMgc2Vuc2UsIGl0IGxvb2tzIGxpa2UgYSB0YXJnZXRlZCBjaGFuZ2Ugd2l0aGluIHRoZSBCUEYgdHJhbXBvbGluZSBtdWx0aS1hdHRhY2gvZGV0YWNoIGxvZ2ljLiBUbyB2ZXJpZnkgaXRzIGJlaGF2aW9yIGFuZCByb2J1c3RuZXNzLCBJIHNob3VsZCBwdXQgdG9nZXRoZXIgc29tZSBmdXp6aW5nIHJvdXRpbmVzIGZvciBib3RoIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWVgLlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBlbmFibGUgdGhpcyBCUEYgdHJhbXBvbGluZSBmdW5jdGlvbmFsaXR5LiBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gcXVpY2tseSBsb2NhdGUgdGhlIGNvbmZpZ3VyYXRpb24ga25vYnMgYXNzb2NpYXRlZCB3aXRoIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM2LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDc6MjQuNzA1MjE0MDQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3ODkxNzYwMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9MTUyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXFxuaW5jbHVkZS9saW51eC9icGYuaC0xNTIzLVxcdFxcdFxcdFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1MjQ6aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuaW5jbHVkZS9saW51eC9icGYuaC0xNTI1LVxcdFxcdFxcdFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MTYzOT1zdGF0aWMgaW5saW5lIGludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTY0My19XFxuaW5jbHVkZS9saW51eC9icGYuaDoxNjQ0OnN0YXRpYyBpbmxpbmUgaW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuaW5jbHVkZS9saW51eC9icGYuaC0xNjQ1LVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTYyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzIxLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3MjI6aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MjMte1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM2ODU9c3RhdGljIHZvaWQgYnBmX3RyYWNpbmdfbXVsdGlfbGlua19yZWxlYXNlKHN0cnVjdCBicGZfbGluayAqbGluaylcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zNjg5LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozNjkwOlxcdFdBUk5fT05fT05DRShicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2gobGluay1cXHUwMDNlcHJvZywgdHJfbGluaykpO1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zNjkxLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDc6MjcuNDk0Mzk3ODk2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTc3MjM0NDIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBkZWVwIGluIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgZmFtaWxpYXIgd2l0aCBCUEY6XG5cbioqTmF2aWdhdGluZyB0aGUgQlBGIFRyYW1wb2xpbmUgTGFuZHNjYXBlKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYC4gSSBrbm93IHRoYXQgZnVuY3Rpb24sIGl0J3MgYSBrZXkgcGFydCBvZiB0aGUgbXVsdGktZGV0YWNoIGZ1bmN0aW9uYWxpdHkgd2UndmUgZ290IGluIEJQRi4gTm93LCB3aGVyZSBpcyB0aGF0IGFjdHVhbGx5IGRlZmluZWQ/IE9rYXksIG1lbW9yeSBqb2dnZWQsIGl0J3Mgc2l0dGluZyBpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBHb29kLCBnb29kLiBCdXQgSSBuZWVkIHRvIHJlZnJlc2ggdGhlIGRldGFpbHMsIGVzcGVjaWFsbHkgYXMgaXQgcmVsYXRlcyB0byBjb25maWcgb3B0aW9ucy4gTGV0J3MgcHVsbCB1cCB0aGUgS2NvbmZpZyBmb3IgdGhhdCBmaWxlIHRvIHNlZSB3aGF0IGZlYXR1cmVzIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgaXQgdG8gYmUgY29tcGlsZWQgaW4uIEdvdHRhIG1ha2Ugc3VyZSBhbGwgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24ga25vYnMgYXJlIGZsaXBwZWQsIHNvIHRoYXQgbXVsdGktZGV0YWNoIGlzIGFjdGl2ZSBhbmQgcmVhZHkgdG8gdXNlIVxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDc6MzcuMjY2NzQ1MTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4OTg1NTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyYW1wb2xpbmVcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZGlzYXNtLm8gbXByb2cub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IHRyYW1wb2xpbmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0NzozNy4zODU3NDEzOTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjEwODQ4OTY1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjM5OTksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ3OjQ5LjQ5NDIzNDE2N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjA0NDQyNDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFjaW5nX211bHRpX2xpbmtfcmVsZWFzZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MzY4MD1fX2JwZl9rZnVuY19lbmRfZGVmcygpO1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM2ODQtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM2ODU6c3RhdGljIHZvaWQgYnBmX3RyYWNpbmdfbXVsdGlfbGlua19yZWxlYXNlKHN0cnVjdCBicGZfbGluayAqbGluaylcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzY4Ni17XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9Mzc4ND1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9saW5rX29wcyBicGZfdHJhY2luZ19tdWx0aV9saW5rX2xvcHMgPSB7XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM3ODU6XFx0LnJlbGVhc2UgPSBicGZfdHJhY2luZ19tdWx0aV9saW5rX3JlbGVhc2UsXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM3ODYtXFx0LmRlYWxsb2NfZGVmZXJyZWQgPSBicGZfdHJhY2luZ19tdWx0aV9saW5rX2RlYWxsb2MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ3OjUyLjA5ODY4NTU4NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNzI1MjAwMDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6NDI0NiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDg6MDUuODIzODg5NDAyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTA5NzM5MjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFjaW5nX211bHRpX2xpbmtfbG9wc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9Mzc1OD1zdGF0aWMgdm9pZCBicGZfdHJhY2luZ19tdWx0aV9zaG93X2ZkaW5mbyhjb25zdCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzc4My1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6Mzc4NDpzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9saW5rX29wcyBicGZfdHJhY2luZ19tdWx0aV9saW5rX2xvcHMgPSB7XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM3ODUtXFx0LnJlbGVhc2UgPSBicGZfdHJhY2luZ19tdWx0aV9saW5rX3JlbGVhc2UsXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9Mzg0MD1pbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkwMS1cXHRicGZfbGlua19pbml0KFxcdTAwMjZsaW5rLVxcdTAwM2VsaW5rLCBCUEZfTElOS19UWVBFX1RSQUNJTkdfTVVMVEksXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM5MDI6XFx0XFx0ICAgICAgXFx1MDAyNmJwZl90cmFjaW5nX211bHRpX2xpbmtfbG9wcywgcHJvZywgcHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpO1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTAzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0ODowOC4zMzM2NDI5OTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMyNzE5MzQ3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjo0NTYxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0ODoyMS42MDU1Nzk2ODJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NTgwNTIxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9Nzg5PWludCBicGZfdXByb2JlX211bHRpX2xpbmtfYXR0YWNoKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6NzkwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cik7XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03OTEtI2Vsc2VcXG4tLVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9ODQ4PXN0YXRpYyBpbmxpbmUgaW50XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo4NDk6YnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC04NTAte1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTc2NT1zdGF0aWMgaW50IGxpbmtfY3JlYXRlKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU4MTUtXFx0XFx0ZWxzZSBpZiAoaXNfdHJhY2luZ19tdWx0aShwcm9nLVxcdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZSkpXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTgxNjpcXHRcXHRcXHRyZXQgPSBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2gocHJvZywgYXR0cik7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTgxNy1cXHRcXHRlbHNlXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MzgxOT1zdGF0aWMgaW50IGNoZWNrX2R1cF9pZHModTMyICppZHMsIHU2NCAqY29va2llcywgdTMyIGNudClcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zODM5LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozODQwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzg0MS17XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkyOS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MzkzMDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MzEte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0ODoyNC41NjM2NDEyMDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ4MjYzNDE2ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQlBGIFRyYWNpbmcgTXVsdGktQXR0YWNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgQlBGX0xJTktfVFlQRV9UUkFDSU5HX01VTFRJYC4gVGhhdCdzIGNyZWF0ZWQgdGhyb3VnaCB0aGUgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgZnVuY3Rpb24sIHdoaWNoIGlzIHVsdGltYXRlbHkgY2FsbGVkIGZyb20gYGxpbmtfY3JlYXRlYCBpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBHb29kLCB0aGF0IG1lYW5zIGl0J3MgYSBkZWZpbml0ZSBwYXRod2F5LCByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgaW4gdGhlIGtlcm5lbC5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBlbmFibGVkLiBEZWZpbml0ZWx5IG5lZWQgYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfQlBGX0pJVGAuIFRob3NlIGFyZSBlc3NlbnRpYWwuIEFuZCwgc2luY2UgdGhpcyBpbnZvbHZlcyB0cmFjaW5nLCBpdCdzIGhpZ2hseSBwcm9iYWJsZSB0aGF0IGBDT05GSUdfRlRSQUNFYCBpcyBhbHNvIHJlcXVpcmVkLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBieSBleGFtaW5pbmcgYGtlcm5lbC90cmFjZS9NYWtlZmlsZWAgdG8gc2VlIGlmIGBicGZfdHJhY2UuY2AgaXMgYmVpbmcgY29tcGlsZWQuIEp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluIHRoYXQgdHJhY2luZyBzdXBwb3J0IGlzIGF2YWlsYWJsZSBhbmQgcHJvcGVybHkgbGlua2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mzg1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ4OjM5LjM4OTk4Njk4OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAzNTQzODAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFjZVxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvdHJhY2UvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3RyYWNlL01ha2VmaWxlPTU0PUtDT1ZfSU5TVFJVTUVOVF90cmFjZV9pcnFzb2ZmLm8gOj0gblxcbmtlcm5lbC90cmFjZS9NYWtlZmlsZS01NS1cXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU6NTY6Q0ZMQUdTX2JwZl90cmFjZS5vIDo9IC1JJChzcmMpXFxua2VybmVsL3RyYWNlL01ha2VmaWxlLTU3LVxcbi0tXFxua2VybmVsL3RyYWNlL01ha2VmaWxlPTEwOT1vYmotJChDT05GSUdfVVNFUl9FVkVOVFMpICs9IHRyYWNlX2V2ZW50c191c2VyLm9cXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU6MTEwOm9iai0kKENPTkZJR19CUEZfRVZFTlRTKSArPSBicGZfdHJhY2Uub1xcbmtlcm5lbC90cmFjZS9NYWtlZmlsZS0xMTEtb2JqLSQoQ09ORklHX0tQUk9CRV9FVkVOVFMpICs9IHRyYWNlX2twcm9iZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ4OjM5LjY5MzUzNzY5OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODU1MjU0Nzk4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBUcmFtcG9saW5lIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IHRvdWNoaW5nIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AsIHNwZWNpZmljYWxseSB0aGUgYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAgYW5kIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAgZnVuY3Rpb25zLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3Rpbmc7IHRoZXNlIGFyZSBjb3JlIGNvbXBvbmVudHMgZm9yIG1hbmFnaW5nIEJQRiB0cmFtcG9saW5lcy4gVGhlIGFkZGl0aW9uIG9mIHJvbGxiYWNrIGxvZ2ljIGhlcmUgaXMgd2hhdCdzIGNydWNpYWwuIEl0IG1lYW5zIHRoZXkncmUgYWRkaW5nIGEgc2FmZXR5IG5ldCB3aGVuIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWxgIG9yIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2RgIGZhaWwsIHdoaWNoIGlzIGdvb2QuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSByZWFjaGFibGUgY29kZSBwYXRoIHRocm91Z2ggYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgYW5kIGl0cyBhc3NvY2lhdGVkIHJlbGVhc2UgbWVjaGFuaXNtcy4gVGhhdCBtYWtlcyBzZW5zZSBmb3IgdGhlIHVzZSBjYXNlLlxuXG5Gcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgYENPTkZJR19CUEZfSklUYCwgYENPTkZJR19CUEZfRVZFTlRTYCwgYW5kIGBDT05GSUdfQlBGX1NZU0NBTExgIGFyZSB0aGUga2V5IGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zLiBXaXRob3V0IHRob3NlLCB0aGlzIGlzIGFsbCBhY2FkZW1pYy4gVGhlIHJlYWwgbWVhdCBvZiB0aGUgY2hhbmdlcyBpcyBjZW50ZXJlZCBhcm91bmQgdGhlc2UgdHJhbXBvbGluZSBtYW5hZ2VtZW50IGZ1bmN0aW9uczogYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAsIGFuZCBhbHNvIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tgLiBXYWl0LCB3aGF0J3MgdGhpcyBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrYD8gSXQncyBiZWluZyAqY2FsbGVkKiBpbiB0aGUgcGF0Y2gsIGJ1dCBpcyBpdCAqZGVmaW5lZCogaGVyZT8gVGhlIGNvbnRleHQgaXNuJ3Qgc2hvd2luZyBhIGRlZmluaXRpb24sIHdoaWNoIGlzIG5vdCB1bnVzdWFsLCBpdCBjb3VsZCBiZSBkZWZpbmVkIGVsc2V3aGVyZS5cblxuTGV0J3MgZGlnIGRlZXBlci4gVGhlIHBhdGNoIGNhbGxzIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sodHIpYC4gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIGJlZW4gZGVmaW5lZCwgYW5kIGVuc3VyZSB0aGF0IHRoZSBjb2RlIGlzIHdlbGwtZm9ybWVkLiBJdCBoYXMgdG8gYmUgZGVmaW5lZC4gTGV0J3MgbWFrZSBzdXJlIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tgIGV4aXN0cyBpbiB0aGUgY29kZWJhc2UhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MTEsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDg6NTguMjQ2MDg4OTM0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDU2Njc0ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTg2PXN0YXRpYyB2b2lkIGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjA0LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2MDU6c3RhdGljIHZvaWQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTYwNi17XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNjIyPWludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MDYtXFx0XFx0YnBmX3RyYW1wb2xpbmVfcmVtb3ZlX3Byb2cobW5vZGUtXFx1MDAzZXRyYW1wb2xpbmUsIFxcdTAwMjZtbm9kZS1cXHUwMDNlbm9kZSk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTcwNzpcXHRcXHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sobW5vZGUtXFx1MDAzZXRyYW1wb2xpbmUpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MDgtXFx0fVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTcyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbmsgKmxpbmspXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzY3LVxcdFxcdCAgICAgKGVycl9tb2QgXFx1MDAyNlxcdTAwMjYgdHItXFx1MDAzZWN1cl9pbWFnZSkpKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3Njg6XFx0XFx0XFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrKHRyKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzY5LVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDk6MDIuNzAyNzcyMzMyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4NTU5NDc1MzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBUcmFtcG9saW5lIFVBRiBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgQlBGIHRyYW1wb2xpbmUgbXVsdGktYXR0YWNoL2RldGFjaCBsb2dpYy4gSXQgYXBwZWFycyB0byBiZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZvY3VzaW5nIG9uIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWVgIGluIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIG1vZGlmaWVzIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIHRvIHByb3Blcmx5IGhhbmRsZSBlcnJvcnMgdGhhdCBtaWdodCBjb21lIGZyb20gYHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbGAgYW5kIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2RgLiBUaGlzIGlzIGNyaXRpY2FsLCBhcyBmYWlsdXJlIHRvIGhhbmRsZSB0aGVzZSBlcnJvcnMgd291bGQgcHJvcGFnYXRlIGFuZCBsZWFkIHRvIFVBRiBpc3N1ZXMuXG5cblRoZSBvdGhlciBwYXJ0IG1vZGlmaWVzIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAgdG8gYmUgc21hcnRlciBhYm91dCByZWxlYXNpbmcgYG9sZF9pbWFnZWAuIEl0IHNlZW1zIGl0IG9ubHkgcmVsZWFzZXMgdGhlIGBvbGRfaW1hZ2VgIGlmIGl0J3MgKm5vIGxvbmdlciogdGhlIGFjdGl2ZSBpbWFnZS4gVGhpcyBwcmV2ZW50cyBwcmVtYXR1cmUgZnJlZWluZywgd2hpY2ggaXMgbGlrZWx5IHRoZSByb290IGNhdXNlIG9mIHRoZSBVQUYuIFRoZSBCUEYgc3lzY2FsbCBgbGlua19jcmVhdGVgIHdpdGggc29tZXRoaW5nIGxpa2UgYEJQRl9UUkFDRV9GRU5UUllgIG9yIG90aGVyIG11bHRpLWF0dGFjaCB0cmFjaW5nIHByb2dyYW1zIHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgdHJpZ2dlcmluZyB0aGlzIGJ1Zy5cblxuSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBidWlsZCBlbnZpcm9ubWVudCBhbmQgZGVwZW5kZW5jaWVzLiBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19CUEZfSklUYCwgYW5kIGBDT05GSUdfQlBGX0VWRU5UU2AgYXJlIG9idmlvdXNseSByZWxldmFudC4gYENPTkZJR19CUEZfSklUYCBpcyBrZXkgc2luY2UgaXQncyByZXF1aXJlZCBmb3IgYHRyYW1wb2xpbmUub2AgYW5kIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBgQ09ORklHX0JQRl9FVkVOVFNgIGlzIGFsc28gZW5hYmxlZCBzaW5jZSBpdCBsZWFkcyB0byBgYnBmX3RyYWNlLm9gIHdoaWNoLCBpbiB0dXJuLCBjYWxscyBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYC4gSSdtIGd1ZXNzaW5nIGBDT05GSUdfRlRSQUNFYCBpcyBpbXBsaWVkIHNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsYC4gQW5kIEkgbmVlZCB0byBjaGVjayBgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYCBhcyB0aGF0IGlzIHByb2JhYmx5IG5lZWRlZCBmb3IgZGlyZWN0IGZ0cmFjZSBjYWxscy5cblxuTm93LCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBsaW5lcyB1cC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgIGdldHMgY29tcGlsZWQgaWYgYENPTkZJR19CUEZfSklUYCBpcyBzZXQgYW5kIHRoYXQgYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9FVkVOVFNgIGlzIGVuYWJsZWQuIFRpbWUgdG8gdmVyaWZ5IHRoZXNlIGNvbmZpZ3MuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMyMCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0OToyMS4yNjIyNTA1NjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzc2MzY2ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZnRyYWNlLmg9NTUwPWludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9hZGQoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKTtcXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oOjU1MTppbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCk7XFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01NTItaW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gsIGJvb2wgZG9fZGlyZWN0X2xvY2spO1xcbi0tXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaD01ODI9c3RhdGljIGlubGluZSBpbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfYWRkKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaClcXG4tLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTg2LVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NTg3OnN0YXRpYyBpbmxpbmUgaW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gpXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01ODgte1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MjY5PXN0YXRpYyBpbnQgZGlyZWN0X29wc19kZWwoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdm9pZCAqYWRkcilcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTI3NS1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoyNzY6XFx0ZXJyID0gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHRyLVxcdTAwM2Vmb3BzLCBoYXNoKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0yNzctXFx0ZnJlZV9mdHJhY2VfaGFzaChoYXNoKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE2MjI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTY5MC1cXHRcXHRcXHRpZiAoZnRyYWNlX2hhc2hfY291bnQoZGF0YS1cXHUwMDNlcmVnKSlcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNjkxOlxcdFxcdFxcdFxcdFdBUk5fT05fT05DRSh1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoXFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXFx1MDAzZXJlZykpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2OTItXFx0XFx0XFx0Z290byByb2xsYmFja191bmxpbms7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNzIyPWludCBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluaylcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MzctXFx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXFx1MDAzZXVucmVnKSkge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3Mzg6XFx0XFx0ZXJyX3VucmVnID0gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKFxcdTAwMjZkaXJlY3Rfb3BzLCBkYXRhLVxcdTAwM2V1bnJlZyk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTczOS1cXHRcXHRXQVJOX09OX09OQ0UoZXJyX3VucmVnKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3NTMtXFx0XFx0ICpcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNzU0OlxcdFxcdCAqIFRoaXMgcmVsaWVzIG9uIHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbC9tb2QgYmVpbmcgYXRvbWljOlxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3NTUtXFx0XFx0ICogb24gZmFpbHVyZSwgTk8gSVBzIGluIHRoZSBoYXNoIGFyZSBtb2RpZmllZCBpbiBmdHJhY2UgKGFsbFxcbi0tXFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jPTY0NjE9c3RhdGljIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaF9zdWIoc3RydWN0IGZ0cmFjZV9oYXNoICphLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmIpXFxuLS1cXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjQ4Ni0vKipcXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6NjQ4NzogKiB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwgLSBVcGRhdGVzIEBvcHMgYnkgcmVtb3ZpbmcgaXRzIGRpcmVjdFxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYy02NDg4LSAqIGNhbGxlcnMgcHJvdmlkZWQgaW4gQGhhc2hcXG4tLVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYy02NDk5LSAqL1xcbmtlcm5lbC90cmFjZS9mdHJhY2UuYzo2NTAwOmludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYy02NTAxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDk6MjYuNDM5ODk5ODc2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyOTY2OTc0NTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6NzgxMSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDk6MzkuNDA2ODc4MTAyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDgwOTU0NzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTU1MT1pbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCk7XFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaDo1NTI6aW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gsIGJvb2wgZG9fZGlyZWN0X2xvY2spO1xcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTUzLVxcbi0tXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaD01ODc9c3RhdGljIGlubGluZSBpbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaClcXG4tLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTkxLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NTkyOnN0YXRpYyBpbmxpbmUgaW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gsIGJvb2wgZG9fZGlyZWN0X2xvY2spXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01OTMte1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MjgxPXN0YXRpYyBpbnQgZGlyZWN0X29wc19tb2Qoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdm9pZCAqYWRkciwgYm9vbCBsb2NrX2RpcmVjdF9tdXRleClcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTI4Ny1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoyODg6XFx0ZXJyID0gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKHRyLVxcdTAwM2Vmb3BzLCBoYXNoLCBsb2NrX2RpcmVjdF9tdXRleCk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMjg5LVxcdGZyZWVfZnRyYWNlX2hhc2goaGFzaCk7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNjIyPWludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2ODctXFx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXFx1MDAzZW1vZGlmeSkpIHtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNjg4OlxcdFxcdGVyciA9IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChcXHUwMDI2ZGlyZWN0X29wcywgZGF0YS1cXHUwMDNlbW9kaWZ5LCB0cnVlKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjg5LVxcdFxcdGlmIChlcnIpIHtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MjI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTc0MS1cXHRpZiAoZnRyYWNlX2hhc2hfY291bnQoZGF0YS1cXHUwMDNlbW9kaWZ5KSkge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3NDI6XFx0XFx0ZXJyX21vZCA9IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChcXHUwMDI2ZGlyZWN0X29wcywgZGF0YS1cXHUwMDNlbW9kaWZ5LCB0cnVlKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzQzLVxcdFxcdFdBUk5fT05fT05DRShlcnJfbW9kKTtcXG4tLVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYz02NTAwPWludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKVxcbi0tXFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTY1ODMtLyoqXFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jOjY1ODQ6ICogdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kIC0gVXBkYXRlcyBAb3BzIGJ5IG1vZGlmaW5nIGl0cyBkaXJlY3RcXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjU4NS0gKiBjYWxsZXJzIHByb3ZpZGVkIGluIEBoYXNoXFxuLS1cXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjYwMC0gKi9cXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6NjYwMTppbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCwgYm9vbCBkb19kaXJlY3RfbG9jaylcXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjYwMi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ5OjQ1Ljg4NzgzOTU2NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjAxOTA0NDA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBWZXJpZmljYXRpb24gYW5kIENvbmZpZ3VyYXRpb24gQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzb2xpZCBmaXg7IGl0IGRlZmluaXRlbHkgYWRkcmVzc2VzIHRoYXQgVXNlLUFmdGVyLUZyZWUgYnVnIGluIHRoZSBCUEYgdHJhbXBvbGluZSdzIG11bHRpLWRldGFjaCBzZXF1ZW5jZS4gVGhhdCdzIGdvb2QgdG8gc2VlLiBOb3csIGxldCdzIHRhbGsgYWJvdXQgdGhlIHJlcXVpcmVkIGtlcm5lbCBjb25maWd1cmF0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbGlzdCBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGFuZCBgQlBGX0VWRU5UU2AuIFRob3NlIGFyZSB0aGUgY29yZSBjb21wb25lbnRzIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gd29yayBjb3JyZWN0bHkuXG5cbkhvd2V2ZXIsIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gbWVudGlvbiBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLiBXaGlsZSB0aGUgY29yZSBCUEYgZWxlbWVudHMgYXJlIHRoZSBtYWluIGRyaXZlcnMgaGVyZSwgdGhlIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWxgIGZ1bmN0aW9uLCB3aGljaCBtaWdodCBiZSByZWxldmFudCBpbiBjZXJ0YWluIHNjZW5hcmlvcywgaGFzIGEgZnVsbCBpbXBsZW1lbnRhdGlvbiBvbmx5IGlmIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgaXMgZW5hYmxlZDsgb3RoZXJ3aXNlLCBpdCdzIGp1c3QgYSBzdHViLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbiBhYm91dCB0aGF0LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbGAgd2l0aGluIGBpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oYC4gSXQncyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBrZXJuZWwgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MTMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NTA6MDEuOTA2ODg2MjA5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU3MDAwODk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZnRyYWNlLmg9NTUwPWludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9hZGQoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKTtcXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oOjU1MTppbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCk7XFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01NTItaW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gsIGJvb2wgZG9fZGlyZWN0X2xvY2spO1xcbi0tXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaD01ODI9c3RhdGljIGlubGluZSBpbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfYWRkKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaClcXG4tLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTg2LVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NTg3OnN0YXRpYyBpbmxpbmUgaW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gpXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01ODgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo1MDowMy44NjM4OTQyMTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MzU3NTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjEwNTM2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo1MDowOC4wMDc0NzM1MjNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTQ5MzcxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9mdHJhY2UuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTQ0OT1zdHJ1Y3QgZnRyYWNlX29wcyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTQ2NC1cXHRzdHJ1Y3QgZnRyYWNlX29wc1xcdFxcdCptYW5hZ2VkO1xcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NDY1OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTQ2Ni1cXHR1bnNpZ25lZCBsb25nXFx0XFx0XFx0ZGlyZWN0X2NhbGw7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTUzNj1zdHJ1Y3QgZnRyYWNlX2Z1bmNfZW50cnkge1xcbi0tXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01NDEtXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaDo1NDI6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTQzLXVuc2lnbmVkIGxvbmcgZnRyYWNlX2ZpbmRfcmVjX2RpcmVjdCh1bnNpZ25lZCBsb25nIGlwKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg9NjE1PXN0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2Z0cmFjZV9zZXRfZGlyZWN0X2NhbGxlcihzdHJ1Y3QgZnRyYWNlX3JlZ3MgKmZyZWdzLFxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNjE2LVxcdFxcdFxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nIGFkZHIpIHsgfVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NjE3OiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFMgKi9cXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTYxOC1cXG4tLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg9MTAxNz1leHRlcm4gaW50IGZ0cmFjZV9tYWtlX2NhbGwoc3RydWN0IGR5bl9mdHJhY2UgKnJlYywgdW5zaWduZWQgbG9uZyBhZGRyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtMTAyMC1cXHRkZWZpbmVkKENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0NBTExfT1BTKSB8fCBcXFxcXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaDoxMDIxOlxcdGRlZmluZWQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTKVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtMTAyMi0vKipcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NTA6MDguMTgyOTc0MDM4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3MDM2MDEzMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEJQRiBUcmFtcG9saW5lIE11bHRpLURldGFjaCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgaXMgdGhlIGtleSBjb25maWcgZm9yIGVuYWJsaW5nIGRpcmVjdCBjYWxscyBpbiB0aGlzIEJQRiBjb250ZXh0LiBOb3csIHRvIGJlIGFic29sdXRlbHkgY2xlYXIgb24gd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIGZvciBlZmZlY3RpdmUgdGVzdGluZywgSSBuZWVkIHRvIGxpc3QgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zOiBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGBCUEZfRVZFTlRTYCwgYW5kIGNydWNpYWxseSwgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSB1bmRlcmx5aW5nIGBDT05GSUdfRlRSQUNFYCBpcyBhIHJlcXVpcmVtZW50IGZvciB0aGUgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYCB0byBmdW5jdGlvbi5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBjZW50ZXJzIG9uIGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgQlBGIHRyYW1wb2xpbmUncyBtdWx0aS1kZXRhY2ggbG9naWMuIFRoZSBmaXggaXMgYWJvdXQgcm9idXN0bHkgaGFuZGxpbmcgZnRyYWNlIHVwZGF0ZSBmYWlsdXJlcy4gVGhlIHBhdGNoIHJvbGxzIGJhY2sgdGhlIGFjdGl2ZSBpbWFnZSBpZiB0aGVyZSdzIGEgcHJvYmxlbS4gVGhpcyBpcyBjcml0aWNhbCBCUEYgdHJhY2luZyBsb2dpYywgYW5kIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cbkkndmUgZ290IGEgbGlzdCBvZiBmdW5jdGlvbnMgdGhhdCBuZWVkIGNsb3NlIGF0dGVudGlvbjogYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAsIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrYC4gIExldCdzIGRvdWJsZSBjaGVjay4uLiBZZXMsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tgIGlzIGluZGVlZCBkZWZpbmVkIGluIHRoZSBzb3VyY2UsIEkgY2FuIHNlZSBpdCBhdCBsaW5lIDE2MDUuXG5cbkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgZnV6emluZyB0aGlzIGFyZWEgc2VlbXMgd29ydGh3aGlsZS4gQW5kLCBhcyBJIHNhaWQsIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcgd2lsbCBiZSB0aGUgYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAsIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrYCBmdW5jdGlvbnMuIFNvLCBJIG5lZWQgdG8gZW5zdXJlIHRob3NlIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLiAgVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY292ZXJhZ2UgSSBuZWVkIHRvIGVmZmVjdGl2ZWx5IHRlc3QgdGhpcyBwYXRjaC4gTGV0J3MgZ2V0IHRoZSByZXN1bHRzIHNldC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMDcsIk91dHB1dFRva2VucyI6MTUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjUwOjE1Ljg4NjU3OTEwOVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzAyODI4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9FVkVOVFNcIixcbiAgICBcIkRZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZVwiLFxuICAgIFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSBidWcgaW4gdGhlIEJQRiB0cmFtcG9saW5lIG11bHRpLWRldGFjaCBsb2dpYyBieSBjb3JyZWN0bHkgaGFuZGxpbmcgZnRyYWNlIHVwZGF0ZSBmYWlsdXJlcyBhbmQgcm9sbGluZyBiYWNrIHRoZSBhY3RpdmUgaW1hZ2UuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIGZvciBCUEYgdHJhY2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiLFxuICAgIFwiRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hcIixcbiAgICBcImJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBpbiB0aGUgQlBGIHRyYW1wb2xpbmUgbXVsdGktZGV0YWNoIGxvZ2ljIGJ5IGNvcnJlY3RseSBoYW5kbGluZyBmdHJhY2UgdXBkYXRlIGZhaWx1cmVzIGFuZCByb2xsaW5nIGJhY2sgdGhlIGFjdGl2ZSBpbWFnZS4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgZm9yIEJQRiB0cmFjaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowc654q[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 13:15:15 +0000 UTC FinishedAt: 2026-07-16 13:50:18 +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": "d1f4b56417a3dc1a0600f960b14f46bd25eda89d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT", "BPF_EVENTS", "DYNAMIC_FTRACE_WITH_DIRECT_CALLS" ], "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": "d1f4b56417a3dc1a0600f960b14f46bd25eda89d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT", "BPF_EVENTS", "DYNAMIC_FTRACE_WITH_DIRECT_CALLS" ], "series_id": "2225e7eb-3941-4ec6-ac29-5c7997de8a84" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_trampoline_multi_detach", "bpf_trampoline_multi_attach_free", "bpf_trampoline_multi_attach_rollback" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX211bHRpX2RldGFjaCYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZSYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSBidWcgaW4gdGhlIEJQRiB0cmFtcG9saW5lIG11bHRpLWRldGFjaCBsb2dpYyBieSBjb3JyZWN0bHkgaGFuZGxpbmcgZnRyYWNlIHVwZGF0ZSBmYWlsdXJlcyBhbmQgcm9sbGluZyBiYWNrIHRoZSBhY3RpdmUgaW1hZ2UuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIGZvciBCUEYgdHJhY2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDNjZmIwNjhjZGYwMTU3NWY2ZGNiNjFiNjI1YzIyMjZlMDJlYWIyNmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAxMzo0NzoxNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXG5pbmRleCA2ZWFkZjY0ZjdlYzkwZi4uNDRlZjI1YmViNGNjNWMgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbkBAIC0xNTg1LDcgJiM0MzsxNTg1LDE3IEBAIHN0YXRpYyB2b2lkIGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9pbml0KHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpXG4gXG4gc3RhdGljIHZvaWQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUoc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcbiB7XG4tXHRpZiAodHItXHUwMDNlbXVsdGlfYXR0YWNoLm9sZF9pbWFnZSlcbiYjNDM7XHQvKiBPbmx5IGZyZWUgb2xkX2ltYWdlIGlmIGl0IGlzIG5vIGxvbmdlciB0aGUgYWN0aXZlIGltYWdlLlxuJiM0MztcdCAqIFdoZW4gYnBmX3RyYW1wb2xpbmVfdXBkYXRlKCkgZmFpbHMgYmVmb3JlIG1vZGlmeV9mZW50cnlfbXVsdGkoKS9cbiYjNDM7XHQgKiB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aSgpIGlzIGNhbGxlZCwgY3VyX2ltYWdlIGlzIHVuY2hhbmdlZFxuJiM0MztcdCAqIChjdXJfaW1hZ2UgPT0gb2xkX2ltYWdlKSBhbmQgZnRyYWNlIHN0aWxsIHBvaW50cyB0byBpdC4gRnJlZWluZ1xuJiM0MztcdCAqIGl0IHdvdWxkIGNhdXNlIGEgVUFGIHdoZW4gZnRyYWNlIGNhbGxzIGludG8gdGhlIGZyZWVkIG1lbW9yeS5cbiYjNDM7XHQgKiBPbiBzdWNjZXNzLCBjdXJfaW1hZ2UgaXMgZWl0aGVyIGEgbmV3IGltYWdlIG9yIE5VTEwsIHNvXG4mIzQzO1x0ICogb2xkX2ltYWdlICE9IGN1cl9pbWFnZSBjb3JyZWN0bHkgaWRlbnRpZmllcyBhIHN0YWxlIGltYWdlIHRoYXRcbiYjNDM7XHQgKiBpcyBzYWZlIHRvIGZyZWUuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgIT0gdHItXHUwMDNlY3VyX2ltYWdlKVxuIFx0XHRicGZfdHJhbXBfaW1hZ2VfcHV0KHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UpO1xuIFxuIFx0dHItXHUwMDNlbXVsdGlfYXR0YWNoLm9sZF9pbWFnZSA9IE5VTEw7XG5AQCAtMTcxMyw3ICYjNDM7MTcyMyw3IEBAIGludCBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfXG4ge1xuIFx0c3RydWN0IGJwZl90cmFjaW5nX211bHRpX2RhdGEgKmRhdGEgPSBcdTAwMjZsaW5rLVx1MDAzZWRhdGE7XG4gXHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbm9kZSAqbW5vZGU7XG4tXHRpbnQgaTtcbiYjNDM7XHRpbnQgaSwgZXJyX3VucmVnID0gMCwgZXJyX21vZCA9IDA7XG4gXG4gXHR0cmFtcG9saW5lX2xvY2tfYWxsKCk7XG4gXG5AQCAtMTcyNCwxMyAmIzQzOzE3MzQsNDEgQEAgaW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9cbiBcdFx0XHRcdFx0TlVMTCwgXHUwMDI2dHJhbXBvbGluZV9tdWx0aV9vcHMsIGRhdGEpKTtcbiBcdH1cbiBcbi1cdGlmIChmdHJhY2VfaGFzaF9jb3VudChkYXRhLVx1MDAzZXVucmVnKSlcbi1cdFx0V0FSTl9PTl9PTkNFKHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbChcdTAwMjZkaXJlY3Rfb3BzLCBkYXRhLVx1MDAzZXVucmVnKSk7XG4tXHRpZiAoZnRyYWNlX2hhc2hfY291bnQoZGF0YS1cdTAwM2Vtb2RpZnkpKVxuLVx0XHRXQVJOX09OX09OQ0UodXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXHUwMDNlbW9kaWZ5LCB0cnVlKSk7XG4mIzQzO1x0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNldW5yZWcpKSB7XG4mIzQzO1x0XHRlcnJfdW5yZWcgPSB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoXHUwMDI2ZGlyZWN0X29wcywgZGF0YS1cdTAwM2V1bnJlZyk7XG4mIzQzO1x0XHRXQVJOX09OX09OQ0UoZXJyX3VucmVnKTtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNlbW9kaWZ5KSkge1xuJiM0MztcdFx0ZXJyX21vZCA9IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChcdTAwMjZkaXJlY3Rfb3BzLCBkYXRhLVx1MDAzZW1vZGlmeSwgdHJ1ZSk7XG4mIzQzO1x0XHRXQVJOX09OX09OQ0UoZXJyX21vZCk7XG4mIzQzO1x0fVxuIFxuLVx0Zm9yX2VhY2hfbW5vZGUobW5vZGUsIGxpbmspXG4tXHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKG1ub2RlLVx1MDAzZXRyYW1wb2xpbmUpO1xuJiM0MztcdGZvcl9lYWNoX21ub2RlKG1ub2RlLCBsaW5rKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyID0gbW5vZGUtXHUwMDNldHJhbXBvbGluZTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBJZiB0aGUgYmF0Y2ggZnRyYWNlIHVwZGF0ZSBmYWlsZWQgZm9yIHRoaXMgbW5vZGUmIzM5O3MgcGF0aCxcbiYjNDM7XHRcdCAqIGZ0cmFjZSBzdGlsbCBwb2ludHMgdG8gb2xkX2ltYWdlLiBVc2Ugcm9sbGJhY2sgdG8gcmVzdG9yZVxuJiM0MztcdFx0ICogY3VyX2ltYWdlIHRvIG9sZF9pbWFnZSAocHV0dGluZyB0aGUgbmV3IGN1cl9pbWFnZSBpZiBhbnkpXG4mIzQzO1x0XHQgKiBzbyB0aGUgdHJhbXBvbGluZSBrZWVwcyB0aGUgaW1hZ2UgZnRyYWNlIGlzIGNhbGxpbmcuXG4mIzQzO1x0XHQgKlxuJiM0MztcdFx0ICogVGhpcyByZWxpZXMgb24gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsL21vZCBiZWluZyBhdG9taWM6XG4mIzQzO1x0XHQgKiBvbiBmYWlsdXJlLCBOTyBJUHMgaW4gdGhlIGhhc2ggYXJlIG1vZGlmaWVkIGluIGZ0cmFjZSAoYWxsXG4mIzQzO1x0XHQgKiB2YWxpZGF0aW9uL2FsbG9jYXRpb24gaGFwcGVucyBiZWZvcmUgYW55IGZ0cmFjZSByZWNvcmQgaXNcbiYjNDM7XHRcdCAqIHRvdWNoZWQpLiBJZiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuIGluIHRoZSBmdXR1cmUgKGkuZS4sXG4mIzQzO1x0XHQgKiBwYXJ0aWFsIHN1Y2Nlc3MgYmVjb21lcyBwb3NzaWJsZSksIHRoaXMgcm9sbGJhY2sgbG9naWMgd291bGRcbiYjNDM7XHRcdCAqIG5lZWQgdG8gYmUgcmV2aXNpdGVkLlxuJiM0MztcdFx0ICpcbiYjNDM7XHRcdCAqIGN1cl9pbWFnZSA9PSBOVUxMIGluZGljYXRlcyB0aGUgdW5yZWcgcGF0aCAodG90YWwgPT0gMCk7XG4mIzQzO1x0XHQgKiBjdXJfaW1hZ2UgIT0gTlVMTCBpbmRpY2F0ZXMgdGhlIG1vZGlmeSBwYXRoICh0b3RhbCBcdTAwM2UgMCkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmICh0ci1cdTAwM2VtdWx0aV9hdHRhY2gub2xkX2ltYWdlIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgIT0gdHItXHUwMDNlY3VyX2ltYWdlIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICgoZXJyX3VucmVnIFx1MDAyNlx1MDAyNiAhdHItXHUwMDNlY3VyX2ltYWdlKSB8fFxuJiM0MztcdFx0ICAgICAoZXJyX21vZCBcdTAwMjZcdTAwMjYgdHItXHUwMDNlY3VyX2ltYWdlKSkpXG4mIzQzO1x0XHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFjayh0cik7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKHRyKTtcbiYjNDM7XHR9XG4gXG4gXHR0cmFtcG9saW5lX3VubG9ja19hbGwoKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMzo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OywKICAgICYjMzQ7RFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2gmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGluIHRoZSBCUEYgdHJhbXBvbGluZSBtdWx0aS1kZXRhY2ggbG9naWMgYnkgY29ycmVjdGx5IGhhbmRsaW5nIGZ0cmFjZSB1cGRhdGUgZmFpbHVyZXMgYW5kIHJvbGxpbmcgYmFjayB0aGUgYWN0aXZlIGltYWdlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyBmb3IgQlBGIHRyYWNpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNjZmIwNjhjZGYwMTU3NWY2ZGNiNjFiNjI1YzIyMjZlMDJlYWIyNmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAxMzo0NzoxNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jIGIva2VybmVsL2JwZi90cmFtcG9saW5lLmMKaW5kZXggNmVhZGY2NGY3ZWM5MGYuLjQ0ZWYyNWJlYjRjYzVjIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYwpAQCAtMTU4NSw3ICYjNDM7MTU4NSwxNyBAQCBzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfaW5pdChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKQogCiBzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZShzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKQogewotCWlmICh0ci0mZ3Q7bXVsdGlfYXR0YWNoLm9sZF9pbWFnZSkKJiM0MzsJLyogT25seSBmcmVlIG9sZF9pbWFnZSBpZiBpdCBpcyBubyBsb25nZXIgdGhlIGFjdGl2ZSBpbWFnZS4KJiM0MzsJICogV2hlbiBicGZfdHJhbXBvbGluZV91cGRhdGUoKSBmYWlscyBiZWZvcmUgbW9kaWZ5X2ZlbnRyeV9tdWx0aSgpLwomIzQzOwkgKiB1bnJlZ2lzdGVyX2ZlbnRyeV9tdWx0aSgpIGlzIGNhbGxlZCwgY3VyX2ltYWdlIGlzIHVuY2hhbmdlZAomIzQzOwkgKiAoY3VyX2ltYWdlID09IG9sZF9pbWFnZSkgYW5kIGZ0cmFjZSBzdGlsbCBwb2ludHMgdG8gaXQuIEZyZWVpbmcKJiM0MzsJICogaXQgd291bGQgY2F1c2UgYSBVQUYgd2hlbiBmdHJhY2UgY2FsbHMgaW50byB0aGUgZnJlZWQgbWVtb3J5LgomIzQzOwkgKiBPbiBzdWNjZXNzLCBjdXJfaW1hZ2UgaXMgZWl0aGVyIGEgbmV3IGltYWdlIG9yIE5VTEwsIHNvCiYjNDM7CSAqIG9sZF9pbWFnZSAhPSBjdXJfaW1hZ2UgY29ycmVjdGx5IGlkZW50aWZpZXMgYSBzdGFsZSBpbWFnZSB0aGF0CiYjNDM7CSAqIGlzIHNhZmUgdG8gZnJlZS4KJiM0MzsJICovCiYjNDM7CWlmICh0ci0mZ3Q7bXVsdGlfYXR0YWNoLm9sZF9pbWFnZSAmYW1wOyZhbXA7CiYjNDM7CSAgICB0ci0mZ3Q7bXVsdGlfYXR0YWNoLm9sZF9pbWFnZSAhPSB0ci0mZ3Q7Y3VyX2ltYWdlKQogCQlicGZfdHJhbXBfaW1hZ2VfcHV0KHRyLSZndDttdWx0aV9hdHRhY2gub2xkX2ltYWdlKTsKIAogCXRyLSZndDttdWx0aV9hdHRhY2gub2xkX2ltYWdlID0gTlVMTDsKQEAgLTE3MTMsNyAmIzQzOzE3MjMsNyBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpXwogewogCXN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9kYXRhICpkYXRhID0gJmFtcDtsaW5rLSZndDtkYXRhOwogCXN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9ub2RlICptbm9kZTsKLQlpbnQgaTsKJiM0MzsJaW50IGksIGVycl91bnJlZyA9IDAsIGVycl9tb2QgPSAwOwogCiAJdHJhbXBvbGluZV9sb2NrX2FsbCgpOwogCkBAIC0xNzI0LDEzICYjNDM7MTczNCw0MSBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpXwogCQkJCQlOVUxMLCAmYW1wO3RyYW1wb2xpbmVfbXVsdGlfb3BzLCBkYXRhKSk7CiAJfQogCi0JaWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtJmd0O3VucmVnKSkKLQkJV0FSTl9PTl9PTkNFKHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbCgmYW1wO2RpcmVjdF9vcHMsIGRhdGEtJmd0O3VucmVnKSk7Ci0JaWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtJmd0O21vZGlmeSkpCi0JCVdBUk5fT05fT05DRSh1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2QoJmFtcDtkaXJlY3Rfb3BzLCBkYXRhLSZndDttb2RpZnksIHRydWUpKTsKJiM0MzsJaWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtJmd0O3VucmVnKSkgewomIzQzOwkJZXJyX3VucmVnID0gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKCZhbXA7ZGlyZWN0X29wcywgZGF0YS0mZ3Q7dW5yZWcpOwomIzQzOwkJV0FSTl9PTl9PTkNFKGVycl91bnJlZyk7CiYjNDM7CX0KJiM0MzsJaWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtJmd0O21vZGlmeSkpIHsKJiM0MzsJCWVycl9tb2QgPSB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2QoJmFtcDtkaXJlY3Rfb3BzLCBkYXRhLSZndDttb2RpZnksIHRydWUpOwomIzQzOwkJV0FSTl9PTl9PTkNFKGVycl9tb2QpOwomIzQzOwl9CiAKLQlmb3JfZWFjaF9tbm9kZShtbm9kZSwgbGluaykKLQkJYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUobW5vZGUtJmd0O3RyYW1wb2xpbmUpOwomIzQzOwlmb3JfZWFjaF9tbm9kZShtbm9kZSwgbGluaykgewomIzQzOwkJc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciA9IG1ub2RlLSZndDt0cmFtcG9saW5lOwomIzQzOwomIzQzOwkJLyogSWYgdGhlIGJhdGNoIGZ0cmFjZSB1cGRhdGUgZmFpbGVkIGZvciB0aGlzIG1ub2RlJiMzOTtzIHBhdGgsCiYjNDM7CQkgKiBmdHJhY2Ugc3RpbGwgcG9pbnRzIHRvIG9sZF9pbWFnZS4gVXNlIHJvbGxiYWNrIHRvIHJlc3RvcmUKJiM0MzsJCSAqIGN1cl9pbWFnZSB0byBvbGRfaW1hZ2UgKHB1dHRpbmcgdGhlIG5ldyBjdXJfaW1hZ2UgaWYgYW55KQomIzQzOwkJICogc28gdGhlIHRyYW1wb2xpbmUga2VlcHMgdGhlIGltYWdlIGZ0cmFjZSBpcyBjYWxsaW5nLgomIzQzOwkJICoKJiM0MzsJCSAqIFRoaXMgcmVsaWVzIG9uIHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbC9tb2QgYmVpbmcgYXRvbWljOgomIzQzOwkJICogb24gZmFpbHVyZSwgTk8gSVBzIGluIHRoZSBoYXNoIGFyZSBtb2RpZmllZCBpbiBmdHJhY2UgKGFsbAomIzQzOwkJICogdmFsaWRhdGlvbi9hbGxvY2F0aW9uIGhhcHBlbnMgYmVmb3JlIGFueSBmdHJhY2UgcmVjb3JkIGlzCiYjNDM7CQkgKiB0b3VjaGVkKS4gSWYgdGhpcyBhc3N1bXB0aW9uIGlzIGJyb2tlbiBpbiB0aGUgZnV0dXJlIChpLmUuLAomIzQzOwkJICogcGFydGlhbCBzdWNjZXNzIGJlY29tZXMgcG9zc2libGUpLCB0aGlzIHJvbGxiYWNrIGxvZ2ljIHdvdWxkCiYjNDM7CQkgKiBuZWVkIHRvIGJlIHJldmlzaXRlZC4KJiM0MzsJCSAqCiYjNDM7CQkgKiBjdXJfaW1hZ2UgPT0gTlVMTCBpbmRpY2F0ZXMgdGhlIHVucmVnIHBhdGggKHRvdGFsID09IDApOwomIzQzOwkJICogY3VyX2ltYWdlICE9IE5VTEwgaW5kaWNhdGVzIHRoZSBtb2RpZnkgcGF0aCAodG90YWwgJmd0OyAwKS4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKHRyLSZndDttdWx0aV9hdHRhY2gub2xkX2ltYWdlICZhbXA7JmFtcDsKJiM0MzsJCSAgICB0ci0mZ3Q7bXVsdGlfYXR0YWNoLm9sZF9pbWFnZSAhPSB0ci0mZ3Q7Y3VyX2ltYWdlICZhbXA7JmFtcDsKJiM0MzsJCSAgICAoKGVycl91bnJlZyAmYW1wOyZhbXA7ICF0ci0mZ3Q7Y3VyX2ltYWdlKSB8fAomIzQzOwkJICAgICAoZXJyX21vZCAmYW1wOyZhbXA7IHRyLSZndDtjdXJfaW1hZ2UpKSkKJiM0MzsJCQlicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sodHIpOwomIzQzOwkJZWxzZQomIzQzOwkJCWJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKHRyKTsKJiM0MzsJfQogCiAJdHJhbXBvbGluZV91bmxvY2tfYWxsKCk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzNgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDIzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgVHJhbXBvbGluZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBrZXJuZWwgcGF0Y2ggc3BlY2lmaWNhbGx5IHRhcmdldGluZyBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBGcm9tIHdoYXQgSSBzZWUsIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlYCBhbmQgYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAgZnVuY3Rpb25zLiBJdCBzZWVtcyBsaWtlIGEgbmV3IGNoZWNrLCBgdHItJmd0O211bHRpX2F0dGFjaC5vbGRfaW1hZ2UgIT0gdHItJmd0O2N1cl9pbWFnZWAsIGhhcyBiZWVuIGFkZGVkIGJlZm9yZSBmcmVlaW5nIGBvbGRfaW1hZ2VgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSXQgYWxzbyBhcHBlYXJzIHRoZSBwYXRjaCBpcyBub3cgaGFuZGxpbmcgcG90ZW50aWFsIGVycm9ycyBmcm9tIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWxgIGFuZCBgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kYCBpbiBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYC4gSW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLCBpdCYjMzk7cyBjYWxsaW5nIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sodHIpYC4KClRoaXMgbWFrZXMgc2Vuc2UsIGl0IGxvb2tzIGxpa2UgYSB0YXJnZXRlZCBjaGFuZ2Ugd2l0aGluIHRoZSBCUEYgdHJhbXBvbGluZSBtdWx0aS1hdHRhY2gvZGV0YWNoIGxvZ2ljLiBUbyB2ZXJpZnkgaXRzIGJlaGF2aW9yIGFuZCByb2J1c3RuZXNzLCBJIHNob3VsZCBwdXQgdG9nZXRoZXIgc29tZSBmdXp6aW5nIHJvdXRpbmVzIGZvciBib3RoIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWVgLgoKTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgZW5hYmxlIHRoaXMgQlBGIHRyYW1wb2xpbmUgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgdXNlIGBncmVwcGVyYCB0byBxdWlja2x5IGxvY2F0ZSB0aGUgY29uZmlndXJhdGlvbiBrbm9icyBhc3NvY2lhdGVkIHdpdGggYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAgYW5kIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnBmLmg9MTUyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1MjMtXHRcdFx0XHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluayk7XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1MjQ6aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTE1MjUtXHRcdFx0XHRzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluayk7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaD0xNjM5PXN0YXRpYyBpbmxpbmUgaW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMTY0My19XG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE2NDQ6c3RhdGljIGlubGluZSBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTY0NS1cdFx0XHRcdFx0ICAgICAgc3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbmsgKmxpbmspXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTYyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTcyMS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3MjI6aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTcyMy17XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM2ODU9c3RhdGljIHZvaWQgYnBmX3RyYWNpbmdfbXVsdGlfbGlua19yZWxlYXNlKHN0cnVjdCBicGZfbGluayAqbGluaylcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzY4OS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozNjkwOlx0V0FSTl9PTl9PTkNFKGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChsaW5rLVx1MDAzZXByb2csIHRyX2xpbmspKTtcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zNjkxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBkZWVwIGluIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgZmFtaWxpYXIgd2l0aCBCUEY6CgoqKk5hdmlnYXRpbmcgdGhlIEJQRiBUcmFtcG9saW5lIExhbmRzY2FwZSoqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYC4gSSBrbm93IHRoYXQgZnVuY3Rpb24sIGl0JiMzOTtzIGEga2V5IHBhcnQgb2YgdGhlIG11bHRpLWRldGFjaCBmdW5jdGlvbmFsaXR5IHdlJiMzOTt2ZSBnb3QgaW4gQlBGLiBOb3csIHdoZXJlIGlzIHRoYXQgYWN0dWFsbHkgZGVmaW5lZD8gT2theSwgbWVtb3J5IGpvZ2dlZCwgaXQmIzM5O3Mgc2l0dGluZyBpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBHb29kLCBnb29kLiBCdXQgSSBuZWVkIHRvIHJlZnJlc2ggdGhlIGRldGFpbHMsIGVzcGVjaWFsbHkgYXMgaXQgcmVsYXRlcyB0byBjb25maWcgb3B0aW9ucy4gTGV0JiMzOTtzIHB1bGwgdXAgdGhlIEtjb25maWcgZm9yIHRoYXQgZmlsZSB0byBzZWUgd2hhdCBmZWF0dXJlcyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIGl0IHRvIGJlIGNvbXBpbGVkIGluLiBHb3R0YSBtYWtlIHN1cmUgYWxsIHRoZSByaWdodCBjb25maWd1cmF0aW9uIGtub2JzIGFyZSBmbGlwcGVkLCBzbyB0aGF0IG11bHRpLWRldGFjaCBpcyBhY3RpdmUgYW5kIHJlYWR5IHRvIHVzZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cmFtcG9saW5lXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkaXNhc20ubyBtcHJvZy5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gdHJhbXBvbGluZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE4LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5OQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3RyYWNpbmdfbXVsdGlfbGlua19yZWxlYXNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0zNjgwPV9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM2ODQtXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MzY4NTpzdGF0aWMgdm9pZCBicGZfdHJhY2luZ19tdWx0aV9saW5rX3JlbGVhc2Uoc3RydWN0IGJwZl9saW5rICpsaW5rKVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM2ODYte1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0zNzg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2xpbmtfb3BzIGJwZl90cmFjaW5nX211bHRpX2xpbmtfbG9wcyA9IHtcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozNzg1Olx0LnJlbGVhc2UgPSBicGZfdHJhY2luZ19tdWx0aV9saW5rX3JlbGVhc2UsXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzc4Ni1cdC5kZWFsbG9jX2RlZmVycmVkID0gYnBmX3RyYWNpbmdfbXVsdGlfbGlua19kZWFsbG9jLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNDYKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdHJhY2luZ19tdWx0aV9saW5rX2xvcHMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM3NTg9c3RhdGljIHZvaWQgYnBmX3RyYWNpbmdfbXVsdGlfc2hvd19mZGluZm8oY29uc3Qgc3RydWN0IGJwZl9saW5rICpsaW5rLFxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zNzgzLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM3ODQ6c3RhdGljIGNvbnN0IHN0cnVjdCBicGZfbGlua19vcHMgYnBmX3RyYWNpbmdfbXVsdGlfbGlua19sb3BzID0ge1xua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM3ODUtXHQucmVsZWFzZSA9IGJwZl90cmFjaW5nX211bHRpX2xpbmtfcmVsZWFzZSxcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9Mzg0MD1pbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MDEtXHRicGZfbGlua19pbml0KFx1MDAyNmxpbmstXHUwMDNlbGluaywgQlBGX0xJTktfVFlQRV9UUkFDSU5HX01VTFRJLFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM5MDI6XHRcdCAgICAgIFx1MDAyNmJwZl90cmFjaW5nX211bHRpX2xpbmtfbG9wcywgcHJvZywgcHJvZy1cdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZSk7XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkwMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU2MQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90cmFjaW5nX211bHRpX2F0dGFjaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oPTc4OT1pbnQgYnBmX3Vwcm9iZV9tdWx0aV9saW5rX2F0dGFjaChjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc3RydWN0IGJwZl9wcm9nICpwcm9nKTtcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6NzkwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cik7XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oLTc5MS0jZWxzZVxuLS1cbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9ODQ4PXN0YXRpYyBpbmxpbmUgaW50XG5pbmNsdWRlL2xpbnV4L3RyYWNlX2V2ZW50cy5oOjg0OTpicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmgtODUwLXtcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NzY1PXN0YXRpYyBpbnQgbGlua19jcmVhdGUodW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyKVxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU4MTUtXHRcdGVsc2UgaWYgKGlzX3RyYWNpbmdfbXVsdGkocHJvZy1cdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZSkpXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1ODE2Olx0XHRcdHJldCA9IGJwZl90cmFjaW5nX211bHRpX2F0dGFjaChwcm9nLCBhdHRyKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU4MTctXHRcdGVsc2Vcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MzgxOT1zdGF0aWMgaW50IGNoZWNrX2R1cF9pZHModTMyICppZHMsIHU2NCAqY29va2llcywgdTMyIGNudClcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzgzOS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozODQwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zODQxLXtcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkyOS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozOTMwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTMxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM4NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBCUEYgVHJhY2luZyBNdWx0aS1BdHRhY2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBCUEZfTElOS19UWVBFX1RSQUNJTkdfTVVMVElgLiBUaGF0JiMzOTtzIGNyZWF0ZWQgdGhyb3VnaCB0aGUgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgZnVuY3Rpb24sIHdoaWNoIGlzIHVsdGltYXRlbHkgY2FsbGVkIGZyb20gYGxpbmtfY3JlYXRlYCBpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBHb29kLCB0aGF0IG1lYW5zIGl0JiMzOTtzIGEgZGVmaW5pdGUgcGF0aHdheSwgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGluIHRoZSBrZXJuZWwuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQuIERlZmluaXRlbHkgbmVlZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19CUEZfSklUYC4gVGhvc2UgYXJlIGVzc2VudGlhbC4gQW5kLCBzaW5jZSB0aGlzIGludm9sdmVzIHRyYWNpbmcsIGl0JiMzOTtzIGhpZ2hseSBwcm9iYWJsZSB0aGF0IGBDT05GSUdfRlRSQUNFYCBpcyBhbHNvIHJlcXVpcmVkLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBieSBleGFtaW5pbmcgYGtlcm5lbC90cmFjZS9NYWtlZmlsZWAgdG8gc2VlIGlmIGBicGZfdHJhY2UuY2AgaXMgYmVpbmcgY29tcGlsZWQuIEp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluIHRoYXQgdHJhY2luZyBzdXBwb3J0IGlzIGF2YWlsYWJsZSBhbmQgcHJvcGVybHkgbGlua2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAxMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfdHJhY2VcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL3RyYWNlL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9NYWtlZmlsZT01ND1LQ09WX0lOU1RSVU1FTlRfdHJhY2VfaXJxc29mZi5vIDo9IG5cbmtlcm5lbC90cmFjZS9NYWtlZmlsZS01NS1cbmtlcm5lbC90cmFjZS9NYWtlZmlsZTo1NjpDRkxBR1NfYnBmX3RyYWNlLm8gOj0gLUkkKHNyYylcbmtlcm5lbC90cmFjZS9NYWtlZmlsZS01Ny1cbi0tXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU9MTA5PW9iai0kKENPTkZJR19VU0VSX0VWRU5UUykgJiM0Mzs9IHRyYWNlX2V2ZW50c191c2VyLm9cbmtlcm5lbC90cmFjZS9NYWtlZmlsZToxMTA6b2JqLSQoQ09ORklHX0JQRl9FVkVOVFMpICYjNDM7PSBicGZfdHJhY2Uub1xua2VybmVsL3RyYWNlL01ha2VmaWxlLTExMS1vYmotJChDT05GSUdfS1BST0JFX0VWRU5UUykgJiM0Mzs9IHRyYWNlX2twcm9iZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MTEKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVHJhbXBvbGluZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgdG91Y2hpbmcgYGtlcm5lbC9icGYvdHJhbXBvbGluZS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYCBhbmQgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlYCBmdW5jdGlvbnMuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3Rpbmc7IHRoZXNlIGFyZSBjb3JlIGNvbXBvbmVudHMgZm9yIG1hbmFnaW5nIEJQRiB0cmFtcG9saW5lcy4gVGhlIGFkZGl0aW9uIG9mIHJvbGxiYWNrIGxvZ2ljIGhlcmUgaXMgd2hhdCYjMzk7cyBjcnVjaWFsLiBJdCBtZWFucyB0aGV5JiMzOTtyZSBhZGRpbmcgYSBzYWZldHkgbmV0IHdoZW4gYHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbGAgb3IgYHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZGAgZmFpbCwgd2hpY2ggaXMgZ29vZC4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYSByZWFjaGFibGUgY29kZSBwYXRoIHRocm91Z2ggYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgYW5kIGl0cyBhc3NvY2lhdGVkIHJlbGVhc2UgbWVjaGFuaXNtcy4gVGhhdCBtYWtlcyBzZW5zZSBmb3IgdGhlIHVzZSBjYXNlLgoKRnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIGBDT05GSUdfQlBGX0pJVGAsIGBDT05GSUdfQlBGX0VWRU5UU2AsIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBhcmUgdGhlIGtleSBlbmFibGluZyBjb25maWd1cmF0aW9ucy4gV2l0aG91dCB0aG9zZSwgdGhpcyBpcyBhbGwgYWNhZGVtaWMuIFRoZSByZWFsIG1lYXQgb2YgdGhlIGNoYW5nZXMgaXMgY2VudGVyZWQgYXJvdW5kIHRoZXNlIHRyYW1wb2xpbmUgbWFuYWdlbWVudCBmdW5jdGlvbnM6IGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgLCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWVgLCBhbmQgYWxzbyBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrYC4gV2FpdCwgd2hhdCYjMzk7cyB0aGlzIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tgPyBJdCYjMzk7cyBiZWluZyAqY2FsbGVkKiBpbiB0aGUgcGF0Y2gsIGJ1dCBpcyBpdCAqZGVmaW5lZCogaGVyZT8gVGhlIGNvbnRleHQgaXNuJiMzOTt0IHNob3dpbmcgYSBkZWZpbml0aW9uLCB3aGljaCBpcyBub3QgdW51c3VhbCwgaXQgY291bGQgYmUgZGVmaW5lZCBlbHNld2hlcmUuCgpMZXQmIzM5O3MgZGlnIGRlZXBlci4gVGhlIHBhdGNoIGNhbGxzIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sodHIpYC4gSSBuZWVkIHRvIGVuc3VyZSBpdCYjMzk7cyBiZWVuIGRlZmluZWQsIGFuZCBlbnN1cmUgdGhhdCB0aGUgY29kZSBpcyB3ZWxsLWZvcm1lZC4gSXQgaGFzIHRvIGJlIGRlZmluZWQuIExldCYjMzk7cyBtYWtlIHN1cmUgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFja2AgZXhpc3RzIGluIHRoZSBjb2RlYmFzZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE1ODY9c3RhdGljIHZvaWQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUoc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjA0LVxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTYwNTpzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2soc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2MDYte1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE2MjI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MDYtXHRcdGJwZl90cmFtcG9saW5lX3JlbW92ZV9wcm9nKG1ub2RlLVx1MDAzZXRyYW1wb2xpbmUsIFx1MDAyNm1ub2RlLVx1MDAzZW5vZGUpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTcwNzpcdFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrKG1ub2RlLVx1MDAzZXRyYW1wb2xpbmUpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTcwOC1cdH1cbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNzIyPWludCBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluaylcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzY3LVx0XHQgICAgIChlcnJfbW9kIFx1MDAyNlx1MDAyNiB0ci1cdTAwM2VjdXJfaW1hZ2UpKSlcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3Njg6XHRcdFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrKHRyKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3NjktXHRcdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMyMAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDQxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgVHJhbXBvbGluZSBVQUYgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBhZGRyZXNzaW5nIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIEJQRiB0cmFtcG9saW5lIG11bHRpLWF0dGFjaC9kZXRhY2ggbG9naWMuIEl0IGFwcGVhcnMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSBmb2N1c2luZyBvbiBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYCBhbmQgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlYCBpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBtb2RpZmllcyBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYCB0byBwcm9wZXJseSBoYW5kbGUgZXJyb3JzIHRoYXQgbWlnaHQgY29tZSBmcm9tIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWxgIGFuZCBgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kYC4gVGhpcyBpcyBjcml0aWNhbCwgYXMgZmFpbHVyZSB0byBoYW5kbGUgdGhlc2UgZXJyb3JzIHdvdWxkIHByb3BhZ2F0ZSBhbmQgbGVhZCB0byBVQUYgaXNzdWVzLgoKVGhlIG90aGVyIHBhcnQgbW9kaWZpZXMgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlYCB0byBiZSBzbWFydGVyIGFib3V0IHJlbGVhc2luZyBgb2xkX2ltYWdlYC4gSXQgc2VlbXMgaXQgb25seSByZWxlYXNlcyB0aGUgYG9sZF9pbWFnZWAgaWYgaXQmIzM5O3MgKm5vIGxvbmdlciogdGhlIGFjdGl2ZSBpbWFnZS4gVGhpcyBwcmV2ZW50cyBwcmVtYXR1cmUgZnJlZWluZywgd2hpY2ggaXMgbGlrZWx5IHRoZSByb290IGNhdXNlIG9mIHRoZSBVQUYuIFRoZSBCUEYgc3lzY2FsbCBgbGlua19jcmVhdGVgIHdpdGggc29tZXRoaW5nIGxpa2UgYEJQRl9UUkFDRV9GRU5UUllgIG9yIG90aGVyIG11bHRpLWF0dGFjaCB0cmFjaW5nIHByb2dyYW1zIHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgdHJpZ2dlcmluZyB0aGlzIGJ1Zy4KCkkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgYW5kIGRlcGVuZGVuY2llcy4gYENPTkZJR19CUEZfU1lTQ0FMTGAsIGBDT05GSUdfQlBGX0pJVGAsIGFuZCBgQ09ORklHX0JQRl9FVkVOVFNgIGFyZSBvYnZpb3VzbHkgcmVsZXZhbnQuIGBDT05GSUdfQlBGX0pJVGAgaXMga2V5IHNpbmNlIGl0JiMzOTtzIHJlcXVpcmVkIGZvciBgdHJhbXBvbGluZS5vYCBhbmQgYGtlcm5lbC9icGYvdHJhbXBvbGluZS5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGBDT05GSUdfQlBGX0VWRU5UU2AgaXMgYWxzbyBlbmFibGVkIHNpbmNlIGl0IGxlYWRzIHRvIGBicGZfdHJhY2Uub2Agd2hpY2gsIGluIHR1cm4sIGNhbGxzIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgLiBJJiMzOTttIGd1ZXNzaW5nIGBDT05GSUdfRlRSQUNFYCBpcyBpbXBsaWVkIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbGAuIEFuZCBJIG5lZWQgdG8gY2hlY2sgYENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgYXMgdGhhdCBpcyBwcm9iYWJseSBuZWVkZWQgZm9yIGRpcmVjdCBmdHJhY2UgY2FsbHMuCgpOb3csIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBsaW5lcyB1cC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgIGdldHMgY29tcGlsZWQgaWYgYENPTkZJR19CUEZfSklUYCBpcyBzZXQgYW5kIHRoYXQgYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9FVkVOVFNgIGlzIGVuYWJsZWQuIFRpbWUgdG8gdmVyaWZ5IHRoZXNlIGNvbmZpZ3MuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZnRyYWNlLmg9NTUwPWludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9hZGQoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKTtcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NTUxOmludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKTtcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTUyLWludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2Qoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoLCBib29sIGRvX2RpcmVjdF9sb2NrKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTU4Mj1zdGF0aWMgaW5saW5lIGludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9hZGQoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKVxuLS1cbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTg2LVxuaW5jbHVkZS9saW51eC9mdHJhY2UuaDo1ODc6c3RhdGljIGlubGluZSBpbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaClcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTg4LXtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0yNjk9c3RhdGljIGludCBkaXJlY3Rfb3BzX2RlbChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB2b2lkICphZGRyKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTI3NS1cdFx0cmV0dXJuIC1FTk9NRU07XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoyNzY6XHRlcnIgPSB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwodHItXHUwMDNlZm9wcywgaGFzaCk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0yNzctXHRmcmVlX2Z0cmFjZV9oYXNoKGhhc2gpO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE2MjI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2OTAtXHRcdFx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNlcmVnKSlcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2OTE6XHRcdFx0XHRXQVJOX09OX09OQ0UodXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXHUwMDNlcmVnKSk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjkyLVx0XHRcdGdvdG8gcm9sbGJhY2tfdW5saW5rO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MjI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MzctXHRpZiAoZnRyYWNlX2hhc2hfY291bnQoZGF0YS1cdTAwM2V1bnJlZykpIHtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3Mzg6XHRcdGVycl91bnJlZyA9IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbChcdTAwMjZkaXJlY3Rfb3BzLCBkYXRhLVx1MDAzZXVucmVnKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MzktXHRcdFdBUk5fT05fT05DRShlcnJfdW5yZWcpO1xuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3NTMtXHRcdCAqXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNzU0Olx0XHQgKiBUaGlzIHJlbGllcyBvbiB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwvbW9kIGJlaW5nIGF0b21pYzpcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3NTUtXHRcdCAqIG9uIGZhaWx1cmUsIE5PIElQcyBpbiB0aGUgaGFzaCBhcmUgbW9kaWZpZWQgaW4gZnRyYWNlIChhbGxcbi0tXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM9NjQ2MT1zdGF0aWMgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoX3N1YihzdHJ1Y3QgZnRyYWNlX2hhc2ggKmEsIHN0cnVjdCBmdHJhY2VfaGFzaCAqYilcbi0tXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjQ4Ni0vKipcbmtlcm5lbC90cmFjZS9mdHJhY2UuYzo2NDg3OiAqIHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbCAtIFVwZGF0ZXMgQG9wcyBieSByZW1vdmluZyBpdHMgZGlyZWN0XG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjQ4OC0gKiBjYWxsZXJzIHByb3ZpZGVkIGluIEBoYXNoXG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTY0OTktICovXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6NjUwMDppbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaClcbmtlcm5lbC90cmFjZS9mdHJhY2UuYy02NTAxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgxMQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTU1MT1pbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCk7XG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oOjU1MjppbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCwgYm9vbCBkb19kaXJlY3RfbG9jayk7XG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTU1My1cbi0tXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTU4Nz1zdGF0aWMgaW5saW5lIGludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKVxuLS1cbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTkxLVxuaW5jbHVkZS9saW51eC9mdHJhY2UuaDo1OTI6c3RhdGljIGlubGluZSBpbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCwgYm9vbCBkb19kaXJlY3RfbG9jaylcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTkzLXtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0yODE9c3RhdGljIGludCBkaXJlY3Rfb3BzX21vZChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyLCB2b2lkICphZGRyLCBib29sIGxvY2tfZGlyZWN0X211dGV4KVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTI4Ny1cdFx0cmV0dXJuIC1FTk9NRU07XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoyODg6XHRlcnIgPSB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2QodHItXHUwMDNlZm9wcywgaGFzaCwgbG9ja19kaXJlY3RfbXV0ZXgpO1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMjg5LVx0ZnJlZV9mdHJhY2VfaGFzaChoYXNoKTtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNjIyPWludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjg3LVx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNlbW9kaWZ5KSkge1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTY4ODpcdFx0ZXJyID0gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXHUwMDNlbW9kaWZ5LCB0cnVlKTtcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2ODktXHRcdGlmIChlcnIpIHtcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNzIyPWludCBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluaylcbi0tXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzQxLVx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNlbW9kaWZ5KSkge1xua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTc0MjpcdFx0ZXJyX21vZCA9IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChcdTAwMjZkaXJlY3Rfb3BzLCBkYXRhLVx1MDAzZW1vZGlmeSwgdHJ1ZSk7XG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzQzLVx0XHRXQVJOX09OX09OQ0UoZXJyX21vZCk7XG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jPTY1MDA9aW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gpXG4tLVxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTY1ODMtLyoqXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6NjU4NDogKiB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2QgLSBVcGRhdGVzIEBvcHMgYnkgbW9kaWZpbmcgaXRzIGRpcmVjdFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTY1ODUtICogY2FsbGVycyBwcm92aWRlZCBpbiBAaGFzaFxuLS1cbmtlcm5lbC90cmFjZS9mdHJhY2UuYy02NjAwLSAqL1xua2VybmVsL3RyYWNlL2Z0cmFjZS5jOjY2MDE6aW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gsIGJvb2wgZG9fZGlyZWN0X2xvY2spXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjYwMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MTMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggVmVyaWZpY2F0aW9uIGFuZCBDb25maWd1cmF0aW9uIEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHNvbGlkIGZpeDsgaXQgZGVmaW5pdGVseSBhZGRyZXNzZXMgdGhhdCBVc2UtQWZ0ZXItRnJlZSBidWcgaW4gdGhlIEJQRiB0cmFtcG9saW5lJiMzOTtzIG11bHRpLWRldGFjaCBzZXF1ZW5jZS4gVGhhdCYjMzk7cyBnb29kIHRvIHNlZS4gTm93LCBsZXQmIzM5O3MgdGFsayBhYm91dCB0aGUgcmVxdWlyZWQga2VybmVsIGNvbmZpZ3VyYXRpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBsaXN0IGBCUEZfU1lTQ0FMTGAsIGBCUEZfSklUYCwgYW5kIGBCUEZfRVZFTlRTYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSB0byB3b3JrIGNvcnJlY3RseS4KCkhvd2V2ZXIsIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gbWVudGlvbiBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLiBXaGlsZSB0aGUgY29yZSBCUEYgZWxlbWVudHMgYXJlIHRoZSBtYWluIGRyaXZlcnMgaGVyZSwgdGhlIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWxgIGZ1bmN0aW9uLCB3aGljaCBtaWdodCBiZSByZWxldmFudCBpbiBjZXJ0YWluIHNjZW5hcmlvcywgaGFzIGEgZnVsbCBpbXBsZW1lbnRhdGlvbiBvbmx5IGlmIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgaXMgZW5hYmxlZDsgb3RoZXJ3aXNlLCBpdCYjMzk7cyBqdXN0IGEgc3R1Yi4gSnVzdCB0byBiZSBjb21wbGV0ZWx5IGNlcnRhaW4gYWJvdXQgdGhhdCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWxgIHdpdGhpbiBgaW5jbHVkZS9saW51eC9mdHJhY2UuaGAuIEl0JiMzOTtzIGFsd2F5cyBiZXN0IHRvIGJlIHRob3JvdWdoLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGtlcm5lbCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9mdHJhY2UuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTU1MD1pbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfYWRkKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCk7XG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oOjU1MTppbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCk7XG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTU1Mi1pbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCwgYm9vbCBkb19kaXJlY3RfbG9jayk7XG4tLVxuaW5jbHVkZS9saW51eC9mdHJhY2UuaD01ODI9c3RhdGljIGlubGluZSBpbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfYWRkKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaClcbi0tXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTU4Ni1cbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NTg3OnN0YXRpYyBpbmxpbmUgaW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gpXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTU4OC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNTM2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMTM6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9mdHJhY2UuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTQ0OT1zdHJ1Y3QgZnRyYWNlX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC00NjQtXHRzdHJ1Y3QgZnRyYWNlX29wc1x0XHQqbWFuYWdlZDtcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NDY1OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNDY2LVx0dW5zaWduZWQgbG9uZ1x0XHRcdGRpcmVjdF9jYWxsO1xuLS1cbmluY2x1ZGUvbGludXgvZnRyYWNlLmg9NTM2PXN0cnVjdCBmdHJhY2VfZnVuY19lbnRyeSB7XG4tLVxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01NDEtXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oOjU0MjojaWZkZWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTU0My11bnNpZ25lZCBsb25nIGZ0cmFjZV9maW5kX3JlY19kaXJlY3QodW5zaWduZWQgbG9uZyBpcCk7XG4tLVxuaW5jbHVkZS9saW51eC9mdHJhY2UuaD02MTU9c3RhdGljIGlubGluZSB2b2lkIGFyY2hfZnRyYWNlX3NldF9kaXJlY3RfY2FsbGVyKHN0cnVjdCBmdHJhY2VfcmVncyAqZnJlZ3MsXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTYxNi1cdFx0XHRcdFx0XHQgdW5zaWduZWQgbG9uZyBhZGRyKSB7IH1cbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NjE3OiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFMgKi9cbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNjE4LVxuLS1cbmluY2x1ZGUvbGludXgvZnRyYWNlLmg9MTAxNz1leHRlcm4gaW50IGZ0cmFjZV9tYWtlX2NhbGwoc3RydWN0IGR5bl9mdHJhY2UgKnJlYywgdW5zaWduZWQgbG9uZyBhZGRyKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTEwMjAtXHRkZWZpbmVkKENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0NBTExfT1BTKSB8fCBcXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaDoxMDIxOlx0ZGVmaW5lZChDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFMpXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTEwMjItLyoqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDA3CgkJCQkJCQlvdXRwdXQ6IDE1MwoJCQkJCQkJdGhvdWdodHM6IDM4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQlBGIFRyYW1wb2xpbmUgTXVsdGktRGV0YWNoIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgIGlzIHRoZSBrZXkgY29uZmlnIGZvciBlbmFibGluZyBkaXJlY3QgY2FsbHMgaW4gdGhpcyBCUEYgY29udGV4dC4gTm93LCB0byBiZSBhYnNvbHV0ZWx5IGNsZWFyIG9uIHdoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgZWZmZWN0aXZlIHRlc3RpbmcsIEkgbmVlZCB0byBsaXN0IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uczogYEJQRl9TWVNDQUxMYCwgYEJQRl9KSVRgLCBgQlBGX0VWRU5UU2AsIGFuZCBjcnVjaWFsbHksIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AuIEFuZCwgb2YgY291cnNlLCB0aGUgdW5kZXJseWluZyBgQ09ORklHX0ZUUkFDRWAgaXMgYSByZXF1aXJlbWVudCBmb3IgdGhlIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgdG8gZnVuY3Rpb24uCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGNlbnRlcnMgb24gYWRkcmVzc2luZyBhIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBCUEYgdHJhbXBvbGluZSYjMzk7cyBtdWx0aS1kZXRhY2ggbG9naWMuIFRoZSBmaXggaXMgYWJvdXQgcm9idXN0bHkgaGFuZGxpbmcgZnRyYWNlIHVwZGF0ZSBmYWlsdXJlcy4gVGhlIHBhdGNoIHJvbGxzIGJhY2sgdGhlIGFjdGl2ZSBpbWFnZSBpZiB0aGVyZSYjMzk7cyBhIHByb2JsZW0uIFRoaXMgaXMgY3JpdGljYWwgQlBGIHRyYWNpbmcgbG9naWMsIGFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZS4KCkkmIzM5O3ZlIGdvdCBhIGxpc3Qgb2YgZnVuY3Rpb25zIHRoYXQgbmVlZCBjbG9zZSBhdHRlbnRpb246IGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgLCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWVgLCBhbmQgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFja2AuICBMZXQmIzM5O3MgZG91YmxlIGNoZWNrLi4uIFllcywgYGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFja2AgaXMgaW5kZWVkIGRlZmluZWQgaW4gdGhlIHNvdXJjZSwgSSBjYW4gc2VlIGl0IGF0IGxpbmUgMTYwNS4KCkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgZnV6emluZyB0aGlzIGFyZWEgc2VlbXMgd29ydGh3aGlsZS4gQW5kLCBhcyBJIHNhaWQsIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcgd2lsbCBiZSB0aGUgYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAsIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrYCBmdW5jdGlvbnMuIFNvLCBJIG5lZWQgdG8gZW5zdXJlIHRob3NlIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLiAgVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY292ZXJhZ2UgSSBuZWVkIHRvIGVmZmVjdGl2ZWx5IHRlc3QgdGhpcyBwYXRjaC4gTGV0JiMzOTtzIGdldCB0aGUgcmVzdWx0cyBzZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDEzOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OywKICAgICYjMzQ7RFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2gmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUmIzM0OywKICAgICYjMzQ7YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgYnVnIGluIHRoZSBCUEYgdHJhbXBvbGluZSBtdWx0aS1kZXRhY2ggbG9naWMgYnkgY29ycmVjdGx5IGhhbmRsaW5nIGZ0cmFjZSB1cGRhdGUgZmFpbHVyZXMgYW5kIHJvbGxpbmcgYmFjayB0aGUgYWN0aXZlIGltYWdlLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYyBmb3IgQlBGIHRyYWNpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7LAogICAgJiMzNDtEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl90cmFtcG9saW5lX211bHRpX2RldGFjaCYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZSYjMzQ7LAogICAgJiMzNDticGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSBidWcgaW4gdGhlIEJQRiB0cmFtcG9saW5lIG11bHRpLWRldGFjaCBsb2dpYyBieSBjb3JyZWN0bHkgaGFuZGxpbmcgZnRyYWNlIHVwZGF0ZSBmYWlsdXJlcyBhbmQgcm9sbGluZyBiYWNrIHRoZSBhY3RpdmUgaW1hZ2UuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIGZvciBCUEYgdHJhY2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ3OjE4LjgxNDE4NDQ4MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzI5NTQ0NTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiLFxuICAgIFwiRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hcIixcbiAgICBcImJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBpbiB0aGUgQlBGIHRyYW1wb2xpbmUgbXVsdGktZGV0YWNoIGxvZ2ljIGJ5IGNvcnJlY3RseSBoYW5kbGluZyBmdHJhY2UgdXBkYXRlIGZhaWx1cmVzIGFuZCByb2xsaW5nIGJhY2sgdGhlIGFjdGl2ZSBpbWFnZS4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgZm9yIEJQRiB0cmFjaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0NzoxOC44MTQxOTAwNzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTQ1NTY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNjZmIwNjhjZGYwMTU3NWY2ZGNiNjFiNjI1YzIyMjZlMDJlYWIyNmVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMTYgMTM6NDc6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi90cmFtcG9saW5lLmMgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xcbmluZGV4IDZlYWRmNjRmN2VjOTBmLi40NGVmMjViZWI0Y2M1YyAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xcbisrKyBiL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXFxuQEAgLTE1ODUsNyArMTU4NSwxNyBAQCBzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfaW5pdChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKVxcbiBcXG4gc3RhdGljIHZvaWQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUoc3RydWN0IGJwZl90cmFtcG9saW5lICp0cilcXG4ge1xcbi1cXHRpZiAodHItXFx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UpXFxuK1xcdC8qIE9ubHkgZnJlZSBvbGRfaW1hZ2UgaWYgaXQgaXMgbm8gbG9uZ2VyIHRoZSBhY3RpdmUgaW1hZ2UuXFxuK1xcdCAqIFdoZW4gYnBmX3RyYW1wb2xpbmVfdXBkYXRlKCkgZmFpbHMgYmVmb3JlIG1vZGlmeV9mZW50cnlfbXVsdGkoKS9cXG4rXFx0ICogdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoKSBpcyBjYWxsZWQsIGN1cl9pbWFnZSBpcyB1bmNoYW5nZWRcXG4rXFx0ICogKGN1cl9pbWFnZSA9PSBvbGRfaW1hZ2UpIGFuZCBmdHJhY2Ugc3RpbGwgcG9pbnRzIHRvIGl0LiBGcmVlaW5nXFxuK1xcdCAqIGl0IHdvdWxkIGNhdXNlIGEgVUFGIHdoZW4gZnRyYWNlIGNhbGxzIGludG8gdGhlIGZyZWVkIG1lbW9yeS5cXG4rXFx0ICogT24gc3VjY2VzcywgY3VyX2ltYWdlIGlzIGVpdGhlciBhIG5ldyBpbWFnZSBvciBOVUxMLCBzb1xcbitcXHQgKiBvbGRfaW1hZ2UgIT0gY3VyX2ltYWdlIGNvcnJlY3RseSBpZGVudGlmaWVzIGEgc3RhbGUgaW1hZ2UgdGhhdFxcbitcXHQgKiBpcyBzYWZlIHRvIGZyZWUuXFxuK1xcdCAqL1xcbitcXHRpZiAodHItXFx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHRyLVxcdTAwM2VtdWx0aV9hdHRhY2gub2xkX2ltYWdlICE9IHRyLVxcdTAwM2VjdXJfaW1hZ2UpXFxuIFxcdFxcdGJwZl90cmFtcF9pbWFnZV9wdXQodHItXFx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UpO1xcbiBcXG4gXFx0dHItXFx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgPSBOVUxMO1xcbkBAIC0xNzEzLDcgKzE3MjMsNyBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpX1xcbiB7XFxuIFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9kYXRhICpkYXRhID0gXFx1MDAyNmxpbmstXFx1MDAzZWRhdGE7XFxuIFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9ub2RlICptbm9kZTtcXG4tXFx0aW50IGk7XFxuK1xcdGludCBpLCBlcnJfdW5yZWcgPSAwLCBlcnJfbW9kID0gMDtcXG4gXFxuIFxcdHRyYW1wb2xpbmVfbG9ja19hbGwoKTtcXG4gXFxuQEAgLTE3MjQsMTMgKzE3MzQsNDEgQEAgaW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9cXG4gXFx0XFx0XFx0XFx0XFx0TlVMTCwgXFx1MDAyNnRyYW1wb2xpbmVfbXVsdGlfb3BzLCBkYXRhKSk7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChmdHJhY2VfaGFzaF9jb3VudChkYXRhLVxcdTAwM2V1bnJlZykpXFxuLVxcdFxcdFdBUk5fT05fT05DRSh1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoXFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXFx1MDAzZXVucmVnKSk7XFxuLVxcdGlmIChmdHJhY2VfaGFzaF9jb3VudChkYXRhLVxcdTAwM2Vtb2RpZnkpKVxcbi1cXHRcXHRXQVJOX09OX09OQ0UodXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKFxcdTAwMjZkaXJlY3Rfb3BzLCBkYXRhLVxcdTAwM2Vtb2RpZnksIHRydWUpKTtcXG4rXFx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXFx1MDAzZXVucmVnKSkge1xcbitcXHRcXHRlcnJfdW5yZWcgPSB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoXFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXFx1MDAzZXVucmVnKTtcXG4rXFx0XFx0V0FSTl9PTl9PTkNFKGVycl91bnJlZyk7XFxuK1xcdH1cXG4rXFx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXFx1MDAzZW1vZGlmeSkpIHtcXG4rXFx0XFx0ZXJyX21vZCA9IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChcXHUwMDI2ZGlyZWN0X29wcywgZGF0YS1cXHUwMDNlbW9kaWZ5LCB0cnVlKTtcXG4rXFx0XFx0V0FSTl9PTl9PTkNFKGVycl9tb2QpO1xcbitcXHR9XFxuIFxcbi1cXHRmb3JfZWFjaF9tbm9kZShtbm9kZSwgbGluaylcXG4tXFx0XFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWUobW5vZGUtXFx1MDAzZXRyYW1wb2xpbmUpO1xcbitcXHRmb3JfZWFjaF9tbm9kZShtbm9kZSwgbGluaykge1xcbitcXHRcXHRzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyID0gbW5vZGUtXFx1MDAzZXRyYW1wb2xpbmU7XFxuK1xcbitcXHRcXHQvKiBJZiB0aGUgYmF0Y2ggZnRyYWNlIHVwZGF0ZSBmYWlsZWQgZm9yIHRoaXMgbW5vZGUncyBwYXRoLFxcbitcXHRcXHQgKiBmdHJhY2Ugc3RpbGwgcG9pbnRzIHRvIG9sZF9pbWFnZS4gVXNlIHJvbGxiYWNrIHRvIHJlc3RvcmVcXG4rXFx0XFx0ICogY3VyX2ltYWdlIHRvIG9sZF9pbWFnZSAocHV0dGluZyB0aGUgbmV3IGN1cl9pbWFnZSBpZiBhbnkpXFxuK1xcdFxcdCAqIHNvIHRoZSB0cmFtcG9saW5lIGtlZXBzIHRoZSBpbWFnZSBmdHJhY2UgaXMgY2FsbGluZy5cXG4rXFx0XFx0ICpcXG4rXFx0XFx0ICogVGhpcyByZWxpZXMgb24gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsL21vZCBiZWluZyBhdG9taWM6XFxuK1xcdFxcdCAqIG9uIGZhaWx1cmUsIE5PIElQcyBpbiB0aGUgaGFzaCBhcmUgbW9kaWZpZWQgaW4gZnRyYWNlIChhbGxcXG4rXFx0XFx0ICogdmFsaWRhdGlvbi9hbGxvY2F0aW9uIGhhcHBlbnMgYmVmb3JlIGFueSBmdHJhY2UgcmVjb3JkIGlzXFxuK1xcdFxcdCAqIHRvdWNoZWQpLiBJZiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuIGluIHRoZSBmdXR1cmUgKGkuZS4sXFxuK1xcdFxcdCAqIHBhcnRpYWwgc3VjY2VzcyBiZWNvbWVzIHBvc3NpYmxlKSwgdGhpcyByb2xsYmFjayBsb2dpYyB3b3VsZFxcbitcXHRcXHQgKiBuZWVkIHRvIGJlIHJldmlzaXRlZC5cXG4rXFx0XFx0ICpcXG4rXFx0XFx0ICogY3VyX2ltYWdlID09IE5VTEwgaW5kaWNhdGVzIHRoZSB1bnJlZyBwYXRoICh0b3RhbCA9PSAwKTtcXG4rXFx0XFx0ICogY3VyX2ltYWdlICE9IE5VTEwgaW5kaWNhdGVzIHRoZSBtb2RpZnkgcGF0aCAodG90YWwgXFx1MDAzZSAwKS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmICh0ci1cXHUwMDNlbXVsdGlfYXR0YWNoLm9sZF9pbWFnZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgdHItXFx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgIT0gdHItXFx1MDAzZWN1cl9pbWFnZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgKChlcnJfdW5yZWcgXFx1MDAyNlxcdTAwMjYgIXRyLVxcdTAwM2VjdXJfaW1hZ2UpIHx8XFxuK1xcdFxcdCAgICAgKGVycl9tb2QgXFx1MDAyNlxcdTAwMjYgdHItXFx1MDAzZWN1cl9pbWFnZSkpKVxcbitcXHRcXHRcXHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sodHIpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKHRyKTtcXG4rXFx0fVxcbiBcXG4gXFx0dHJhbXBvbGluZV91bmxvY2tfYWxsKCk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0NzoxOS40MDY1OTI1MjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NjcwMzAyMzkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiLFxuICAgIFwiRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hcIixcbiAgICBcImJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBpbiB0aGUgQlBGIHRyYW1wb2xpbmUgbXVsdGktZGV0YWNoIGxvZ2ljIGJ5IGNvcnJlY3RseSBoYW5kbGluZyBmdHJhY2UgdXBkYXRlIGZhaWx1cmVzIGFuZCByb2xsaW5nIGJhY2sgdGhlIGFjdGl2ZSBpbWFnZS4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgZm9yIEJQRiB0cmFjaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNjZmIwNjhjZGYwMTU3NWY2ZGNiNjFiNjI1YzIyMjZlMDJlYWIyNmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAxMzo0NzoxNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jIGIva2VybmVsL2JwZi90cmFtcG9saW5lLmNcbmluZGV4IDZlYWRmNjRmN2VjOTBmLi40NGVmMjViZWI0Y2M1YyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdHJhbXBvbGluZS5jXG4rKysgYi9rZXJuZWwvYnBmL3RyYW1wb2xpbmUuY1xuQEAgLTE1ODUsNyArMTU4NSwxNyBAQCBzdGF0aWMgdm9pZCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfaW5pdChzdHJ1Y3QgYnBmX3RyYW1wb2xpbmUgKnRyKVxuIFxuIHN0YXRpYyB2b2lkIGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpXG4ge1xuLVx0aWYgKHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UpXG4rXHQvKiBPbmx5IGZyZWUgb2xkX2ltYWdlIGlmIGl0IGlzIG5vIGxvbmdlciB0aGUgYWN0aXZlIGltYWdlLlxuK1x0ICogV2hlbiBicGZfdHJhbXBvbGluZV91cGRhdGUoKSBmYWlscyBiZWZvcmUgbW9kaWZ5X2ZlbnRyeV9tdWx0aSgpL1xuK1x0ICogdW5yZWdpc3Rlcl9mZW50cnlfbXVsdGkoKSBpcyBjYWxsZWQsIGN1cl9pbWFnZSBpcyB1bmNoYW5nZWRcbitcdCAqIChjdXJfaW1hZ2UgPT0gb2xkX2ltYWdlKSBhbmQgZnRyYWNlIHN0aWxsIHBvaW50cyB0byBpdC4gRnJlZWluZ1xuK1x0ICogaXQgd291bGQgY2F1c2UgYSBVQUYgd2hlbiBmdHJhY2UgY2FsbHMgaW50byB0aGUgZnJlZWQgbWVtb3J5LlxuK1x0ICogT24gc3VjY2VzcywgY3VyX2ltYWdlIGlzIGVpdGhlciBhIG5ldyBpbWFnZSBvciBOVUxMLCBzb1xuK1x0ICogb2xkX2ltYWdlICE9IGN1cl9pbWFnZSBjb3JyZWN0bHkgaWRlbnRpZmllcyBhIHN0YWxlIGltYWdlIHRoYXRcbitcdCAqIGlzIHNhZmUgdG8gZnJlZS5cbitcdCAqL1xuK1x0aWYgKHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgXHUwMDI2XHUwMDI2XG4rXHQgICAgdHItXHUwMDNlbXVsdGlfYXR0YWNoLm9sZF9pbWFnZSAhPSB0ci1cdTAwM2VjdXJfaW1hZ2UpXG4gXHRcdGJwZl90cmFtcF9pbWFnZV9wdXQodHItXHUwMDNlbXVsdGlfYXR0YWNoLm9sZF9pbWFnZSk7XG4gXG4gXHR0ci1cdTAwM2VtdWx0aV9hdHRhY2gub2xkX2ltYWdlID0gTlVMTDtcbkBAIC0xNzEzLDcgKzE3MjMsNyBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpX1xuIHtcbiBcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9kYXRhICpkYXRhID0gXHUwMDI2bGluay1cdTAwM2VkYXRhO1xuIFx0c3RydWN0IGJwZl90cmFjaW5nX211bHRpX25vZGUgKm1ub2RlO1xuLVx0aW50IGk7XG4rXHRpbnQgaSwgZXJyX3VucmVnID0gMCwgZXJyX21vZCA9IDA7XG4gXG4gXHR0cmFtcG9saW5lX2xvY2tfYWxsKCk7XG4gXG5AQCAtMTcyNCwxMyArMTczNCw0MSBAQCBpbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpX1xuIFx0XHRcdFx0XHROVUxMLCBcdTAwMjZ0cmFtcG9saW5lX211bHRpX29wcywgZGF0YSkpO1xuIFx0fVxuIFxuLVx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNldW5yZWcpKVxuLVx0XHRXQVJOX09OX09OQ0UodXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXHUwMDNldW5yZWcpKTtcbi1cdGlmIChmdHJhY2VfaGFzaF9jb3VudChkYXRhLVx1MDAzZW1vZGlmeSkpXG4tXHRcdFdBUk5fT05fT05DRSh1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2QoXHUwMDI2ZGlyZWN0X29wcywgZGF0YS1cdTAwM2Vtb2RpZnksIHRydWUpKTtcbitcdGlmIChmdHJhY2VfaGFzaF9jb3VudChkYXRhLVx1MDAzZXVucmVnKSkge1xuK1x0XHRlcnJfdW5yZWcgPSB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoXHUwMDI2ZGlyZWN0X29wcywgZGF0YS1cdTAwM2V1bnJlZyk7XG4rXHRcdFdBUk5fT05fT05DRShlcnJfdW5yZWcpO1xuK1x0fVxuK1x0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXHUwMDNlbW9kaWZ5KSkge1xuK1x0XHRlcnJfbW9kID0gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXHUwMDNlbW9kaWZ5LCB0cnVlKTtcbitcdFx0V0FSTl9PTl9PTkNFKGVycl9tb2QpO1xuK1x0fVxuIFxuLVx0Zm9yX2VhY2hfbW5vZGUobW5vZGUsIGxpbmspXG4tXHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKG1ub2RlLVx1MDAzZXRyYW1wb2xpbmUpO1xuK1x0Zm9yX2VhY2hfbW5vZGUobW5vZGUsIGxpbmspIHtcbitcdFx0c3RydWN0IGJwZl90cmFtcG9saW5lICp0ciA9IG1ub2RlLVx1MDAzZXRyYW1wb2xpbmU7XG4rXG4rXHRcdC8qIElmIHRoZSBiYXRjaCBmdHJhY2UgdXBkYXRlIGZhaWxlZCBmb3IgdGhpcyBtbm9kZSdzIHBhdGgsXG4rXHRcdCAqIGZ0cmFjZSBzdGlsbCBwb2ludHMgdG8gb2xkX2ltYWdlLiBVc2Ugcm9sbGJhY2sgdG8gcmVzdG9yZVxuK1x0XHQgKiBjdXJfaW1hZ2UgdG8gb2xkX2ltYWdlIChwdXR0aW5nIHRoZSBuZXcgY3VyX2ltYWdlIGlmIGFueSlcbitcdFx0ICogc28gdGhlIHRyYW1wb2xpbmUga2VlcHMgdGhlIGltYWdlIGZ0cmFjZSBpcyBjYWxsaW5nLlxuK1x0XHQgKlxuK1x0XHQgKiBUaGlzIHJlbGllcyBvbiB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwvbW9kIGJlaW5nIGF0b21pYzpcbitcdFx0ICogb24gZmFpbHVyZSwgTk8gSVBzIGluIHRoZSBoYXNoIGFyZSBtb2RpZmllZCBpbiBmdHJhY2UgKGFsbFxuK1x0XHQgKiB2YWxpZGF0aW9uL2FsbG9jYXRpb24gaGFwcGVucyBiZWZvcmUgYW55IGZ0cmFjZSByZWNvcmQgaXNcbitcdFx0ICogdG91Y2hlZCkuIElmIHRoaXMgYXNzdW1wdGlvbiBpcyBicm9rZW4gaW4gdGhlIGZ1dHVyZSAoaS5lLixcbitcdFx0ICogcGFydGlhbCBzdWNjZXNzIGJlY29tZXMgcG9zc2libGUpLCB0aGlzIHJvbGxiYWNrIGxvZ2ljIHdvdWxkXG4rXHRcdCAqIG5lZWQgdG8gYmUgcmV2aXNpdGVkLlxuK1x0XHQgKlxuK1x0XHQgKiBjdXJfaW1hZ2UgPT0gTlVMTCBpbmRpY2F0ZXMgdGhlIHVucmVnIHBhdGggKHRvdGFsID09IDApO1xuK1x0XHQgKiBjdXJfaW1hZ2UgIT0gTlVMTCBpbmRpY2F0ZXMgdGhlIG1vZGlmeSBwYXRoICh0b3RhbCBcdTAwM2UgMCkuXG4rXHRcdCAqL1xuK1x0XHRpZiAodHItXHUwMDNlbXVsdGlfYXR0YWNoLm9sZF9pbWFnZSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgIT0gdHItXHUwMDNlY3VyX2ltYWdlIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgKChlcnJfdW5yZWcgXHUwMDI2XHUwMDI2ICF0ci1cdTAwM2VjdXJfaW1hZ2UpIHx8XG4rXHRcdCAgICAgKGVycl9tb2QgXHUwMDI2XHUwMDI2IHRyLVx1MDAzZWN1cl9pbWFnZSkpKVxuK1x0XHRcdGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFjayh0cik7XG4rXHRcdGVsc2VcbitcdFx0XHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZSh0cik7XG4rXHR9XG4gXG4gXHR0cmFtcG9saW5lX3VubG9ja19hbGwoKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ3OjE5LjQwNjU5Mzc4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyOTg2MTg0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFRyYW1wb2xpbmUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGtlcm5lbCBwYXRjaCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AuIEZyb20gd2hhdCBJIHNlZSwgaXQncyBtb2RpZnlpbmcgdGhlIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAgYW5kIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIGZ1bmN0aW9ucy4gSXQgc2VlbXMgbGlrZSBhIG5ldyBjaGVjaywgYHRyLVx1MDAzZW11bHRpX2F0dGFjaC5vbGRfaW1hZ2UgIT0gdHItXHUwMDNlY3VyX2ltYWdlYCwgaGFzIGJlZW4gYWRkZWQgYmVmb3JlIGZyZWVpbmcgYG9sZF9pbWFnZWAsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJdCBhbHNvIGFwcGVhcnMgdGhlIHBhdGNoIGlzIG5vdyBoYW5kbGluZyBwb3RlbnRpYWwgZXJyb3JzIGZyb20gYHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbGAgYW5kIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2RgIGluIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgLiBJbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IsIGl0J3MgY2FsbGluZyBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrKHRyKWAuXG5cblRoaXMgbWFrZXMgc2Vuc2UsIGl0IGxvb2tzIGxpa2UgYSB0YXJnZXRlZCBjaGFuZ2Ugd2l0aGluIHRoZSBCUEYgdHJhbXBvbGluZSBtdWx0aS1hdHRhY2gvZGV0YWNoIGxvZ2ljLiBUbyB2ZXJpZnkgaXRzIGJlaGF2aW9yIGFuZCByb2J1c3RuZXNzLCBJIHNob3VsZCBwdXQgdG9nZXRoZXIgc29tZSBmdXp6aW5nIHJvdXRpbmVzIGZvciBib3RoIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWVgLlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBlbmFibGUgdGhpcyBCUEYgdHJhbXBvbGluZSBmdW5jdGlvbmFsaXR5LiBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gcXVpY2tseSBsb2NhdGUgdGhlIGNvbmZpZ3VyYXRpb24ga25vYnMgYXNzb2NpYXRlZCB3aXRoIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODM2LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDc6MjQuNzA1MjE0MDQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3ODkxNzYwMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnBmLmg9MTUyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXFxuaW5jbHVkZS9saW51eC9icGYuaC0xNTIzLVxcdFxcdFxcdFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTtcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjE1MjQ6aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuaW5jbHVkZS9saW51eC9icGYuaC0xNTI1LVxcdFxcdFxcdFxcdHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MTYzOT1zdGF0aWMgaW5saW5lIGludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmgtMTY0My19XFxuaW5jbHVkZS9saW51eC9icGYuaDoxNjQ0OnN0YXRpYyBpbmxpbmUgaW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuaW5jbHVkZS9saW51eC9icGYuaC0xNjQ1LVxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTYyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyICppZHMsXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzIxLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3MjI6aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MjMte1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTM2ODU9c3RhdGljIHZvaWQgYnBmX3RyYWNpbmdfbXVsdGlfbGlua19yZWxlYXNlKHN0cnVjdCBicGZfbGluayAqbGluaylcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zNjg5LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozNjkwOlxcdFdBUk5fT05fT05DRShicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2gobGluay1cXHUwMDNlcHJvZywgdHJfbGluaykpO1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zNjkxLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDc6MjcuNDk0Mzk3ODk2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTc3MjM0NDIxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBkZWVwIGluIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgZmFtaWxpYXIgd2l0aCBCUEY6XG5cbioqTmF2aWdhdGluZyB0aGUgQlBGIFRyYW1wb2xpbmUgTGFuZHNjYXBlKipcblxuUmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYC4gSSBrbm93IHRoYXQgZnVuY3Rpb24sIGl0J3MgYSBrZXkgcGFydCBvZiB0aGUgbXVsdGktZGV0YWNoIGZ1bmN0aW9uYWxpdHkgd2UndmUgZ290IGluIEJQRi4gTm93LCB3aGVyZSBpcyB0aGF0IGFjdHVhbGx5IGRlZmluZWQ/IE9rYXksIG1lbW9yeSBqb2dnZWQsIGl0J3Mgc2l0dGluZyBpbiBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgLiBHb29kLCBnb29kLiBCdXQgSSBuZWVkIHRvIHJlZnJlc2ggdGhlIGRldGFpbHMsIGVzcGVjaWFsbHkgYXMgaXQgcmVsYXRlcyB0byBjb25maWcgb3B0aW9ucy4gTGV0J3MgcHVsbCB1cCB0aGUgS2NvbmZpZyBmb3IgdGhhdCBmaWxlIHRvIHNlZSB3aGF0IGZlYXR1cmVzIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgaXQgdG8gYmUgY29tcGlsZWQgaW4uIEdvdHRhIG1ha2Ugc3VyZSBhbGwgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24ga25vYnMgYXJlIGZsaXBwZWQsIHNvIHRoYXQgbXVsdGktZGV0YWNoIGlzIGFjdGl2ZSBhbmQgcmVhZHkgdG8gdXNlIVxuXG5cbiIsIklucHV0VG9rZW5zIjozOTE1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDc6MzcuMjY2NzQ1MTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4OTg1NTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRyYW1wb2xpbmVcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZGlzYXNtLm8gbXByb2cub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IHRyYW1wb2xpbmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0NzozNy4zODU3NDEzOTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjEwODQ4OTY1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjM5OTksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ3OjQ5LjQ5NDIzNDE2N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjA0NDQyNDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFjaW5nX211bHRpX2xpbmtfcmVsZWFzZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MzY4MD1fX2JwZl9rZnVuY19lbmRfZGVmcygpO1xcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM2ODQtXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM2ODU6c3RhdGljIHZvaWQgYnBmX3RyYWNpbmdfbXVsdGlfbGlua19yZWxlYXNlKHN0cnVjdCBicGZfbGluayAqbGluaylcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzY4Ni17XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9Mzc4ND1zdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9saW5rX29wcyBicGZfdHJhY2luZ19tdWx0aV9saW5rX2xvcHMgPSB7XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM3ODU6XFx0LnJlbGVhc2UgPSBicGZfdHJhY2luZ19tdWx0aV9saW5rX3JlbGVhc2UsXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM3ODYtXFx0LmRlYWxsb2NfZGVmZXJyZWQgPSBicGZfdHJhY2luZ19tdWx0aV9saW5rX2RlYWxsb2MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ3OjUyLjA5ODY4NTU4NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNzI1MjAwMDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6NDI0NiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDg6MDUuODIzODg5NDAyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTA5NzM5MjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFjaW5nX211bHRpX2xpbmtfbG9wc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9Mzc1OD1zdGF0aWMgdm9pZCBicGZfdHJhY2luZ19tdWx0aV9zaG93X2ZkaW5mbyhjb25zdCBzdHJ1Y3QgYnBmX2xpbmsgKmxpbmssXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzc4My1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6Mzc4NDpzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl9saW5rX29wcyBicGZfdHJhY2luZ19tdWx0aV9saW5rX2xvcHMgPSB7XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM3ODUtXFx0LnJlbGVhc2UgPSBicGZfdHJhY2luZ19tdWx0aV9saW5rX3JlbGVhc2UsXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9Mzg0MD1pbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkwMS1cXHRicGZfbGlua19pbml0KFxcdTAwMjZsaW5rLVxcdTAwM2VsaW5rLCBCUEZfTElOS19UWVBFX1RSQUNJTkdfTVVMVEksXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM5MDI6XFx0XFx0ICAgICAgXFx1MDAyNmJwZl90cmFjaW5nX211bHRpX2xpbmtfbG9wcywgcHJvZywgcHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUpO1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zOTAzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0ODowOC4zMzM2NDI5OTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMyNzE5MzQ3MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjo0NTYxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0ODoyMS42MDU1Nzk2ODJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NTgwNTIxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9Nzg5PWludCBicGZfdXByb2JlX211bHRpX2xpbmtfYXR0YWNoKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpO1xcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg6NzkwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cik7XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC03OTEtI2Vsc2VcXG4tLVxcbmluY2x1ZGUvbGludXgvdHJhY2VfZXZlbnRzLmg9ODQ4PXN0YXRpYyBpbmxpbmUgaW50XFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaDo4NDk6YnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuaW5jbHVkZS9saW51eC90cmFjZV9ldmVudHMuaC04NTAte1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9NTc2NT1zdGF0aWMgaW50IGxpbmtfY3JlYXRlKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU4MTUtXFx0XFx0ZWxzZSBpZiAoaXNfdHJhY2luZ19tdWx0aShwcm9nLVxcdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZSkpXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTgxNjpcXHRcXHRcXHRyZXQgPSBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2gocHJvZywgYXR0cik7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtNTgxNy1cXHRcXHRlbHNlXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MzgxOT1zdGF0aWMgaW50IGNoZWNrX2R1cF9pZHModTMyICppZHMsIHU2NCAqY29va2llcywgdTMyIGNudClcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zODM5LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozODQwOmludCBicGZfdHJhY2luZ19tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzg0MS17XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzkyOS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MzkzMDppbnQgYnBmX3RyYWNpbmdfbXVsdGlfYXR0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgY29uc3QgdW5pb24gYnBmX2F0dHIgKmF0dHIpXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM5MzEte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0ODoyNC41NjM2NDEyMDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ4MjYzNDE2ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQlBGIFRyYWNpbmcgTXVsdGktQXR0YWNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgQlBGX0xJTktfVFlQRV9UUkFDSU5HX01VTFRJYC4gVGhhdCdzIGNyZWF0ZWQgdGhyb3VnaCB0aGUgYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgZnVuY3Rpb24sIHdoaWNoIGlzIHVsdGltYXRlbHkgY2FsbGVkIGZyb20gYGxpbmtfY3JlYXRlYCBpbiBga2VybmVsL2JwZi9zeXNjYWxsLmNgLiBHb29kLCB0aGF0IG1lYW5zIGl0J3MgYSBkZWZpbml0ZSBwYXRod2F5LCByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgaW4gdGhlIGtlcm5lbC5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBlbmFibGVkLiBEZWZpbml0ZWx5IG5lZWQgYENPTkZJR19CUEZfU1lTQ0FMTGAgYW5kIGBDT05GSUdfQlBGX0pJVGAuIFRob3NlIGFyZSBlc3NlbnRpYWwuIEFuZCwgc2luY2UgdGhpcyBpbnZvbHZlcyB0cmFjaW5nLCBpdCdzIGhpZ2hseSBwcm9iYWJsZSB0aGF0IGBDT05GSUdfRlRSQUNFYCBpcyBhbHNvIHJlcXVpcmVkLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBieSBleGFtaW5pbmcgYGtlcm5lbC90cmFjZS9NYWtlZmlsZWAgdG8gc2VlIGlmIGBicGZfdHJhY2UuY2AgaXMgYmVpbmcgY29tcGlsZWQuIEp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluIHRoYXQgdHJhY2luZyBzdXBwb3J0IGlzIGF2YWlsYWJsZSBhbmQgcHJvcGVybHkgbGlua2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mzg1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ4OjM5LjM4OTk4Njk4OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAzNTQzODAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFjZVxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvdHJhY2UvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL3RyYWNlL01ha2VmaWxlPTU0PUtDT1ZfSU5TVFJVTUVOVF90cmFjZV9pcnFzb2ZmLm8gOj0gblxcbmtlcm5lbC90cmFjZS9NYWtlZmlsZS01NS1cXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU6NTY6Q0ZMQUdTX2JwZl90cmFjZS5vIDo9IC1JJChzcmMpXFxua2VybmVsL3RyYWNlL01ha2VmaWxlLTU3LVxcbi0tXFxua2VybmVsL3RyYWNlL01ha2VmaWxlPTEwOT1vYmotJChDT05GSUdfVVNFUl9FVkVOVFMpICs9IHRyYWNlX2V2ZW50c191c2VyLm9cXG5rZXJuZWwvdHJhY2UvTWFrZWZpbGU6MTEwOm9iai0kKENPTkZJR19CUEZfRVZFTlRTKSArPSBicGZfdHJhY2Uub1xcbmtlcm5lbC90cmFjZS9NYWtlZmlsZS0xMTEtb2JqLSQoQ09ORklHX0tQUk9CRV9FVkVOVFMpICs9IHRyYWNlX2twcm9iZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ4OjM5LjY5MzUzNzY5OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODU1MjU0Nzk4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBUcmFtcG9saW5lIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IHRvdWNoaW5nIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AsIHNwZWNpZmljYWxseSB0aGUgYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAgYW5kIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAgZnVuY3Rpb25zLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3Rpbmc7IHRoZXNlIGFyZSBjb3JlIGNvbXBvbmVudHMgZm9yIG1hbmFnaW5nIEJQRiB0cmFtcG9saW5lcy4gVGhlIGFkZGl0aW9uIG9mIHJvbGxiYWNrIGxvZ2ljIGhlcmUgaXMgd2hhdCdzIGNydWNpYWwuIEl0IG1lYW5zIHRoZXkncmUgYWRkaW5nIGEgc2FmZXR5IG5ldCB3aGVuIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWxgIG9yIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2RgIGZhaWwsIHdoaWNoIGlzIGdvb2QuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSByZWFjaGFibGUgY29kZSBwYXRoIHRocm91Z2ggYGJwZl90cmFjaW5nX211bHRpX2F0dGFjaGAgYW5kIGl0cyBhc3NvY2lhdGVkIHJlbGVhc2UgbWVjaGFuaXNtcy4gVGhhdCBtYWtlcyBzZW5zZSBmb3IgdGhlIHVzZSBjYXNlLlxuXG5Gcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgYENPTkZJR19CUEZfSklUYCwgYENPTkZJR19CUEZfRVZFTlRTYCwgYW5kIGBDT05GSUdfQlBGX1NZU0NBTExgIGFyZSB0aGUga2V5IGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zLiBXaXRob3V0IHRob3NlLCB0aGlzIGlzIGFsbCBhY2FkZW1pYy4gVGhlIHJlYWwgbWVhdCBvZiB0aGUgY2hhbmdlcyBpcyBjZW50ZXJlZCBhcm91bmQgdGhlc2UgdHJhbXBvbGluZSBtYW5hZ2VtZW50IGZ1bmN0aW9uczogYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAsIGFuZCBhbHNvIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tgLiBXYWl0LCB3aGF0J3MgdGhpcyBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrYD8gSXQncyBiZWluZyAqY2FsbGVkKiBpbiB0aGUgcGF0Y2gsIGJ1dCBpcyBpdCAqZGVmaW5lZCogaGVyZT8gVGhlIGNvbnRleHQgaXNuJ3Qgc2hvd2luZyBhIGRlZmluaXRpb24sIHdoaWNoIGlzIG5vdCB1bnVzdWFsLCBpdCBjb3VsZCBiZSBkZWZpbmVkIGVsc2V3aGVyZS5cblxuTGV0J3MgZGlnIGRlZXBlci4gVGhlIHBhdGNoIGNhbGxzIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sodHIpYC4gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIGJlZW4gZGVmaW5lZCwgYW5kIGVuc3VyZSB0aGF0IHRoZSBjb2RlIGlzIHdlbGwtZm9ybWVkLiBJdCBoYXMgdG8gYmUgZGVmaW5lZC4gTGV0J3MgbWFrZSBzdXJlIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tgIGV4aXN0cyBpbiB0aGUgY29kZWJhc2UhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MTEsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDg6NTguMjQ2MDg4OTM0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDU2Njc0ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9yb2xsYmFja1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNTg2PXN0YXRpYyB2b2lkIGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjA0LVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE2MDU6c3RhdGljIHZvaWQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrKHN0cnVjdCBicGZfdHJhbXBvbGluZSAqdHIpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTYwNi17XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNjIyPWludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MDYtXFx0XFx0YnBmX3RyYW1wb2xpbmVfcmVtb3ZlX3Byb2cobW5vZGUtXFx1MDAzZXRyYW1wb2xpbmUsIFxcdTAwMjZtbm9kZS1cXHUwMDNlbm9kZSk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTcwNzpcXHRcXHRicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2sobW5vZGUtXFx1MDAzZXRyYW1wb2xpbmUpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MDgtXFx0fVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTcyMj1pbnQgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoKHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IGJwZl90cmFjaW5nX211bHRpX2xpbmsgKmxpbmspXFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzY3LVxcdFxcdCAgICAgKGVycl9tb2QgXFx1MDAyNlxcdTAwMjYgdHItXFx1MDAzZWN1cl9pbWFnZSkpKVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3Njg6XFx0XFx0XFx0YnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrKHRyKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzY5LVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDk6MDIuNzAyNzcyMzMyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4NTU5NDc1MzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBUcmFtcG9saW5lIFVBRiBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgQlBGIHRyYW1wb2xpbmUgbXVsdGktYXR0YWNoL2RldGFjaCBsb2dpYy4gSXQgYXBwZWFycyB0byBiZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZvY3VzaW5nIG9uIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX2ZyZWVgIGluIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AuIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIG1vZGlmaWVzIGBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hgIHRvIHByb3Blcmx5IGhhbmRsZSBlcnJvcnMgdGhhdCBtaWdodCBjb21lIGZyb20gYHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbGAgYW5kIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9tb2RgLiBUaGlzIGlzIGNyaXRpY2FsLCBhcyBmYWlsdXJlIHRvIGhhbmRsZSB0aGVzZSBlcnJvcnMgd291bGQgcHJvcGFnYXRlIGFuZCBsZWFkIHRvIFVBRiBpc3N1ZXMuXG5cblRoZSBvdGhlciBwYXJ0IG1vZGlmaWVzIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAgdG8gYmUgc21hcnRlciBhYm91dCByZWxlYXNpbmcgYG9sZF9pbWFnZWAuIEl0IHNlZW1zIGl0IG9ubHkgcmVsZWFzZXMgdGhlIGBvbGRfaW1hZ2VgIGlmIGl0J3MgKm5vIGxvbmdlciogdGhlIGFjdGl2ZSBpbWFnZS4gVGhpcyBwcmV2ZW50cyBwcmVtYXR1cmUgZnJlZWluZywgd2hpY2ggaXMgbGlrZWx5IHRoZSByb290IGNhdXNlIG9mIHRoZSBVQUYuIFRoZSBCUEYgc3lzY2FsbCBgbGlua19jcmVhdGVgIHdpdGggc29tZXRoaW5nIGxpa2UgYEJQRl9UUkFDRV9GRU5UUllgIG9yIG90aGVyIG11bHRpLWF0dGFjaCB0cmFjaW5nIHByb2dyYW1zIHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgdHJpZ2dlcmluZyB0aGlzIGJ1Zy5cblxuSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBidWlsZCBlbnZpcm9ubWVudCBhbmQgZGVwZW5kZW5jaWVzLiBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYENPTkZJR19CUEZfSklUYCwgYW5kIGBDT05GSUdfQlBGX0VWRU5UU2AgYXJlIG9idmlvdXNseSByZWxldmFudC4gYENPTkZJR19CUEZfSklUYCBpcyBrZXkgc2luY2UgaXQncyByZXF1aXJlZCBmb3IgYHRyYW1wb2xpbmUub2AgYW5kIGBrZXJuZWwvYnBmL3RyYW1wb2xpbmUuY2AuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBgQ09ORklHX0JQRl9FVkVOVFNgIGlzIGFsc28gZW5hYmxlZCBzaW5jZSBpdCBsZWFkcyB0byBgYnBmX3RyYWNlLm9gIHdoaWNoLCBpbiB0dXJuLCBjYWxscyBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoYC4gSSdtIGd1ZXNzaW5nIGBDT05GSUdfRlRSQUNFYCBpcyBpbXBsaWVkIHNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsYC4gQW5kIEkgbmVlZCB0byBjaGVjayBgQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYCBhcyB0aGF0IGlzIHByb2JhYmx5IG5lZWRlZCBmb3IgZGlyZWN0IGZ0cmFjZSBjYWxscy5cblxuTm93LCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBsaW5lcyB1cC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBga2VybmVsL2JwZi90cmFtcG9saW5lLmNgIGdldHMgY29tcGlsZWQgaWYgYENPTkZJR19CUEZfSklUYCBpcyBzZXQgYW5kIHRoYXQgYGtlcm5lbC90cmFjZS9icGZfdHJhY2UuY2AgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9FVkVOVFNgIGlzIGVuYWJsZWQuIFRpbWUgdG8gdmVyaWZ5IHRoZXNlIGNvbmZpZ3MuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMyMCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo0OToyMS4yNjIyNTA1NjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzc2MzY2ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZnRyYWNlLmg9NTUwPWludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9hZGQoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKTtcXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oOjU1MTppbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCk7XFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01NTItaW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gsIGJvb2wgZG9fZGlyZWN0X2xvY2spO1xcbi0tXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaD01ODI9c3RhdGljIGlubGluZSBpbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfYWRkKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaClcXG4tLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTg2LVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NTg3OnN0YXRpYyBpbmxpbmUgaW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gpXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01ODgte1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MjY5PXN0YXRpYyBpbnQgZGlyZWN0X29wc19kZWwoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdm9pZCAqYWRkcilcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTI3NS1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoyNzY6XFx0ZXJyID0gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHRyLVxcdTAwM2Vmb3BzLCBoYXNoKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0yNzctXFx0ZnJlZV9mdHJhY2VfaGFzaChoYXNoKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE2MjI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiAqaWRzLFxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTY5MC1cXHRcXHRcXHRpZiAoZnRyYWNlX2hhc2hfY291bnQoZGF0YS1cXHUwMDNlcmVnKSlcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNjkxOlxcdFxcdFxcdFxcdFdBUk5fT05fT05DRSh1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoXFx1MDAyNmRpcmVjdF9vcHMsIGRhdGEtXFx1MDAzZXJlZykpO1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2OTItXFx0XFx0XFx0Z290byByb2xsYmFja191bmxpbms7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNzIyPWludCBicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCBzdHJ1Y3QgYnBmX3RyYWNpbmdfbXVsdGlfbGluayAqbGluaylcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3MzctXFx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXFx1MDAzZXVucmVnKSkge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3Mzg6XFx0XFx0ZXJyX3VucmVnID0gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKFxcdTAwMjZkaXJlY3Rfb3BzLCBkYXRhLVxcdTAwM2V1bnJlZyk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTczOS1cXHRcXHRXQVJOX09OX09OQ0UoZXJyX3VucmVnKTtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3NTMtXFx0XFx0ICpcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNzU0OlxcdFxcdCAqIFRoaXMgcmVsaWVzIG9uIHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbC9tb2QgYmVpbmcgYXRvbWljOlxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3NTUtXFx0XFx0ICogb24gZmFpbHVyZSwgTk8gSVBzIGluIHRoZSBoYXNoIGFyZSBtb2RpZmllZCBpbiBmdHJhY2UgKGFsbFxcbi0tXFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jPTY0NjE9c3RhdGljIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaF9zdWIoc3RydWN0IGZ0cmFjZV9oYXNoICphLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmIpXFxuLS1cXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjQ4Ni0vKipcXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6NjQ4NzogKiB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwgLSBVcGRhdGVzIEBvcHMgYnkgcmVtb3ZpbmcgaXRzIGRpcmVjdFxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYy02NDg4LSAqIGNhbGxlcnMgcHJvdmlkZWQgaW4gQGhhc2hcXG4tLVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYy02NDk5LSAqL1xcbmtlcm5lbC90cmFjZS9mdHJhY2UuYzo2NTAwOmludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYy02NTAxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDk6MjYuNDM5ODk5ODc2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyOTY2OTc0NTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6NzgxMSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NDk6MzkuNDA2ODc4MTAyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDgwOTU0NzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTU1MT1pbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCk7XFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaDo1NTI6aW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gsIGJvb2wgZG9fZGlyZWN0X2xvY2spO1xcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTUzLVxcbi0tXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaD01ODc9c3RhdGljIGlubGluZSBpbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaClcXG4tLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTkxLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NTkyOnN0YXRpYyBpbmxpbmUgaW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gsIGJvb2wgZG9fZGlyZWN0X2xvY2spXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01OTMte1xcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MjgxPXN0YXRpYyBpbnQgZGlyZWN0X29wc19tb2Qoc3RydWN0IGJwZl90cmFtcG9saW5lICp0ciwgdm9pZCAqYWRkciwgYm9vbCBsb2NrX2RpcmVjdF9tdXRleClcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTI4Ny1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoyODg6XFx0ZXJyID0gdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKHRyLVxcdTAwM2Vmb3BzLCBoYXNoLCBsb2NrX2RpcmVjdF9tdXRleCk7XFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMjg5LVxcdGZyZWVfZnRyYWNlX2hhc2goaGFzaCk7XFxuLS1cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYz0xNjIyPWludCBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2goc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgKmlkcyxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE2ODctXFx0aWYgKGZ0cmFjZV9oYXNoX2NvdW50KGRhdGEtXFx1MDAzZW1vZGlmeSkpIHtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYzoxNjg4OlxcdFxcdGVyciA9IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChcXHUwMDI2ZGlyZWN0X29wcywgZGF0YS1cXHUwMDNlbW9kaWZ5LCB0cnVlKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNjg5LVxcdFxcdGlmIChlcnIpIHtcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MjI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTc0MS1cXHRpZiAoZnRyYWNlX2hhc2hfY291bnQoZGF0YS1cXHUwMDNlbW9kaWZ5KSkge1xcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3NDI6XFx0XFx0ZXJyX21vZCA9IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChcXHUwMDI2ZGlyZWN0X29wcywgZGF0YS1cXHUwMDNlbW9kaWZ5LCB0cnVlKTtcXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzQzLVxcdFxcdFdBUk5fT05fT05DRShlcnJfbW9kKTtcXG4tLVxcbmtlcm5lbC90cmFjZS9mdHJhY2UuYz02NTAwPWludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWwoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKVxcbi0tXFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jLTY1ODMtLyoqXFxua2VybmVsL3RyYWNlL2Z0cmFjZS5jOjY1ODQ6ICogdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kIC0gVXBkYXRlcyBAb3BzIGJ5IG1vZGlmaW5nIGl0cyBkaXJlY3RcXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjU4NS0gKiBjYWxsZXJzIHByb3ZpZGVkIGluIEBoYXNoXFxuLS1cXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjYwMC0gKi9cXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmM6NjYwMTppbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfbW9kKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCwgYm9vbCBkb19kaXJlY3RfbG9jaylcXG5rZXJuZWwvdHJhY2UvZnRyYWNlLmMtNjYwMi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjQ5OjQ1Ljg4NzgzOTU2NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjAxOTA0NDA5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBWZXJpZmljYXRpb24gYW5kIENvbmZpZ3VyYXRpb24gQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzb2xpZCBmaXg7IGl0IGRlZmluaXRlbHkgYWRkcmVzc2VzIHRoYXQgVXNlLUFmdGVyLUZyZWUgYnVnIGluIHRoZSBCUEYgdHJhbXBvbGluZSdzIG11bHRpLWRldGFjaCBzZXF1ZW5jZS4gVGhhdCdzIGdvb2QgdG8gc2VlLiBOb3csIGxldCdzIHRhbGsgYWJvdXQgdGhlIHJlcXVpcmVkIGtlcm5lbCBjb25maWd1cmF0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbGlzdCBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGFuZCBgQlBGX0VWRU5UU2AuIFRob3NlIGFyZSB0aGUgY29yZSBjb21wb25lbnRzIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gd29yayBjb3JyZWN0bHkuXG5cbkhvd2V2ZXIsIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gbWVudGlvbiBgRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNgLiBXaGlsZSB0aGUgY29yZSBCUEYgZWxlbWVudHMgYXJlIHRoZSBtYWluIGRyaXZlcnMgaGVyZSwgdGhlIGB1cGRhdGVfZnRyYWNlX2RpcmVjdF9kZWxgIGZ1bmN0aW9uLCB3aGljaCBtaWdodCBiZSByZWxldmFudCBpbiBjZXJ0YWluIHNjZW5hcmlvcywgaGFzIGEgZnVsbCBpbXBsZW1lbnRhdGlvbiBvbmx5IGlmIGBEWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgaXMgZW5hYmxlZDsgb3RoZXJ3aXNlLCBpdCdzIGp1c3QgYSBzdHViLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbiBhYm91dCB0aGF0LCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbGAgd2l0aGluIGBpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oYC4gSXQncyBhbHdheXMgYmVzdCB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBrZXJuZWwgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MTMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NTA6MDEuOTA2ODg2MjA5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU3MDAwODk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZnRyYWNlLmg9NTUwPWludCB1cGRhdGVfZnRyYWNlX2RpcmVjdF9hZGQoc3RydWN0IGZ0cmFjZV9vcHMgKm9wcywgc3RydWN0IGZ0cmFjZV9oYXNoICpoYXNoKTtcXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oOjU1MTppbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfZGVsKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaCk7XFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01NTItaW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X21vZChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gsIGJvb2wgZG9fZGlyZWN0X2xvY2spO1xcbi0tXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaD01ODI9c3RhdGljIGlubGluZSBpbnQgdXBkYXRlX2Z0cmFjZV9kaXJlY3RfYWRkKHN0cnVjdCBmdHJhY2Vfb3BzICpvcHMsIHN0cnVjdCBmdHJhY2VfaGFzaCAqaGFzaClcXG4tLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTg2LVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NTg3OnN0YXRpYyBpbmxpbmUgaW50IHVwZGF0ZV9mdHJhY2VfZGlyZWN0X2RlbChzdHJ1Y3QgZnRyYWNlX29wcyAqb3BzLCBzdHJ1Y3QgZnRyYWNlX2hhc2ggKmhhc2gpXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01ODgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo1MDowMy44NjM4OTQyMTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0MzU3NTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjEwNTM2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQxMzo1MDowOC4wMDc0NzM1MjNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTQ5MzcxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9mdHJhY2UuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTQ0OT1zdHJ1Y3QgZnRyYWNlX29wcyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTQ2NC1cXHRzdHJ1Y3QgZnRyYWNlX29wc1xcdFxcdCptYW5hZ2VkO1xcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NDY1OiNpZmRlZiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTQ2Ni1cXHR1bnNpZ25lZCBsb25nXFx0XFx0XFx0ZGlyZWN0X2NhbGw7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oPTUzNj1zdHJ1Y3QgZnRyYWNlX2Z1bmNfZW50cnkge1xcbi0tXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaC01NDEtXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaDo1NDI6I2lmZGVmIENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU1xcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNTQzLXVuc2lnbmVkIGxvbmcgZnRyYWNlX2ZpbmRfcmVjX2RpcmVjdCh1bnNpZ25lZCBsb25nIGlwKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg9NjE1PXN0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2Z0cmFjZV9zZXRfZGlyZWN0X2NhbGxlcihzdHJ1Y3QgZnRyYWNlX3JlZ3MgKmZyZWdzLFxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtNjE2LVxcdFxcdFxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nIGFkZHIpIHsgfVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg6NjE3OiNlbmRpZiAvKiBDT05GSUdfRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFMgKi9cXG5pbmNsdWRlL2xpbnV4L2Z0cmFjZS5oLTYxOC1cXG4tLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmg9MTAxNz1leHRlcm4gaW50IGZ0cmFjZV9tYWtlX2NhbGwoc3RydWN0IGR5bl9mdHJhY2UgKnJlYywgdW5zaWduZWQgbG9uZyBhZGRyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtMTAyMC1cXHRkZWZpbmVkKENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0NBTExfT1BTKSB8fCBcXFxcXFxuaW5jbHVkZS9saW51eC9mdHJhY2UuaDoxMDIxOlxcdGRlZmluZWQoQ09ORklHX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTKVxcbmluY2x1ZGUvbGludXgvZnRyYWNlLmgtMTAyMi0vKipcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMTM6NTA6MDguMTgyOTc0MDM4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3MDM2MDEzMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEJQRiBUcmFtcG9saW5lIE11bHRpLURldGFjaCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgY29uZmlybWVkIHRoYXQgYENPTkZJR19EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMU2AgaXMgdGhlIGtleSBjb25maWcgZm9yIGVuYWJsaW5nIGRpcmVjdCBjYWxscyBpbiB0aGlzIEJQRiBjb250ZXh0LiBOb3csIHRvIGJlIGFic29sdXRlbHkgY2xlYXIgb24gd2hhdCBuZWVkcyB0byBiZSBlbmFibGVkIGZvciBlZmZlY3RpdmUgdGVzdGluZywgSSBuZWVkIHRvIGxpc3QgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zOiBgQlBGX1NZU0NBTExgLCBgQlBGX0pJVGAsIGBCUEZfRVZFTlRTYCwgYW5kIGNydWNpYWxseSwgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSB1bmRlcmx5aW5nIGBDT05GSUdfRlRSQUNFYCBpcyBhIHJlcXVpcmVtZW50IGZvciB0aGUgYERZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTYCB0byBmdW5jdGlvbi5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBjZW50ZXJzIG9uIGFkZHJlc3NpbmcgYSB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgQlBGIHRyYW1wb2xpbmUncyBtdWx0aS1kZXRhY2ggbG9naWMuIFRoZSBmaXggaXMgYWJvdXQgcm9idXN0bHkgaGFuZGxpbmcgZnRyYWNlIHVwZGF0ZSBmYWlsdXJlcy4gVGhlIHBhdGNoIHJvbGxzIGJhY2sgdGhlIGFjdGl2ZSBpbWFnZSBpZiB0aGVyZSdzIGEgcHJvYmxlbS4gVGhpcyBpcyBjcml0aWNhbCBCUEYgdHJhY2luZyBsb2dpYywgYW5kIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cbkkndmUgZ290IGEgbGlzdCBvZiBmdW5jdGlvbnMgdGhhdCBuZWVkIGNsb3NlIGF0dGVudGlvbjogYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAsIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrYC4gIExldCdzIGRvdWJsZSBjaGVjay4uLiBZZXMsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tgIGlzIGluZGVlZCBkZWZpbmVkIGluIHRoZSBzb3VyY2UsIEkgY2FuIHNlZSBpdCBhdCBsaW5lIDE2MDUuXG5cbkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgZnV6emluZyB0aGlzIGFyZWEgc2VlbXMgd29ydGh3aGlsZS4gQW5kLCBhcyBJIHNhaWQsIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcgd2lsbCBiZSB0aGUgYGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaGAsIGBicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZWAsIGFuZCBgYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrYCBmdW5jdGlvbnMuIFNvLCBJIG5lZWQgdG8gZW5zdXJlIHRob3NlIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLiAgVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY292ZXJhZ2UgSSBuZWVkIHRvIGVmZmVjdGl2ZWx5IHRlc3QgdGhpcyBwYXRjaC4gTGV0J3MgZ2V0IHRoZSByZXN1bHRzIHNldC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMDcsIk91dHB1dFRva2VucyI6MTUzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDEzOjUwOjE1Ljg4NjU3OTEwOVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzAyODI4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9FVkVOVFNcIixcbiAgICBcIkRZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NBTExTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfZGV0YWNoXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfZnJlZVwiLFxuICAgIFwiYnBmX3RyYW1wb2xpbmVfbXVsdGlfYXR0YWNoX3JvbGxiYWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSBidWcgaW4gdGhlIEJQRiB0cmFtcG9saW5lIG11bHRpLWRldGFjaCBsb2dpYyBieSBjb3JyZWN0bHkgaGFuZGxpbmcgZnRyYWNlIHVwZGF0ZSBmYWlsdXJlcyBhbmQgcm9sbGluZyBiYWNrIHRoZSBhY3RpdmUgaW1hZ2UuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljIGZvciBCUEYgdHJhY2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX0VWRU5UU1wiLFxuICAgIFwiRFlOQU1JQ19GVFJBQ0VfV0lUSF9ESVJFQ1RfQ0FMTFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9kZXRhY2hcIixcbiAgICBcImJwZl90cmFtcG9saW5lX211bHRpX2F0dGFjaF9mcmVlXCIsXG4gICAgXCJicGZfdHJhbXBvbGluZV9tdWx0aV9hdHRhY2hfcm9sbGJhY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIGJ1ZyBpbiB0aGUgQlBGIHRyYW1wb2xpbmUgbXVsdGktZGV0YWNoIGxvZ2ljIGJ5IGNvcnJlY3RseSBoYW5kbGluZyBmdHJhY2UgdXBkYXRlIGZhaWx1cmVzIGFuZCByb2xsaW5nIGJhY2sgdGhlIGFjdGl2ZSBpbWFnZS4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMgZm9yIEJQRiB0cmFjaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowc654q[1] Phase: Succeeded StartedAt: 2026-07-16 13:50:27 +0000 UTC FinishedAt: 2026-07-16 13:50:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-16 13:50:27 +0000 UTC FinishedAt: 2026-07-16 13:50:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2] Phase: Succeeded StartedAt: 2026-07-16 13:50:27 +0000 UTC FinishedAt: 2026-07-16 14:54:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 13:50:27 +0000 UTC FinishedAt: 2026-07-16 14:54:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 13:50:27 +0000 UTC FinishedAt: 2026-07-16 13:50:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 13:50:27 +0000 UTC FinishedAt: 2026-07-16 13:50:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"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-workflowc654q/series-workflowc654q-convert-artifact-3321944982/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 13:50:38 +0000 UTC FinishedAt: 2026-07-16 14:19:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 13:50:38 +0000 UTC FinishedAt: 2026-07-16 14:19:25 +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:*45f40bcb-161e-4729-9648-cae1c08e78e8,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-workflowc654q/series-workflowc654q-convert-artifact-3321944982/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": "fe010085-ea43-45db-94f8-6e5aed95a058", "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-workflowc654q/series-workflowc654q-build-action-4007398188/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 13:50:38 +0000 UTC FinishedAt: 2026-07-16 14:19:15 +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:*45f40bcb-161e-4729-9648-cae1c08e78e8,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-workflowc654q/series-workflowc654q-convert-artifact-3321944982/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": "fe010085-ea43-45db-94f8-6e5aed95a058", "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-workflowc654q/series-workflowc654q-build-action-4007398188/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:19:25 +0000 UTC FinishedAt: 2026-07-16 14:19:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:19:25 +0000 UTC FinishedAt: 2026-07-16 14:19:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:19:25 +0000 UTC FinishedAt: 2026-07-16 14:19:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:19:25 +0000 UTC FinishedAt: 2026-07-16 14:19:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-workflowc654q/series-workflowc654q-convert-artifact-412898345/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:19:35 +0000 UTC FinishedAt: 2026-07-16 14:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:19:35 +0000 UTC FinishedAt: 2026-07-16 14:21:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fe010085-ea43-45db-94f8-6e5aed95a058,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-workflowc654q/series-workflowc654q-build-action-4007398188/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-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:21:51 +0000 UTC FinishedAt: 2026-07-16 14:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:21:51 +0000 UTC FinishedAt: 2026-07-16 14:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:21:51 +0000 UTC FinishedAt: 2026-07-16 14:48:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:21:51 +0000 UTC FinishedAt: 2026-07-16 14:48:54 +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:*45f40bcb-161e-4729-9648-cae1c08e78e8,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-workflowc654q/series-workflowc654q-convert-artifact-412898345/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": "41569c7c-15bb-4374-ae6a-12da8c737e1f", "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-workflowc654q/series-workflowc654q-build-action-2269354245/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:21:51 +0000 UTC FinishedAt: 2026-07-16 14:48:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*45f40bcb-161e-4729-9648-cae1c08e78e8,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-workflowc654q/series-workflowc654q-convert-artifact-412898345/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": "41569c7c-15bb-4374-ae6a-12da8c737e1f", "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-workflowc654q/series-workflowc654q-build-action-2269354245/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:48:54 +0000 UTC FinishedAt: 2026-07-16 14:48:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:48:54 +0000 UTC FinishedAt: 2026-07-16 14:48:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:48:54 +0000 UTC FinishedAt: 2026-07-16 14:51:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:48:54 +0000 UTC FinishedAt: 2026-07-16 14:50:50 +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:*41569c7c-15bb-4374-ae6a-12da8c737e1f,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-workflowc654q/series-workflowc654q-build-action-2269354245/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-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:51:00 +0000 UTC FinishedAt: 2026-07-16 14:54:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:51:00 +0000 UTC FinishedAt: 2026-07-16 14:54:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"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:*fe010085-ea43-45db-94f8-6e5aed95a058,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*41569c7c-15bb-4374-ae6a-12da8c737e1f,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-workflowc654q/series-workflowc654q-build-action-4007398188/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-workflowc654q/series-workflowc654q-build-action-2269354245/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:51:00 +0000 UTC FinishedAt: 2026-07-16 14:51:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:51:00 +0000 UTC FinishedAt: 2026-07-16 14:51:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"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-workflowc654q/series-workflowc654q-convert-artifact-2551273598/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:51:00 +0000 UTC FinishedAt: 2026-07-16 14:51:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:51:00 +0000 UTC FinishedAt: 2026-07-16 14:51:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:51:00 +0000 UTC FinishedAt: 2026-07-16 14:51:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:51:57 +0000 UTC FinishedAt: 2026-07-16 14:54:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc654q[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_trampoline_multi_detach","bpf_trampoline_multi_attach_free","bpf_trampoline_multi_attach_rollback"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT","BPF_EVENTS","DYNAMIC_FTRACE_WITH_DIRECT_CALLS"],"series_id":"2225e7eb-3941-4ec6-ac29-5c7997de8a84","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-16 14:51:57 +0000 UTC FinishedAt: 2026-07-16 14:54:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fe010085-ea43-45db-94f8-6e5aed95a058,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*41569c7c-15bb-4374-ae6a-12da8c737e1f,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-workflowc654q/series-workflowc654q-build-action-4007398188/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-workflowc654q/series-workflowc654q-build-action-2269354245/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-workflowc654q/series-workflowc654q-convert-artifact-2551273598/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,}