Name: series-workflowpgcsx Phase: Succeeded StartedAt: 2026-08-02 10:38:20 +0000 UTC FinishedAt: 2026-08-02 15:14:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[0] Phase: Succeeded StartedAt: 2026-08-02 10:38:21 +0000 UTC FinishedAt: 2026-08-02 11:19:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 10:38:21 +0000 UTC FinishedAt: 2026-08-02 11:19:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "fdeba03fea78407a8c52faa99177c9f7f29f90eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "fdeba03fea78407a8c52faa99177c9f7f29f90eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bloom_map_alloc", "bloom_map_push_elem", "bloom_map_peek_elem" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ymxvb21fbWFwX2FsbG9jJiMzNDssCiAgICAmIzM0O2Jsb29tX21hcF9wdXNoX2VsZW0mIzM0OywKICAgICYjMzQ7Ymxvb21fbWFwX3BlZWtfZWxlbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgaW1wbGVtZW50YXRpb24sIGZpeGluZyBiaXRzZXQgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgYml0IG9wZXJhdGlvbnMgZm9yIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTUwNzJlODU3OTYwODhiZWQ1YzdjNDVkZjA0Y2M2NThiNjZjOTE4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMTE6MTg6MDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYyBiL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcbmluZGV4IGI3MzMzNmM5NzZiN2MuLmYxMTFkMjY5OTBlY2UgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXG5AQCAtMzMsNiAmIzQzOzMzLDIyIEBAIHN0YXRpYyB1MzIgaGFzaChzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb20sIHZvaWQgKnZhbHVlLFxuIFx0cmV0dXJuIGggXHUwMDI2IGJsb29tLVx1MDAzZWJpdHNldF9tYXNrO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogU29tZSAzMi1iaXQgYXJjaGl0ZWN0dXJlcyB0YWtlIGEgc2lnbmVkIGxvbmcgYml0IG51bWJlciBpbiBiaXRvcHMuIFNwbGl0XG4mIzQzOyAqIHRoZSBmdWxsIHUzMiBoYXNoIGludG8gYSB3b3JkIHBvaW50ZXIgYW5kIGFuIGluLXdvcmQgYml0IG51bWJlciBzbyB1cHBlclxuJiM0MzsgKiBoYWxmIGhhc2hlcyBjYW5ub3QgYmVjb21lIG5lZ2F0aXZlIG9mZnNldHMuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgYm9vbCBibG9vbV90ZXN0X2JpdChzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb20sIHUzMiBiaXQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gdGVzdF9iaXQoYml0ICUgQklUU19QRVJfTE9ORyxcbiYjNDM7XHRcdFx0Ymxvb20tXHUwMDNlYml0c2V0ICYjNDM7IEJJVF9XT1JEKGJpdCkpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBibG9vbV9zZXRfYml0KHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSwgdTMyIGJpdClcbiYjNDM7e1xuJiM0MztcdHNldF9iaXQoYml0ICUgQklUU19QRVJfTE9ORywgYmxvb20tXHUwMDNlYml0c2V0ICYjNDM7IEJJVF9XT1JEKGJpdCkpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBsb25nIGJsb29tX21hcF9wZWVrX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpXG4ge1xuIFx0c3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tID1cbkBAIC00MSw3ICYjNDM7NTcsNyBAQCBzdGF0aWMgbG9uZyBibG9vbV9tYXBfcGVla19lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYmxvb20tXHUwMDNlbnJfaGFzaF9mdW5jczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0aCA9IGhhc2goYmxvb20sIHZhbHVlLCBtYXAtXHUwMDNldmFsdWVfc2l6ZSwgaSk7XG4tXHRcdGlmICghdGVzdF9iaXQoaCwgYmxvb20tXHUwMDNlYml0c2V0KSlcbiYjNDM7XHRcdGlmICghYmxvb21fdGVzdF9iaXQoYmxvb20sIGgpKVxuIFx0XHRcdHJldHVybiAtRU5PRU5UO1xuIFx0fVxuIFxuQEAgLTU5LDcgJiM0Mzs3NSw3IEBAIHN0YXRpYyBsb25nIGJsb29tX21hcF9wdXNoX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUsIHU2NCBmbGFncylcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJsb29tLVx1MDAzZW5yX2hhc2hfZnVuY3M7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGggPSBoYXNoKGJsb29tLCB2YWx1ZSwgbWFwLVx1MDAzZXZhbHVlX3NpemUsIGkpO1xuLVx0XHRzZXRfYml0KGgsIGJsb29tLVx1MDAzZWJpdHNldCk7XG4mIzQzO1x0XHRibG9vbV9zZXRfYml0KGJsb29tLCBoKTtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuQEAgLTk0LDkgJiM0MzsxMTAsMTAgQEAgc3RhdGljIGludCBibG9vbV9tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXG4gc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG4ge1xuLVx0dTMyIGJpdHNldF9ieXRlcywgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7XG4mIzQzO1x0dTMyIGJpdHNldF9tYXNrLCBucl9oYXNoX2Z1bmNzLCBucl9iaXRzO1xuIFx0aW50IG51bWFfbm9kZSA9IGJwZl9tYXBfYXR0cl9udW1hX25vZGUoYXR0cik7XG4gXHRzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb207XG4mIzQzO1x0dTY0IGJpdHNldF9ieXRlcztcbiBcbiBcdGlmIChhdHRyLVx1MDAzZWtleV9zaXplICE9IDAgfHwgYXR0ci1cdTAwM2V2YWx1ZV9zaXplID09IDAgfHxcbiBcdCAgICBhdHRyLVx1MDAzZW1heF9lbnRyaWVzID09IDAgfHxcbkBAIC0xMjcsMjEgJiM0MzsxNDQsMTYgQEAgc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXHRpZiAoY2hlY2tfbXVsX292ZXJmbG93KGF0dHItXHUwMDNlbWF4X2VudHJpZXMsIG5yX2hhc2hfZnVuY3MsIFx1MDAyNm5yX2JpdHMpIHx8XG4gXHQgICAgY2hlY2tfbXVsX292ZXJmbG93KG5yX2JpdHMgLyA1LCAodTMyKTcsIFx1MDAyNm5yX2JpdHMpIHx8XG4gXHQgICAgbnJfYml0cyBcdTAwM2UgKDFVTCBcdTAwM2NcdTAwM2MgMzEpKSB7XG4tXHRcdC8qIFRoZSBiaXQgYXJyYXkgc2l6ZSBpcyAyXjMyIGJpdHMgYnV0IHRvIGF2b2lkIG92ZXJmbG93aW5nIHRoZVxuLVx0XHQgKiB1MzIsIHdlIHVzZSBVMzJfTUFYLCB3aGljaCB3aWxsIHJvdW5kIHVwIHRvIHRoZSBlcXVpdmFsZW50XG4tXHRcdCAqIG51bWJlciBvZiBieXRlc1xuLVx0XHQgKi9cbi1cdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhVMzJfTUFYKTtcbiBcdFx0Yml0c2V0X21hc2sgPSBVMzJfTUFYO1xuIFx0fSBlbHNlIHtcbiBcdFx0aWYgKG5yX2JpdHMgXHUwMDNjPSBCSVRTX1BFUl9MT05HKVxuIFx0XHRcdG5yX2JpdHMgPSBCSVRTX1BFUl9MT05HO1xuIFx0XHRlbHNlXG4gXHRcdFx0bnJfYml0cyA9IHJvdW5kdXBfcG93X29mX3R3byhucl9iaXRzKTtcbi1cdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhucl9iaXRzKTtcbiBcdFx0Yml0c2V0X21hc2sgPSBucl9iaXRzIC0gMTtcbiBcdH1cbiBcbiYjNDM7XHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKCh1NjQpYml0c2V0X21hc2sgJiM0MzsgMSk7XG4gXHRiaXRzZXRfYnl0ZXMgPSByb3VuZHVwKGJpdHNldF9ieXRlcywgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTtcbiBcdGJsb29tID0gYnBmX21hcF9hcmVhX2FsbG9jKHNpemVvZigqYmxvb20pICYjNDM7IGJpdHNldF9ieXRlcywgbnVtYV9ub2RlKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibG9vbV9tYXBfYWxsb2MmIzM0OywKICAgICYjMzQ7Ymxvb21fbWFwX3B1c2hfZWxlbSYjMzQ7LAogICAgJiMzNDtibG9vbV9tYXBfcGVla19lbGVtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgYmxvb20gZmlsdGVyIG1hcCBpbXBsZW1lbnRhdGlvbiwgZml4aW5nIGJpdHNldCBzaXplIGNhbGN1bGF0aW9uIGFuZCBiaXQgb3BlcmF0aW9ucyBmb3IgMzItYml0IGFyY2hpdGVjdHVyZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNTA3MmU4NTc5NjA4OGJlZDVjN2M0NWRmMDRjYzY1OGI2NmM5MThjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAxMToxODowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMgYi9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jCmluZGV4IGI3MzMzNmM5NzZiN2MuLmYxMTFkMjY5OTBlY2UgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYwpAQCAtMzMsNiAmIzQzOzMzLDIyIEBAIHN0YXRpYyB1MzIgaGFzaChzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb20sIHZvaWQgKnZhbHVlLAogCXJldHVybiBoICZhbXA7IGJsb29tLSZndDtiaXRzZXRfbWFzazsKIH0KIAomIzQzOy8qCiYjNDM7ICogU29tZSAzMi1iaXQgYXJjaGl0ZWN0dXJlcyB0YWtlIGEgc2lnbmVkIGxvbmcgYml0IG51bWJlciBpbiBiaXRvcHMuIFNwbGl0CiYjNDM7ICogdGhlIGZ1bGwgdTMyIGhhc2ggaW50byBhIHdvcmQgcG9pbnRlciBhbmQgYW4gaW4td29yZCBiaXQgbnVtYmVyIHNvIHVwcGVyCiYjNDM7ICogaGFsZiBoYXNoZXMgY2Fubm90IGJlY29tZSBuZWdhdGl2ZSBvZmZzZXRzLgomIzQzOyAqLwomIzQzO3N0YXRpYyBib29sIGJsb29tX3Rlc3RfYml0KHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSwgdTMyIGJpdCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0ZXN0X2JpdChiaXQgJSBCSVRTX1BFUl9MT05HLAomIzQzOwkJCWJsb29tLSZndDtiaXRzZXQgJiM0MzsgQklUX1dPUkQoYml0KSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGJsb29tX3NldF9iaXQoc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tLCB1MzIgYml0KQomIzQzO3sKJiM0MzsJc2V0X2JpdChiaXQgJSBCSVRTX1BFUl9MT05HLCBibG9vbS0mZ3Q7Yml0c2V0ICYjNDM7IEJJVF9XT1JEKGJpdCkpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBsb25nIGJsb29tX21hcF9wZWVrX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpCiB7CiAJc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tID0KQEAgLTQxLDcgJiM0Mzs1Nyw3IEBAIHN0YXRpYyBsb25nIGJsb29tX21hcF9wZWVrX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpCiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgYmxvb20tJmd0O25yX2hhc2hfZnVuY3M7IGkmIzQzOyYjNDM7KSB7CiAJCWggPSBoYXNoKGJsb29tLCB2YWx1ZSwgbWFwLSZndDt2YWx1ZV9zaXplLCBpKTsKLQkJaWYgKCF0ZXN0X2JpdChoLCBibG9vbS0mZ3Q7Yml0c2V0KSkKJiM0MzsJCWlmICghYmxvb21fdGVzdF9iaXQoYmxvb20sIGgpKQogCQkJcmV0dXJuIC1FTk9FTlQ7CiAJfQogCkBAIC01OSw3ICYjNDM7NzUsNyBAQCBzdGF0aWMgbG9uZyBibG9vbV9tYXBfcHVzaF9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlLCB1NjQgZmxhZ3MpCiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgYmxvb20tJmd0O25yX2hhc2hfZnVuY3M7IGkmIzQzOyYjNDM7KSB7CiAJCWggPSBoYXNoKGJsb29tLCB2YWx1ZSwgbWFwLSZndDt2YWx1ZV9zaXplLCBpKTsKLQkJc2V0X2JpdChoLCBibG9vbS0mZ3Q7Yml0c2V0KTsKJiM0MzsJCWJsb29tX3NldF9iaXQoYmxvb20sIGgpOwogCX0KIAogCXJldHVybiAwOwpAQCAtOTQsOSAmIzQzOzExMCwxMCBAQCBzdGF0aWMgaW50IGJsb29tX21hcF9hbGxvY19jaGVjayh1bmlvbiBicGZfYXR0ciAqYXR0cikKIAogc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpCiB7Ci0JdTMyIGJpdHNldF9ieXRlcywgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7CiYjNDM7CXUzMiBiaXRzZXRfbWFzaywgbnJfaGFzaF9mdW5jcywgbnJfYml0czsKIAlpbnQgbnVtYV9ub2RlID0gYnBmX21hcF9hdHRyX251bWFfbm9kZShhdHRyKTsKIAlzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb207CiYjNDM7CXU2NCBiaXRzZXRfYnl0ZXM7CiAKIAlpZiAoYXR0ci0mZ3Q7a2V5X3NpemUgIT0gMCB8fCBhdHRyLSZndDt2YWx1ZV9zaXplID09IDAgfHwKIAkgICAgYXR0ci0mZ3Q7bWF4X2VudHJpZXMgPT0gMCB8fApAQCAtMTI3LDIxICYjNDM7MTQ0LDE2IEBAIHN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqYmxvb21fbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKQogCWlmIChjaGVja19tdWxfb3ZlcmZsb3coYXR0ci0mZ3Q7bWF4X2VudHJpZXMsIG5yX2hhc2hfZnVuY3MsICZhbXA7bnJfYml0cykgfHwKIAkgICAgY2hlY2tfbXVsX292ZXJmbG93KG5yX2JpdHMgLyA1LCAodTMyKTcsICZhbXA7bnJfYml0cykgfHwKIAkgICAgbnJfYml0cyAmZ3Q7ICgxVUwgJmx0OyZsdDsgMzEpKSB7Ci0JCS8qIFRoZSBiaXQgYXJyYXkgc2l6ZSBpcyAyXjMyIGJpdHMgYnV0IHRvIGF2b2lkIG92ZXJmbG93aW5nIHRoZQotCQkgKiB1MzIsIHdlIHVzZSBVMzJfTUFYLCB3aGljaCB3aWxsIHJvdW5kIHVwIHRvIHRoZSBlcXVpdmFsZW50Ci0JCSAqIG51bWJlciBvZiBieXRlcwotCQkgKi8KLQkJYml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhVMzJfTUFYKTsKIAkJYml0c2V0X21hc2sgPSBVMzJfTUFYOwogCX0gZWxzZSB7CiAJCWlmIChucl9iaXRzICZsdDs9IEJJVFNfUEVSX0xPTkcpCiAJCQlucl9iaXRzID0gQklUU19QRVJfTE9ORzsKIAkJZWxzZQogCQkJbnJfYml0cyA9IHJvdW5kdXBfcG93X29mX3R3byhucl9iaXRzKTsKLQkJYml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhucl9iaXRzKTsKIAkJYml0c2V0X21hc2sgPSBucl9iaXRzIC0gMTsKIAl9CiAKJiM0MzsJYml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUygodTY0KWJpdHNldF9tYXNrICYjNDM7IDEpOwogCWJpdHNldF9ieXRlcyA9IHJvdW5kdXAoYml0c2V0X2J5dGVzLCBzaXplb2YodW5zaWduZWQgbG9uZykpOwogCWJsb29tID0gYnBmX21hcF9hcmVhX2FsbG9jKHNpemVvZigqYmxvb20pICYjNDM7IGJpdHNldF9ieXRlcywgbnVtYV9ub2RlKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDE5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBCbG9vbSBGaWx0ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGluZyBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2AuIEltbWVkaWF0ZWx5LCBJIHNlZSBpdCYjMzk7cyBtb2RpZnlpbmcgY29yZSBmdW5jdGlvbnM6IGBibG9vbV9tYXBfcGVla19lbGVtYCwgYGJsb29tX21hcF9wdXNoX2VsZW1gLCBhbmQgYGJsb29tX21hcF9hbGxvY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gSSBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24uIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCAzMi1iaXQgYXJjaGl0ZWN0dXJlIGlzc3VlIHdpdGggdGhvc2UgbmV3IGBibG9vbV90ZXN0X2JpdGAgYW5kIGBibG9vbV9zZXRfYml0YCBmdW5jdGlvbnMsIHdoaWNoIGFyZSBsaWtlbHkgd3JhcHBlcnMgdG8gcHJldmVudCBuZWdhdGl2ZSBvZmZzZXRzIHdoZW4gdXNpbmcgYHRlc3RfYml0YCBhbmQgYHNldF9iaXRgLiBTbWFydC4gQWxzbywgdGhleSBhcmUgdXBkYXRpbmcgYGJpdHNldF9ieXRlc2AgdG8gYHU2NGAgaW4gYGJsb29tX21hcF9hbGxvY2Agd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIGhhbmRsaW5nIGxhcmdlciBibG9vbSBmaWx0ZXJzIGFuZCBpbmNsdWRlcyBhIGZpeCBmb3IgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIGNhbGN1bGF0aW9uLCB3aGljaCBpcyBhIGNvbW1vbiBhbmQgY3JpdGljYWwgc2VjdXJpdHkgY29uc2lkZXJhdGlvbiBpbiB0aGVzZSBraW5kcyBvZiBkYXRhIHN0cnVjdHVyZXMuCgpUaGlzIGlzIGNsZWFybHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgaW1wbGVtZW50YXRpb24uIEdpdmVuIHRoYXQsIGZ1enppbmcgaXMgYW4gYWJzb2x1dGUgbXVzdC4gV2UgY2FuJiMzOTt0IGxldCBhIHN1YnRsZSBvdmVyZmxvdyBvciBhbiBvZmYtYnktb25lIGVycm9yIHNsaXAgdGhyb3VnaC4gSSBuZWVkIHRvIGdldCB0aGlzIGNvdmVyZWQgaW4gdGhlIGZ1enppbmcgcmVnaW1lLgoKTm93LCBsZXQmIzM5O3MgZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZWxldmFudCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgZ290IHRoZSBCUEYgQmxvb20gZmlsdGVyIG1hcCBlbmFibGVkIHRvIHRlc3QgaXQgcHJvcGVybHkuIE15IGd1dCB0ZWxscyBtZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUga2V5IG9uZS4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBieSBjaGVja2luZyB0aGUgYGtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNgIHNvdXJjZSB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlLiBKdXN0IG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYWN0dWFsbHkgZW5hYmxlZCBpbiB0aGUgYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Ymxvb21fbWFwX2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz05ND1zdGF0aWMgaW50IGJsb29tX21hcF9nZXRfbmV4dF9rZXkoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB2b2lkICpuZXh0X2tleSlcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTk5LS8qIENhbGxlZCBmcm9tIHN5c2NhbGwgKi9cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MTAwOnN0YXRpYyBpbnQgYmxvb21fbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xMDEte1xuLS1cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMTEwLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoxMTE6c3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTExMi17XG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0yMTY9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGJsb29tX2ZpbHRlcl9tYXBfb3BzID0ge1xua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0yMTctXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjIxODpcdC5tYXBfYWxsb2NfY2hlY2sgPSBibG9vbV9tYXBfYWxsb2NfY2hlY2ssXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjIxOTpcdC5tYXBfYWxsb2MgPSBibG9vbV9tYXBfYWxsb2MsXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIyMC1cdC5tYXBfZnJlZSA9IGJsb29tX21hcF9mcmVlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NjYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIEJsb29tIEZpbHRlciBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYmxvb20gZmlsdGVyIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IHRoZSBgTWFrZWZpbGVgIGluIGBrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29kZSBpcyBiZWluZyBidWlsdCBhbmQgbGlua2VkLCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgZ2VuZXJhbGx5IGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkIHByb2Nlc3MuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgdGhvcm91Z2ggYW5hbHlzaXMuIEkmIzM5O20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgb3B0aW1pemF0aW9uIGZsYWdzLCBhbnkgc3BlY2lmaWMgY29tcGlsYXRpb24gc2V0dGluZ3MgcmVsZXZhbnQgdG8gQlBGLCBhbmQgd2hldGhlciBpdCYjMzk7cyBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5IGxpbmtlZC4gQmFzaWNhbGx5LCBJIG5lZWQgYSByb2FkbWFwIGJlZm9yZSBJIGNhbiByZWFsbHkgZGlnIGludG8gdGhlIGNvZGUmIzM5O3MgZnVuY3Rpb25hbGl0eS4gTXkgaW5pdGlhbCBxdWVzdGlvbnMgYXJlOiBob3cgaXMgdGhlIGNvZGUgYmVpbmcgY29tcGlsZWQ/IFdoYXQgb3RoZXIgbW9kdWxlcyBtaWdodCBpdCBkZXBlbmQgb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lhbCBidWlsZCBkaXJlY3RpdmVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gVGhpcyB3aWxsIGhlbHAgc2V0IHRoZSBzdGFnZSBmb3IgYSBwcm9wZXIgaW4tZGVwdGggcmV2aWV3LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jsb29tX2ZpbHRlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM5NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2YgdGhpcy4KCioqVHJhY2luZyB0aGUgQlBGIEJsb29tIEZpbHRlciBBbGxvY2F0aW9uIFBhdGgqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkaXZpbmcgaW50byB0aGUgQlBGIGJsb29tIGZpbHRlciBpbXBsZW1lbnRhdGlvbi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gYENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IHRvIGVuYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSwgb3IgYXQgbGVhc3QgdGhlIHBhcnQgdGhhdCB0cmlnZ2VycyBteSBpbnZlc3RpZ2F0aW9uLgoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIGtleWluZyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBibG9vbV9tYXBfYWxsb2NgLCBgYmxvb21fbWFwX3B1c2hfZWxlbWAsIGFuZCBgYmxvb21fbWFwX3BlZWtfZWxlbWAuIFRob3NlIHNlZW0gbGlrZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgZm9yIHRoZSBibG9vbSBmaWx0ZXIgbWFuYWdlbWVudC4KCkZpcnN0LCBsZXQmIzM5O3MgdmVyaWZ5IGlmIGBibG9vbV9tYXBfYWxsb2NgIGlzIGRlZmluZWQgYXMgYHN0YXRpY2AuIFllcywgZ29vZC4gTXkgYXNzdW1wdGlvbiBpcyB0aGF0IGl0IHNob3VsZCBiZS4gQnV0IHdhaXQsIHRoaXMgaXMgaW50ZXJlc3RpbmcuIEV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYywgaXQmIzM5O3MgYWxzbyBhc3NpZ25lZCB0byBgYmxvb21fZmlsdGVyX21hcF9vcHMubWFwX2FsbG9jYC4gVGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gcG9pbnRlciBob29rLiBUaGlzIG1lYW5zIGBibG9vbV9tYXBfYWxsb2NgIHdpbGwgYmUgYWNjZXNzZWQgaW5kaXJlY3RseSwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIHRoZSBvdmVyYWxsIGRlc2lnbi4KCk5vdywgd2hlcmUmIzM5O3MgdGhlIGFjdHVhbCBlbnRyeSBwb2ludCBmb3IgYWxsIG9mIHRoaXM/IEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgYGJwZl9tYXBfYWxsb2NgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBsaWtlbHkgdGhlIG1haW4gQlBGIHN5c3RlbSBjYWxsIGhhbmRsaW5nIHRoZSBtZW1vcnkgYWxsb2NhdGlvbi4gVGhlIGdvYWwgaXMgdG8gc2VlIGhvdyB0aGUgYWxsb2NhdGlvbiBmaW5hbGx5IGdldHMgdHJpZ2dlcmVkLiBTbywgSSBuZWVkIHRvIGNoZWNrIGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AgZm9yIGFueSBmdW5jdGlvbiBuYW1lZCBgbWFwX2FsbG9jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBhY3R1YWwgc3lzdGVtIGNhbGwgaW50ZXJmYWNlIGZvciBCUEYgbWFwIGFsbG9jYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFwX2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9zeXNjYWxsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9zeXNjYWxsLmM9MTE1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBicGZfbWFwX29mZmxvYWRfb3BzID0ge1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMTE2LVx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTE3Olx0Lm1hcF9hbGxvYyA9IGJwZl9tYXBfb2ZmbG9hZF9tYXBfYWxsb2MsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMTgtXHQubWFwX2ZyZWUgPSBicGZfbWFwX29mZmxvYWRfbWFwX2ZyZWUsXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NDM3PXZvaWQgYnBmX21hcF9pbml0X2Zyb21fYXR0cihzdHJ1Y3QgYnBmX21hcCAqbWFwLCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDctXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0NDg6c3RhdGljIGludCBicGZfbWFwX2FsbG9jX2lkKHN0cnVjdCBicGZfbWFwICptYXApXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDkte1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTU2ND12b2lkICpicGZfbWFwX2t2Y2FsbG9jKHN0cnVjdCBicGZfbWFwICptYXAsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NzYtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1Nzc6dm9pZCBfX3BlcmNwdSAqYnBmX21hcF9hbGxvY19wZXJjcHUoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcCwgc2l6ZV90IHNpemUsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NzgtXHRcdFx0XHQgICAgc2l6ZV90IGFsaWduLCBnZnBfdCBmbGFncylcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02MDY9c3RhdGljIHN0cnVjdCBwYWdlICpfX2JwZl9hbGxvY19wYWdlKGludCBuaWQpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjE2LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NjE3OmludCBicGZfbWFwX2FsbG9jX3BhZ2VzKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXAsIGludCBuaWQsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02MTgtXHRcdFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgc3RydWN0IHBhZ2UgKipwYWdlcylcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0xMzcxPXN0YXRpYyBpbnQgbWFwX2NyZWF0ZV9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsIHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTQzMy1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE0MzQ6XHRpZiAob3BzLVx1MDAzZW1hcF9hbGxvY19jaGVjaykge1xua2VybmVsL2JwZi9zeXNjYWxsLmM6MTQzNTpcdFx0ZXJyID0gb3BzLVx1MDAzZW1hcF9hbGxvY19jaGVjayhhdHRyKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MzYtXHRcdGlmIChlcnIpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTUyMi1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE1MjM6XHRtYXAgPSBvcHMtXHUwMDNlbWFwX2FsbG9jKGF0dHIpO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMTUyNC1cdGlmIChJU19FUlIobWFwKSkge1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTE2MjY9c3RhdGljIGludCBtYXBfY3JlYXRlKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9jb21tb25fYXR0ciAqYXR0cl9jb21tb24sXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTY2MS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE2NjI6XHRlcnIgPSBicGZfbWFwX2FsbG9jX2lkKG1hcCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNjYzLVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNjcyLVx0XHQgKiBicGZfbWFwX3B1dF93aXRoX3VyZWYoKSBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgYWJvdmVcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE2NzM6XHRcdCAqIGJwZl9tYXBfYWxsb2NfaWQoKSBoYXMgcHVibGlzaGVkIHRoZSBtYXBcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE2NzQtXHRcdCAqIHRvIHRoZSB1c2Vyc3BhY2UgYW5kIHRoZSB1c2Vyc3BhY2UgbWF5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgwMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWNvbnN0cnVjdGluZyB0aGUgQmxvb20gRmlsdGVyIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBibG9vbSBmaWx0ZXIgaW1wbGVtZW50YXRpb24sIGFuZCB0aGUgaW5pdGlhbCBxdWVzdGlvbiBpcyBhbHdheXMsICYjMzQ7V2hlcmUgZG9lcyB0aGlzIHRoaW5nICpzdGFydCo/JiMzNDsgTXkgZmlyc3QgdGhvdWdodCB3YXMgYG1hcF9jcmVhdGVgIG9yIGBtYXBfY3JlYXRlX2FsbG9jYCwgc2luY2UgdGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBlbnRyeSBwb2ludCBmb3IgQlBGIG1hcCBjcmVhdGlvbi4gQnV0IGhvbGQgb24sIGBtYXBfY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIEFoLCByaWdodC4gSSByZW1lbWJlciBub3csIHRoZSAqcmVhbCogc3lzY2FsbCBlbnRyeSBwb2ludCBmb3IgYWxsIHRoaW5ncyBCUEYgaXMgYHN5c19icGZgLgoKUmlnaHQsIHNvIHRoYXQgbmFycm93cyBpdCBkb3duLCBidXQgSSBuZWVkIHRoZSBzcGVjaWZpYyBvcGVyYXRpb25zIHRvIHRyYWNlIGhvdyB0aGVzZSBibG9vbSBmaWx0ZXJzIGdldCBwb3B1bGF0ZWQgYW5kIHF1ZXJpZWQuIExvb2tpbmcgYmFjaywgSSByZWNhbGwgdGhhdCBgYnBmX21hcF91cGRhdGVfZWxlbWAgYW5kIGBicGZfbWFwX2xvb2t1cF9lbGVtYCBhcmUgZ2VuZXJhbGx5IHRoZSBzeXNjYWxsIGVudHJ5IHBvaW50cyBmb3IgJiMzNDtwdXNoaW5nJiMzNDsgYW5kICYjMzQ7cGVla2luZyYjMzQ7IGRhdGEgaW50byBtYXBzLiBCdXQgbGV0JiMzOTtzIGNsYXJpZnkgdGhhdCB0aGUgZnVuY3Rpb24gYGJsb29tX21hcF9wdXNoX2VsZW1gIHNlZW1zIHRvIGJlIHRoZSBvbmUgYXNzaWduZWQgaW50ZXJuYWxseSB0byBoYW5kbGUgdGhlICYjMzQ7cHVzaCYjMzQ7IG9wZXJhdGlvbiwgc3BlY2lmaWNhbGx5IG1hcHBlZCB0byBgbWFwX3B1c2hfZWxlbWAuCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMgb2YgdGhlIGJsb29tIGZpbHRlciBpbXBsZW1lbnRhdGlvbi4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZXhwbG9yZSBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2Agc2luY2UgdGhhdCYjMzk7cyB3aGVyZSB0aGUgYWN0dWFsIGJsb29tIGZpbHRlciBsb2dpYyBpcyBsaWtlbHkgZGVmaW5lZCwgYW5kIHRoZSByZWxldmFudCBgYmxvb21fZmlsdGVyX21hcF9vcHNgIHN0cnVjdHVyZSBzaG91bGQgYmUgdGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBnb2luZyBvbiB1bmRlciB0aGUgaG9vZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Ymxvb21fZmlsdGVyX21hcF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTIxNT1CVEZfSURfTElTVF9TSU5HTEUoYnBmX2Jsb29tX21hcF9idGZfaWRzLCBzdHJ1Y3QsIGJwZl9ibG9vbV9maWx0ZXIpXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjIxNjpjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYmxvb21fZmlsdGVyX21hcF9vcHMgPSB7XG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIxNy1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM4MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgdGhlIGBibG9vbV9maWx0ZXJfbWFwX29wc2AgRnVuY3Rpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0JiMzOTtzIGFjdHVhbGx5ICppbiogYGJsb29tX2ZpbHRlcl9tYXBfb3BzYD8mIzM0Oy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGF2YWlsYWJsZSBvcGVyYXRpb25zIHdpdGhpbiB0aGlzIGNvbnRleHQuIFRoZSBuYW1lIHN1Z2dlc3RzIGl0JiMzOTtzIGEgY29sbGVjdGlvbiBvZiBmdW5jdGlvbnMgcmVsYXRlZCB0byBCbG9vbSBmaWx0ZXJzIGFuZCBsaWtlbHkgbWFwLWxpa2Ugc3RydWN0dXJlcy4gVGhhdCYjMzk7cyBteSBzdGFydGluZyBwb2ludC4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGtub3cgdGhlIHByaW1pdGl2ZXMuIFdoYXQgZG8gSSBoYXZlIGF0IG15IGRpc3Bvc2FsIGluIHRoaXMgc2V0IG9mIG9wZXJhdGlvbnM/IFdoYXQgYXJlIHRoZSBiYXNpYyBidWlsZGluZyBibG9ja3MgdGhhdCBJIGNhbiBjb21iaW5lIGFuZCB1c2U/IElzIGl0IGp1c3QgaW5zZXJ0LCBkZWxldGUsIGFuZCBsb29rdXAsIG9yIGlzIHRoZXJlIG1vcmU/IEFtIEkgZGVhbGluZyB3aXRoIHZhcmlvdXMgbGV2ZWxzIG9mIHNvcGhpc3RpY2F0aW9uPyBNYXliZSB0aGVyZSYjMzk7cyBzdXBwb3J0IGZvciBjb3VudGluZyBCbG9vbSBmaWx0ZXJzLCBvciBzb21lIGNsZXZlciB3YXkgdG8gdXBkYXRlIGEgbWFwIHdpdGhpbiB0aGUgZmlsdGVyIHN0cnVjdHVyZS4gVGltZSB0byBzdGFydCBkaWdnaW5nIHRvIHVuZGVyc3RhbmQgdGhpcyBzcGVjaWZpYyBBUEkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jsb29tX2ZpbHRlcl9tYXBfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTIxNT1CVEZfSURfTElTVF9TSU5HTEUoYnBmX2Jsb29tX21hcF9idGZfaWRzLCBzdHJ1Y3QsIGJwZl9ibG9vbV9maWx0ZXIpXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjIxNjpjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYmxvb21fZmlsdGVyX21hcF9vcHMgPSB7XG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIxNy1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc1OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gQmxvb20gRmlsdGVyIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgQlBGIEJsb29tIGZpbHRlciBpbXBsZW1lbnRhdGlvbi4gTGV0JiMzOTtzIHplcm8gaW4gb24gYGtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNgIGFyb3VuZCBsaW5lIDIxNi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgY29yZSBsb2dpYyBmb3IgZWl0aGVyIGFuIGluc2VydGlvbiwgbG9va3VwLCBvciBwZXJoYXBzIHJlc2l6ZSBvcGVyYXRpb24sIGJhc2VkIG9uIHRoZSB0eXBpY2FsIGZsb3cgb2YgQmxvb20gZmlsdGVyIGZ1bmN0aW9ucy4gR2l2ZW4gdGhlIGZpbGUgYW5kIGZ1bmN0aW9uIG5hbWluZyBjb252ZW50aW9ucyBpbiB0aGUga2VybmVsLCBJJiMzOTtkIGJldCB0aGlzIHNlY3Rpb24gZGVhbHMgd2l0aCB0aGUgaGFzaGluZyBvciBiaXQgbWFuaXB1bGF0aW9uIHVzZWQgaW4gdGhlIGZpbHRlci4gSSB3b25kZXIgaWYgaXQmIzM5O3MgdXNpbmcgYSBjdXN0b20gaGFzaCBmdW5jdGlvbiBmb3IgQlBGIG9yIHNvbWV0aGluZyBvcHRpbWl6ZWQgZm9yIHRoZSBhcmNoaXRlY3R1cmUuIEFsc28gSSYjMzk7ZCBsaWtlIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIGhlcmUsIG1heWJlIGV2ZW4gaW4gdGhlIGRhdGEgc3RydWN0dXJlcyB0aGF0IHRoZSBmdW5jdGlvbiB1c2VzLiBUaW1lIHRvIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0XHQvKiBCbG9vbSBmaWx0ZXIgbWFwcyBhcmUga2V5bGVzcyAqL1xuIDIwMTpcdFx0cmV0dXJuIGJ0Zl90eXBlX2lzX3ZvaWQoa2V5X3R5cGUpID8gMCA6IC1FSU5WQUw7XG4gMjAyOlx0fVxuIDIwMzpcdFxuIDIwNDpcdHN0YXRpYyB1NjQgYmxvb21fbWFwX21lbV91c2FnZShjb25zdCBzdHJ1Y3QgYnBmX21hcCAqbWFwKVxuIDIwNTpcdHtcbiAyMDY6XHRcdHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbTtcbiAyMDc6XHRcdHU2NCBiaXRzZXRfYnl0ZXM7XG4gMjA4Olx0XG4gMjA5Olx0XHRibG9vbSA9IGNvbnRhaW5lcl9vZihtYXAsIHN0cnVjdCBicGZfYmxvb21fZmlsdGVyLCBtYXApO1xuIDIxMDpcdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUygodTY0KWJsb29tLVx1MDAzZWJpdHNldF9tYXNrICYjNDM7IDEpO1xuIDIxMTpcdFx0Yml0c2V0X2J5dGVzID0gcm91bmR1cChiaXRzZXRfYnl0ZXMsIHNpemVvZih1bnNpZ25lZCBsb25nKSk7XG4gMjEyOlx0XHRyZXR1cm4gc2l6ZW9mKCpibG9vbSkgJiM0MzsgYml0c2V0X2J5dGVzO1xuIDIxMzpcdH1cbiAyMTQ6XHRcbiAyMTU6XHRCVEZfSURfTElTVF9TSU5HTEUoYnBmX2Jsb29tX21hcF9idGZfaWRzLCBzdHJ1Y3QsIGJwZl9ibG9vbV9maWx0ZXIpXG4gMjE2Olx0Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGJsb29tX2ZpbHRlcl9tYXBfb3BzID0ge1xuIDIxNzpcdFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxuIDIxODpcdFx0Lm1hcF9hbGxvY19jaGVjayA9IGJsb29tX21hcF9hbGxvY19jaGVjayxcbiAyMTk6XHRcdC5tYXBfYWxsb2MgPSBibG9vbV9tYXBfYWxsb2MsXG4gMjIwOlx0XHQubWFwX2ZyZWUgPSBibG9vbV9tYXBfZnJlZSxcbiAyMjE6XHRcdC5tYXBfZ2V0X25leHRfa2V5ID0gYmxvb21fbWFwX2dldF9uZXh0X2tleSxcbiAyMjI6XHRcdC5tYXBfcHVzaF9lbGVtID0gYmxvb21fbWFwX3B1c2hfZWxlbSxcbiAyMjM6XHRcdC5tYXBfcGVla19lbGVtID0gYmxvb21fbWFwX3BlZWtfZWxlbSxcbiAyMjQ6XHRcdC5tYXBfcG9wX2VsZW0gPSBibG9vbV9tYXBfcG9wX2VsZW0sXG4gMjI1Olx0XHQubWFwX2xvb2t1cF9lbGVtID0gYmxvb21fbWFwX2xvb2t1cF9lbGVtLFxuIDIyNjpcdFx0Lm1hcF91cGRhdGVfZWxlbSA9IGJsb29tX21hcF91cGRhdGVfZWxlbSxcbiAyMjc6XHRcdC5tYXBfZGVsZXRlX2VsZW0gPSBibG9vbV9tYXBfZGVsZXRlX2VsZW0sXG4gMjI4Olx0XHQubWFwX2NoZWNrX2J0ZiA9IGJsb29tX21hcF9jaGVja19idGYsXG4gMjI5Olx0XHQubWFwX21lbV91c2FnZSA9IGJsb29tX21hcF9tZW1fdXNhZ2UsXG4gMjMwOlx0XHQubWFwX2J0Zl9pZCA9IFx1MDAyNmJwZl9ibG9vbV9tYXBfYnRmX2lkc1swXSxcbiAyMzE6XHR9O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjQ3CgkJCQkJCQlvdXRwdXQ6IDYxCgkJCQkJCQl0aG91Z2h0czogMzk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCbG9vbSBGaWx0ZXIgRnVuY3Rpb25zIGZvciBTeXprYWxsZXIgRm9jdXNTeW1ib2xzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIG1vc3QgYXBwcm9wcmlhdGUgZnVuY3Rpb25zIGZyb20gdGhpcyBibG9vbSBmaWx0ZXIgY29kZSB0byBpbmNsdWRlIGluIFN5emthbGxlciYjMzk7cyBgRm9jdXNTeW1ib2xzYC4gSSBoYXZlIHRocmVlIGZ1bmN0aW9uczogYGJsb29tX21hcF9hbGxvY2AsIGBibG9vbV9tYXBfcHVzaF9lbGVtYCwgYW5kIGBibG9vbV9tYXBfcGVla19lbGVtYC4gVGhlIGluaXRpYWwgY29uY2VybiBpcyB0aGF0IGBibG9vbV9tYXBfYWxsb2NgIGlzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gSG93ZXZlciwgYSBxdWljayBzY2FuIHJldmVhbHMgdGhhdCBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMsIGBibG9vbV9tYXBfYWxsb2NgICppcyogYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgYmxvb21fZmlsdGVyX21hcF9vcHNgLiBUaGlzIG1lYW5zIGl0ICp3b24mIzM5O3QqIGJlIGlubGluZWQgYW5kICpkb2VzKiBoYXZlIGEgZGlzdGluY3QgYWRkcmVzcy4KClN5emthbGxlciwgaW4gdGhlb3J5LCAqY291bGQqIGZ1enogdGhpcywgc2luY2UgaXRzIGtjb3YgYW5hbHlzaXMgcGlja3MgdXAgYWxsIGJhc2ljIGJsb2Nrcy4gQnV0IGZvciBgRm9jdXNTeW1ib2xzYCwgaXQgcmVsaWVzIG9uIGV4cGxpY2l0IHN5bWJvbCBuYW1lcy4gTm93LCBzdGF0aWMgZnVuY3Rpb25zIGdldCBhIGJpdCBtZXNzeSBiZWNhdXNlIGthbGxzeW1zICptaWdodCogbGlzdCB0aGVtLCBidXQgd2l0aCBzdGF0aWMgZnVuY3Rpb25zLCB5b3UgY2FuIHNvbWV0aW1lcyBnZXQgbmFtaW5nIGNvbGxpc2lvbnMuCgpUaGUga2V5IHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYmV0dGVyIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzPyBgYnBmX21hcF9hbGxvY2AgbG9va3MgcHJvbWlzaW5nLCBidXQgaXQmIzM5O3MgYSBwb2ludGVyIGNhbGwsIG5vdCBhIGZ1bmN0aW9uIGl0c2VsZi4gSSBrbm93IHRoZSBnZW5lcmFsIHN5c2NhbGwgZW50cnkgcG9pbnRzIGZvciBCUEYgYXJlIGBzeXNfYnBmYCBvciBgX19zeXNfYnBmYC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgdGVsbCBtZSB0byAqYXZvaWQqIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBhbmQgYHN5c19icGZgIGRlZmluaXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBMaXN0aW5nIHRoYXQgd291bGQgc2tldyB0ZXN0IGRpc3RyaWJ1dGlvbnMuCgpTbywgZXZlbiB0aG91Z2ggdGhleSYjMzk7cmUgc3RhdGljLCBpdCBzZWVtcyBsaWtlIGBibG9vbV9tYXBfYWxsb2NgLCBgYmxvb21fbWFwX3B1c2hfZWxlbWAsIGFuZCBgYmxvb21fbWFwX3BlZWtfZWxlbWAgYXJlIHN0aWxsIHRoZSBiZXR0ZXIgY2hvaWNlcy4gVGhleSYjMzk7cmUgc3BlY2lmaWMgdG8gdGhpcyBibG9vbSBmaWx0ZXIgaW1wbGVtZW50YXRpb24sIGFuZCBjcnVjaWFsbHksIHRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkIGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSBiZWluZyB0YWtlbiBieSB0aGUgZnVuY3Rpb24gcG9pbnRlciBpbiBgYmxvb21fZmlsdGVyX21hcF9vcHNgLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCB0aGV5IGFyZSwgaW5kZWVkLCBzdGF0aWMsIGp1c3QgdG8gYmUgc3VyZS4gWWVwLCB0aGV5IGFyZS4gT2theSwgb25lIGZpbmFsIHRoaW5nOiBsZXQmIzM5O3MgZG8gYSBxdWljayBzY2FuIG9mIHRoZSBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2Agc291cmNlIGNvZGUgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoZXJlIGFyZSBubyB2aWFibGUgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZXMgdGhhdCB3ZXJlIG92ZXJsb29rZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bXmEtekEtWl0qW2EtekEtWl8wLTldJiM0MzsgW2EtekEtWl8wLTldJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9NDE9c3RhdGljIGJvb2wgYmxvb21fdGVzdF9iaXQoc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tLCB1MzIgYml0KVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy00Mi17XG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjQzOlx0cmV0dXJuIHRlc3RfYml0KGJpdCAlIEJJVFNfUEVSX0xPTkcsXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTQ0LVx0XHRcdGJsb29tLVx1MDAzZWJpdHNldCAmIzQzOyBCSVRfV09SRChiaXQpKTtcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTExMT1zdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTEyNS1cdCAgICAoYXR0ci1cdTAwM2VtYXBfZXh0cmEgXHUwMDI2IH4weEYpKVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoxMjY6XHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xMjctXG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xNjAtXHRpZiAoIWJsb29tKVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoxNjE6XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xNjItXG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0xODI9c3RhdGljIHZvaWQgKmJsb29tX21hcF9sb29rdXBfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXkpXG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xODQtXHQvKiBUaGUgZUJQRiBwcm9ncmFtIHNob3VsZCB1c2UgbWFwX3BlZWtfZWxlbSBpbnN0ZWFkICovXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjE4NTpcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xODYtfVxuLS1cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9MTk1PXN0YXRpYyBpbnQgYmxvb21fbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjAwLVx0LyogQmxvb20gZmlsdGVyIG1hcHMgYXJlIGtleWxlc3MgKi9cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MjAxOlx0cmV0dXJuIGJ0Zl90eXBlX2lzX3ZvaWQoa2V5X3R5cGUpID8gMCA6IC1FSU5WQUw7XG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIwMi19XG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0yMDQ9c3RhdGljIHU2NCBibG9vbV9tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0yMTEtXHRiaXRzZXRfYnl0ZXMgPSByb3VuZHVwKGJpdHNldF9ieXRlcywgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTtcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MjEyOlx0cmV0dXJuIHNpemVvZigqYmxvb20pICYjNDM7IGJpdHNldF9ieXRlcztcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjEzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI1MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIEJsb29tIEZpbHRlciBJbXBsZW1lbnRhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgYGJsb29tX2ZpbHRlci5jYCBhbmQgaW1tZWRpYXRlbHkgbm90aWNlIHRoYXQgYWxsIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyB0aGluZyBhcmUgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQgbWVhbnMgdGhleSYjMzk7cmUgaW50ZXJuYWwgdG8gdGhpcyBmaWxlLCB3aGljaCBoZWxwcyB3aXRoIG1vZHVsYXJpdHkgYW5kIGVuY2Fwc3VsYXRpb24uIFNvLCBJIG5lZWQgdG8gbGlzdCB0aGUgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlIGZ1bmN0aW9ucyAtIHRoZSBvbmVzIHRoYXQgd291bGQgYmUgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJJiMzOTttIHByZXR0eSBzdXJlIHRob3NlIGFyZSBgYmxvb21fbWFwX2FsbG9jYCwgYGJsb29tX21hcF9wdXNoX2VsZW1gLCBhbmQgYGJsb29tX21hcF9wZWVrX2VsZW1gLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGNvcmUgQVBJIGZ1bmN0aW9ucyBmb3IgdGhpcyBibG9vbSBmaWx0ZXIuCgpOb3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdGhhdCBtaWdodCBhZmZlY3QgaG93IHRoaXMgYmxvb20gZmlsdGVyIGJlaGF2ZXMgb3IgaXMgZW5hYmxlZC4gVGhlIG9uZSB0aGF0IHNwcmluZ3MgdG8gbWluZCBpbW1lZGlhdGVseSBpcyBgQ09ORklHX0JQRl9TWVNDQUxMYC4gSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0IGhhcyB0byBiZSBlbmFibGVkIGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gSnVzdCB0byBiZSBzdXJlLCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gSSYjMzk7bGwgcXVpY2tseSBjaGVjayBgaW5pdC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBkZXBlbmRlbmNpZXMgb3IgcmVsYXRlZCBzZXR0aW5ncyBsaW5rZWQgdG8gYEJQRl9TWVNDQUxMYCB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBHb3R0YSBnZXQgYSBmdWxsIHBpY3R1cmUgYmVmb3JlIGRpZ2dpbmcgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjczCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYSBLZXJuZWwgQ29uZmlndXJhdGlvbiBJc3N1ZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiByZXNwb25zaWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBrZXJuZWwgYmVoYXZpb3IuIEdpdmVuIHdoYXQgSSYjMzk7bSBzZWVpbmcsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gc29tZXRoaW5nIHJlbGF0ZWQgdG8gZUJQRi4gSSBrbm93IHRoZSBlQlBGIGluZnJhc3RydWN0dXJlIGlzIGNyaXRpY2FsIGFuZCBpdHMgY29uZmlndXJhdGlvbiBpcyBsaWtlbHkgdG8gYmUgZXhwb3NlZCB2aWEgdGhlIGJ1aWxkIHByb2Nlc3MuIFRoaW5raW5nIGFib3V0IGl0IGxvZ2ljYWxseSwgd2hlcmUgd291bGQgSSBmaXJzdCBsb29rIGZvciB0aGUgcHJpbWFyeSBlQlBGIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8KClRoZSBgS2NvbmZpZ2AgZmlsZXMgYXJlIHRoZSBjZW50cmFsIG5lcnZvdXMgc3lzdGVtIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kLCBzcGVjaWZpY2FsbHksIHRoZSBvbmUgaW4gdGhlIGBrZXJuZWwvYnBmL2AgZGlyZWN0b3J5IG1ha2VzIHRoZSBtb3N0IHNlbnNlLiBJdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBnaXZlbiBpdHMgbG9jYXRpb24gd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIGl0cyBhc3NvY2lhdGlvbiB3aXRoIGVCUEYuIFRoZSBoaWVyYXJjaHkgc2hvdWxkIHByb3ZpZGUgbWUgd2l0aCB0aGUgc3BlY2lmaWMgZmxhZ3MgYW5kIG9wdGlvbnMgSSBuZWVkIHRvIGV4YW1pbmUuIEkmIzM5O2xsIHN0YXJ0IGRpZ2dpbmcgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfU1lTQ0FMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcJiMzNDtCUEYgc3Vic3lzdGVtXCYjMzQ7XG5rZXJuZWwvYnBmL0tjb25maWctMjYtXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXHRib29sIFwmIzM0O0VuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTg2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBCUEYgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBCUEYgKEJlcmtlbGV5IFBhY2tldCBGaWx0ZXIpIGNvbmZpZ3VyYXRpb24gaXMgc3RydWN0dXJlZC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIGBrZXJuZWwvYnBmL0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDI3LiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHByb2JhYmx5IGRlZmluZWQgc29tZXdoZXJlIGluIHRoYXQgYXJlYS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZm91bmRhdGlvbmFsIHNldHRpbmdzIHJlbGF0ZWQgdG8gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIEJQRiBmdW5jdGlvbmFsaXR5LCBtYXliZSBzb21lIG9mIHRoZSBjb3JlIGZlYXR1cmUgdG9nZ2xlcywgb3IgcGVyaGFwcyB0aGUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLiBJIHdhbnQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHdoYXQmIzM5O3MgKmNvbmZpZ3VyYWJsZSogYW5kIGhvdyB0aGF0IGNvbmZpZ3VyYWJpbGl0eSBpcyBwcmVzZW50ZWQuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHQjIFVzZWQgYnkgYXJjaHMgdG8gdGVsbCB0aGF0IHRoZXkgd2FudCB0aGUgQlBGIEpJVCBjb21waWxlciBlbmFibGVkIGJ5XG4gIDIxOlx0IyBkZWZhdWx0IGZvciBrZXJuZWxzIHRoYXQgd2VyZSBjb21waWxlZCB3aXRoIEJQRiBKSVQgc3VwcG9ydC5cbiAgMjI6XHRjb25maWcgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVFxuICAyMzpcdFx0Ym9vbFxuICAyNDpcdFxuICAyNTpcdG1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xuICAyNjpcdFxuICAyNzpcdGNvbmZpZyBCUEZfU1lTQ0FMTFxuICAyODpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiAgMjk6XHRcdHNlbGVjdCBCUEZcbiAgMzA6XHRcdHNlbGVjdCBJUlFfV09SS1xuICAzMTpcdFx0c2VsZWN0IE5FRURfVEFTS1NfUkNVXG4gIDMyOlx0XHRzZWxlY3QgVEFTS1NfVFJBQ0VfUkNVXG4gIDMzOlx0XHRzZWxlY3QgQklOQVJZX1BSSU5URlxuICAzNDpcdFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcbiAgMzU6XHRcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxuICAzNjpcdFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcbiAgMzc6XHRcdGRlZmF1bHQgblxuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBFbmFibGUgdGhlIGJwZigpIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHRvIG1hbmlwdWxhdGUgQlBGIHByb2dyYW1zXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDgxCgkJCQkJCQlvdXRwdXQ6IDEwNwoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGNvbmNlcm5pbmcgdGhlIGJsb29tIGZpbHRlciBtYXAgaW1wbGVtZW50YXRpb24gZm9yIEJQRiBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCBsb29rcyBsaWtlIGBCUEZfU1lTQ0FMTGAgaXMgdGhlIG9ubHkgY29uZmlnIEkmIzM5O2xsIG5lZWQgdG8gY29uY2VybiBteXNlbGYgd2l0aC4gVGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyBhIGZpeCBmb3IgYSBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpbiBgYmxvb21fbWFwX2FsbG9jYCB3aGVuIGNhbGN1bGF0aW5nIGBiaXRzZXRfYnl0ZXNgLCBhbG9uZyB3aXRoIGNvcnJlY3Rpb25zIHRvIHByZXZlbnQgbmVnYXRpdmUgb2Zmc2V0cyBpbiBgYmxvb21fdGVzdF9iaXRgIGFuZCBgYmxvb21fc2V0X2JpdGAgc3BlY2lmaWNhbGx5IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLgoKR2l2ZW4gdGhlc2UgbW9kaWZpY2F0aW9ucywgcGFydGljdWxhcmx5IHRoZSBjaGFuZ2VzIHRvIGNvcmUgYml0IG1hbmlwdWxhdGlvbiB3aXRoaW4gdGhlIGJsb29tIGZpbHRlciwgZnV6emluZyB0aGlzIGlzIGFuIGFic29sdXRlIG11c3QuIFRoZXJlJiMzOTtzIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciwgZWRnZSBjYXNlcywgYW5kLCBnaXZlbiB0aGUgQlBGIGNvbnRleHQsIGV2ZW4gc2VjdXJpdHkgaW1wbGljYXRpb25zIGlmIHRoZXNlIGJpdCBvcGVyYXRpb25zIGFyZSBtaXNoYW5kbGVkLgoKVGhlcmVmb3JlLCBJJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBJJiMzOTtsbCBhbHNvIGRlZmluZSB0aGUgYEZvY3VzU3ltYm9sc2AgdG8gaW5jbHVkZSB0aGUga2V5IGZ1bmN0aW9ucyBpbXBhY3RlZDogYCYjMzQ7Ymxvb21fbWFwX2FsbG9jJiMzNDtgLCBgJiMzNDtibG9vbV9tYXBfcHVzaF9lbGVtJiMzNDtgLCBhbmQgYCYjMzQ7Ymxvb21fbWFwX3BlZWtfZWxlbSYjMzQ7YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgcHJvYmxlbWF0aWMgY2FsY3VsYXRpb25zIGFuZCBiaXQgb3BlcmF0aW9ucy4gQXMgY29uZmlybWVkIGFib3ZlLCBJIHdpbGwgZW5hYmxlIG9ubHkgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnLgoKVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkOiB0aGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgYmxvb20gZmlsdGVyIG1hcCBpbXBsZW1lbnRhdGlvbi4gSXQmIzM5O3MgdG91Y2hpbmcgdGhlIGJpdHNldCBzaXplIGNhbGN1bGF0aW9uIGFuZCBiaXQgb3BlcmF0aW9ucywgYW5kIGluIGEgd2F5IHRoYXQgaXMgc3BlY2lmaWMgdG8gMzItYml0IGFyY2hpdGVjdHVyZXMuIEl0JiMzOTtzIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBpdCBpcyByZWFjaGFibGUsIHRoZXJlZm9yZSwgaXQgbmVlZHMgdG8gYmUgZnV6emVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibG9vbV9tYXBfYWxsb2MmIzM0OywKICAgICYjMzQ7Ymxvb21fbWFwX3B1c2hfZWxlbSYjMzQ7LAogICAgJiMzNDtibG9vbV9tYXBfcGVla19lbGVtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgYmxvb20gZmlsdGVyIG1hcCBpbXBsZW1lbnRhdGlvbiwgZml4aW5nIGJpdHNldCBzaXplIGNhbGN1bGF0aW9uIGFuZCBiaXQgb3BlcmF0aW9ucyBmb3IgMzItYml0IGFyY2hpdGVjdHVyZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ymxvb21fbWFwX2FsbG9jJiMzNDssCiAgICAmIzM0O2Jsb29tX21hcF9wdXNoX2VsZW0mIzM0OywKICAgICYjMzQ7Ymxvb21fbWFwX3BlZWtfZWxlbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgaW1wbGVtZW50YXRpb24sIGZpeGluZyBiaXRzZXQgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgYml0IG9wZXJhdGlvbnMgZm9yIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6MDMuMDI3MzU5NzMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg2ODk5OTc0MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibG9vbV9tYXBfYWxsb2NcIixcbiAgICBcImJsb29tX21hcF9wdXNoX2VsZW1cIixcbiAgICBcImJsb29tX21hcF9wZWVrX2VsZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgaW1wbGVtZW50YXRpb24sIGZpeGluZyBiaXRzZXQgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgYml0IG9wZXJhdGlvbnMgZm9yIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODowMy4wMjczNzAzODNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNzkwODI2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE1MDcyZTg1Nzk2MDg4YmVkNWM3YzQ1ZGYwNGNjNjU4YjY2YzkxOGNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBBdWcgMiAxMToxODowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jIGIva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1xcbmluZGV4IGI3MzMzNmM5NzZiN2MuLmYxMTFkMjY5OTBlY2UgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcXG5AQCAtMzMsNiArMzMsMjIgQEAgc3RhdGljIHUzMiBoYXNoKHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSwgdm9pZCAqdmFsdWUsXFxuIFxcdHJldHVybiBoIFxcdTAwMjYgYmxvb20tXFx1MDAzZWJpdHNldF9tYXNrO1xcbiB9XFxuIFxcbisvKlxcbisgKiBTb21lIDMyLWJpdCBhcmNoaXRlY3R1cmVzIHRha2UgYSBzaWduZWQgbG9uZyBiaXQgbnVtYmVyIGluIGJpdG9wcy4gU3BsaXRcXG4rICogdGhlIGZ1bGwgdTMyIGhhc2ggaW50byBhIHdvcmQgcG9pbnRlciBhbmQgYW4gaW4td29yZCBiaXQgbnVtYmVyIHNvIHVwcGVyXFxuKyAqIGhhbGYgaGFzaGVzIGNhbm5vdCBiZWNvbWUgbmVnYXRpdmUgb2Zmc2V0cy5cXG4rICovXFxuK3N0YXRpYyBib29sIGJsb29tX3Rlc3RfYml0KHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSwgdTMyIGJpdClcXG4re1xcbitcXHRyZXR1cm4gdGVzdF9iaXQoYml0ICUgQklUU19QRVJfTE9ORyxcXG4rXFx0XFx0XFx0Ymxvb20tXFx1MDAzZWJpdHNldCArIEJJVF9XT1JEKGJpdCkpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBibG9vbV9zZXRfYml0KHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSwgdTMyIGJpdClcXG4re1xcbitcXHRzZXRfYml0KGJpdCAlIEJJVFNfUEVSX0xPTkcsIGJsb29tLVxcdTAwM2ViaXRzZXQgKyBCSVRfV09SRChiaXQpKTtcXG4rfVxcbitcXG4gc3RhdGljIGxvbmcgYmxvb21fbWFwX3BlZWtfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb20gPVxcbkBAIC00MSw3ICs1Nyw3IEBAIHN0YXRpYyBsb25nIGJsb29tX21hcF9wZWVrX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpXFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYmxvb20tXFx1MDAzZW5yX2hhc2hfZnVuY3M7IGkrKykge1xcbiBcXHRcXHRoID0gaGFzaChibG9vbSwgdmFsdWUsIG1hcC1cXHUwMDNldmFsdWVfc2l6ZSwgaSk7XFxuLVxcdFxcdGlmICghdGVzdF9iaXQoaCwgYmxvb20tXFx1MDAzZWJpdHNldCkpXFxuK1xcdFxcdGlmICghYmxvb21fdGVzdF9iaXQoYmxvb20sIGgpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gXFx0fVxcbiBcXG5AQCAtNTksNyArNzUsNyBAQCBzdGF0aWMgbG9uZyBibG9vbV9tYXBfcHVzaF9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlLCB1NjQgZmxhZ3MpXFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYmxvb20tXFx1MDAzZW5yX2hhc2hfZnVuY3M7IGkrKykge1xcbiBcXHRcXHRoID0gaGFzaChibG9vbSwgdmFsdWUsIG1hcC1cXHUwMDNldmFsdWVfc2l6ZSwgaSk7XFxuLVxcdFxcdHNldF9iaXQoaCwgYmxvb20tXFx1MDAzZWJpdHNldCk7XFxuK1xcdFxcdGJsb29tX3NldF9iaXQoYmxvb20sIGgpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5AQCAtOTQsOSArMTEwLDEwIEBAIHN0YXRpYyBpbnQgYmxvb21fbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbiBcXG4gc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuIHtcXG4tXFx0dTMyIGJpdHNldF9ieXRlcywgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7XFxuK1xcdHUzMiBiaXRzZXRfbWFzaywgbnJfaGFzaF9mdW5jcywgbnJfYml0cztcXG4gXFx0aW50IG51bWFfbm9kZSA9IGJwZl9tYXBfYXR0cl9udW1hX25vZGUoYXR0cik7XFxuIFxcdHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbTtcXG4rXFx0dTY0IGJpdHNldF9ieXRlcztcXG4gXFxuIFxcdGlmIChhdHRyLVxcdTAwM2VrZXlfc2l6ZSAhPSAwIHx8IGF0dHItXFx1MDAzZXZhbHVlX3NpemUgPT0gMCB8fFxcbiBcXHQgICAgYXR0ci1cXHUwMDNlbWF4X2VudHJpZXMgPT0gMCB8fFxcbkBAIC0xMjcsMjEgKzE0NCwxNiBAQCBzdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG4gXFx0aWYgKGNoZWNrX211bF9vdmVyZmxvdyhhdHRyLVxcdTAwM2VtYXhfZW50cmllcywgbnJfaGFzaF9mdW5jcywgXFx1MDAyNm5yX2JpdHMpIHx8XFxuIFxcdCAgICBjaGVja19tdWxfb3ZlcmZsb3cobnJfYml0cyAvIDUsICh1MzIpNywgXFx1MDAyNm5yX2JpdHMpIHx8XFxuIFxcdCAgICBucl9iaXRzIFxcdTAwM2UgKDFVTCBcXHUwMDNjXFx1MDAzYyAzMSkpIHtcXG4tXFx0XFx0LyogVGhlIGJpdCBhcnJheSBzaXplIGlzIDJeMzIgYml0cyBidXQgdG8gYXZvaWQgb3ZlcmZsb3dpbmcgdGhlXFxuLVxcdFxcdCAqIHUzMiwgd2UgdXNlIFUzMl9NQVgsIHdoaWNoIHdpbGwgcm91bmQgdXAgdG8gdGhlIGVxdWl2YWxlbnRcXG4tXFx0XFx0ICogbnVtYmVyIG9mIGJ5dGVzXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKFUzMl9NQVgpO1xcbiBcXHRcXHRiaXRzZXRfbWFzayA9IFUzMl9NQVg7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGlmIChucl9iaXRzIFxcdTAwM2M9IEJJVFNfUEVSX0xPTkcpXFxuIFxcdFxcdFxcdG5yX2JpdHMgPSBCSVRTX1BFUl9MT05HO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdG5yX2JpdHMgPSByb3VuZHVwX3Bvd19vZl90d28obnJfYml0cyk7XFxuLVxcdFxcdGJpdHNldF9ieXRlcyA9IEJJVFNfVE9fQllURVMobnJfYml0cyk7XFxuIFxcdFxcdGJpdHNldF9tYXNrID0gbnJfYml0cyAtIDE7XFxuIFxcdH1cXG4gXFxuK1xcdGJpdHNldF9ieXRlcyA9IEJJVFNfVE9fQllURVMoKHU2NCliaXRzZXRfbWFzayArIDEpO1xcbiBcXHRiaXRzZXRfYnl0ZXMgPSByb3VuZHVwKGJpdHNldF9ieXRlcywgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTtcXG4gXFx0Ymxvb20gPSBicGZfbWFwX2FyZWFfYWxsb2Moc2l6ZW9mKCpibG9vbSkgKyBiaXRzZXRfYnl0ZXMsIG51bWFfbm9kZSk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODowMy41NTYwOTI0MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ4MTYxMjUxMTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxvb21fbWFwX2FsbG9jXCIsXG4gICAgXCJibG9vbV9tYXBfcHVzaF9lbGVtXCIsXG4gICAgXCJibG9vbV9tYXBfcGVla19lbGVtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGltcGxlbWVudGF0aW9uLCBmaXhpbmcgYml0c2V0IHNpemUgY2FsY3VsYXRpb24gYW5kIGJpdCBvcGVyYXRpb25zIGZvciAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTUwNzJlODU3OTYwODhiZWQ1YzdjNDVkZjA0Y2M2NThiNjZjOTE4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMTE6MTg6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jIGIva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1xuaW5kZXggYjczMzM2Yzk3NmI3Yy4uZjExMWQyNjk5MGVjZSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcbisrKyBiL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcbkBAIC0zMyw2ICszMywyMiBAQCBzdGF0aWMgdTMyIGhhc2goc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tLCB2b2lkICp2YWx1ZSxcbiBcdHJldHVybiBoIFx1MDAyNiBibG9vbS1cdTAwM2ViaXRzZXRfbWFzaztcbiB9XG4gXG4rLypcbisgKiBTb21lIDMyLWJpdCBhcmNoaXRlY3R1cmVzIHRha2UgYSBzaWduZWQgbG9uZyBiaXQgbnVtYmVyIGluIGJpdG9wcy4gU3BsaXRcbisgKiB0aGUgZnVsbCB1MzIgaGFzaCBpbnRvIGEgd29yZCBwb2ludGVyIGFuZCBhbiBpbi13b3JkIGJpdCBudW1iZXIgc28gdXBwZXJcbisgKiBoYWxmIGhhc2hlcyBjYW5ub3QgYmVjb21lIG5lZ2F0aXZlIG9mZnNldHMuXG4rICovXG4rc3RhdGljIGJvb2wgYmxvb21fdGVzdF9iaXQoc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tLCB1MzIgYml0KVxuK3tcbitcdHJldHVybiB0ZXN0X2JpdChiaXQgJSBCSVRTX1BFUl9MT05HLFxuK1x0XHRcdGJsb29tLVx1MDAzZWJpdHNldCArIEJJVF9XT1JEKGJpdCkpO1xuK31cbitcbitzdGF0aWMgdm9pZCBibG9vbV9zZXRfYml0KHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSwgdTMyIGJpdClcbit7XG4rXHRzZXRfYml0KGJpdCAlIEJJVFNfUEVSX0xPTkcsIGJsb29tLVx1MDAzZWJpdHNldCArIEJJVF9XT1JEKGJpdCkpO1xuK31cbitcbiBzdGF0aWMgbG9uZyBibG9vbV9tYXBfcGVla19lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlKVxuIHtcbiBcdHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSA9XG5AQCAtNDEsNyArNTcsNyBAQCBzdGF0aWMgbG9uZyBibG9vbV9tYXBfcGVla19lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYmxvb20tXHUwMDNlbnJfaGFzaF9mdW5jczsgaSsrKSB7XG4gXHRcdGggPSBoYXNoKGJsb29tLCB2YWx1ZSwgbWFwLVx1MDAzZXZhbHVlX3NpemUsIGkpO1xuLVx0XHRpZiAoIXRlc3RfYml0KGgsIGJsb29tLVx1MDAzZWJpdHNldCkpXG4rXHRcdGlmICghYmxvb21fdGVzdF9iaXQoYmxvb20sIGgpKVxuIFx0XHRcdHJldHVybiAtRU5PRU5UO1xuIFx0fVxuIFxuQEAgLTU5LDcgKzc1LDcgQEAgc3RhdGljIGxvbmcgYmxvb21fbWFwX3B1c2hfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSwgdTY0IGZsYWdzKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYmxvb20tXHUwMDNlbnJfaGFzaF9mdW5jczsgaSsrKSB7XG4gXHRcdGggPSBoYXNoKGJsb29tLCB2YWx1ZSwgbWFwLVx1MDAzZXZhbHVlX3NpemUsIGkpO1xuLVx0XHRzZXRfYml0KGgsIGJsb29tLVx1MDAzZWJpdHNldCk7XG4rXHRcdGJsb29tX3NldF9iaXQoYmxvb20sIGgpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtOTQsOSArMTEwLDEwIEBAIHN0YXRpYyBpbnQgYmxvb21fbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuIFxuIHN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqYmxvb21fbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuIHtcbi1cdHUzMiBiaXRzZXRfYnl0ZXMsIGJpdHNldF9tYXNrLCBucl9oYXNoX2Z1bmNzLCBucl9iaXRzO1xuK1x0dTMyIGJpdHNldF9tYXNrLCBucl9oYXNoX2Z1bmNzLCBucl9iaXRzO1xuIFx0aW50IG51bWFfbm9kZSA9IGJwZl9tYXBfYXR0cl9udW1hX25vZGUoYXR0cik7XG4gXHRzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb207XG4rXHR1NjQgYml0c2V0X2J5dGVzO1xuIFxuIFx0aWYgKGF0dHItXHUwMDNla2V5X3NpemUgIT0gMCB8fCBhdHRyLVx1MDAzZXZhbHVlX3NpemUgPT0gMCB8fFxuIFx0ICAgIGF0dHItXHUwMDNlbWF4X2VudHJpZXMgPT0gMCB8fFxuQEAgLTEyNywyMSArMTQ0LDE2IEBAIHN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqYmxvb21fbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuIFx0aWYgKGNoZWNrX211bF9vdmVyZmxvdyhhdHRyLVx1MDAzZW1heF9lbnRyaWVzLCBucl9oYXNoX2Z1bmNzLCBcdTAwMjZucl9iaXRzKSB8fFxuIFx0ICAgIGNoZWNrX211bF9vdmVyZmxvdyhucl9iaXRzIC8gNSwgKHUzMik3LCBcdTAwMjZucl9iaXRzKSB8fFxuIFx0ICAgIG5yX2JpdHMgXHUwMDNlICgxVUwgXHUwMDNjXHUwMDNjIDMxKSkge1xuLVx0XHQvKiBUaGUgYml0IGFycmF5IHNpemUgaXMgMl4zMiBiaXRzIGJ1dCB0byBhdm9pZCBvdmVyZmxvd2luZyB0aGVcbi1cdFx0ICogdTMyLCB3ZSB1c2UgVTMyX01BWCwgd2hpY2ggd2lsbCByb3VuZCB1cCB0byB0aGUgZXF1aXZhbGVudFxuLVx0XHQgKiBudW1iZXIgb2YgYnl0ZXNcbi1cdFx0ICovXG4tXHRcdGJpdHNldF9ieXRlcyA9IEJJVFNfVE9fQllURVMoVTMyX01BWCk7XG4gXHRcdGJpdHNldF9tYXNrID0gVTMyX01BWDtcbiBcdH0gZWxzZSB7XG4gXHRcdGlmIChucl9iaXRzIFx1MDAzYz0gQklUU19QRVJfTE9ORylcbiBcdFx0XHRucl9iaXRzID0gQklUU19QRVJfTE9ORztcbiBcdFx0ZWxzZVxuIFx0XHRcdG5yX2JpdHMgPSByb3VuZHVwX3Bvd19vZl90d28obnJfYml0cyk7XG4tXHRcdGJpdHNldF9ieXRlcyA9IEJJVFNfVE9fQllURVMobnJfYml0cyk7XG4gXHRcdGJpdHNldF9tYXNrID0gbnJfYml0cyAtIDE7XG4gXHR9XG4gXG4rXHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKCh1NjQpYml0c2V0X21hc2sgKyAxKTtcbiBcdGJpdHNldF9ieXRlcyA9IHJvdW5kdXAoYml0c2V0X2J5dGVzLCBzaXplb2YodW5zaWduZWQgbG9uZykpO1xuIFx0Ymxvb20gPSBicGZfbWFwX2FyZWFfYWxsb2Moc2l6ZW9mKCpibG9vbSkgKyBiaXRzZXRfYnl0ZXMsIG51bWFfbm9kZSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODowMy41NTYwOTM1NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjI3MTkyNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIEJsb29tIEZpbHRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGBrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0J3MgbW9kaWZ5aW5nIGNvcmUgZnVuY3Rpb25zOiBgYmxvb21fbWFwX3BlZWtfZWxlbWAsIGBibG9vbV9tYXBfcHVzaF9lbGVtYCwgYW5kIGBibG9vbV9tYXBfYWxsb2NgLiBUaGF0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gSSBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24uIEl0IHNlZW1zIGxpa2UgaXQncyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIDMyLWJpdCBhcmNoaXRlY3R1cmUgaXNzdWUgd2l0aCB0aG9zZSBuZXcgYGJsb29tX3Rlc3RfYml0YCBhbmQgYGJsb29tX3NldF9iaXRgIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGxpa2VseSB3cmFwcGVycyB0byBwcmV2ZW50IG5lZ2F0aXZlIG9mZnNldHMgd2hlbiB1c2luZyBgdGVzdF9iaXRgIGFuZCBgc2V0X2JpdGAuIFNtYXJ0LiBBbHNvLCB0aGV5IGFyZSB1cGRhdGluZyBgYml0c2V0X2J5dGVzYCB0byBgdTY0YCBpbiBgYmxvb21fbWFwX2FsbG9jYCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgaGFuZGxpbmcgbGFyZ2VyIGJsb29tIGZpbHRlcnMgYW5kIGluY2x1ZGVzIGEgZml4IGZvciBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgY2FsY3VsYXRpb24sIHdoaWNoIGlzIGEgY29tbW9uIGFuZCBjcml0aWNhbCBzZWN1cml0eSBjb25zaWRlcmF0aW9uIGluIHRoZXNlIGtpbmRzIG9mIGRhdGEgc3RydWN0dXJlcy5cblxuVGhpcyBpcyBjbGVhcmx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGltcGxlbWVudGF0aW9uLiBHaXZlbiB0aGF0LCBmdXp6aW5nIGlzIGFuIGFic29sdXRlIG11c3QuIFdlIGNhbid0IGxldCBhIHN1YnRsZSBvdmVyZmxvdyBvciBhbiBvZmYtYnktb25lIGVycm9yIHNsaXAgdGhyb3VnaC4gSSBuZWVkIHRvIGdldCB0aGlzIGNvdmVyZWQgaW4gdGhlIGZ1enppbmcgcmVnaW1lLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgaGVyZSB0byBtYWtlIHN1cmUgd2UndmUgZ290IHRoZSBCUEYgQmxvb20gZmlsdGVyIG1hcCBlbmFibGVkIHRvIHRlc3QgaXQgcHJvcGVybHkuIE15IGd1dCB0ZWxscyBtZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUga2V5IG9uZS4gTGV0J3MgY29uZmlybSB0aGF0IGJ5IGNoZWNraW5nIHRoZSBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2Agc291cmNlIHdpdGhpbiB0aGUga2VybmVsIHRyZWUuIEp1c3QgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBhY3R1YWxseSBlbmFibGVkIGluIHRoZSBidWlsZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxOSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjA4LjQxODgxNzgyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA4ODk5NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxvb21fbWFwX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9OTQ9c3RhdGljIGludCBibG9vbV9tYXBfZ2V0X25leHRfa2V5KHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdm9pZCAqbmV4dF9rZXkpXFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTk5LS8qIENhbGxlZCBmcm9tIHN5c2NhbGwgKi9cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjEwMDpzdGF0aWMgaW50IGJsb29tX21hcF9hbGxvY19jaGVjayh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTEwMS17XFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTExMC1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjExMTpzdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTExMi17XFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTIxNj1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYmxvb21fZmlsdGVyX21hcF9vcHMgPSB7XFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0yMTctXFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MjE4OlxcdC5tYXBfYWxsb2NfY2hlY2sgPSBibG9vbV9tYXBfYWxsb2NfY2hlY2ssXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMTk6XFx0Lm1hcF9hbGxvYyA9IGJsb29tX21hcF9hbGxvYyxcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIyMC1cXHQubWFwX2ZyZWUgPSBibG9vbV9tYXBfZnJlZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6MDguNTI5NzE0NzgxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyNTIwMjczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCbG9vbSBGaWx0ZXIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYmxvb20gZmlsdGVyIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIGBNYWtlZmlsZWAgaW4gYGtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb2RlIGlzIGJlaW5nIGJ1aWx0IGFuZCBsaW5rZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUsIGFuZCBnZW5lcmFsbHkgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSB0aG9yb3VnaCBhbmFseXNpcy4gSSdtIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IG9wdGltaXphdGlvbiBmbGFncywgYW55IHNwZWNpZmljIGNvbXBpbGF0aW9uIHNldHRpbmdzIHJlbGV2YW50IHRvIEJQRiwgYW5kIHdoZXRoZXIgaXQncyBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5IGxpbmtlZC4gQmFzaWNhbGx5LCBJIG5lZWQgYSByb2FkbWFwIGJlZm9yZSBJIGNhbiByZWFsbHkgZGlnIGludG8gdGhlIGNvZGUncyBmdW5jdGlvbmFsaXR5LiBNeSBpbml0aWFsIHF1ZXN0aW9ucyBhcmU6IGhvdyBpcyB0aGUgY29kZSBiZWluZyBjb21waWxlZD8gV2hhdCBvdGhlciBtb2R1bGVzIG1pZ2h0IGl0IGRlcGVuZCBvbj8gQXJlIHRoZXJlIGFueSBzcGVjaWFsIGJ1aWxkIGRpcmVjdGl2ZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBUaGlzIHdpbGwgaGVscCBzZXQgdGhlIHN0YWdlIGZvciBhIHByb3BlciBpbi1kZXB0aCByZXZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NjYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODoxMS40NTQ5MjAwM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjYwMjg2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibG9vbV9maWx0ZXIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEyLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gbG9jYWxfc3RvcmFnZS5vIHF1ZXVlX3N0YWNrX21hcHMubyByaW5nYnVmLm8gYnBmX2luc25fYXJyYXkub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODoxMS41NDc1MjkxNzRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM5MTg5NDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuXG5cbioqVHJhY2luZyB0aGUgQlBGIEJsb29tIEZpbHRlciBBbGxvY2F0aW9uIFBhdGgqKlxuXG5SaWdodCwgc28gd2UncmUgZGl2aW5nIGludG8gdGhlIEJQRiBibG9vbSBmaWx0ZXIgaW1wbGVtZW50YXRpb24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGBDT05GSUdfQlBGX1NZU0NBTExgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50IHRvIGVuYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSwgb3IgYXQgbGVhc3QgdGhlIHBhcnQgdGhhdCB0cmlnZ2VycyBteSBpbnZlc3RpZ2F0aW9uLlxuXG5TcGVjaWZpY2FsbHksIEknbSBrZXlpbmcgaW4gb24gdGhlc2UgZnVuY3Rpb25zOiBgYmxvb21fbWFwX2FsbG9jYCwgYGJsb29tX21hcF9wdXNoX2VsZW1gLCBhbmQgYGJsb29tX21hcF9wZWVrX2VsZW1gLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciB0aGUgYmxvb20gZmlsdGVyIG1hbmFnZW1lbnQuXG5cbkZpcnN0LCBsZXQncyB2ZXJpZnkgaWYgYGJsb29tX21hcF9hbGxvY2AgaXMgZGVmaW5lZCBhcyBgc3RhdGljYC4gWWVzLCBnb29kLiBNeSBhc3N1bXB0aW9uIGlzIHRoYXQgaXQgc2hvdWxkIGJlLiBCdXQgd2FpdCwgdGhpcyBpcyBpbnRlcmVzdGluZy4gRXZlbiB0aG91Z2ggaXQncyBzdGF0aWMsIGl0J3MgYWxzbyBhc3NpZ25lZCB0byBgYmxvb21fZmlsdGVyX21hcF9vcHMubWFwX2FsbG9jYC4gVGhhdCdzIHRoZSBmdW5jdGlvbiBwb2ludGVyIGhvb2suIFRoaXMgbWVhbnMgYGJsb29tX21hcF9hbGxvY2Agd2lsbCBiZSBhY2Nlc3NlZCBpbmRpcmVjdGx5LCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgdGhlIG92ZXJhbGwgZGVzaWduLlxuXG5Ob3csIHdoZXJlJ3MgdGhlIGFjdHVhbCBlbnRyeSBwb2ludCBmb3IgYWxsIG9mIHRoaXM/IEknbSBhc3N1bWluZyBpdCdzIGBicGZfbWFwX2FsbG9jYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZWx5IHRoZSBtYWluIEJQRiBzeXN0ZW0gY2FsbCBoYW5kbGluZyB0aGUgbWVtb3J5IGFsbG9jYXRpb24uIFRoZSBnb2FsIGlzIHRvIHNlZSBob3cgdGhlIGFsbG9jYXRpb24gZmluYWxseSBnZXRzIHRyaWdnZXJlZC4gU28sIEkgbmVlZCB0byBjaGVjayBga2VybmVsL2JwZi9zeXNjYWxsLmNgIGZvciBhbnkgZnVuY3Rpb24gbmFtZWQgYG1hcF9hbGxvY2AuIFRoYXQncyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBhY3R1YWwgc3lzdGVtIGNhbGwgaW50ZXJmYWNlIGZvciBCUEYgbWFwIGFsbG9jYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzOTUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6MTUuOTg2NzIyNDg4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NTg4Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hcF9hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3N5c2NhbGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3N5c2NhbGwuYz0xMTU9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGJwZl9tYXBfb2ZmbG9hZF9vcHMgPSB7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTE2LVxcdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxMTc6XFx0Lm1hcF9hbGxvYyA9IGJwZl9tYXBfb2ZmbG9hZF9tYXBfYWxsb2MsXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTE4LVxcdC5tYXBfZnJlZSA9IGJwZl9tYXBfb2ZmbG9hZF9tYXBfZnJlZSxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTQzNz12b2lkIGJwZl9tYXBfaW5pdF9mcm9tX2F0dHIoc3RydWN0IGJwZl9tYXAgKm1hcCwgdW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDctXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6NDQ4OnN0YXRpYyBpbnQgYnBmX21hcF9hbGxvY19pZChzdHJ1Y3QgYnBmX21hcCAqbWFwKVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQ0OS17XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NjQ9dm9pZCAqYnBmX21hcF9rdmNhbGxvYyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NzYtXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTc3OnZvaWQgX19wZXJjcHUgKmJwZl9tYXBfYWxsb2NfcGVyY3B1KGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXAsIHNpemVfdCBzaXplLFxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU3OC1cXHRcXHRcXHRcXHQgICAgc2l6ZV90IGFsaWduLCBnZnBfdCBmbGFncylcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTYwNj1zdGF0aWMgc3RydWN0IHBhZ2UgKl9fYnBmX2FsbG9jX3BhZ2UoaW50IG5pZClcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTYxNi1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo2MTc6aW50IGJwZl9tYXBfYWxsb2NfcGFnZXMoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcCwgaW50IG5pZCxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02MTgtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgc3RydWN0IHBhZ2UgKipwYWdlcylcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTEzNzE9c3RhdGljIGludCBtYXBfY3JlYXRlX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MzMtXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTQzNDpcXHRpZiAob3BzLVxcdTAwM2VtYXBfYWxsb2NfY2hlY2spIHtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNDM1OlxcdFxcdGVyciA9IG9wcy1cXHUwMDNlbWFwX2FsbG9jX2NoZWNrKGF0dHIpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MzYtXFx0XFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE1MjItXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTUyMzpcXHRtYXAgPSBvcHMtXFx1MDAzZW1hcF9hbGxvYyhhdHRyKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNTI0LVxcdGlmIChJU19FUlIobWFwKSkge1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTYyNj1zdGF0aWMgaW50IG1hcF9jcmVhdGUodW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLCBzdHJ1Y3QgYnBmX2NvbW1vbl9hdHRyICphdHRyX2NvbW1vbixcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE2NjEtXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTY2MjpcXHRlcnIgPSBicGZfbWFwX2FsbG9jX2lkKG1hcCk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTY2My1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTY3Mi1cXHRcXHQgKiBicGZfbWFwX3B1dF93aXRoX3VyZWYoKSBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgYWJvdmVcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNjczOlxcdFxcdCAqIGJwZl9tYXBfYWxsb2NfaWQoKSBoYXMgcHVibGlzaGVkIHRoZSBtYXBcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNjc0LVxcdFxcdCAqIHRvIHRoZSB1c2Vyc3BhY2UgYW5kIHRoZSB1c2Vyc3BhY2UgbWF5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjE2LjA1NjMxNTQ5NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMzkxMzg5OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVjb25zdHJ1Y3RpbmcgdGhlIEJsb29tIEZpbHRlciBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGJsb29tIGZpbHRlciBpbXBsZW1lbnRhdGlvbiwgYW5kIHRoZSBpbml0aWFsIHF1ZXN0aW9uIGlzIGFsd2F5cywgXCJXaGVyZSBkb2VzIHRoaXMgdGhpbmcgKnN0YXJ0Kj9cIiBNeSBmaXJzdCB0aG91Z2h0IHdhcyBgbWFwX2NyZWF0ZWAgb3IgYG1hcF9jcmVhdGVfYWxsb2NgLCBzaW5jZSB0aGF0J3MgdXN1YWxseSB0aGUgZW50cnkgcG9pbnQgZm9yIEJQRiBtYXAgY3JlYXRpb24uIEJ1dCBob2xkIG9uLCBgbWFwX2NyZWF0ZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBBaCwgcmlnaHQuIEkgcmVtZW1iZXIgbm93LCB0aGUgKnJlYWwqIHN5c2NhbGwgZW50cnkgcG9pbnQgZm9yIGFsbCB0aGluZ3MgQlBGIGlzIGBzeXNfYnBmYC5cblxuUmlnaHQsIHNvIHRoYXQgbmFycm93cyBpdCBkb3duLCBidXQgSSBuZWVkIHRoZSBzcGVjaWZpYyBvcGVyYXRpb25zIHRvIHRyYWNlIGhvdyB0aGVzZSBibG9vbSBmaWx0ZXJzIGdldCBwb3B1bGF0ZWQgYW5kIHF1ZXJpZWQuIExvb2tpbmcgYmFjaywgSSByZWNhbGwgdGhhdCBgYnBmX21hcF91cGRhdGVfZWxlbWAgYW5kIGBicGZfbWFwX2xvb2t1cF9lbGVtYCBhcmUgZ2VuZXJhbGx5IHRoZSBzeXNjYWxsIGVudHJ5IHBvaW50cyBmb3IgXCJwdXNoaW5nXCIgYW5kIFwicGVla2luZ1wiIGRhdGEgaW50byBtYXBzLiBCdXQgbGV0J3MgY2xhcmlmeSB0aGF0IHRoZSBmdW5jdGlvbiBgYmxvb21fbWFwX3B1c2hfZWxlbWAgc2VlbXMgdG8gYmUgdGhlIG9uZSBhc3NpZ25lZCBpbnRlcm5hbGx5IHRvIGhhbmRsZSB0aGUgXCJwdXNoXCIgb3BlcmF0aW9uLCBzcGVjaWZpY2FsbHkgbWFwcGVkIHRvIGBtYXBfcHVzaF9lbGVtYC5cblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBibG9vbSBmaWx0ZXIgaW1wbGVtZW50YXRpb24uIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGV4cGxvcmUgYGtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNgIHNpbmNlIHRoYXQncyB3aGVyZSB0aGUgYWN0dWFsIGJsb29tIGZpbHRlciBsb2dpYyBpcyBsaWtlbHkgZGVmaW5lZCwgYW5kIHRoZSByZWxldmFudCBgYmxvb21fZmlsdGVyX21hcF9vcHNgIHN0cnVjdHVyZSBzaG91bGQgYmUgdGhlcmUuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6MjAuMzk1NDU3ODA0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzM5NDI1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibG9vbV9maWx0ZXJfbWFwX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTIxNT1CVEZfSURfTElTVF9TSU5HTEUoYnBmX2Jsb29tX21hcF9idGZfaWRzLCBzdHJ1Y3QsIGJwZl9ibG9vbV9maWx0ZXIpXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMTY6Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGJsb29tX2ZpbHRlcl9tYXBfb3BzID0ge1xcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjE3LVxcdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6MjAuNDU4ODYyNDkxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTMxMzUyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIGBibG9vbV9maWx0ZXJfbWFwX29wc2AgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCdzIGFjdHVhbGx5ICppbiogYGJsb29tX2ZpbHRlcl9tYXBfb3BzYD9cIi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGF2YWlsYWJsZSBvcGVyYXRpb25zIHdpdGhpbiB0aGlzIGNvbnRleHQuIFRoZSBuYW1lIHN1Z2dlc3RzIGl0J3MgYSBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucyByZWxhdGVkIHRvIEJsb29tIGZpbHRlcnMgYW5kIGxpa2VseSBtYXAtbGlrZSBzdHJ1Y3R1cmVzLiBUaGF0J3MgbXkgc3RhcnRpbmcgcG9pbnQuIEknbSBnb2luZyB0byB3YW50IHRvIGtub3cgdGhlIHByaW1pdGl2ZXMuIFdoYXQgZG8gSSBoYXZlIGF0IG15IGRpc3Bvc2FsIGluIHRoaXMgc2V0IG9mIG9wZXJhdGlvbnM/IFdoYXQgYXJlIHRoZSBiYXNpYyBidWlsZGluZyBibG9ja3MgdGhhdCBJIGNhbiBjb21iaW5lIGFuZCB1c2U/IElzIGl0IGp1c3QgaW5zZXJ0LCBkZWxldGUsIGFuZCBsb29rdXAsIG9yIGlzIHRoZXJlIG1vcmU/IEFtIEkgZGVhbGluZyB3aXRoIHZhcmlvdXMgbGV2ZWxzIG9mIHNvcGhpc3RpY2F0aW9uPyBNYXliZSB0aGVyZSdzIHN1cHBvcnQgZm9yIGNvdW50aW5nIEJsb29tIGZpbHRlcnMsIG9yIHNvbWUgY2xldmVyIHdheSB0byB1cGRhdGUgYSBtYXAgd2l0aGluIHRoZSBmaWx0ZXIgc3RydWN0dXJlLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgdG8gdW5kZXJzdGFuZCB0aGlzIHNwZWNpZmljIEFQSS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjI0LjAxMjAwMTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTI4NDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsb29tX2ZpbHRlcl9tYXBfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0yMTU9QlRGX0lEX0xJU1RfU0lOR0xFKGJwZl9ibG9vbV9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfYmxvb21fZmlsdGVyKVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MjE2OmNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBibG9vbV9maWx0ZXJfbWFwX29wcyA9IHtcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIxNy1cXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjI0LjA2NjkzNzEwN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDg0ODE0NTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIEJsb29tIEZpbHRlciBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgQlBGIEJsb29tIGZpbHRlciBpbXBsZW1lbnRhdGlvbi4gTGV0J3MgemVybyBpbiBvbiBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2AgYXJvdW5kIGxpbmUgMjE2LiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGNvcmUgbG9naWMgZm9yIGVpdGhlciBhbiBpbnNlcnRpb24sIGxvb2t1cCwgb3IgcGVyaGFwcyByZXNpemUgb3BlcmF0aW9uLCBiYXNlZCBvbiB0aGUgdHlwaWNhbCBmbG93IG9mIEJsb29tIGZpbHRlciBmdW5jdGlvbnMuIEdpdmVuIHRoZSBmaWxlIGFuZCBmdW5jdGlvbiBuYW1pbmcgY29udmVudGlvbnMgaW4gdGhlIGtlcm5lbCwgSSdkIGJldCB0aGlzIHNlY3Rpb24gZGVhbHMgd2l0aCB0aGUgaGFzaGluZyBvciBiaXQgbWFuaXB1bGF0aW9uIHVzZWQgaW4gdGhlIGZpbHRlci4gSSB3b25kZXIgaWYgaXQncyB1c2luZyBhIGN1c3RvbSBoYXNoIGZ1bmN0aW9uIGZvciBCUEYgb3Igc29tZXRoaW5nIG9wdGltaXplZCBmb3IgdGhlIGFyY2hpdGVjdHVyZS4gQWxzbyBJJ2QgbGlrZSB0byBsb29rIGZvciBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucyBoZXJlLCBtYXliZSBldmVuIGluIHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCB0aGUgZnVuY3Rpb24gdXNlcy4gVGltZSB0byBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NTgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODoyNy4xNTE3NTQ3MTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMDA6XFx0XFx0LyogQmxvb20gZmlsdGVyIG1hcHMgYXJlIGtleWxlc3MgKi9cXG4gMjAxOlxcdFxcdHJldHVybiBidGZfdHlwZV9pc192b2lkKGtleV90eXBlKSA/IDAgOiAtRUlOVkFMO1xcbiAyMDI6XFx0fVxcbiAyMDM6XFx0XFxuIDIwNDpcXHRzdGF0aWMgdTY0IGJsb29tX21hcF9tZW1fdXNhZ2UoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcClcXG4gMjA1OlxcdHtcXG4gMjA2OlxcdFxcdHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbTtcXG4gMjA3OlxcdFxcdHU2NCBiaXRzZXRfYnl0ZXM7XFxuIDIwODpcXHRcXG4gMjA5OlxcdFxcdGJsb29tID0gY29udGFpbmVyX29mKG1hcCwgc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIsIG1hcCk7XFxuIDIxMDpcXHRcXHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKCh1NjQpYmxvb20tXFx1MDAzZWJpdHNldF9tYXNrICsgMSk7XFxuIDIxMTpcXHRcXHRiaXRzZXRfYnl0ZXMgPSByb3VuZHVwKGJpdHNldF9ieXRlcywgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTtcXG4gMjEyOlxcdFxcdHJldHVybiBzaXplb2YoKmJsb29tKSArIGJpdHNldF9ieXRlcztcXG4gMjEzOlxcdH1cXG4gMjE0OlxcdFxcbiAyMTU6XFx0QlRGX0lEX0xJU1RfU0lOR0xFKGJwZl9ibG9vbV9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfYmxvb21fZmlsdGVyKVxcbiAyMTY6XFx0Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGJsb29tX2ZpbHRlcl9tYXBfb3BzID0ge1xcbiAyMTc6XFx0XFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxcbiAyMTg6XFx0XFx0Lm1hcF9hbGxvY19jaGVjayA9IGJsb29tX21hcF9hbGxvY19jaGVjayxcXG4gMjE5OlxcdFxcdC5tYXBfYWxsb2MgPSBibG9vbV9tYXBfYWxsb2MsXFxuIDIyMDpcXHRcXHQubWFwX2ZyZWUgPSBibG9vbV9tYXBfZnJlZSxcXG4gMjIxOlxcdFxcdC5tYXBfZ2V0X25leHRfa2V5ID0gYmxvb21fbWFwX2dldF9uZXh0X2tleSxcXG4gMjIyOlxcdFxcdC5tYXBfcHVzaF9lbGVtID0gYmxvb21fbWFwX3B1c2hfZWxlbSxcXG4gMjIzOlxcdFxcdC5tYXBfcGVla19lbGVtID0gYmxvb21fbWFwX3BlZWtfZWxlbSxcXG4gMjI0OlxcdFxcdC5tYXBfcG9wX2VsZW0gPSBibG9vbV9tYXBfcG9wX2VsZW0sXFxuIDIyNTpcXHRcXHQubWFwX2xvb2t1cF9lbGVtID0gYmxvb21fbWFwX2xvb2t1cF9lbGVtLFxcbiAyMjY6XFx0XFx0Lm1hcF91cGRhdGVfZWxlbSA9IGJsb29tX21hcF91cGRhdGVfZWxlbSxcXG4gMjI3OlxcdFxcdC5tYXBfZGVsZXRlX2VsZW0gPSBibG9vbV9tYXBfZGVsZXRlX2VsZW0sXFxuIDIyODpcXHRcXHQubWFwX2NoZWNrX2J0ZiA9IGJsb29tX21hcF9jaGVja19idGYsXFxuIDIyOTpcXHRcXHQubWFwX21lbV91c2FnZSA9IGJsb29tX21hcF9tZW1fdXNhZ2UsXFxuIDIzMDpcXHRcXHQubWFwX2J0Zl9pZCA9IFxcdTAwMjZicGZfYmxvb21fbWFwX2J0Zl9pZHNbMF0sXFxuIDIzMTpcXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODoyNy4xNTE4MzEwNjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg1MTY1MjMxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQmxvb20gRmlsdGVyIEZ1bmN0aW9ucyBmb3IgU3l6a2FsbGVyIEZvY3VzU3ltYm9scyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgbW9zdCBhcHByb3ByaWF0ZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGJsb29tIGZpbHRlciBjb2RlIHRvIGluY2x1ZGUgaW4gU3l6a2FsbGVyJ3MgYEZvY3VzU3ltYm9sc2AuIEkgaGF2ZSB0aHJlZSBmdW5jdGlvbnM6IGBibG9vbV9tYXBfYWxsb2NgLCBgYmxvb21fbWFwX3B1c2hfZWxlbWAsIGFuZCBgYmxvb21fbWFwX3BlZWtfZWxlbWAuIFRoZSBpbml0aWFsIGNvbmNlcm4gaXMgdGhhdCBgYmxvb21fbWFwX2FsbG9jYCBpcyBkZWNsYXJlZCBgc3RhdGljYC4gVGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyOiBmYXZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIEhvd2V2ZXIsIGEgcXVpY2sgc2NhbiByZXZlYWxzIHRoYXQgZXZlbiB0aG91Z2ggaXQncyBzdGF0aWMsIGBibG9vbV9tYXBfYWxsb2NgICppcyogYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgYmxvb21fZmlsdGVyX21hcF9vcHNgLiBUaGlzIG1lYW5zIGl0ICp3b24ndCogYmUgaW5saW5lZCBhbmQgKmRvZXMqIGhhdmUgYSBkaXN0aW5jdCBhZGRyZXNzLlxuXG5TeXprYWxsZXIsIGluIHRoZW9yeSwgKmNvdWxkKiBmdXp6IHRoaXMsIHNpbmNlIGl0cyBrY292IGFuYWx5c2lzIHBpY2tzIHVwIGFsbCBiYXNpYyBibG9ja3MuIEJ1dCBmb3IgYEZvY3VzU3ltYm9sc2AsIGl0IHJlbGllcyBvbiBleHBsaWNpdCBzeW1ib2wgbmFtZXMuIE5vdywgc3RhdGljIGZ1bmN0aW9ucyBnZXQgYSBiaXQgbWVzc3kgYmVjYXVzZSBrYWxsc3ltcyAqbWlnaHQqIGxpc3QgdGhlbSwgYnV0IHdpdGggc3RhdGljIGZ1bmN0aW9ucywgeW91IGNhbiBzb21ldGltZXMgZ2V0IG5hbWluZyBjb2xsaXNpb25zLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYmV0dGVyIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzPyBgYnBmX21hcF9hbGxvY2AgbG9va3MgcHJvbWlzaW5nLCBidXQgaXQncyBhIHBvaW50ZXIgY2FsbCwgbm90IGEgZnVuY3Rpb24gaXRzZWxmLiBJIGtub3cgdGhlIGdlbmVyYWwgc3lzY2FsbCBlbnRyeSBwb2ludHMgZm9yIEJQRiBhcmUgYHN5c19icGZgIG9yIGBfX3N5c19icGZgLiBUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmljYWxseSB0ZWxsIG1lIHRvICphdm9pZCogZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMsIGFuZCBgc3lzX2JwZmAgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnkuIExpc3RpbmcgdGhhdCB3b3VsZCBza2V3IHRlc3QgZGlzdHJpYnV0aW9ucy5cblxuU28sIGV2ZW4gdGhvdWdoIHRoZXkncmUgc3RhdGljLCBpdCBzZWVtcyBsaWtlIGBibG9vbV9tYXBfYWxsb2NgLCBgYmxvb21fbWFwX3B1c2hfZWxlbWAsIGFuZCBgYmxvb21fbWFwX3BlZWtfZWxlbWAgYXJlIHN0aWxsIHRoZSBiZXR0ZXIgY2hvaWNlcy4gVGhleSdyZSBzcGVjaWZpYyB0byB0aGlzIGJsb29tIGZpbHRlciBpbXBsZW1lbnRhdGlvbiwgYW5kIGNydWNpYWxseSwgdGhleSBhcmVuJ3QgaW5saW5lZCBiZWNhdXNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgYmVpbmcgdGFrZW4gYnkgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYGJsb29tX2ZpbHRlcl9tYXBfb3BzYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgdGhleSBhcmUsIGluZGVlZCwgc3RhdGljLCBqdXN0IHRvIGJlIHN1cmUuIFllcCwgdGhleSBhcmUuIE9rYXksIG9uZSBmaW5hbCB0aGluZzogbGV0J3MgZG8gYSBxdWljayBzY2FuIG9mIHRoZSBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2Agc291cmNlIGNvZGUgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoZXJlIGFyZSBubyB2aWFibGUgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZXMgdGhhdCB3ZXJlIG92ZXJsb29rZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NDcsIk91dHB1dFRva2VucyI6NjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODozNC4wMDM0ODY5MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgzMTU5MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlteYS16QS1aXSpbYS16QS1aXzAtOV0rIFthLXpBLVpfMC05XStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9NDE9c3RhdGljIGJvb2wgYmxvb21fdGVzdF9iaXQoc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tLCB1MzIgYml0KVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtNDIte1xcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6NDM6XFx0cmV0dXJuIHRlc3RfYml0KGJpdCAlIEJJVFNfUEVSX0xPTkcsXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy00NC1cXHRcXHRcXHRibG9vbS1cXHUwMDNlYml0c2V0ICsgQklUX1dPUkQoYml0KSk7XFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTExMT1zdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG4tLVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMTI1LVxcdCAgICAoYXR0ci1cXHUwMDNlbWFwX2V4dHJhIFxcdTAwMjYgfjB4RikpXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoxMjY6XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xMjctXFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTE2MC1cXHRpZiAoIWJsb29tKVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MTYxOlxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMTYyLVxcbi0tXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0xODI9c3RhdGljIHZvaWQgKmJsb29tX21hcF9sb29rdXBfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXkpXFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTE4NC1cXHQvKiBUaGUgZUJQRiBwcm9ncmFtIHNob3VsZCB1c2UgbWFwX3BlZWtfZWxlbSBpbnN0ZWFkICovXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoxODU6XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xODYtfVxcbi0tXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0xOTU9c3RhdGljIGludCBibG9vbV9tYXBfY2hlY2tfYnRmKHN0cnVjdCBicGZfbWFwICptYXAsXFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIwMC1cXHQvKiBCbG9vbSBmaWx0ZXIgbWFwcyBhcmUga2V5bGVzcyAqL1xcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MjAxOlxcdHJldHVybiBidGZfdHlwZV9pc192b2lkKGtleV90eXBlKSA/IDAgOiAtRUlOVkFMO1xcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjAyLX1cXG4tLVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9MjA0PXN0YXRpYyB1NjQgYmxvb21fbWFwX21lbV91c2FnZShjb25zdCBzdHJ1Y3QgYnBmX21hcCAqbWFwKVxcbi0tXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0yMTEtXFx0Yml0c2V0X2J5dGVzID0gcm91bmR1cChiaXRzZXRfYnl0ZXMsIHNpemVvZih1bnNpZ25lZCBsb25nKSk7XFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMTI6XFx0cmV0dXJuIHNpemVvZigqYmxvb20pICsgYml0c2V0X2J5dGVzO1xcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjEzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6MzQuMDgxODEwMDI1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTQxNjY0ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIEJsb29tIEZpbHRlciBJbXBsZW1lbnRhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRha2luZyBhIGxvb2sgYXQgYGJsb29tX2ZpbHRlci5jYCBhbmQgaW1tZWRpYXRlbHkgbm90aWNlIHRoYXQgYWxsIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyB0aGluZyBhcmUgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQgbWVhbnMgdGhleSdyZSBpbnRlcm5hbCB0byB0aGlzIGZpbGUsIHdoaWNoIGhlbHBzIHdpdGggbW9kdWxhcml0eSBhbmQgZW5jYXBzdWxhdGlvbi4gU28sIEkgbmVlZCB0byBsaXN0IHRoZSBleHRlcm5hbGx5IGFjY2Vzc2libGUgZnVuY3Rpb25zIC0gdGhlIG9uZXMgdGhhdCB3b3VsZCBiZSB1c2VkIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIEknbSBwcmV0dHkgc3VyZSB0aG9zZSBhcmUgYGJsb29tX21hcF9hbGxvY2AsIGBibG9vbV9tYXBfcHVzaF9lbGVtYCwgYW5kIGBibG9vbV9tYXBfcGVla19lbGVtYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBjb3JlIEFQSSBmdW5jdGlvbnMgZm9yIHRoaXMgYmxvb20gZmlsdGVyLlxuXG5Ob3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdGhhdCBtaWdodCBhZmZlY3QgaG93IHRoaXMgYmxvb20gZmlsdGVyIGJlaGF2ZXMgb3IgaXMgZW5hYmxlZC4gVGhlIG9uZSB0aGF0IHNwcmluZ3MgdG8gbWluZCBpbW1lZGlhdGVseSBpcyBgQ09ORklHX0JQRl9TWVNDQUxMYC4gSSdtIHByZXR0eSBzdXJlIHRoYXQgaGFzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQuIEp1c3QgdG8gYmUgc3VyZSwgYXJlIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnM/IEknbGwgcXVpY2tseSBjaGVjayBgaW5pdC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBkZXBlbmRlbmNpZXMgb3IgcmVsYXRlZCBzZXR0aW5ncyBsaW5rZWQgdG8gYEJQRl9TWVNDQUxMYCB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBHb3R0YSBnZXQgYSBmdWxsIHBpY3R1cmUgYmVmb3JlIGRpZ2dpbmcgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI1MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjM4LjA5NTk3OTczNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk4ODY4MzYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbml0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjM4LjE1NTg3NDg0MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODM1NjQ2NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgS2VybmVsIENvbmZpZ3VyYXRpb24gSXNzdWUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiByZXNwb25zaWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBrZXJuZWwgYmVoYXZpb3IuIEdpdmVuIHdoYXQgSSdtIHNlZWluZywgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiBzb21ldGhpbmcgcmVsYXRlZCB0byBlQlBGLiBJIGtub3cgdGhlIGVCUEYgaW5mcmFzdHJ1Y3R1cmUgaXMgY3JpdGljYWwgYW5kIGl0cyBjb25maWd1cmF0aW9uIGlzIGxpa2VseSB0byBiZSBleHBvc2VkIHZpYSB0aGUgYnVpbGQgcHJvY2Vzcy4gVGhpbmtpbmcgYWJvdXQgaXQgbG9naWNhbGx5LCB3aGVyZSB3b3VsZCBJIGZpcnN0IGxvb2sgZm9yIHRoZSBwcmltYXJ5IGVCUEYgY29uZmlndXJhdGlvbiBvcHRpb25zP1xuXG5UaGUgYEtjb25maWdgIGZpbGVzIGFyZSB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbSBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24sIGFuZCwgc3BlY2lmaWNhbGx5LCB0aGUgb25lIGluIHRoZSBga2VybmVsL2JwZi9gIGRpcmVjdG9yeSBtYWtlcyB0aGUgbW9zdCBzZW5zZS4gSXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBnaXZlbiBpdHMgbG9jYXRpb24gd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIGl0cyBhc3NvY2lhdGlvbiB3aXRoIGVCUEYuIFRoZSBoaWVyYXJjaHkgc2hvdWxkIHByb3ZpZGUgbWUgd2l0aCB0aGUgc3BlY2lmaWMgZmxhZ3MgYW5kIG9wdGlvbnMgSSBuZWVkIHRvIGV4YW1pbmUuIEknbGwgc3RhcnQgZGlnZ2luZyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY3MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjQwLjk5MTUyODQwNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ1MzYyOTg2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6NDMuNDQ1MTY1Njc0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTkxOTk4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCUEYgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEJQRiAoQmVya2VsZXkgUGFja2V0IEZpbHRlcikgY29uZmlndXJhdGlvbiBpcyBzdHJ1Y3R1cmVkLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IHRoZSBga2VybmVsL2JwZi9LY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDI3LiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHByb2JhYmx5IGRlZmluZWQgc29tZXdoZXJlIGluIHRoYXQgYXJlYS4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBmb3VuZGF0aW9uYWwgc2V0dGluZ3MgcmVsYXRlZCB0byBlbmFibGluZyBvciBkaXNhYmxpbmcgQlBGIGZ1bmN0aW9uYWxpdHksIG1heWJlIHNvbWUgb2YgdGhlIGNvcmUgZmVhdHVyZSB0b2dnbGVzLCBvciBwZXJoYXBzIHRoZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMuIEkgd2FudCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2Ygd2hhdCdzICpjb25maWd1cmFibGUqIGFuZCBob3cgdGhhdCBjb25maWd1cmFiaWxpdHkgaXMgcHJlc2VudGVkLiBMZXQncyBzZWUgd2hhdCdzIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5ODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODo0Ni41NDQzNjk0NzJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL2JwZi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdCMgVXNlZCBieSBhcmNocyB0byB0ZWxsIHRoYXQgdGhleSB3YW50IHRoZSBCUEYgSklUIGNvbXBpbGVyIGVuYWJsZWQgYnlcXG4gIDIxOlxcdCMgZGVmYXVsdCBmb3Iga2VybmVscyB0aGF0IHdlcmUgY29tcGlsZWQgd2l0aCBCUEYgSklUIHN1cHBvcnQuXFxuICAyMjpcXHRjb25maWcgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVFxcbiAgMjM6XFx0XFx0Ym9vbFxcbiAgMjQ6XFx0XFxuICAyNTpcXHRtZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgQlBGX1NZU0NBTExcXG4gIDI4OlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG4gIDI5OlxcdFxcdHNlbGVjdCBCUEZcXG4gIDMwOlxcdFxcdHNlbGVjdCBJUlFfV09SS1xcbiAgMzE6XFx0XFx0c2VsZWN0IE5FRURfVEFTS1NfUkNVXFxuICAzMjpcXHRcXHRzZWxlY3QgVEFTS1NfVFJBQ0VfUkNVXFxuICAzMzpcXHRcXHRzZWxlY3QgQklOQVJZX1BSSU5URlxcbiAgMzQ6XFx0XFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcXG4gIDM1OlxcdFxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbiAgMzY6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcXG4gIDM3OlxcdFxcdGRlZmF1bHQgblxcbiAgMzg6XFx0XFx0aGVscFxcbiAgMzk6XFx0XFx0ICBFbmFibGUgdGhlIGJwZigpIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHRvIG1hbmlwdWxhdGUgQlBGIHByb2dyYW1zXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjQ2LjU0NDQ0NzMzMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDMzNDczODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBjb25jZXJuaW5nIHRoZSBibG9vbSBmaWx0ZXIgbWFwIGltcGxlbWVudGF0aW9uIGZvciBCUEYgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQgbG9va3MgbGlrZSBgQlBGX1NZU0NBTExgIGlzIHRoZSBvbmx5IGNvbmZpZyBJJ2xsIG5lZWQgdG8gY29uY2VybiBteXNlbGYgd2l0aC4gVGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyBhIGZpeCBmb3IgYSBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpbiBgYmxvb21fbWFwX2FsbG9jYCB3aGVuIGNhbGN1bGF0aW5nIGBiaXRzZXRfYnl0ZXNgLCBhbG9uZyB3aXRoIGNvcnJlY3Rpb25zIHRvIHByZXZlbnQgbmVnYXRpdmUgb2Zmc2V0cyBpbiBgYmxvb21fdGVzdF9iaXRgIGFuZCBgYmxvb21fc2V0X2JpdGAgc3BlY2lmaWNhbGx5IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLlxuXG5HaXZlbiB0aGVzZSBtb2RpZmljYXRpb25zLCBwYXJ0aWN1bGFybHkgdGhlIGNoYW5nZXMgdG8gY29yZSBiaXQgbWFuaXB1bGF0aW9uIHdpdGhpbiB0aGUgYmxvb20gZmlsdGVyLCBmdXp6aW5nIHRoaXMgaXMgYW4gYWJzb2x1dGUgbXVzdC4gVGhlcmUncyBwb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIGVkZ2UgY2FzZXMsIGFuZCwgZ2l2ZW4gdGhlIEJQRiBjb250ZXh0LCBldmVuIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBpZiB0aGVzZSBiaXQgb3BlcmF0aW9ucyBhcmUgbWlzaGFuZGxlZC5cblxuVGhlcmVmb3JlLCBJJ2xsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIEknbGwgYWxzbyBkZWZpbmUgdGhlIGBGb2N1c1N5bWJvbHNgIHRvIGluY2x1ZGUgdGhlIGtleSBmdW5jdGlvbnMgaW1wYWN0ZWQ6IGBcImJsb29tX21hcF9hbGxvY1wiYCwgYFwiYmxvb21fbWFwX3B1c2hfZWxlbVwiYCwgYW5kIGBcImJsb29tX21hcF9wZWVrX2VsZW1cImAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhlIHByb2JsZW1hdGljIGNhbGN1bGF0aW9ucyBhbmQgYml0IG9wZXJhdGlvbnMuIEFzIGNvbmZpcm1lZCBhYm92ZSwgSSB3aWxsIGVuYWJsZSBvbmx5IHRoZSBgQlBGX1NZU0NBTExgIGNvbmZpZy5cblxuVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkOiB0aGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgYmxvb20gZmlsdGVyIG1hcCBpbXBsZW1lbnRhdGlvbi4gSXQncyB0b3VjaGluZyB0aGUgYml0c2V0IHNpemUgY2FsY3VsYXRpb24gYW5kIGJpdCBvcGVyYXRpb25zLCBhbmQgaW4gYSB3YXkgdGhhdCBpcyBzcGVjaWZpYyB0byAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gSXQncyBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgaXQgaXMgcmVhY2hhYmxlLCB0aGVyZWZvcmUsIGl0IG5lZWRzIHRvIGJlIGZ1enplZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0ODEsIk91dHB1dFRva2VucyI6MTA3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6NTEuNTc3OTI0NzM5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5NDE0NzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsb29tX21hcF9hbGxvY1wiLFxuICAgIFwiYmxvb21fbWFwX3B1c2hfZWxlbVwiLFxuICAgIFwiYmxvb21fbWFwX3BlZWtfZWxlbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgYmxvb20gZmlsdGVyIG1hcCBpbXBsZW1lbnRhdGlvbiwgZml4aW5nIGJpdHNldCBzaXplIGNhbGN1bGF0aW9uIGFuZCBiaXQgb3BlcmF0aW9ucyBmb3IgMzItYml0IGFyY2hpdGVjdHVyZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibG9vbV9tYXBfYWxsb2NcIixcbiAgICBcImJsb29tX21hcF9wdXNoX2VsZW1cIixcbiAgICBcImJsb29tX21hcF9wZWVrX2VsZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgaW1wbGVtZW50YXRpb24sIGZpeGluZyBiaXRzZXQgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgYml0IG9wZXJhdGlvbnMgZm9yIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowpgcsx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 10:38:21 +0000 UTC FinishedAt: 2026-08-02 11:18:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "fdeba03fea78407a8c52faa99177c9f7f29f90eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "fdeba03fea78407a8c52faa99177c9f7f29f90eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bloom_map_alloc", "bloom_map_push_elem", "bloom_map_peek_elem" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ymxvb21fbWFwX2FsbG9jJiMzNDssCiAgICAmIzM0O2Jsb29tX21hcF9wdXNoX2VsZW0mIzM0OywKICAgICYjMzQ7Ymxvb21fbWFwX3BlZWtfZWxlbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgaW1wbGVtZW50YXRpb24sIGZpeGluZyBiaXRzZXQgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgYml0IG9wZXJhdGlvbnMgZm9yIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTUwNzJlODU3OTYwODhiZWQ1YzdjNDVkZjA0Y2M2NThiNjZjOTE4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMTE6MTg6MDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYyBiL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcbmluZGV4IGI3MzMzNmM5NzZiN2MuLmYxMTFkMjY5OTBlY2UgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXG5AQCAtMzMsNiAmIzQzOzMzLDIyIEBAIHN0YXRpYyB1MzIgaGFzaChzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb20sIHZvaWQgKnZhbHVlLFxuIFx0cmV0dXJuIGggXHUwMDI2IGJsb29tLVx1MDAzZWJpdHNldF9tYXNrO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogU29tZSAzMi1iaXQgYXJjaGl0ZWN0dXJlcyB0YWtlIGEgc2lnbmVkIGxvbmcgYml0IG51bWJlciBpbiBiaXRvcHMuIFNwbGl0XG4mIzQzOyAqIHRoZSBmdWxsIHUzMiBoYXNoIGludG8gYSB3b3JkIHBvaW50ZXIgYW5kIGFuIGluLXdvcmQgYml0IG51bWJlciBzbyB1cHBlclxuJiM0MzsgKiBoYWxmIGhhc2hlcyBjYW5ub3QgYmVjb21lIG5lZ2F0aXZlIG9mZnNldHMuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgYm9vbCBibG9vbV90ZXN0X2JpdChzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb20sIHUzMiBiaXQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gdGVzdF9iaXQoYml0ICUgQklUU19QRVJfTE9ORyxcbiYjNDM7XHRcdFx0Ymxvb20tXHUwMDNlYml0c2V0ICYjNDM7IEJJVF9XT1JEKGJpdCkpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBibG9vbV9zZXRfYml0KHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSwgdTMyIGJpdClcbiYjNDM7e1xuJiM0MztcdHNldF9iaXQoYml0ICUgQklUU19QRVJfTE9ORywgYmxvb20tXHUwMDNlYml0c2V0ICYjNDM7IEJJVF9XT1JEKGJpdCkpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBsb25nIGJsb29tX21hcF9wZWVrX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpXG4ge1xuIFx0c3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tID1cbkBAIC00MSw3ICYjNDM7NTcsNyBAQCBzdGF0aWMgbG9uZyBibG9vbV9tYXBfcGVla19lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYmxvb20tXHUwMDNlbnJfaGFzaF9mdW5jczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0aCA9IGhhc2goYmxvb20sIHZhbHVlLCBtYXAtXHUwMDNldmFsdWVfc2l6ZSwgaSk7XG4tXHRcdGlmICghdGVzdF9iaXQoaCwgYmxvb20tXHUwMDNlYml0c2V0KSlcbiYjNDM7XHRcdGlmICghYmxvb21fdGVzdF9iaXQoYmxvb20sIGgpKVxuIFx0XHRcdHJldHVybiAtRU5PRU5UO1xuIFx0fVxuIFxuQEAgLTU5LDcgJiM0Mzs3NSw3IEBAIHN0YXRpYyBsb25nIGJsb29tX21hcF9wdXNoX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUsIHU2NCBmbGFncylcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJsb29tLVx1MDAzZW5yX2hhc2hfZnVuY3M7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGggPSBoYXNoKGJsb29tLCB2YWx1ZSwgbWFwLVx1MDAzZXZhbHVlX3NpemUsIGkpO1xuLVx0XHRzZXRfYml0KGgsIGJsb29tLVx1MDAzZWJpdHNldCk7XG4mIzQzO1x0XHRibG9vbV9zZXRfYml0KGJsb29tLCBoKTtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuQEAgLTk0LDkgJiM0MzsxMTAsMTAgQEAgc3RhdGljIGludCBibG9vbV9tYXBfYWxsb2NfY2hlY2sodW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXG4gc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG4ge1xuLVx0dTMyIGJpdHNldF9ieXRlcywgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7XG4mIzQzO1x0dTMyIGJpdHNldF9tYXNrLCBucl9oYXNoX2Z1bmNzLCBucl9iaXRzO1xuIFx0aW50IG51bWFfbm9kZSA9IGJwZl9tYXBfYXR0cl9udW1hX25vZGUoYXR0cik7XG4gXHRzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb207XG4mIzQzO1x0dTY0IGJpdHNldF9ieXRlcztcbiBcbiBcdGlmIChhdHRyLVx1MDAzZWtleV9zaXplICE9IDAgfHwgYXR0ci1cdTAwM2V2YWx1ZV9zaXplID09IDAgfHxcbiBcdCAgICBhdHRyLVx1MDAzZW1heF9lbnRyaWVzID09IDAgfHxcbkBAIC0xMjcsMjEgJiM0MzsxNDQsMTYgQEAgc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG4gXHRpZiAoY2hlY2tfbXVsX292ZXJmbG93KGF0dHItXHUwMDNlbWF4X2VudHJpZXMsIG5yX2hhc2hfZnVuY3MsIFx1MDAyNm5yX2JpdHMpIHx8XG4gXHQgICAgY2hlY2tfbXVsX292ZXJmbG93KG5yX2JpdHMgLyA1LCAodTMyKTcsIFx1MDAyNm5yX2JpdHMpIHx8XG4gXHQgICAgbnJfYml0cyBcdTAwM2UgKDFVTCBcdTAwM2NcdTAwM2MgMzEpKSB7XG4tXHRcdC8qIFRoZSBiaXQgYXJyYXkgc2l6ZSBpcyAyXjMyIGJpdHMgYnV0IHRvIGF2b2lkIG92ZXJmbG93aW5nIHRoZVxuLVx0XHQgKiB1MzIsIHdlIHVzZSBVMzJfTUFYLCB3aGljaCB3aWxsIHJvdW5kIHVwIHRvIHRoZSBlcXVpdmFsZW50XG4tXHRcdCAqIG51bWJlciBvZiBieXRlc1xuLVx0XHQgKi9cbi1cdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhVMzJfTUFYKTtcbiBcdFx0Yml0c2V0X21hc2sgPSBVMzJfTUFYO1xuIFx0fSBlbHNlIHtcbiBcdFx0aWYgKG5yX2JpdHMgXHUwMDNjPSBCSVRTX1BFUl9MT05HKVxuIFx0XHRcdG5yX2JpdHMgPSBCSVRTX1BFUl9MT05HO1xuIFx0XHRlbHNlXG4gXHRcdFx0bnJfYml0cyA9IHJvdW5kdXBfcG93X29mX3R3byhucl9iaXRzKTtcbi1cdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhucl9iaXRzKTtcbiBcdFx0Yml0c2V0X21hc2sgPSBucl9iaXRzIC0gMTtcbiBcdH1cbiBcbiYjNDM7XHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKCh1NjQpYml0c2V0X21hc2sgJiM0MzsgMSk7XG4gXHRiaXRzZXRfYnl0ZXMgPSByb3VuZHVwKGJpdHNldF9ieXRlcywgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTtcbiBcdGJsb29tID0gYnBmX21hcF9hcmVhX2FsbG9jKHNpemVvZigqYmxvb20pICYjNDM7IGJpdHNldF9ieXRlcywgbnVtYV9ub2RlKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibG9vbV9tYXBfYWxsb2MmIzM0OywKICAgICYjMzQ7Ymxvb21fbWFwX3B1c2hfZWxlbSYjMzQ7LAogICAgJiMzNDtibG9vbV9tYXBfcGVla19lbGVtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgYmxvb20gZmlsdGVyIG1hcCBpbXBsZW1lbnRhdGlvbiwgZml4aW5nIGJpdHNldCBzaXplIGNhbGN1bGF0aW9uIGFuZCBiaXQgb3BlcmF0aW9ucyBmb3IgMzItYml0IGFyY2hpdGVjdHVyZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNTA3MmU4NTc5NjA4OGJlZDVjN2M0NWRmMDRjYzY1OGI2NmM5MThjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAxMToxODowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMgYi9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jCmluZGV4IGI3MzMzNmM5NzZiN2MuLmYxMTFkMjY5OTBlY2UgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYwpAQCAtMzMsNiAmIzQzOzMzLDIyIEBAIHN0YXRpYyB1MzIgaGFzaChzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb20sIHZvaWQgKnZhbHVlLAogCXJldHVybiBoICZhbXA7IGJsb29tLSZndDtiaXRzZXRfbWFzazsKIH0KIAomIzQzOy8qCiYjNDM7ICogU29tZSAzMi1iaXQgYXJjaGl0ZWN0dXJlcyB0YWtlIGEgc2lnbmVkIGxvbmcgYml0IG51bWJlciBpbiBiaXRvcHMuIFNwbGl0CiYjNDM7ICogdGhlIGZ1bGwgdTMyIGhhc2ggaW50byBhIHdvcmQgcG9pbnRlciBhbmQgYW4gaW4td29yZCBiaXQgbnVtYmVyIHNvIHVwcGVyCiYjNDM7ICogaGFsZiBoYXNoZXMgY2Fubm90IGJlY29tZSBuZWdhdGl2ZSBvZmZzZXRzLgomIzQzOyAqLwomIzQzO3N0YXRpYyBib29sIGJsb29tX3Rlc3RfYml0KHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSwgdTMyIGJpdCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0ZXN0X2JpdChiaXQgJSBCSVRTX1BFUl9MT05HLAomIzQzOwkJCWJsb29tLSZndDtiaXRzZXQgJiM0MzsgQklUX1dPUkQoYml0KSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGJsb29tX3NldF9iaXQoc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tLCB1MzIgYml0KQomIzQzO3sKJiM0MzsJc2V0X2JpdChiaXQgJSBCSVRTX1BFUl9MT05HLCBibG9vbS0mZ3Q7Yml0c2V0ICYjNDM7IEJJVF9XT1JEKGJpdCkpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBsb25nIGJsb29tX21hcF9wZWVrX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpCiB7CiAJc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tID0KQEAgLTQxLDcgJiM0Mzs1Nyw3IEBAIHN0YXRpYyBsb25nIGJsb29tX21hcF9wZWVrX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpCiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgYmxvb20tJmd0O25yX2hhc2hfZnVuY3M7IGkmIzQzOyYjNDM7KSB7CiAJCWggPSBoYXNoKGJsb29tLCB2YWx1ZSwgbWFwLSZndDt2YWx1ZV9zaXplLCBpKTsKLQkJaWYgKCF0ZXN0X2JpdChoLCBibG9vbS0mZ3Q7Yml0c2V0KSkKJiM0MzsJCWlmICghYmxvb21fdGVzdF9iaXQoYmxvb20sIGgpKQogCQkJcmV0dXJuIC1FTk9FTlQ7CiAJfQogCkBAIC01OSw3ICYjNDM7NzUsNyBAQCBzdGF0aWMgbG9uZyBibG9vbV9tYXBfcHVzaF9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlLCB1NjQgZmxhZ3MpCiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgYmxvb20tJmd0O25yX2hhc2hfZnVuY3M7IGkmIzQzOyYjNDM7KSB7CiAJCWggPSBoYXNoKGJsb29tLCB2YWx1ZSwgbWFwLSZndDt2YWx1ZV9zaXplLCBpKTsKLQkJc2V0X2JpdChoLCBibG9vbS0mZ3Q7Yml0c2V0KTsKJiM0MzsJCWJsb29tX3NldF9iaXQoYmxvb20sIGgpOwogCX0KIAogCXJldHVybiAwOwpAQCAtOTQsOSAmIzQzOzExMCwxMCBAQCBzdGF0aWMgaW50IGJsb29tX21hcF9hbGxvY19jaGVjayh1bmlvbiBicGZfYXR0ciAqYXR0cikKIAogc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpCiB7Ci0JdTMyIGJpdHNldF9ieXRlcywgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7CiYjNDM7CXUzMiBiaXRzZXRfbWFzaywgbnJfaGFzaF9mdW5jcywgbnJfYml0czsKIAlpbnQgbnVtYV9ub2RlID0gYnBmX21hcF9hdHRyX251bWFfbm9kZShhdHRyKTsKIAlzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb207CiYjNDM7CXU2NCBiaXRzZXRfYnl0ZXM7CiAKIAlpZiAoYXR0ci0mZ3Q7a2V5X3NpemUgIT0gMCB8fCBhdHRyLSZndDt2YWx1ZV9zaXplID09IDAgfHwKIAkgICAgYXR0ci0mZ3Q7bWF4X2VudHJpZXMgPT0gMCB8fApAQCAtMTI3LDIxICYjNDM7MTQ0LDE2IEBAIHN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqYmxvb21fbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKQogCWlmIChjaGVja19tdWxfb3ZlcmZsb3coYXR0ci0mZ3Q7bWF4X2VudHJpZXMsIG5yX2hhc2hfZnVuY3MsICZhbXA7bnJfYml0cykgfHwKIAkgICAgY2hlY2tfbXVsX292ZXJmbG93KG5yX2JpdHMgLyA1LCAodTMyKTcsICZhbXA7bnJfYml0cykgfHwKIAkgICAgbnJfYml0cyAmZ3Q7ICgxVUwgJmx0OyZsdDsgMzEpKSB7Ci0JCS8qIFRoZSBiaXQgYXJyYXkgc2l6ZSBpcyAyXjMyIGJpdHMgYnV0IHRvIGF2b2lkIG92ZXJmbG93aW5nIHRoZQotCQkgKiB1MzIsIHdlIHVzZSBVMzJfTUFYLCB3aGljaCB3aWxsIHJvdW5kIHVwIHRvIHRoZSBlcXVpdmFsZW50Ci0JCSAqIG51bWJlciBvZiBieXRlcwotCQkgKi8KLQkJYml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhVMzJfTUFYKTsKIAkJYml0c2V0X21hc2sgPSBVMzJfTUFYOwogCX0gZWxzZSB7CiAJCWlmIChucl9iaXRzICZsdDs9IEJJVFNfUEVSX0xPTkcpCiAJCQlucl9iaXRzID0gQklUU19QRVJfTE9ORzsKIAkJZWxzZQogCQkJbnJfYml0cyA9IHJvdW5kdXBfcG93X29mX3R3byhucl9iaXRzKTsKLQkJYml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUyhucl9iaXRzKTsKIAkJYml0c2V0X21hc2sgPSBucl9iaXRzIC0gMTsKIAl9CiAKJiM0MzsJYml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUygodTY0KWJpdHNldF9tYXNrICYjNDM7IDEpOwogCWJpdHNldF9ieXRlcyA9IHJvdW5kdXAoYml0c2V0X2J5dGVzLCBzaXplb2YodW5zaWduZWQgbG9uZykpOwogCWJsb29tID0gYnBmX21hcF9hcmVhX2FsbG9jKHNpemVvZigqYmxvb20pICYjNDM7IGJpdHNldF9ieXRlcywgbnVtYV9ub2RlKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDE5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBCbG9vbSBGaWx0ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGluZyBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2AuIEltbWVkaWF0ZWx5LCBJIHNlZSBpdCYjMzk7cyBtb2RpZnlpbmcgY29yZSBmdW5jdGlvbnM6IGBibG9vbV9tYXBfcGVla19lbGVtYCwgYGJsb29tX21hcF9wdXNoX2VsZW1gLCBhbmQgYGJsb29tX21hcF9hbGxvY2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gSSBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24uIEl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCAzMi1iaXQgYXJjaGl0ZWN0dXJlIGlzc3VlIHdpdGggdGhvc2UgbmV3IGBibG9vbV90ZXN0X2JpdGAgYW5kIGBibG9vbV9zZXRfYml0YCBmdW5jdGlvbnMsIHdoaWNoIGFyZSBsaWtlbHkgd3JhcHBlcnMgdG8gcHJldmVudCBuZWdhdGl2ZSBvZmZzZXRzIHdoZW4gdXNpbmcgYHRlc3RfYml0YCBhbmQgYHNldF9iaXRgLiBTbWFydC4gQWxzbywgdGhleSBhcmUgdXBkYXRpbmcgYGJpdHNldF9ieXRlc2AgdG8gYHU2NGAgaW4gYGJsb29tX21hcF9hbGxvY2Agd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIGhhbmRsaW5nIGxhcmdlciBibG9vbSBmaWx0ZXJzIGFuZCBpbmNsdWRlcyBhIGZpeCBmb3IgcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIGNhbGN1bGF0aW9uLCB3aGljaCBpcyBhIGNvbW1vbiBhbmQgY3JpdGljYWwgc2VjdXJpdHkgY29uc2lkZXJhdGlvbiBpbiB0aGVzZSBraW5kcyBvZiBkYXRhIHN0cnVjdHVyZXMuCgpUaGlzIGlzIGNsZWFybHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgaW1wbGVtZW50YXRpb24uIEdpdmVuIHRoYXQsIGZ1enppbmcgaXMgYW4gYWJzb2x1dGUgbXVzdC4gV2UgY2FuJiMzOTt0IGxldCBhIHN1YnRsZSBvdmVyZmxvdyBvciBhbiBvZmYtYnktb25lIGVycm9yIHNsaXAgdGhyb3VnaC4gSSBuZWVkIHRvIGdldCB0aGlzIGNvdmVyZWQgaW4gdGhlIGZ1enppbmcgcmVnaW1lLgoKTm93LCBsZXQmIzM5O3MgZmlndXJlIG91dCB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSByZWxldmFudCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgZ290IHRoZSBCUEYgQmxvb20gZmlsdGVyIG1hcCBlbmFibGVkIHRvIHRlc3QgaXQgcHJvcGVybHkuIE15IGd1dCB0ZWxscyBtZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUga2V5IG9uZS4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBieSBjaGVja2luZyB0aGUgYGtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNgIHNvdXJjZSB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlLiBKdXN0IG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYWN0dWFsbHkgZW5hYmxlZCBpbiB0aGUgYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Ymxvb21fbWFwX2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz05ND1zdGF0aWMgaW50IGJsb29tX21hcF9nZXRfbmV4dF9rZXkoc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqa2V5LCB2b2lkICpuZXh0X2tleSlcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTk5LS8qIENhbGxlZCBmcm9tIHN5c2NhbGwgKi9cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MTAwOnN0YXRpYyBpbnQgYmxvb21fbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xMDEte1xuLS1cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMTEwLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoxMTE6c3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTExMi17XG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0yMTY9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGJsb29tX2ZpbHRlcl9tYXBfb3BzID0ge1xua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0yMTctXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjIxODpcdC5tYXBfYWxsb2NfY2hlY2sgPSBibG9vbV9tYXBfYWxsb2NfY2hlY2ssXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjIxOTpcdC5tYXBfYWxsb2MgPSBibG9vbV9tYXBfYWxsb2MsXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIyMC1cdC5tYXBfZnJlZSA9IGJsb29tX21hcF9mcmVlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NjYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gdGhlIEJsb29tIEZpbHRlciBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYmxvb20gZmlsdGVyIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IHRoZSBgTWFrZWZpbGVgIGluIGBrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29kZSBpcyBiZWluZyBidWlsdCBhbmQgbGlua2VkLCB3aGF0IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgZ2VuZXJhbGx5IGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIga2VybmVsIGJ1aWxkIHByb2Nlc3MuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgdGhvcm91Z2ggYW5hbHlzaXMuIEkmIzM5O20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgb3B0aW1pemF0aW9uIGZsYWdzLCBhbnkgc3BlY2lmaWMgY29tcGlsYXRpb24gc2V0dGluZ3MgcmVsZXZhbnQgdG8gQlBGLCBhbmQgd2hldGhlciBpdCYjMzk7cyBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5IGxpbmtlZC4gQmFzaWNhbGx5LCBJIG5lZWQgYSByb2FkbWFwIGJlZm9yZSBJIGNhbiByZWFsbHkgZGlnIGludG8gdGhlIGNvZGUmIzM5O3MgZnVuY3Rpb25hbGl0eS4gTXkgaW5pdGlhbCBxdWVzdGlvbnMgYXJlOiBob3cgaXMgdGhlIGNvZGUgYmVpbmcgY29tcGlsZWQ/IFdoYXQgb3RoZXIgbW9kdWxlcyBtaWdodCBpdCBkZXBlbmQgb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lhbCBidWlsZCBkaXJlY3RpdmVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gVGhpcyB3aWxsIGhlbHAgc2V0IHRoZSBzdGFnZSBmb3IgYSBwcm9wZXIgaW4tZGVwdGggcmV2aWV3LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jsb29tX2ZpbHRlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlPTEwPW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM5NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2YgdGhpcy4KCioqVHJhY2luZyB0aGUgQlBGIEJsb29tIEZpbHRlciBBbGxvY2F0aW9uIFBhdGgqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBkaXZpbmcgaW50byB0aGUgQlBGIGJsb29tIGZpbHRlciBpbXBsZW1lbnRhdGlvbi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gYENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IHRvIGVuYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSwgb3IgYXQgbGVhc3QgdGhlIHBhcnQgdGhhdCB0cmlnZ2VycyBteSBpbnZlc3RpZ2F0aW9uLgoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIGtleWluZyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBibG9vbV9tYXBfYWxsb2NgLCBgYmxvb21fbWFwX3B1c2hfZWxlbWAsIGFuZCBgYmxvb21fbWFwX3BlZWtfZWxlbWAuIFRob3NlIHNlZW0gbGlrZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgZm9yIHRoZSBibG9vbSBmaWx0ZXIgbWFuYWdlbWVudC4KCkZpcnN0LCBsZXQmIzM5O3MgdmVyaWZ5IGlmIGBibG9vbV9tYXBfYWxsb2NgIGlzIGRlZmluZWQgYXMgYHN0YXRpY2AuIFllcywgZ29vZC4gTXkgYXNzdW1wdGlvbiBpcyB0aGF0IGl0IHNob3VsZCBiZS4gQnV0IHdhaXQsIHRoaXMgaXMgaW50ZXJlc3RpbmcuIEV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYywgaXQmIzM5O3MgYWxzbyBhc3NpZ25lZCB0byBgYmxvb21fZmlsdGVyX21hcF9vcHMubWFwX2FsbG9jYC4gVGhhdCYjMzk7cyB0aGUgZnVuY3Rpb24gcG9pbnRlciBob29rLiBUaGlzIG1lYW5zIGBibG9vbV9tYXBfYWxsb2NgIHdpbGwgYmUgYWNjZXNzZWQgaW5kaXJlY3RseSwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIHRoZSBvdmVyYWxsIGRlc2lnbi4KCk5vdywgd2hlcmUmIzM5O3MgdGhlIGFjdHVhbCBlbnRyeSBwb2ludCBmb3IgYWxsIG9mIHRoaXM/IEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgYGJwZl9tYXBfYWxsb2NgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBsaWtlbHkgdGhlIG1haW4gQlBGIHN5c3RlbSBjYWxsIGhhbmRsaW5nIHRoZSBtZW1vcnkgYWxsb2NhdGlvbi4gVGhlIGdvYWwgaXMgdG8gc2VlIGhvdyB0aGUgYWxsb2NhdGlvbiBmaW5hbGx5IGdldHMgdHJpZ2dlcmVkLiBTbywgSSBuZWVkIHRvIGNoZWNrIGBrZXJuZWwvYnBmL3N5c2NhbGwuY2AgZm9yIGFueSBmdW5jdGlvbiBuYW1lZCBgbWFwX2FsbG9jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBhY3R1YWwgc3lzdGVtIGNhbGwgaW50ZXJmYWNlIGZvciBCUEYgbWFwIGFsbG9jYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFwX2FsbG9jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9zeXNjYWxsLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9zeXNjYWxsLmM9MTE1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBicGZfbWFwX29mZmxvYWRfb3BzID0ge1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMTE2LVx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTE3Olx0Lm1hcF9hbGxvYyA9IGJwZl9tYXBfb2ZmbG9hZF9tYXBfYWxsb2MsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xMTgtXHQubWFwX2ZyZWUgPSBicGZfbWFwX29mZmxvYWRfbWFwX2ZyZWUsXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9NDM3PXZvaWQgYnBmX21hcF9pbml0X2Zyb21fYXR0cihzdHJ1Y3QgYnBmX21hcCAqbWFwLCB1bmlvbiBicGZfYXR0ciAqYXR0cilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDctXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo0NDg6c3RhdGljIGludCBicGZfbWFwX2FsbG9jX2lkKHN0cnVjdCBicGZfbWFwICptYXApXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDkte1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTU2ND12b2lkICpicGZfbWFwX2t2Y2FsbG9jKHN0cnVjdCBicGZfbWFwICptYXAsIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NzYtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo1Nzc6dm9pZCBfX3BlcmNwdSAqYnBmX21hcF9hbGxvY19wZXJjcHUoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcCwgc2l6ZV90IHNpemUsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NzgtXHRcdFx0XHQgICAgc2l6ZV90IGFsaWduLCBnZnBfdCBmbGFncylcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz02MDY9c3RhdGljIHN0cnVjdCBwYWdlICpfX2JwZl9hbGxvY19wYWdlKGludCBuaWQpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtNjE2LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6NjE3OmludCBicGZfbWFwX2FsbG9jX3BhZ2VzKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXAsIGludCBuaWQsXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02MTgtXHRcdFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgc3RydWN0IHBhZ2UgKipwYWdlcylcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz0xMzcxPXN0YXRpYyBpbnQgbWFwX2NyZWF0ZV9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0ciwgYnBmcHRyX3QgdWF0dHIsIHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTQzMy1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE0MzQ6XHRpZiAob3BzLVx1MDAzZW1hcF9hbGxvY19jaGVjaykge1xua2VybmVsL2JwZi9zeXNjYWxsLmM6MTQzNTpcdFx0ZXJyID0gb3BzLVx1MDAzZW1hcF9hbGxvY19jaGVjayhhdHRyKTtcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MzYtXHRcdGlmIChlcnIpXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTUyMi1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE1MjM6XHRtYXAgPSBvcHMtXHUwMDNlbWFwX2FsbG9jKGF0dHIpO1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMTUyNC1cdGlmIChJU19FUlIobWFwKSkge1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTE2MjY9c3RhdGljIGludCBtYXBfY3JlYXRlKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl9jb21tb25fYXR0ciAqYXR0cl9jb21tb24sXG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTY2MS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE2NjI6XHRlcnIgPSBicGZfbWFwX2FsbG9jX2lkKG1hcCk7XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNjYzLVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNjcyLVx0XHQgKiBicGZfbWFwX3B1dF93aXRoX3VyZWYoKSBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgYWJvdmVcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE2NzM6XHRcdCAqIGJwZl9tYXBfYWxsb2NfaWQoKSBoYXMgcHVibGlzaGVkIHRoZSBtYXBcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE2NzQtXHRcdCAqIHRvIHRoZSB1c2Vyc3BhY2UgYW5kIHRoZSB1c2Vyc3BhY2UgbWF5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgwMAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWNvbnN0cnVjdGluZyB0aGUgQmxvb20gRmlsdGVyIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBibG9vbSBmaWx0ZXIgaW1wbGVtZW50YXRpb24sIGFuZCB0aGUgaW5pdGlhbCBxdWVzdGlvbiBpcyBhbHdheXMsICYjMzQ7V2hlcmUgZG9lcyB0aGlzIHRoaW5nICpzdGFydCo/JiMzNDsgTXkgZmlyc3QgdGhvdWdodCB3YXMgYG1hcF9jcmVhdGVgIG9yIGBtYXBfY3JlYXRlX2FsbG9jYCwgc2luY2UgdGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBlbnRyeSBwb2ludCBmb3IgQlBGIG1hcCBjcmVhdGlvbi4gQnV0IGhvbGQgb24sIGBtYXBfY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIEFoLCByaWdodC4gSSByZW1lbWJlciBub3csIHRoZSAqcmVhbCogc3lzY2FsbCBlbnRyeSBwb2ludCBmb3IgYWxsIHRoaW5ncyBCUEYgaXMgYHN5c19icGZgLgoKUmlnaHQsIHNvIHRoYXQgbmFycm93cyBpdCBkb3duLCBidXQgSSBuZWVkIHRoZSBzcGVjaWZpYyBvcGVyYXRpb25zIHRvIHRyYWNlIGhvdyB0aGVzZSBibG9vbSBmaWx0ZXJzIGdldCBwb3B1bGF0ZWQgYW5kIHF1ZXJpZWQuIExvb2tpbmcgYmFjaywgSSByZWNhbGwgdGhhdCBgYnBmX21hcF91cGRhdGVfZWxlbWAgYW5kIGBicGZfbWFwX2xvb2t1cF9lbGVtYCBhcmUgZ2VuZXJhbGx5IHRoZSBzeXNjYWxsIGVudHJ5IHBvaW50cyBmb3IgJiMzNDtwdXNoaW5nJiMzNDsgYW5kICYjMzQ7cGVla2luZyYjMzQ7IGRhdGEgaW50byBtYXBzLiBCdXQgbGV0JiMzOTtzIGNsYXJpZnkgdGhhdCB0aGUgZnVuY3Rpb24gYGJsb29tX21hcF9wdXNoX2VsZW1gIHNlZW1zIHRvIGJlIHRoZSBvbmUgYXNzaWduZWQgaW50ZXJuYWxseSB0byBoYW5kbGUgdGhlICYjMzQ7cHVzaCYjMzQ7IG9wZXJhdGlvbiwgc3BlY2lmaWNhbGx5IG1hcHBlZCB0byBgbWFwX3B1c2hfZWxlbWAuCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMgb2YgdGhlIGJsb29tIGZpbHRlciBpbXBsZW1lbnRhdGlvbi4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZXhwbG9yZSBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2Agc2luY2UgdGhhdCYjMzk7cyB3aGVyZSB0aGUgYWN0dWFsIGJsb29tIGZpbHRlciBsb2dpYyBpcyBsaWtlbHkgZGVmaW5lZCwgYW5kIHRoZSByZWxldmFudCBgYmxvb21fZmlsdGVyX21hcF9vcHNgIHN0cnVjdHVyZSBzaG91bGQgYmUgdGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBnb2luZyBvbiB1bmRlciB0aGUgaG9vZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Ymxvb21fZmlsdGVyX21hcF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTIxNT1CVEZfSURfTElTVF9TSU5HTEUoYnBmX2Jsb29tX21hcF9idGZfaWRzLCBzdHJ1Y3QsIGJwZl9ibG9vbV9maWx0ZXIpXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjIxNjpjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYmxvb21fZmlsdGVyX21hcF9vcHMgPSB7XG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIxNy1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM4MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgdGhlIGBibG9vbV9maWx0ZXJfbWFwX29wc2AgRnVuY3Rpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0JiMzOTtzIGFjdHVhbGx5ICppbiogYGJsb29tX2ZpbHRlcl9tYXBfb3BzYD8mIzM0Oy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGF2YWlsYWJsZSBvcGVyYXRpb25zIHdpdGhpbiB0aGlzIGNvbnRleHQuIFRoZSBuYW1lIHN1Z2dlc3RzIGl0JiMzOTtzIGEgY29sbGVjdGlvbiBvZiBmdW5jdGlvbnMgcmVsYXRlZCB0byBCbG9vbSBmaWx0ZXJzIGFuZCBsaWtlbHkgbWFwLWxpa2Ugc3RydWN0dXJlcy4gVGhhdCYjMzk7cyBteSBzdGFydGluZyBwb2ludC4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGtub3cgdGhlIHByaW1pdGl2ZXMuIFdoYXQgZG8gSSBoYXZlIGF0IG15IGRpc3Bvc2FsIGluIHRoaXMgc2V0IG9mIG9wZXJhdGlvbnM/IFdoYXQgYXJlIHRoZSBiYXNpYyBidWlsZGluZyBibG9ja3MgdGhhdCBJIGNhbiBjb21iaW5lIGFuZCB1c2U/IElzIGl0IGp1c3QgaW5zZXJ0LCBkZWxldGUsIGFuZCBsb29rdXAsIG9yIGlzIHRoZXJlIG1vcmU/IEFtIEkgZGVhbGluZyB3aXRoIHZhcmlvdXMgbGV2ZWxzIG9mIHNvcGhpc3RpY2F0aW9uPyBNYXliZSB0aGVyZSYjMzk7cyBzdXBwb3J0IGZvciBjb3VudGluZyBCbG9vbSBmaWx0ZXJzLCBvciBzb21lIGNsZXZlciB3YXkgdG8gdXBkYXRlIGEgbWFwIHdpdGhpbiB0aGUgZmlsdGVyIHN0cnVjdHVyZS4gVGltZSB0byBzdGFydCBkaWdnaW5nIHRvIHVuZGVyc3RhbmQgdGhpcyBzcGVjaWZpYyBBUEkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jsb29tX2ZpbHRlcl9tYXBfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTIxNT1CVEZfSURfTElTVF9TSU5HTEUoYnBmX2Jsb29tX21hcF9idGZfaWRzLCBzdHJ1Y3QsIGJwZl9ibG9vbV9maWx0ZXIpXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjIxNjpjb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYmxvb21fZmlsdGVyX21hcF9vcHMgPSB7XG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIxNy1cdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc1OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gQmxvb20gRmlsdGVyIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgQlBGIEJsb29tIGZpbHRlciBpbXBsZW1lbnRhdGlvbi4gTGV0JiMzOTtzIHplcm8gaW4gb24gYGtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNgIGFyb3VuZCBsaW5lIDIxNi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgY29yZSBsb2dpYyBmb3IgZWl0aGVyIGFuIGluc2VydGlvbiwgbG9va3VwLCBvciBwZXJoYXBzIHJlc2l6ZSBvcGVyYXRpb24sIGJhc2VkIG9uIHRoZSB0eXBpY2FsIGZsb3cgb2YgQmxvb20gZmlsdGVyIGZ1bmN0aW9ucy4gR2l2ZW4gdGhlIGZpbGUgYW5kIGZ1bmN0aW9uIG5hbWluZyBjb252ZW50aW9ucyBpbiB0aGUga2VybmVsLCBJJiMzOTtkIGJldCB0aGlzIHNlY3Rpb24gZGVhbHMgd2l0aCB0aGUgaGFzaGluZyBvciBiaXQgbWFuaXB1bGF0aW9uIHVzZWQgaW4gdGhlIGZpbHRlci4gSSB3b25kZXIgaWYgaXQmIzM5O3MgdXNpbmcgYSBjdXN0b20gaGFzaCBmdW5jdGlvbiBmb3IgQlBGIG9yIHNvbWV0aGluZyBvcHRpbWl6ZWQgZm9yIHRoZSBhcmNoaXRlY3R1cmUuIEFsc28gSSYjMzk7ZCBsaWtlIHRvIGxvb2sgZm9yIHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIGhlcmUsIG1heWJlIGV2ZW4gaW4gdGhlIGRhdGEgc3RydWN0dXJlcyB0aGF0IHRoZSBmdW5jdGlvbiB1c2VzLiBUaW1lIHRvIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjAwOlx0XHQvKiBCbG9vbSBmaWx0ZXIgbWFwcyBhcmUga2V5bGVzcyAqL1xuIDIwMTpcdFx0cmV0dXJuIGJ0Zl90eXBlX2lzX3ZvaWQoa2V5X3R5cGUpID8gMCA6IC1FSU5WQUw7XG4gMjAyOlx0fVxuIDIwMzpcdFxuIDIwNDpcdHN0YXRpYyB1NjQgYmxvb21fbWFwX21lbV91c2FnZShjb25zdCBzdHJ1Y3QgYnBmX21hcCAqbWFwKVxuIDIwNTpcdHtcbiAyMDY6XHRcdHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbTtcbiAyMDc6XHRcdHU2NCBiaXRzZXRfYnl0ZXM7XG4gMjA4Olx0XG4gMjA5Olx0XHRibG9vbSA9IGNvbnRhaW5lcl9vZihtYXAsIHN0cnVjdCBicGZfYmxvb21fZmlsdGVyLCBtYXApO1xuIDIxMDpcdFx0Yml0c2V0X2J5dGVzID0gQklUU19UT19CWVRFUygodTY0KWJsb29tLVx1MDAzZWJpdHNldF9tYXNrICYjNDM7IDEpO1xuIDIxMTpcdFx0Yml0c2V0X2J5dGVzID0gcm91bmR1cChiaXRzZXRfYnl0ZXMsIHNpemVvZih1bnNpZ25lZCBsb25nKSk7XG4gMjEyOlx0XHRyZXR1cm4gc2l6ZW9mKCpibG9vbSkgJiM0MzsgYml0c2V0X2J5dGVzO1xuIDIxMzpcdH1cbiAyMTQ6XHRcbiAyMTU6XHRCVEZfSURfTElTVF9TSU5HTEUoYnBmX2Jsb29tX21hcF9idGZfaWRzLCBzdHJ1Y3QsIGJwZl9ibG9vbV9maWx0ZXIpXG4gMjE2Olx0Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGJsb29tX2ZpbHRlcl9tYXBfb3BzID0ge1xuIDIxNzpcdFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxuIDIxODpcdFx0Lm1hcF9hbGxvY19jaGVjayA9IGJsb29tX21hcF9hbGxvY19jaGVjayxcbiAyMTk6XHRcdC5tYXBfYWxsb2MgPSBibG9vbV9tYXBfYWxsb2MsXG4gMjIwOlx0XHQubWFwX2ZyZWUgPSBibG9vbV9tYXBfZnJlZSxcbiAyMjE6XHRcdC5tYXBfZ2V0X25leHRfa2V5ID0gYmxvb21fbWFwX2dldF9uZXh0X2tleSxcbiAyMjI6XHRcdC5tYXBfcHVzaF9lbGVtID0gYmxvb21fbWFwX3B1c2hfZWxlbSxcbiAyMjM6XHRcdC5tYXBfcGVla19lbGVtID0gYmxvb21fbWFwX3BlZWtfZWxlbSxcbiAyMjQ6XHRcdC5tYXBfcG9wX2VsZW0gPSBibG9vbV9tYXBfcG9wX2VsZW0sXG4gMjI1Olx0XHQubWFwX2xvb2t1cF9lbGVtID0gYmxvb21fbWFwX2xvb2t1cF9lbGVtLFxuIDIyNjpcdFx0Lm1hcF91cGRhdGVfZWxlbSA9IGJsb29tX21hcF91cGRhdGVfZWxlbSxcbiAyMjc6XHRcdC5tYXBfZGVsZXRlX2VsZW0gPSBibG9vbV9tYXBfZGVsZXRlX2VsZW0sXG4gMjI4Olx0XHQubWFwX2NoZWNrX2J0ZiA9IGJsb29tX21hcF9jaGVja19idGYsXG4gMjI5Olx0XHQubWFwX21lbV91c2FnZSA9IGJsb29tX21hcF9tZW1fdXNhZ2UsXG4gMjMwOlx0XHQubWFwX2J0Zl9pZCA9IFx1MDAyNmJwZl9ibG9vbV9tYXBfYnRmX2lkc1swXSxcbiAyMzE6XHR9O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjQ3CgkJCQkJCQlvdXRwdXQ6IDYxCgkJCQkJCQl0aG91Z2h0czogMzk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCbG9vbSBGaWx0ZXIgRnVuY3Rpb25zIGZvciBTeXprYWxsZXIgRm9jdXNTeW1ib2xzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIG1vc3QgYXBwcm9wcmlhdGUgZnVuY3Rpb25zIGZyb20gdGhpcyBibG9vbSBmaWx0ZXIgY29kZSB0byBpbmNsdWRlIGluIFN5emthbGxlciYjMzk7cyBgRm9jdXNTeW1ib2xzYC4gSSBoYXZlIHRocmVlIGZ1bmN0aW9uczogYGJsb29tX21hcF9hbGxvY2AsIGBibG9vbV9tYXBfcHVzaF9lbGVtYCwgYW5kIGBibG9vbV9tYXBfcGVla19lbGVtYC4gVGhlIGluaXRpYWwgY29uY2VybiBpcyB0aGF0IGBibG9vbV9tYXBfYWxsb2NgIGlzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gSG93ZXZlciwgYSBxdWljayBzY2FuIHJldmVhbHMgdGhhdCBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMsIGBibG9vbV9tYXBfYWxsb2NgICppcyogYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgYmxvb21fZmlsdGVyX21hcF9vcHNgLiBUaGlzIG1lYW5zIGl0ICp3b24mIzM5O3QqIGJlIGlubGluZWQgYW5kICpkb2VzKiBoYXZlIGEgZGlzdGluY3QgYWRkcmVzcy4KClN5emthbGxlciwgaW4gdGhlb3J5LCAqY291bGQqIGZ1enogdGhpcywgc2luY2UgaXRzIGtjb3YgYW5hbHlzaXMgcGlja3MgdXAgYWxsIGJhc2ljIGJsb2Nrcy4gQnV0IGZvciBgRm9jdXNTeW1ib2xzYCwgaXQgcmVsaWVzIG9uIGV4cGxpY2l0IHN5bWJvbCBuYW1lcy4gTm93LCBzdGF0aWMgZnVuY3Rpb25zIGdldCBhIGJpdCBtZXNzeSBiZWNhdXNlIGthbGxzeW1zICptaWdodCogbGlzdCB0aGVtLCBidXQgd2l0aCBzdGF0aWMgZnVuY3Rpb25zLCB5b3UgY2FuIHNvbWV0aW1lcyBnZXQgbmFtaW5nIGNvbGxpc2lvbnMuCgpUaGUga2V5IHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYmV0dGVyIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzPyBgYnBmX21hcF9hbGxvY2AgbG9va3MgcHJvbWlzaW5nLCBidXQgaXQmIzM5O3MgYSBwb2ludGVyIGNhbGwsIG5vdCBhIGZ1bmN0aW9uIGl0c2VsZi4gSSBrbm93IHRoZSBnZW5lcmFsIHN5c2NhbGwgZW50cnkgcG9pbnRzIGZvciBCUEYgYXJlIGBzeXNfYnBmYCBvciBgX19zeXNfYnBmYC4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgdGVsbCBtZSB0byAqYXZvaWQqIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBhbmQgYHN5c19icGZgIGRlZmluaXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBMaXN0aW5nIHRoYXQgd291bGQgc2tldyB0ZXN0IGRpc3RyaWJ1dGlvbnMuCgpTbywgZXZlbiB0aG91Z2ggdGhleSYjMzk7cmUgc3RhdGljLCBpdCBzZWVtcyBsaWtlIGBibG9vbV9tYXBfYWxsb2NgLCBgYmxvb21fbWFwX3B1c2hfZWxlbWAsIGFuZCBgYmxvb21fbWFwX3BlZWtfZWxlbWAgYXJlIHN0aWxsIHRoZSBiZXR0ZXIgY2hvaWNlcy4gVGhleSYjMzk7cmUgc3BlY2lmaWMgdG8gdGhpcyBibG9vbSBmaWx0ZXIgaW1wbGVtZW50YXRpb24sIGFuZCBjcnVjaWFsbHksIHRoZXkgYXJlbiYjMzk7dCBpbmxpbmVkIGJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSBiZWluZyB0YWtlbiBieSB0aGUgZnVuY3Rpb24gcG9pbnRlciBpbiBgYmxvb21fZmlsdGVyX21hcF9vcHNgLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCB0aGV5IGFyZSwgaW5kZWVkLCBzdGF0aWMsIGp1c3QgdG8gYmUgc3VyZS4gWWVwLCB0aGV5IGFyZS4gT2theSwgb25lIGZpbmFsIHRoaW5nOiBsZXQmIzM5O3MgZG8gYSBxdWljayBzY2FuIG9mIHRoZSBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2Agc291cmNlIGNvZGUgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoZXJlIGFyZSBubyB2aWFibGUgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZXMgdGhhdCB3ZXJlIG92ZXJsb29rZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bXmEtekEtWl0qW2EtekEtWl8wLTldJiM0MzsgW2EtekEtWl8wLTldJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9NDE9c3RhdGljIGJvb2wgYmxvb21fdGVzdF9iaXQoc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tLCB1MzIgYml0KVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy00Mi17XG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjQzOlx0cmV0dXJuIHRlc3RfYml0KGJpdCAlIEJJVFNfUEVSX0xPTkcsXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTQ0LVx0XHRcdGJsb29tLVx1MDAzZWJpdHNldCAmIzQzOyBCSVRfV09SRChiaXQpKTtcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTExMT1zdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcbi0tXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTEyNS1cdCAgICAoYXR0ci1cdTAwM2VtYXBfZXh0cmEgXHUwMDI2IH4weEYpKVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoxMjY6XHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xMjctXG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xNjAtXHRpZiAoIWJsb29tKVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoxNjE6XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xNjItXG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0xODI9c3RhdGljIHZvaWQgKmJsb29tX21hcF9sb29rdXBfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXkpXG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xODQtXHQvKiBUaGUgZUJQRiBwcm9ncmFtIHNob3VsZCB1c2UgbWFwX3BlZWtfZWxlbSBpbnN0ZWFkICovXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjE4NTpcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xODYtfVxuLS1cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9MTk1PXN0YXRpYyBpbnQgYmxvb21fbWFwX2NoZWNrX2J0ZihzdHJ1Y3QgYnBmX21hcCAqbWFwLFxuLS1cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjAwLVx0LyogQmxvb20gZmlsdGVyIG1hcHMgYXJlIGtleWxlc3MgKi9cbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MjAxOlx0cmV0dXJuIGJ0Zl90eXBlX2lzX3ZvaWQoa2V5X3R5cGUpID8gMCA6IC1FSU5WQUw7XG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIwMi19XG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0yMDQ9c3RhdGljIHU2NCBibG9vbV9tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXG4tLVxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0yMTEtXHRiaXRzZXRfYnl0ZXMgPSByb3VuZHVwKGJpdHNldF9ieXRlcywgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTtcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MjEyOlx0cmV0dXJuIHNpemVvZigqYmxvb20pICYjNDM7IGJpdHNldF9ieXRlcztcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjEzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI1MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIEJsb29tIEZpbHRlciBJbXBsZW1lbnRhdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgYGJsb29tX2ZpbHRlci5jYCBhbmQgaW1tZWRpYXRlbHkgbm90aWNlIHRoYXQgYWxsIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyB0aGluZyBhcmUgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQgbWVhbnMgdGhleSYjMzk7cmUgaW50ZXJuYWwgdG8gdGhpcyBmaWxlLCB3aGljaCBoZWxwcyB3aXRoIG1vZHVsYXJpdHkgYW5kIGVuY2Fwc3VsYXRpb24uIFNvLCBJIG5lZWQgdG8gbGlzdCB0aGUgZXh0ZXJuYWxseSBhY2Nlc3NpYmxlIGZ1bmN0aW9ucyAtIHRoZSBvbmVzIHRoYXQgd291bGQgYmUgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJJiMzOTttIHByZXR0eSBzdXJlIHRob3NlIGFyZSBgYmxvb21fbWFwX2FsbG9jYCwgYGJsb29tX21hcF9wdXNoX2VsZW1gLCBhbmQgYGJsb29tX21hcF9wZWVrX2VsZW1gLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGNvcmUgQVBJIGZ1bmN0aW9ucyBmb3IgdGhpcyBibG9vbSBmaWx0ZXIuCgpOb3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdGhhdCBtaWdodCBhZmZlY3QgaG93IHRoaXMgYmxvb20gZmlsdGVyIGJlaGF2ZXMgb3IgaXMgZW5hYmxlZC4gVGhlIG9uZSB0aGF0IHNwcmluZ3MgdG8gbWluZCBpbW1lZGlhdGVseSBpcyBgQ09ORklHX0JQRl9TWVNDQUxMYC4gSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0IGhhcyB0byBiZSBlbmFibGVkIGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gSnVzdCB0byBiZSBzdXJlLCBhcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gSSYjMzk7bGwgcXVpY2tseSBjaGVjayBgaW5pdC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBkZXBlbmRlbmNpZXMgb3IgcmVsYXRlZCBzZXR0aW5ncyBsaW5rZWQgdG8gYEJQRl9TWVNDQUxMYCB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBHb3R0YSBnZXQgYSBmdWxsIHBpY3R1cmUgYmVmb3JlIGRpZ2dpbmcgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMTE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjczCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYSBLZXJuZWwgQ29uZmlndXJhdGlvbiBJc3N1ZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiByZXNwb25zaWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBrZXJuZWwgYmVoYXZpb3IuIEdpdmVuIHdoYXQgSSYjMzk7bSBzZWVpbmcsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gc29tZXRoaW5nIHJlbGF0ZWQgdG8gZUJQRi4gSSBrbm93IHRoZSBlQlBGIGluZnJhc3RydWN0dXJlIGlzIGNyaXRpY2FsIGFuZCBpdHMgY29uZmlndXJhdGlvbiBpcyBsaWtlbHkgdG8gYmUgZXhwb3NlZCB2aWEgdGhlIGJ1aWxkIHByb2Nlc3MuIFRoaW5raW5nIGFib3V0IGl0IGxvZ2ljYWxseSwgd2hlcmUgd291bGQgSSBmaXJzdCBsb29rIGZvciB0aGUgcHJpbWFyeSBlQlBGIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8KClRoZSBgS2NvbmZpZ2AgZmlsZXMgYXJlIHRoZSBjZW50cmFsIG5lcnZvdXMgc3lzdGVtIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kLCBzcGVjaWZpY2FsbHksIHRoZSBvbmUgaW4gdGhlIGBrZXJuZWwvYnBmL2AgZGlyZWN0b3J5IG1ha2VzIHRoZSBtb3N0IHNlbnNlLiBJdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBnaXZlbiBpdHMgbG9jYXRpb24gd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIGl0cyBhc3NvY2lhdGlvbiB3aXRoIGVCUEYuIFRoZSBoaWVyYXJjaHkgc2hvdWxkIHByb3ZpZGUgbWUgd2l0aCB0aGUgc3BlY2lmaWMgZmxhZ3MgYW5kIG9wdGlvbnMgSSBuZWVkIHRvIGV4YW1pbmUuIEkmIzM5O2xsIHN0YXJ0IGRpZ2dpbmcgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfU1lTQ0FMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcJiMzNDtCUEYgc3Vic3lzdGVtXCYjMzQ7XG5rZXJuZWwvYnBmL0tjb25maWctMjYtXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXHRib29sIFwmIzM0O0VuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTg2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBCUEYgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBCUEYgKEJlcmtlbGV5IFBhY2tldCBGaWx0ZXIpIGNvbmZpZ3VyYXRpb24gaXMgc3RydWN0dXJlZC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIGBrZXJuZWwvYnBmL0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDI3LiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHByb2JhYmx5IGRlZmluZWQgc29tZXdoZXJlIGluIHRoYXQgYXJlYS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZm91bmRhdGlvbmFsIHNldHRpbmdzIHJlbGF0ZWQgdG8gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIEJQRiBmdW5jdGlvbmFsaXR5LCBtYXliZSBzb21lIG9mIHRoZSBjb3JlIGZlYXR1cmUgdG9nZ2xlcywgb3IgcGVyaGFwcyB0aGUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLiBJIHdhbnQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHdoYXQmIzM5O3MgKmNvbmZpZ3VyYWJsZSogYW5kIGhvdyB0aGF0IGNvbmZpZ3VyYWJpbGl0eSBpcyBwcmVzZW50ZWQuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHQjIFVzZWQgYnkgYXJjaHMgdG8gdGVsbCB0aGF0IHRoZXkgd2FudCB0aGUgQlBGIEpJVCBjb21waWxlciBlbmFibGVkIGJ5XG4gIDIxOlx0IyBkZWZhdWx0IGZvciBrZXJuZWxzIHRoYXQgd2VyZSBjb21waWxlZCB3aXRoIEJQRiBKSVQgc3VwcG9ydC5cbiAgMjI6XHRjb25maWcgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVFxuICAyMzpcdFx0Ym9vbFxuICAyNDpcdFxuICAyNTpcdG1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xuICAyNjpcdFxuICAyNzpcdGNvbmZpZyBCUEZfU1lTQ0FMTFxuICAyODpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiAgMjk6XHRcdHNlbGVjdCBCUEZcbiAgMzA6XHRcdHNlbGVjdCBJUlFfV09SS1xuICAzMTpcdFx0c2VsZWN0IE5FRURfVEFTS1NfUkNVXG4gIDMyOlx0XHRzZWxlY3QgVEFTS1NfVFJBQ0VfUkNVXG4gIDMzOlx0XHRzZWxlY3QgQklOQVJZX1BSSU5URlxuICAzNDpcdFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcbiAgMzU6XHRcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxuICAzNjpcdFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcbiAgMzc6XHRcdGRlZmF1bHQgblxuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBFbmFibGUgdGhlIGJwZigpIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHRvIG1hbmlwdWxhdGUgQlBGIHByb2dyYW1zXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDExOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDgxCgkJCQkJCQlvdXRwdXQ6IDEwNwoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGNvbmNlcm5pbmcgdGhlIGJsb29tIGZpbHRlciBtYXAgaW1wbGVtZW50YXRpb24gZm9yIEJQRiBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCBsb29rcyBsaWtlIGBCUEZfU1lTQ0FMTGAgaXMgdGhlIG9ubHkgY29uZmlnIEkmIzM5O2xsIG5lZWQgdG8gY29uY2VybiBteXNlbGYgd2l0aC4gVGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyBhIGZpeCBmb3IgYSBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpbiBgYmxvb21fbWFwX2FsbG9jYCB3aGVuIGNhbGN1bGF0aW5nIGBiaXRzZXRfYnl0ZXNgLCBhbG9uZyB3aXRoIGNvcnJlY3Rpb25zIHRvIHByZXZlbnQgbmVnYXRpdmUgb2Zmc2V0cyBpbiBgYmxvb21fdGVzdF9iaXRgIGFuZCBgYmxvb21fc2V0X2JpdGAgc3BlY2lmaWNhbGx5IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLgoKR2l2ZW4gdGhlc2UgbW9kaWZpY2F0aW9ucywgcGFydGljdWxhcmx5IHRoZSBjaGFuZ2VzIHRvIGNvcmUgYml0IG1hbmlwdWxhdGlvbiB3aXRoaW4gdGhlIGJsb29tIGZpbHRlciwgZnV6emluZyB0aGlzIGlzIGFuIGFic29sdXRlIG11c3QuIFRoZXJlJiMzOTtzIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciwgZWRnZSBjYXNlcywgYW5kLCBnaXZlbiB0aGUgQlBGIGNvbnRleHQsIGV2ZW4gc2VjdXJpdHkgaW1wbGljYXRpb25zIGlmIHRoZXNlIGJpdCBvcGVyYXRpb25zIGFyZSBtaXNoYW5kbGVkLgoKVGhlcmVmb3JlLCBJJiMzOTtsbCBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBJJiMzOTtsbCBhbHNvIGRlZmluZSB0aGUgYEZvY3VzU3ltYm9sc2AgdG8gaW5jbHVkZSB0aGUga2V5IGZ1bmN0aW9ucyBpbXBhY3RlZDogYCYjMzQ7Ymxvb21fbWFwX2FsbG9jJiMzNDtgLCBgJiMzNDtibG9vbV9tYXBfcHVzaF9lbGVtJiMzNDtgLCBhbmQgYCYjMzQ7Ymxvb21fbWFwX3BlZWtfZWxlbSYjMzQ7YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgcHJvYmxlbWF0aWMgY2FsY3VsYXRpb25zIGFuZCBiaXQgb3BlcmF0aW9ucy4gQXMgY29uZmlybWVkIGFib3ZlLCBJIHdpbGwgZW5hYmxlIG9ubHkgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnLgoKVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkOiB0aGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgYmxvb20gZmlsdGVyIG1hcCBpbXBsZW1lbnRhdGlvbi4gSXQmIzM5O3MgdG91Y2hpbmcgdGhlIGJpdHNldCBzaXplIGNhbGN1bGF0aW9uIGFuZCBiaXQgb3BlcmF0aW9ucywgYW5kIGluIGEgd2F5IHRoYXQgaXMgc3BlY2lmaWMgdG8gMzItYml0IGFyY2hpdGVjdHVyZXMuIEl0JiMzOTtzIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBpdCBpcyByZWFjaGFibGUsIHRoZXJlZm9yZSwgaXQgbmVlZHMgdG8gYmUgZnV6emVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAxMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibG9vbV9tYXBfYWxsb2MmIzM0OywKICAgICYjMzQ7Ymxvb21fbWFwX3B1c2hfZWxlbSYjMzQ7LAogICAgJiMzNDtibG9vbV9tYXBfcGVla19lbGVtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgYmxvb20gZmlsdGVyIG1hcCBpbXBsZW1lbnRhdGlvbiwgZml4aW5nIGJpdHNldCBzaXplIGNhbGN1bGF0aW9uIGFuZCBiaXQgb3BlcmF0aW9ucyBmb3IgMzItYml0IGFyY2hpdGVjdHVyZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ymxvb21fbWFwX2FsbG9jJiMzNDssCiAgICAmIzM0O2Jsb29tX21hcF9wdXNoX2VsZW0mIzM0OywKICAgICYjMzQ7Ymxvb21fbWFwX3BlZWtfZWxlbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgaW1wbGVtZW50YXRpb24sIGZpeGluZyBiaXRzZXQgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgYml0IG9wZXJhdGlvbnMgZm9yIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6MDMuMDI3MzU5NzMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg2ODk5OTc0MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibG9vbV9tYXBfYWxsb2NcIixcbiAgICBcImJsb29tX21hcF9wdXNoX2VsZW1cIixcbiAgICBcImJsb29tX21hcF9wZWVrX2VsZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgaW1wbGVtZW50YXRpb24sIGZpeGluZyBiaXRzZXQgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgYml0IG9wZXJhdGlvbnMgZm9yIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODowMy4wMjczNzAzODNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNzkwODI2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE1MDcyZTg1Nzk2MDg4YmVkNWM3YzQ1ZGYwNGNjNjU4YjY2YzkxOGNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBBdWcgMiAxMToxODowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jIGIva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1xcbmluZGV4IGI3MzMzNmM5NzZiN2MuLmYxMTFkMjY5OTBlY2UgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcXG5AQCAtMzMsNiArMzMsMjIgQEAgc3RhdGljIHUzMiBoYXNoKHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSwgdm9pZCAqdmFsdWUsXFxuIFxcdHJldHVybiBoIFxcdTAwMjYgYmxvb20tXFx1MDAzZWJpdHNldF9tYXNrO1xcbiB9XFxuIFxcbisvKlxcbisgKiBTb21lIDMyLWJpdCBhcmNoaXRlY3R1cmVzIHRha2UgYSBzaWduZWQgbG9uZyBiaXQgbnVtYmVyIGluIGJpdG9wcy4gU3BsaXRcXG4rICogdGhlIGZ1bGwgdTMyIGhhc2ggaW50byBhIHdvcmQgcG9pbnRlciBhbmQgYW4gaW4td29yZCBiaXQgbnVtYmVyIHNvIHVwcGVyXFxuKyAqIGhhbGYgaGFzaGVzIGNhbm5vdCBiZWNvbWUgbmVnYXRpdmUgb2Zmc2V0cy5cXG4rICovXFxuK3N0YXRpYyBib29sIGJsb29tX3Rlc3RfYml0KHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSwgdTMyIGJpdClcXG4re1xcbitcXHRyZXR1cm4gdGVzdF9iaXQoYml0ICUgQklUU19QRVJfTE9ORyxcXG4rXFx0XFx0XFx0Ymxvb20tXFx1MDAzZWJpdHNldCArIEJJVF9XT1JEKGJpdCkpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBibG9vbV9zZXRfYml0KHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSwgdTMyIGJpdClcXG4re1xcbitcXHRzZXRfYml0KGJpdCAlIEJJVFNfUEVSX0xPTkcsIGJsb29tLVxcdTAwM2ViaXRzZXQgKyBCSVRfV09SRChiaXQpKTtcXG4rfVxcbitcXG4gc3RhdGljIGxvbmcgYmxvb21fbWFwX3BlZWtfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb20gPVxcbkBAIC00MSw3ICs1Nyw3IEBAIHN0YXRpYyBsb25nIGJsb29tX21hcF9wZWVrX2VsZW0oc3RydWN0IGJwZl9tYXAgKm1hcCwgdm9pZCAqdmFsdWUpXFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYmxvb20tXFx1MDAzZW5yX2hhc2hfZnVuY3M7IGkrKykge1xcbiBcXHRcXHRoID0gaGFzaChibG9vbSwgdmFsdWUsIG1hcC1cXHUwMDNldmFsdWVfc2l6ZSwgaSk7XFxuLVxcdFxcdGlmICghdGVzdF9iaXQoaCwgYmxvb20tXFx1MDAzZWJpdHNldCkpXFxuK1xcdFxcdGlmICghYmxvb21fdGVzdF9iaXQoYmxvb20sIGgpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gXFx0fVxcbiBcXG5AQCAtNTksNyArNzUsNyBAQCBzdGF0aWMgbG9uZyBibG9vbV9tYXBfcHVzaF9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlLCB1NjQgZmxhZ3MpXFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYmxvb20tXFx1MDAzZW5yX2hhc2hfZnVuY3M7IGkrKykge1xcbiBcXHRcXHRoID0gaGFzaChibG9vbSwgdmFsdWUsIG1hcC1cXHUwMDNldmFsdWVfc2l6ZSwgaSk7XFxuLVxcdFxcdHNldF9iaXQoaCwgYmxvb20tXFx1MDAzZWJpdHNldCk7XFxuK1xcdFxcdGJsb29tX3NldF9iaXQoYmxvb20sIGgpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5AQCAtOTQsOSArMTEwLDEwIEBAIHN0YXRpYyBpbnQgYmxvb21fbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxcbiBcXG4gc3RhdGljIHN0cnVjdCBicGZfbWFwICpibG9vbV9tYXBfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuIHtcXG4tXFx0dTMyIGJpdHNldF9ieXRlcywgYml0c2V0X21hc2ssIG5yX2hhc2hfZnVuY3MsIG5yX2JpdHM7XFxuK1xcdHUzMiBiaXRzZXRfbWFzaywgbnJfaGFzaF9mdW5jcywgbnJfYml0cztcXG4gXFx0aW50IG51bWFfbm9kZSA9IGJwZl9tYXBfYXR0cl9udW1hX25vZGUoYXR0cik7XFxuIFxcdHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbTtcXG4rXFx0dTY0IGJpdHNldF9ieXRlcztcXG4gXFxuIFxcdGlmIChhdHRyLVxcdTAwM2VrZXlfc2l6ZSAhPSAwIHx8IGF0dHItXFx1MDAzZXZhbHVlX3NpemUgPT0gMCB8fFxcbiBcXHQgICAgYXR0ci1cXHUwMDNlbWF4X2VudHJpZXMgPT0gMCB8fFxcbkBAIC0xMjcsMjEgKzE0NCwxNiBAQCBzdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG4gXFx0aWYgKGNoZWNrX211bF9vdmVyZmxvdyhhdHRyLVxcdTAwM2VtYXhfZW50cmllcywgbnJfaGFzaF9mdW5jcywgXFx1MDAyNm5yX2JpdHMpIHx8XFxuIFxcdCAgICBjaGVja19tdWxfb3ZlcmZsb3cobnJfYml0cyAvIDUsICh1MzIpNywgXFx1MDAyNm5yX2JpdHMpIHx8XFxuIFxcdCAgICBucl9iaXRzIFxcdTAwM2UgKDFVTCBcXHUwMDNjXFx1MDAzYyAzMSkpIHtcXG4tXFx0XFx0LyogVGhlIGJpdCBhcnJheSBzaXplIGlzIDJeMzIgYml0cyBidXQgdG8gYXZvaWQgb3ZlcmZsb3dpbmcgdGhlXFxuLVxcdFxcdCAqIHUzMiwgd2UgdXNlIFUzMl9NQVgsIHdoaWNoIHdpbGwgcm91bmQgdXAgdG8gdGhlIGVxdWl2YWxlbnRcXG4tXFx0XFx0ICogbnVtYmVyIG9mIGJ5dGVzXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKFUzMl9NQVgpO1xcbiBcXHRcXHRiaXRzZXRfbWFzayA9IFUzMl9NQVg7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGlmIChucl9iaXRzIFxcdTAwM2M9IEJJVFNfUEVSX0xPTkcpXFxuIFxcdFxcdFxcdG5yX2JpdHMgPSBCSVRTX1BFUl9MT05HO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdG5yX2JpdHMgPSByb3VuZHVwX3Bvd19vZl90d28obnJfYml0cyk7XFxuLVxcdFxcdGJpdHNldF9ieXRlcyA9IEJJVFNfVE9fQllURVMobnJfYml0cyk7XFxuIFxcdFxcdGJpdHNldF9tYXNrID0gbnJfYml0cyAtIDE7XFxuIFxcdH1cXG4gXFxuK1xcdGJpdHNldF9ieXRlcyA9IEJJVFNfVE9fQllURVMoKHU2NCliaXRzZXRfbWFzayArIDEpO1xcbiBcXHRiaXRzZXRfYnl0ZXMgPSByb3VuZHVwKGJpdHNldF9ieXRlcywgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTtcXG4gXFx0Ymxvb20gPSBicGZfbWFwX2FyZWFfYWxsb2Moc2l6ZW9mKCpibG9vbSkgKyBiaXRzZXRfYnl0ZXMsIG51bWFfbm9kZSk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODowMy41NTYwOTI0MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ4MTYxMjUxMTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxvb21fbWFwX2FsbG9jXCIsXG4gICAgXCJibG9vbV9tYXBfcHVzaF9lbGVtXCIsXG4gICAgXCJibG9vbV9tYXBfcGVla19lbGVtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGltcGxlbWVudGF0aW9uLCBmaXhpbmcgYml0c2V0IHNpemUgY2FsY3VsYXRpb24gYW5kIGJpdCBvcGVyYXRpb25zIGZvciAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTUwNzJlODU3OTYwODhiZWQ1YzdjNDVkZjA0Y2M2NThiNjZjOTE4Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMTE6MTg6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jIGIva2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1xuaW5kZXggYjczMzM2Yzk3NmI3Yy4uZjExMWQyNjk5MGVjZSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcbisrKyBiL2tlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcbkBAIC0zMyw2ICszMywyMiBAQCBzdGF0aWMgdTMyIGhhc2goc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tLCB2b2lkICp2YWx1ZSxcbiBcdHJldHVybiBoIFx1MDAyNiBibG9vbS1cdTAwM2ViaXRzZXRfbWFzaztcbiB9XG4gXG4rLypcbisgKiBTb21lIDMyLWJpdCBhcmNoaXRlY3R1cmVzIHRha2UgYSBzaWduZWQgbG9uZyBiaXQgbnVtYmVyIGluIGJpdG9wcy4gU3BsaXRcbisgKiB0aGUgZnVsbCB1MzIgaGFzaCBpbnRvIGEgd29yZCBwb2ludGVyIGFuZCBhbiBpbi13b3JkIGJpdCBudW1iZXIgc28gdXBwZXJcbisgKiBoYWxmIGhhc2hlcyBjYW5ub3QgYmVjb21lIG5lZ2F0aXZlIG9mZnNldHMuXG4rICovXG4rc3RhdGljIGJvb2wgYmxvb21fdGVzdF9iaXQoc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tLCB1MzIgYml0KVxuK3tcbitcdHJldHVybiB0ZXN0X2JpdChiaXQgJSBCSVRTX1BFUl9MT05HLFxuK1x0XHRcdGJsb29tLVx1MDAzZWJpdHNldCArIEJJVF9XT1JEKGJpdCkpO1xuK31cbitcbitzdGF0aWMgdm9pZCBibG9vbV9zZXRfYml0KHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSwgdTMyIGJpdClcbit7XG4rXHRzZXRfYml0KGJpdCAlIEJJVFNfUEVSX0xPTkcsIGJsb29tLVx1MDAzZWJpdHNldCArIEJJVF9XT1JEKGJpdCkpO1xuK31cbitcbiBzdGF0aWMgbG9uZyBibG9vbV9tYXBfcGVla19lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlKVxuIHtcbiBcdHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbSA9XG5AQCAtNDEsNyArNTcsNyBAQCBzdGF0aWMgbG9uZyBibG9vbV9tYXBfcGVla19lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKnZhbHVlKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYmxvb20tXHUwMDNlbnJfaGFzaF9mdW5jczsgaSsrKSB7XG4gXHRcdGggPSBoYXNoKGJsb29tLCB2YWx1ZSwgbWFwLVx1MDAzZXZhbHVlX3NpemUsIGkpO1xuLVx0XHRpZiAoIXRlc3RfYml0KGgsIGJsb29tLVx1MDAzZWJpdHNldCkpXG4rXHRcdGlmICghYmxvb21fdGVzdF9iaXQoYmxvb20sIGgpKVxuIFx0XHRcdHJldHVybiAtRU5PRU5UO1xuIFx0fVxuIFxuQEAgLTU5LDcgKzc1LDcgQEAgc3RhdGljIGxvbmcgYmxvb21fbWFwX3B1c2hfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICp2YWx1ZSwgdTY0IGZsYWdzKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYmxvb20tXHUwMDNlbnJfaGFzaF9mdW5jczsgaSsrKSB7XG4gXHRcdGggPSBoYXNoKGJsb29tLCB2YWx1ZSwgbWFwLVx1MDAzZXZhbHVlX3NpemUsIGkpO1xuLVx0XHRzZXRfYml0KGgsIGJsb29tLVx1MDAzZWJpdHNldCk7XG4rXHRcdGJsb29tX3NldF9iaXQoYmxvb20sIGgpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtOTQsOSArMTEwLDEwIEBAIHN0YXRpYyBpbnQgYmxvb21fbWFwX2FsbG9jX2NoZWNrKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuIFxuIHN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqYmxvb21fbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuIHtcbi1cdHUzMiBiaXRzZXRfYnl0ZXMsIGJpdHNldF9tYXNrLCBucl9oYXNoX2Z1bmNzLCBucl9iaXRzO1xuK1x0dTMyIGJpdHNldF9tYXNrLCBucl9oYXNoX2Z1bmNzLCBucl9iaXRzO1xuIFx0aW50IG51bWFfbm9kZSA9IGJwZl9tYXBfYXR0cl9udW1hX25vZGUoYXR0cik7XG4gXHRzdHJ1Y3QgYnBmX2Jsb29tX2ZpbHRlciAqYmxvb207XG4rXHR1NjQgYml0c2V0X2J5dGVzO1xuIFxuIFx0aWYgKGF0dHItXHUwMDNla2V5X3NpemUgIT0gMCB8fCBhdHRyLVx1MDAzZXZhbHVlX3NpemUgPT0gMCB8fFxuIFx0ICAgIGF0dHItXHUwMDNlbWF4X2VudHJpZXMgPT0gMCB8fFxuQEAgLTEyNywyMSArMTQ0LDE2IEBAIHN0YXRpYyBzdHJ1Y3QgYnBmX21hcCAqYmxvb21fbWFwX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyKVxuIFx0aWYgKGNoZWNrX211bF9vdmVyZmxvdyhhdHRyLVx1MDAzZW1heF9lbnRyaWVzLCBucl9oYXNoX2Z1bmNzLCBcdTAwMjZucl9iaXRzKSB8fFxuIFx0ICAgIGNoZWNrX211bF9vdmVyZmxvdyhucl9iaXRzIC8gNSwgKHUzMik3LCBcdTAwMjZucl9iaXRzKSB8fFxuIFx0ICAgIG5yX2JpdHMgXHUwMDNlICgxVUwgXHUwMDNjXHUwMDNjIDMxKSkge1xuLVx0XHQvKiBUaGUgYml0IGFycmF5IHNpemUgaXMgMl4zMiBiaXRzIGJ1dCB0byBhdm9pZCBvdmVyZmxvd2luZyB0aGVcbi1cdFx0ICogdTMyLCB3ZSB1c2UgVTMyX01BWCwgd2hpY2ggd2lsbCByb3VuZCB1cCB0byB0aGUgZXF1aXZhbGVudFxuLVx0XHQgKiBudW1iZXIgb2YgYnl0ZXNcbi1cdFx0ICovXG4tXHRcdGJpdHNldF9ieXRlcyA9IEJJVFNfVE9fQllURVMoVTMyX01BWCk7XG4gXHRcdGJpdHNldF9tYXNrID0gVTMyX01BWDtcbiBcdH0gZWxzZSB7XG4gXHRcdGlmIChucl9iaXRzIFx1MDAzYz0gQklUU19QRVJfTE9ORylcbiBcdFx0XHRucl9iaXRzID0gQklUU19QRVJfTE9ORztcbiBcdFx0ZWxzZVxuIFx0XHRcdG5yX2JpdHMgPSByb3VuZHVwX3Bvd19vZl90d28obnJfYml0cyk7XG4tXHRcdGJpdHNldF9ieXRlcyA9IEJJVFNfVE9fQllURVMobnJfYml0cyk7XG4gXHRcdGJpdHNldF9tYXNrID0gbnJfYml0cyAtIDE7XG4gXHR9XG4gXG4rXHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKCh1NjQpYml0c2V0X21hc2sgKyAxKTtcbiBcdGJpdHNldF9ieXRlcyA9IHJvdW5kdXAoYml0c2V0X2J5dGVzLCBzaXplb2YodW5zaWduZWQgbG9uZykpO1xuIFx0Ymxvb20gPSBicGZfbWFwX2FyZWFfYWxsb2Moc2l6ZW9mKCpibG9vbSkgKyBiaXRzZXRfYnl0ZXMsIG51bWFfbm9kZSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODowMy41NTYwOTM1NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjI3MTkyNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIEJsb29tIEZpbHRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGBrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0J3MgbW9kaWZ5aW5nIGNvcmUgZnVuY3Rpb25zOiBgYmxvb21fbWFwX3BlZWtfZWxlbWAsIGBibG9vbV9tYXBfcHVzaF9lbGVtYCwgYW5kIGBibG9vbV9tYXBfYWxsb2NgLiBUaGF0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gSSBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24uIEl0IHNlZW1zIGxpa2UgaXQncyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIDMyLWJpdCBhcmNoaXRlY3R1cmUgaXNzdWUgd2l0aCB0aG9zZSBuZXcgYGJsb29tX3Rlc3RfYml0YCBhbmQgYGJsb29tX3NldF9iaXRgIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGxpa2VseSB3cmFwcGVycyB0byBwcmV2ZW50IG5lZ2F0aXZlIG9mZnNldHMgd2hlbiB1c2luZyBgdGVzdF9iaXRgIGFuZCBgc2V0X2JpdGAuIFNtYXJ0LiBBbHNvLCB0aGV5IGFyZSB1cGRhdGluZyBgYml0c2V0X2J5dGVzYCB0byBgdTY0YCBpbiBgYmxvb21fbWFwX2FsbG9jYCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgaGFuZGxpbmcgbGFyZ2VyIGJsb29tIGZpbHRlcnMgYW5kIGluY2x1ZGVzIGEgZml4IGZvciBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgY2FsY3VsYXRpb24sIHdoaWNoIGlzIGEgY29tbW9uIGFuZCBjcml0aWNhbCBzZWN1cml0eSBjb25zaWRlcmF0aW9uIGluIHRoZXNlIGtpbmRzIG9mIGRhdGEgc3RydWN0dXJlcy5cblxuVGhpcyBpcyBjbGVhcmx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIEJQRiBibG9vbSBmaWx0ZXIgbWFwIGltcGxlbWVudGF0aW9uLiBHaXZlbiB0aGF0LCBmdXp6aW5nIGlzIGFuIGFic29sdXRlIG11c3QuIFdlIGNhbid0IGxldCBhIHN1YnRsZSBvdmVyZmxvdyBvciBhbiBvZmYtYnktb25lIGVycm9yIHNsaXAgdGhyb3VnaC4gSSBuZWVkIHRvIGdldCB0aGlzIGNvdmVyZWQgaW4gdGhlIGZ1enppbmcgcmVnaW1lLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgaGVyZSB0byBtYWtlIHN1cmUgd2UndmUgZ290IHRoZSBCUEYgQmxvb20gZmlsdGVyIG1hcCBlbmFibGVkIHRvIHRlc3QgaXQgcHJvcGVybHkuIE15IGd1dCB0ZWxscyBtZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUga2V5IG9uZS4gTGV0J3MgY29uZmlybSB0aGF0IGJ5IGNoZWNraW5nIHRoZSBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2Agc291cmNlIHdpdGhpbiB0aGUga2VybmVsIHRyZWUuIEp1c3QgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBhY3R1YWxseSBlbmFibGVkIGluIHRoZSBidWlsZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxOSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjA4LjQxODgxNzgyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA4ODk5NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxvb21fbWFwX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9OTQ9c3RhdGljIGludCBibG9vbV9tYXBfZ2V0X25leHRfa2V5KHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdm9pZCAqbmV4dF9rZXkpXFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTk5LS8qIENhbGxlZCBmcm9tIHN5c2NhbGwgKi9cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjEwMDpzdGF0aWMgaW50IGJsb29tX21hcF9hbGxvY19jaGVjayh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTEwMS17XFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTExMC1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jOjExMTpzdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTExMi17XFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTIxNj1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgYmxvb21fZmlsdGVyX21hcF9vcHMgPSB7XFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0yMTctXFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MjE4OlxcdC5tYXBfYWxsb2NfY2hlY2sgPSBibG9vbV9tYXBfYWxsb2NfY2hlY2ssXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMTk6XFx0Lm1hcF9hbGxvYyA9IGJsb29tX21hcF9hbGxvYyxcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIyMC1cXHQubWFwX2ZyZWUgPSBibG9vbV9tYXBfZnJlZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6MDguNTI5NzE0NzgxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyNTIwMjczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCbG9vbSBGaWx0ZXIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYmxvb20gZmlsdGVyIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIGBNYWtlZmlsZWAgaW4gYGtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBjb2RlIGlzIGJlaW5nIGJ1aWx0IGFuZCBsaW5rZWQsIHdoYXQgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUsIGFuZCBnZW5lcmFsbHkgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSB0aG9yb3VnaCBhbmFseXNpcy4gSSdtIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IG9wdGltaXphdGlvbiBmbGFncywgYW55IHNwZWNpZmljIGNvbXBpbGF0aW9uIHNldHRpbmdzIHJlbGV2YW50IHRvIEJQRiwgYW5kIHdoZXRoZXIgaXQncyBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5IGxpbmtlZC4gQmFzaWNhbGx5LCBJIG5lZWQgYSByb2FkbWFwIGJlZm9yZSBJIGNhbiByZWFsbHkgZGlnIGludG8gdGhlIGNvZGUncyBmdW5jdGlvbmFsaXR5LiBNeSBpbml0aWFsIHF1ZXN0aW9ucyBhcmU6IGhvdyBpcyB0aGUgY29kZSBiZWluZyBjb21waWxlZD8gV2hhdCBvdGhlciBtb2R1bGVzIG1pZ2h0IGl0IGRlcGVuZCBvbj8gQXJlIHRoZXJlIGFueSBzcGVjaWFsIGJ1aWxkIGRpcmVjdGl2ZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBUaGlzIHdpbGwgaGVscCBzZXQgdGhlIHN0YWdlIGZvciBhIHByb3BlciBpbi1kZXB0aCByZXZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NjYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODoxMS40NTQ5MjAwM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjYwMjg2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibG9vbV9maWx0ZXIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjExOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTEyLW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gbG9jYWxfc3RvcmFnZS5vIHF1ZXVlX3N0YWNrX21hcHMubyByaW5nYnVmLm8gYnBmX2luc25fYXJyYXkub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODoxMS41NDc1MjkxNzRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM5MTg5NDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuXG5cbioqVHJhY2luZyB0aGUgQlBGIEJsb29tIEZpbHRlciBBbGxvY2F0aW9uIFBhdGgqKlxuXG5SaWdodCwgc28gd2UncmUgZGl2aW5nIGludG8gdGhlIEJQRiBibG9vbSBmaWx0ZXIgaW1wbGVtZW50YXRpb24uIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGBDT05GSUdfQlBGX1NZU0NBTExgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50IHRvIGVuYWJsaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSwgb3IgYXQgbGVhc3QgdGhlIHBhcnQgdGhhdCB0cmlnZ2VycyBteSBpbnZlc3RpZ2F0aW9uLlxuXG5TcGVjaWZpY2FsbHksIEknbSBrZXlpbmcgaW4gb24gdGhlc2UgZnVuY3Rpb25zOiBgYmxvb21fbWFwX2FsbG9jYCwgYGJsb29tX21hcF9wdXNoX2VsZW1gLCBhbmQgYGJsb29tX21hcF9wZWVrX2VsZW1gLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciB0aGUgYmxvb20gZmlsdGVyIG1hbmFnZW1lbnQuXG5cbkZpcnN0LCBsZXQncyB2ZXJpZnkgaWYgYGJsb29tX21hcF9hbGxvY2AgaXMgZGVmaW5lZCBhcyBgc3RhdGljYC4gWWVzLCBnb29kLiBNeSBhc3N1bXB0aW9uIGlzIHRoYXQgaXQgc2hvdWxkIGJlLiBCdXQgd2FpdCwgdGhpcyBpcyBpbnRlcmVzdGluZy4gRXZlbiB0aG91Z2ggaXQncyBzdGF0aWMsIGl0J3MgYWxzbyBhc3NpZ25lZCB0byBgYmxvb21fZmlsdGVyX21hcF9vcHMubWFwX2FsbG9jYC4gVGhhdCdzIHRoZSBmdW5jdGlvbiBwb2ludGVyIGhvb2suIFRoaXMgbWVhbnMgYGJsb29tX21hcF9hbGxvY2Agd2lsbCBiZSBhY2Nlc3NlZCBpbmRpcmVjdGx5LCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgdGhlIG92ZXJhbGwgZGVzaWduLlxuXG5Ob3csIHdoZXJlJ3MgdGhlIGFjdHVhbCBlbnRyeSBwb2ludCBmb3IgYWxsIG9mIHRoaXM/IEknbSBhc3N1bWluZyBpdCdzIGBicGZfbWFwX2FsbG9jYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZWx5IHRoZSBtYWluIEJQRiBzeXN0ZW0gY2FsbCBoYW5kbGluZyB0aGUgbWVtb3J5IGFsbG9jYXRpb24uIFRoZSBnb2FsIGlzIHRvIHNlZSBob3cgdGhlIGFsbG9jYXRpb24gZmluYWxseSBnZXRzIHRyaWdnZXJlZC4gU28sIEkgbmVlZCB0byBjaGVjayBga2VybmVsL2JwZi9zeXNjYWxsLmNgIGZvciBhbnkgZnVuY3Rpb24gbmFtZWQgYG1hcF9hbGxvY2AuIFRoYXQncyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBhY3R1YWwgc3lzdGVtIGNhbGwgaW50ZXJmYWNlIGZvciBCUEYgbWFwIGFsbG9jYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzOTUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6MTUuOTg2NzIyNDg4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NTg4Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hcF9hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3N5c2NhbGwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL3N5c2NhbGwuYz0xMTU9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGJwZl9tYXBfb2ZmbG9hZF9vcHMgPSB7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTE2LVxcdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxMTc6XFx0Lm1hcF9hbGxvYyA9IGJwZl9tYXBfb2ZmbG9hZF9tYXBfYWxsb2MsXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTE4LVxcdC5tYXBfZnJlZSA9IGJwZl9tYXBfb2ZmbG9hZF9tYXBfZnJlZSxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTQzNz12b2lkIGJwZl9tYXBfaW5pdF9mcm9tX2F0dHIoc3RydWN0IGJwZl9tYXAgKm1hcCwgdW5pb24gYnBmX2F0dHIgKmF0dHIpXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy00NDctXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6NDQ4OnN0YXRpYyBpbnQgYnBmX21hcF9hbGxvY19pZChzdHJ1Y3QgYnBmX21hcCAqbWFwKVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTQ0OS17XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYz01NjQ9dm9pZCAqYnBmX21hcF9rdmNhbGxvYyhzdHJ1Y3QgYnBmX21hcCAqbWFwLCBzaXplX3Qgbiwgc2l6ZV90IHNpemUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy01NzYtXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6NTc3OnZvaWQgX19wZXJjcHUgKmJwZl9tYXBfYWxsb2NfcGVyY3B1KGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXAsIHNpemVfdCBzaXplLFxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTU3OC1cXHRcXHRcXHRcXHQgICAgc2l6ZV90IGFsaWduLCBnZnBfdCBmbGFncylcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTYwNj1zdGF0aWMgc3RydWN0IHBhZ2UgKl9fYnBmX2FsbG9jX3BhZ2UoaW50IG5pZClcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTYxNi1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzo2MTc6aW50IGJwZl9tYXBfYWxsb2NfcGFnZXMoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcCwgaW50IG5pZCxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy02MTgtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBucl9wYWdlcywgc3RydWN0IHBhZ2UgKipwYWdlcylcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jPTEzNzE9c3RhdGljIGludCBtYXBfY3JlYXRlX2FsbG9jKHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0ciwgc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MzMtXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTQzNDpcXHRpZiAob3BzLVxcdTAwM2VtYXBfYWxsb2NfY2hlY2spIHtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNDM1OlxcdFxcdGVyciA9IG9wcy1cXHUwMDNlbWFwX2FsbG9jX2NoZWNrKGF0dHIpO1xcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MzYtXFx0XFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE1MjItXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTUyMzpcXHRtYXAgPSBvcHMtXFx1MDAzZW1hcF9hbGxvYyhhdHRyKTtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNTI0LVxcdGlmIChJU19FUlIobWFwKSkge1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTYyNj1zdGF0aWMgaW50IG1hcF9jcmVhdGUodW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLCBzdHJ1Y3QgYnBmX2NvbW1vbl9hdHRyICphdHRyX2NvbW1vbixcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE2NjEtXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTY2MjpcXHRlcnIgPSBicGZfbWFwX2FsbG9jX2lkKG1hcCk7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTY2My1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTY3Mi1cXHRcXHQgKiBicGZfbWFwX3B1dF93aXRoX3VyZWYoKSBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgYWJvdmVcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNjczOlxcdFxcdCAqIGJwZl9tYXBfYWxsb2NfaWQoKSBoYXMgcHVibGlzaGVkIHRoZSBtYXBcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNjc0LVxcdFxcdCAqIHRvIHRoZSB1c2Vyc3BhY2UgYW5kIHRoZSB1c2Vyc3BhY2UgbWF5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjE2LjA1NjMxNTQ5NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMzkxMzg5OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVjb25zdHJ1Y3RpbmcgdGhlIEJsb29tIEZpbHRlciBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGJsb29tIGZpbHRlciBpbXBsZW1lbnRhdGlvbiwgYW5kIHRoZSBpbml0aWFsIHF1ZXN0aW9uIGlzIGFsd2F5cywgXCJXaGVyZSBkb2VzIHRoaXMgdGhpbmcgKnN0YXJ0Kj9cIiBNeSBmaXJzdCB0aG91Z2h0IHdhcyBgbWFwX2NyZWF0ZWAgb3IgYG1hcF9jcmVhdGVfYWxsb2NgLCBzaW5jZSB0aGF0J3MgdXN1YWxseSB0aGUgZW50cnkgcG9pbnQgZm9yIEJQRiBtYXAgY3JlYXRpb24uIEJ1dCBob2xkIG9uLCBgbWFwX2NyZWF0ZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBBaCwgcmlnaHQuIEkgcmVtZW1iZXIgbm93LCB0aGUgKnJlYWwqIHN5c2NhbGwgZW50cnkgcG9pbnQgZm9yIGFsbCB0aGluZ3MgQlBGIGlzIGBzeXNfYnBmYC5cblxuUmlnaHQsIHNvIHRoYXQgbmFycm93cyBpdCBkb3duLCBidXQgSSBuZWVkIHRoZSBzcGVjaWZpYyBvcGVyYXRpb25zIHRvIHRyYWNlIGhvdyB0aGVzZSBibG9vbSBmaWx0ZXJzIGdldCBwb3B1bGF0ZWQgYW5kIHF1ZXJpZWQuIExvb2tpbmcgYmFjaywgSSByZWNhbGwgdGhhdCBgYnBmX21hcF91cGRhdGVfZWxlbWAgYW5kIGBicGZfbWFwX2xvb2t1cF9lbGVtYCBhcmUgZ2VuZXJhbGx5IHRoZSBzeXNjYWxsIGVudHJ5IHBvaW50cyBmb3IgXCJwdXNoaW5nXCIgYW5kIFwicGVla2luZ1wiIGRhdGEgaW50byBtYXBzLiBCdXQgbGV0J3MgY2xhcmlmeSB0aGF0IHRoZSBmdW5jdGlvbiBgYmxvb21fbWFwX3B1c2hfZWxlbWAgc2VlbXMgdG8gYmUgdGhlIG9uZSBhc3NpZ25lZCBpbnRlcm5hbGx5IHRvIGhhbmRsZSB0aGUgXCJwdXNoXCIgb3BlcmF0aW9uLCBzcGVjaWZpY2FsbHkgbWFwcGVkIHRvIGBtYXBfcHVzaF9lbGVtYC5cblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBibG9vbSBmaWx0ZXIgaW1wbGVtZW50YXRpb24uIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGV4cGxvcmUgYGtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNgIHNpbmNlIHRoYXQncyB3aGVyZSB0aGUgYWN0dWFsIGJsb29tIGZpbHRlciBsb2dpYyBpcyBsaWtlbHkgZGVmaW5lZCwgYW5kIHRoZSByZWxldmFudCBgYmxvb21fZmlsdGVyX21hcF9vcHNgIHN0cnVjdHVyZSBzaG91bGQgYmUgdGhlcmUuIExldCdzIHNlZSB3aGF0J3MgYWN0dWFsbHkgZ29pbmcgb24gdW5kZXIgdGhlIGhvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6MjAuMzk1NDU3ODA0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzM5NDI1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibG9vbV9maWx0ZXJfbWFwX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTIxNT1CVEZfSURfTElTVF9TSU5HTEUoYnBmX2Jsb29tX21hcF9idGZfaWRzLCBzdHJ1Y3QsIGJwZl9ibG9vbV9maWx0ZXIpXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMTY6Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGJsb29tX2ZpbHRlcl9tYXBfb3BzID0ge1xcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjE3LVxcdC5tYXBfbWV0YV9lcXVhbCA9IGJwZl9tYXBfbWV0YV9lcXVhbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6MjAuNDU4ODYyNDkxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTMxMzUyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIGBibG9vbV9maWx0ZXJfbWFwX29wc2AgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCdzIGFjdHVhbGx5ICppbiogYGJsb29tX2ZpbHRlcl9tYXBfb3BzYD9cIi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGF2YWlsYWJsZSBvcGVyYXRpb25zIHdpdGhpbiB0aGlzIGNvbnRleHQuIFRoZSBuYW1lIHN1Z2dlc3RzIGl0J3MgYSBjb2xsZWN0aW9uIG9mIGZ1bmN0aW9ucyByZWxhdGVkIHRvIEJsb29tIGZpbHRlcnMgYW5kIGxpa2VseSBtYXAtbGlrZSBzdHJ1Y3R1cmVzLiBUaGF0J3MgbXkgc3RhcnRpbmcgcG9pbnQuIEknbSBnb2luZyB0byB3YW50IHRvIGtub3cgdGhlIHByaW1pdGl2ZXMuIFdoYXQgZG8gSSBoYXZlIGF0IG15IGRpc3Bvc2FsIGluIHRoaXMgc2V0IG9mIG9wZXJhdGlvbnM/IFdoYXQgYXJlIHRoZSBiYXNpYyBidWlsZGluZyBibG9ja3MgdGhhdCBJIGNhbiBjb21iaW5lIGFuZCB1c2U/IElzIGl0IGp1c3QgaW5zZXJ0LCBkZWxldGUsIGFuZCBsb29rdXAsIG9yIGlzIHRoZXJlIG1vcmU/IEFtIEkgZGVhbGluZyB3aXRoIHZhcmlvdXMgbGV2ZWxzIG9mIHNvcGhpc3RpY2F0aW9uPyBNYXliZSB0aGVyZSdzIHN1cHBvcnQgZm9yIGNvdW50aW5nIEJsb29tIGZpbHRlcnMsIG9yIHNvbWUgY2xldmVyIHdheSB0byB1cGRhdGUgYSBtYXAgd2l0aGluIHRoZSBmaWx0ZXIgc3RydWN0dXJlLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgdG8gdW5kZXJzdGFuZCB0aGlzIHNwZWNpZmljIEFQSS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjI0LjAxMjAwMTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTI4NDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJsb29tX2ZpbHRlcl9tYXBfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0yMTU9QlRGX0lEX0xJU1RfU0lOR0xFKGJwZl9ibG9vbV9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfYmxvb21fZmlsdGVyKVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MjE2OmNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBibG9vbV9maWx0ZXJfbWFwX29wcyA9IHtcXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIxNy1cXHQubWFwX21ldGFfZXF1YWwgPSBicGZfbWFwX21ldGFfZXF1YWwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjI0LjA2NjkzNzEwN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDg0ODE0NTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIEJsb29tIEZpbHRlciBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgQlBGIEJsb29tIGZpbHRlciBpbXBsZW1lbnRhdGlvbi4gTGV0J3MgemVybyBpbiBvbiBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2AgYXJvdW5kIGxpbmUgMjE2LiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGNvcmUgbG9naWMgZm9yIGVpdGhlciBhbiBpbnNlcnRpb24sIGxvb2t1cCwgb3IgcGVyaGFwcyByZXNpemUgb3BlcmF0aW9uLCBiYXNlZCBvbiB0aGUgdHlwaWNhbCBmbG93IG9mIEJsb29tIGZpbHRlciBmdW5jdGlvbnMuIEdpdmVuIHRoZSBmaWxlIGFuZCBmdW5jdGlvbiBuYW1pbmcgY29udmVudGlvbnMgaW4gdGhlIGtlcm5lbCwgSSdkIGJldCB0aGlzIHNlY3Rpb24gZGVhbHMgd2l0aCB0aGUgaGFzaGluZyBvciBiaXQgbWFuaXB1bGF0aW9uIHVzZWQgaW4gdGhlIGZpbHRlci4gSSB3b25kZXIgaWYgaXQncyB1c2luZyBhIGN1c3RvbSBoYXNoIGZ1bmN0aW9uIGZvciBCUEYgb3Igc29tZXRoaW5nIG9wdGltaXplZCBmb3IgdGhlIGFyY2hpdGVjdHVyZS4gQWxzbyBJJ2QgbGlrZSB0byBsb29rIGZvciBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucyBoZXJlLCBtYXliZSBldmVuIGluIHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCB0aGUgZnVuY3Rpb24gdXNlcy4gVGltZSB0byBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NTgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODoyNy4xNTE3NTQ3MTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUxMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMDA6XFx0XFx0LyogQmxvb20gZmlsdGVyIG1hcHMgYXJlIGtleWxlc3MgKi9cXG4gMjAxOlxcdFxcdHJldHVybiBidGZfdHlwZV9pc192b2lkKGtleV90eXBlKSA/IDAgOiAtRUlOVkFMO1xcbiAyMDI6XFx0fVxcbiAyMDM6XFx0XFxuIDIwNDpcXHRzdGF0aWMgdTY0IGJsb29tX21hcF9tZW1fdXNhZ2UoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcClcXG4gMjA1OlxcdHtcXG4gMjA2OlxcdFxcdHN0cnVjdCBicGZfYmxvb21fZmlsdGVyICpibG9vbTtcXG4gMjA3OlxcdFxcdHU2NCBiaXRzZXRfYnl0ZXM7XFxuIDIwODpcXHRcXG4gMjA5OlxcdFxcdGJsb29tID0gY29udGFpbmVyX29mKG1hcCwgc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIsIG1hcCk7XFxuIDIxMDpcXHRcXHRiaXRzZXRfYnl0ZXMgPSBCSVRTX1RPX0JZVEVTKCh1NjQpYmxvb20tXFx1MDAzZWJpdHNldF9tYXNrICsgMSk7XFxuIDIxMTpcXHRcXHRiaXRzZXRfYnl0ZXMgPSByb3VuZHVwKGJpdHNldF9ieXRlcywgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTtcXG4gMjEyOlxcdFxcdHJldHVybiBzaXplb2YoKmJsb29tKSArIGJpdHNldF9ieXRlcztcXG4gMjEzOlxcdH1cXG4gMjE0OlxcdFxcbiAyMTU6XFx0QlRGX0lEX0xJU1RfU0lOR0xFKGJwZl9ibG9vbV9tYXBfYnRmX2lkcywgc3RydWN0LCBicGZfYmxvb21fZmlsdGVyKVxcbiAyMTY6XFx0Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGJsb29tX2ZpbHRlcl9tYXBfb3BzID0ge1xcbiAyMTc6XFx0XFx0Lm1hcF9tZXRhX2VxdWFsID0gYnBmX21hcF9tZXRhX2VxdWFsLFxcbiAyMTg6XFx0XFx0Lm1hcF9hbGxvY19jaGVjayA9IGJsb29tX21hcF9hbGxvY19jaGVjayxcXG4gMjE5OlxcdFxcdC5tYXBfYWxsb2MgPSBibG9vbV9tYXBfYWxsb2MsXFxuIDIyMDpcXHRcXHQubWFwX2ZyZWUgPSBibG9vbV9tYXBfZnJlZSxcXG4gMjIxOlxcdFxcdC5tYXBfZ2V0X25leHRfa2V5ID0gYmxvb21fbWFwX2dldF9uZXh0X2tleSxcXG4gMjIyOlxcdFxcdC5tYXBfcHVzaF9lbGVtID0gYmxvb21fbWFwX3B1c2hfZWxlbSxcXG4gMjIzOlxcdFxcdC5tYXBfcGVla19lbGVtID0gYmxvb21fbWFwX3BlZWtfZWxlbSxcXG4gMjI0OlxcdFxcdC5tYXBfcG9wX2VsZW0gPSBibG9vbV9tYXBfcG9wX2VsZW0sXFxuIDIyNTpcXHRcXHQubWFwX2xvb2t1cF9lbGVtID0gYmxvb21fbWFwX2xvb2t1cF9lbGVtLFxcbiAyMjY6XFx0XFx0Lm1hcF91cGRhdGVfZWxlbSA9IGJsb29tX21hcF91cGRhdGVfZWxlbSxcXG4gMjI3OlxcdFxcdC5tYXBfZGVsZXRlX2VsZW0gPSBibG9vbV9tYXBfZGVsZXRlX2VsZW0sXFxuIDIyODpcXHRcXHQubWFwX2NoZWNrX2J0ZiA9IGJsb29tX21hcF9jaGVja19idGYsXFxuIDIyOTpcXHRcXHQubWFwX21lbV91c2FnZSA9IGJsb29tX21hcF9tZW1fdXNhZ2UsXFxuIDIzMDpcXHRcXHQubWFwX2J0Zl9pZCA9IFxcdTAwMjZicGZfYmxvb21fbWFwX2J0Zl9pZHNbMF0sXFxuIDIzMTpcXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODoyNy4xNTE4MzEwNjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg1MTY1MjMxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQmxvb20gRmlsdGVyIEZ1bmN0aW9ucyBmb3IgU3l6a2FsbGVyIEZvY3VzU3ltYm9scyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgbW9zdCBhcHByb3ByaWF0ZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGJsb29tIGZpbHRlciBjb2RlIHRvIGluY2x1ZGUgaW4gU3l6a2FsbGVyJ3MgYEZvY3VzU3ltYm9sc2AuIEkgaGF2ZSB0aHJlZSBmdW5jdGlvbnM6IGBibG9vbV9tYXBfYWxsb2NgLCBgYmxvb21fbWFwX3B1c2hfZWxlbWAsIGFuZCBgYmxvb21fbWFwX3BlZWtfZWxlbWAuIFRoZSBpbml0aWFsIGNvbmNlcm4gaXMgdGhhdCBgYmxvb21fbWFwX2FsbG9jYCBpcyBkZWNsYXJlZCBgc3RhdGljYC4gVGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyOiBmYXZvciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIEhvd2V2ZXIsIGEgcXVpY2sgc2NhbiByZXZlYWxzIHRoYXQgZXZlbiB0aG91Z2ggaXQncyBzdGF0aWMsIGBibG9vbV9tYXBfYWxsb2NgICppcyogYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgYmxvb21fZmlsdGVyX21hcF9vcHNgLiBUaGlzIG1lYW5zIGl0ICp3b24ndCogYmUgaW5saW5lZCBhbmQgKmRvZXMqIGhhdmUgYSBkaXN0aW5jdCBhZGRyZXNzLlxuXG5TeXprYWxsZXIsIGluIHRoZW9yeSwgKmNvdWxkKiBmdXp6IHRoaXMsIHNpbmNlIGl0cyBrY292IGFuYWx5c2lzIHBpY2tzIHVwIGFsbCBiYXNpYyBibG9ja3MuIEJ1dCBmb3IgYEZvY3VzU3ltYm9sc2AsIGl0IHJlbGllcyBvbiBleHBsaWNpdCBzeW1ib2wgbmFtZXMuIE5vdywgc3RhdGljIGZ1bmN0aW9ucyBnZXQgYSBiaXQgbWVzc3kgYmVjYXVzZSBrYWxsc3ltcyAqbWlnaHQqIGxpc3QgdGhlbSwgYnV0IHdpdGggc3RhdGljIGZ1bmN0aW9ucywgeW91IGNhbiBzb21ldGltZXMgZ2V0IG5hbWluZyBjb2xsaXNpb25zLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzLCBhcmUgdGhlcmUgYmV0dGVyIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzPyBgYnBmX21hcF9hbGxvY2AgbG9va3MgcHJvbWlzaW5nLCBidXQgaXQncyBhIHBvaW50ZXIgY2FsbCwgbm90IGEgZnVuY3Rpb24gaXRzZWxmLiBJIGtub3cgdGhlIGdlbmVyYWwgc3lzY2FsbCBlbnRyeSBwb2ludHMgZm9yIEJQRiBhcmUgYHN5c19icGZgIG9yIGBfX3N5c19icGZgLiBUaGUgaW5zdHJ1Y3Rpb25zIHNwZWNpZmljYWxseSB0ZWxsIG1lIHRvICphdm9pZCogZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMsIGFuZCBgc3lzX2JwZmAgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnkuIExpc3RpbmcgdGhhdCB3b3VsZCBza2V3IHRlc3QgZGlzdHJpYnV0aW9ucy5cblxuU28sIGV2ZW4gdGhvdWdoIHRoZXkncmUgc3RhdGljLCBpdCBzZWVtcyBsaWtlIGBibG9vbV9tYXBfYWxsb2NgLCBgYmxvb21fbWFwX3B1c2hfZWxlbWAsIGFuZCBgYmxvb21fbWFwX3BlZWtfZWxlbWAgYXJlIHN0aWxsIHRoZSBiZXR0ZXIgY2hvaWNlcy4gVGhleSdyZSBzcGVjaWZpYyB0byB0aGlzIGJsb29tIGZpbHRlciBpbXBsZW1lbnRhdGlvbiwgYW5kIGNydWNpYWxseSwgdGhleSBhcmVuJ3QgaW5saW5lZCBiZWNhdXNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgYmVpbmcgdGFrZW4gYnkgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYGJsb29tX2ZpbHRlcl9tYXBfb3BzYC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgdGhleSBhcmUsIGluZGVlZCwgc3RhdGljLCBqdXN0IHRvIGJlIHN1cmUuIFllcCwgdGhleSBhcmUuIE9rYXksIG9uZSBmaW5hbCB0aGluZzogbGV0J3MgZG8gYSBxdWljayBzY2FuIG9mIHRoZSBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2Agc291cmNlIGNvZGUgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoZXJlIGFyZSBubyB2aWFibGUgbm9uLXN0YXRpYyBhbHRlcm5hdGl2ZXMgdGhhdCB3ZXJlIG92ZXJsb29rZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NDcsIk91dHB1dFRva2VucyI6NjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODozNC4wMDM0ODY5MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgzMTU5MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlteYS16QS1aXSpbYS16QS1aXzAtOV0rIFthLXpBLVpfMC05XStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9NDE9c3RhdGljIGJvb2wgYmxvb21fdGVzdF9iaXQoc3RydWN0IGJwZl9ibG9vbV9maWx0ZXIgKmJsb29tLCB1MzIgYml0KVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtNDIte1xcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6NDM6XFx0cmV0dXJuIHRlc3RfYml0KGJpdCAlIEJJVFNfUEVSX0xPTkcsXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy00NC1cXHRcXHRcXHRibG9vbS1cXHUwMDNlYml0c2V0ICsgQklUX1dPUkQoYml0KSk7XFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jPTExMT1zdGF0aWMgc3RydWN0IGJwZl9tYXAgKmJsb29tX21hcF9hbGxvYyh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG4tLVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMTI1LVxcdCAgICAoYXR0ci1cXHUwMDNlbWFwX2V4dHJhIFxcdTAwMjYgfjB4RikpXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoxMjY6XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xMjctXFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTE2MC1cXHRpZiAoIWJsb29tKVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MTYxOlxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMTYyLVxcbi0tXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0xODI9c3RhdGljIHZvaWQgKmJsb29tX21hcF9sb29rdXBfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXkpXFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTE4NC1cXHQvKiBUaGUgZUJQRiBwcm9ncmFtIHNob3VsZCB1c2UgbWFwX3BlZWtfZWxlbSBpbnN0ZWFkICovXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoxODU6XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0xODYtfVxcbi0tXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYz0xOTU9c3RhdGljIGludCBibG9vbV9tYXBfY2hlY2tfYnRmKHN0cnVjdCBicGZfbWFwICptYXAsXFxuLS1cXG5rZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jLTIwMC1cXHQvKiBCbG9vbSBmaWx0ZXIgbWFwcyBhcmUga2V5bGVzcyAqL1xcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM6MjAxOlxcdHJldHVybiBidGZfdHlwZV9pc192b2lkKGtleV90eXBlKSA/IDAgOiAtRUlOVkFMO1xcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjAyLX1cXG4tLVxcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmM9MjA0PXN0YXRpYyB1NjQgYmxvb21fbWFwX21lbV91c2FnZShjb25zdCBzdHJ1Y3QgYnBmX21hcCAqbWFwKVxcbi0tXFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYy0yMTEtXFx0Yml0c2V0X2J5dGVzID0gcm91bmR1cChiaXRzZXRfYnl0ZXMsIHNpemVvZih1bnNpZ25lZCBsb25nKSk7XFxua2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuYzoyMTI6XFx0cmV0dXJuIHNpemVvZigqYmxvb20pICsgYml0c2V0X2J5dGVzO1xcbmtlcm5lbC9icGYvYmxvb21fZmlsdGVyLmMtMjEzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6MzQuMDgxODEwMDI1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTQxNjY0ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIEJsb29tIEZpbHRlciBJbXBsZW1lbnRhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRha2luZyBhIGxvb2sgYXQgYGJsb29tX2ZpbHRlci5jYCBhbmQgaW1tZWRpYXRlbHkgbm90aWNlIHRoYXQgYWxsIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyB0aGluZyBhcmUgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQgbWVhbnMgdGhleSdyZSBpbnRlcm5hbCB0byB0aGlzIGZpbGUsIHdoaWNoIGhlbHBzIHdpdGggbW9kdWxhcml0eSBhbmQgZW5jYXBzdWxhdGlvbi4gU28sIEkgbmVlZCB0byBsaXN0IHRoZSBleHRlcm5hbGx5IGFjY2Vzc2libGUgZnVuY3Rpb25zIC0gdGhlIG9uZXMgdGhhdCB3b3VsZCBiZSB1c2VkIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIEknbSBwcmV0dHkgc3VyZSB0aG9zZSBhcmUgYGJsb29tX21hcF9hbGxvY2AsIGBibG9vbV9tYXBfcHVzaF9lbGVtYCwgYW5kIGBibG9vbV9tYXBfcGVla19lbGVtYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBjb3JlIEFQSSBmdW5jdGlvbnMgZm9yIHRoaXMgYmxvb20gZmlsdGVyLlxuXG5Ob3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdGhhdCBtaWdodCBhZmZlY3QgaG93IHRoaXMgYmxvb20gZmlsdGVyIGJlaGF2ZXMgb3IgaXMgZW5hYmxlZC4gVGhlIG9uZSB0aGF0IHNwcmluZ3MgdG8gbWluZCBpbW1lZGlhdGVseSBpcyBgQ09ORklHX0JQRl9TWVNDQUxMYC4gSSdtIHByZXR0eSBzdXJlIHRoYXQgaGFzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkuIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQuIEp1c3QgdG8gYmUgc3VyZSwgYXJlIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnM/IEknbGwgcXVpY2tseSBjaGVjayBgaW5pdC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBkZXBlbmRlbmNpZXMgb3IgcmVsYXRlZCBzZXR0aW5ncyBsaW5rZWQgdG8gYEJQRl9TWVNDQUxMYCB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBHb3R0YSBnZXQgYSBmdWxsIHBpY3R1cmUgYmVmb3JlIGRpZ2dpbmcgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI1MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjM4LjA5NTk3OTczNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk4ODY4MzYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbml0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjM4LjE1NTg3NDg0MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODM1NjQ2NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgS2VybmVsIENvbmZpZ3VyYXRpb24gSXNzdWUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiByZXNwb25zaWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBrZXJuZWwgYmVoYXZpb3IuIEdpdmVuIHdoYXQgSSdtIHNlZWluZywgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiBzb21ldGhpbmcgcmVsYXRlZCB0byBlQlBGLiBJIGtub3cgdGhlIGVCUEYgaW5mcmFzdHJ1Y3R1cmUgaXMgY3JpdGljYWwgYW5kIGl0cyBjb25maWd1cmF0aW9uIGlzIGxpa2VseSB0byBiZSBleHBvc2VkIHZpYSB0aGUgYnVpbGQgcHJvY2Vzcy4gVGhpbmtpbmcgYWJvdXQgaXQgbG9naWNhbGx5LCB3aGVyZSB3b3VsZCBJIGZpcnN0IGxvb2sgZm9yIHRoZSBwcmltYXJ5IGVCUEYgY29uZmlndXJhdGlvbiBvcHRpb25zP1xuXG5UaGUgYEtjb25maWdgIGZpbGVzIGFyZSB0aGUgY2VudHJhbCBuZXJ2b3VzIHN5c3RlbSBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24sIGFuZCwgc3BlY2lmaWNhbGx5LCB0aGUgb25lIGluIHRoZSBga2VybmVsL2JwZi9gIGRpcmVjdG9yeSBtYWtlcyB0aGUgbW9zdCBzZW5zZS4gSXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBnaXZlbiBpdHMgbG9jYXRpb24gd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIGl0cyBhc3NvY2lhdGlvbiB3aXRoIGVCUEYuIFRoZSBoaWVyYXJjaHkgc2hvdWxkIHByb3ZpZGUgbWUgd2l0aCB0aGUgc3BlY2lmaWMgZmxhZ3MgYW5kIG9wdGlvbnMgSSBuZWVkIHRvIGV4YW1pbmUuIEknbGwgc3RhcnQgZGlnZ2luZyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTY3MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjQwLjk5MTUyODQwNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ1MzYyOTg2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cXG5rZXJuZWwvYnBmL0tjb25maWc6Mjc6Y29uZmlnIEJQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6NDMuNDQ1MTY1Njc0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTkxOTk4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBCUEYgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEJQRiAoQmVya2VsZXkgUGFja2V0IEZpbHRlcikgY29uZmlndXJhdGlvbiBpcyBzdHJ1Y3R1cmVkLiBMZXQncyBzdGFydCBieSBsb29raW5nIGF0IHRoZSBga2VybmVsL2JwZi9LY29uZmlnYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDI3LiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHByb2JhYmx5IGRlZmluZWQgc29tZXdoZXJlIGluIHRoYXQgYXJlYS4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBmb3VuZGF0aW9uYWwgc2V0dGluZ3MgcmVsYXRlZCB0byBlbmFibGluZyBvciBkaXNhYmxpbmcgQlBGIGZ1bmN0aW9uYWxpdHksIG1heWJlIHNvbWUgb2YgdGhlIGNvcmUgZmVhdHVyZSB0b2dnbGVzLCBvciBwZXJoYXBzIHRoZSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMuIEkgd2FudCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2Ygd2hhdCdzICpjb25maWd1cmFibGUqIGFuZCBob3cgdGhhdCBjb25maWd1cmFiaWxpdHkgaXMgcHJlc2VudGVkLiBMZXQncyBzZWUgd2hhdCdzIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk5ODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQxMToxODo0Ni41NDQzNjk0NzJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL2JwZi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdCMgVXNlZCBieSBhcmNocyB0byB0ZWxsIHRoYXQgdGhleSB3YW50IHRoZSBCUEYgSklUIGNvbXBpbGVyIGVuYWJsZWQgYnlcXG4gIDIxOlxcdCMgZGVmYXVsdCBmb3Iga2VybmVscyB0aGF0IHdlcmUgY29tcGlsZWQgd2l0aCBCUEYgSklUIHN1cHBvcnQuXFxuICAyMjpcXHRjb25maWcgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVFxcbiAgMjM6XFx0XFx0Ym9vbFxcbiAgMjQ6XFx0XFxuICAyNTpcXHRtZW51IFxcXCJCUEYgc3Vic3lzdGVtXFxcIlxcbiAgMjY6XFx0XFxuICAyNzpcXHRjb25maWcgQlBGX1NZU0NBTExcXG4gIDI4OlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBicGYoKSBzeXN0ZW0gY2FsbFxcXCJcXG4gIDI5OlxcdFxcdHNlbGVjdCBCUEZcXG4gIDMwOlxcdFxcdHNlbGVjdCBJUlFfV09SS1xcbiAgMzE6XFx0XFx0c2VsZWN0IE5FRURfVEFTS1NfUkNVXFxuICAzMjpcXHRcXHRzZWxlY3QgVEFTS1NfVFJBQ0VfUkNVXFxuICAzMzpcXHRcXHRzZWxlY3QgQklOQVJZX1BSSU5URlxcbiAgMzQ6XFx0XFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcXG4gIDM1OlxcdFxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbiAgMzY6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcXG4gIDM3OlxcdFxcdGRlZmF1bHQgblxcbiAgMzg6XFx0XFx0aGVscFxcbiAgMzk6XFx0XFx0ICBFbmFibGUgdGhlIGJwZigpIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHRvIG1hbmlwdWxhdGUgQlBGIHByb2dyYW1zXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDExOjE4OjQ2LjU0NDQ0NzMzMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDMzNDczODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBjb25jZXJuaW5nIHRoZSBibG9vbSBmaWx0ZXIgbWFwIGltcGxlbWVudGF0aW9uIGZvciBCUEYgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQgbG9va3MgbGlrZSBgQlBGX1NZU0NBTExgIGlzIHRoZSBvbmx5IGNvbmZpZyBJJ2xsIG5lZWQgdG8gY29uY2VybiBteXNlbGYgd2l0aC4gVGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyBhIGZpeCBmb3IgYSBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpbiBgYmxvb21fbWFwX2FsbG9jYCB3aGVuIGNhbGN1bGF0aW5nIGBiaXRzZXRfYnl0ZXNgLCBhbG9uZyB3aXRoIGNvcnJlY3Rpb25zIHRvIHByZXZlbnQgbmVnYXRpdmUgb2Zmc2V0cyBpbiBgYmxvb21fdGVzdF9iaXRgIGFuZCBgYmxvb21fc2V0X2JpdGAgc3BlY2lmaWNhbGx5IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLlxuXG5HaXZlbiB0aGVzZSBtb2RpZmljYXRpb25zLCBwYXJ0aWN1bGFybHkgdGhlIGNoYW5nZXMgdG8gY29yZSBiaXQgbWFuaXB1bGF0aW9uIHdpdGhpbiB0aGUgYmxvb20gZmlsdGVyLCBmdXp6aW5nIHRoaXMgaXMgYW4gYWJzb2x1dGUgbXVzdC4gVGhlcmUncyBwb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IsIGVkZ2UgY2FzZXMsIGFuZCwgZ2l2ZW4gdGhlIEJQRiBjb250ZXh0LCBldmVuIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBpZiB0aGVzZSBiaXQgb3BlcmF0aW9ucyBhcmUgbWlzaGFuZGxlZC5cblxuVGhlcmVmb3JlLCBJJ2xsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIEknbGwgYWxzbyBkZWZpbmUgdGhlIGBGb2N1c1N5bWJvbHNgIHRvIGluY2x1ZGUgdGhlIGtleSBmdW5jdGlvbnMgaW1wYWN0ZWQ6IGBcImJsb29tX21hcF9hbGxvY1wiYCwgYFwiYmxvb21fbWFwX3B1c2hfZWxlbVwiYCwgYW5kIGBcImJsb29tX21hcF9wZWVrX2VsZW1cImAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgaW52b2x2ZWQgaW4gdGhlIHByb2JsZW1hdGljIGNhbGN1bGF0aW9ucyBhbmQgYml0IG9wZXJhdGlvbnMuIEFzIGNvbmZpcm1lZCBhYm92ZSwgSSB3aWxsIGVuYWJsZSBvbmx5IHRoZSBgQlBGX1NZU0NBTExgIGNvbmZpZy5cblxuVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkOiB0aGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgYmxvb20gZmlsdGVyIG1hcCBpbXBsZW1lbnRhdGlvbi4gSXQncyB0b3VjaGluZyB0aGUgYml0c2V0IHNpemUgY2FsY3VsYXRpb24gYW5kIGJpdCBvcGVyYXRpb25zLCBhbmQgaW4gYSB3YXkgdGhhdCBpcyBzcGVjaWZpYyB0byAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gSXQncyBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgaXQgaXMgcmVhY2hhYmxlLCB0aGVyZWZvcmUsIGl0IG5lZWRzIHRvIGJlIGZ1enplZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0ODEsIk91dHB1dFRva2VucyI6MTA3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMTE6MTg6NTEuNTc3OTI0NzM5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5NDE0NzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsb29tX21hcF9hbGxvY1wiLFxuICAgIFwiYmxvb21fbWFwX3B1c2hfZWxlbVwiLFxuICAgIFwiYmxvb21fbWFwX3BlZWtfZWxlbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgYmxvb20gZmlsdGVyIG1hcCBpbXBsZW1lbnRhdGlvbiwgZml4aW5nIGJpdHNldCBzaXplIGNhbGN1bGF0aW9uIGFuZCBiaXQgb3BlcmF0aW9ucyBmb3IgMzItYml0IGFyY2hpdGVjdHVyZXMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibG9vbV9tYXBfYWxsb2NcIixcbiAgICBcImJsb29tX21hcF9wdXNoX2VsZW1cIixcbiAgICBcImJsb29tX21hcF9wZWVrX2VsZW1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIGJsb29tIGZpbHRlciBtYXAgaW1wbGVtZW50YXRpb24sIGZpeGluZyBiaXRzZXQgc2l6ZSBjYWxjdWxhdGlvbiBhbmQgYml0IG9wZXJhdGlvbnMgZm9yIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowpgcsx[1] Phase: Succeeded StartedAt: 2026-08-02 11:19:02 +0000 UTC FinishedAt: 2026-08-02 11:19:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 11:19:02 +0000 UTC FinishedAt: 2026-08-02 11:19:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2] Phase: Succeeded StartedAt: 2026-08-02 11:19:02 +0000 UTC FinishedAt: 2026-08-02 15:14:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 11:19:02 +0000 UTC FinishedAt: 2026-08-02 15:14:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 11:19:02 +0000 UTC FinishedAt: 2026-08-02 11:19:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 11:19:02 +0000 UTC FinishedAt: 2026-08-02 11:19:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpgcsx/series-workflowpgcsx-convert-artifact-1930879240/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 11:19:12 +0000 UTC FinishedAt: 2026-08-02 11:42:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 11:19:12 +0000 UTC FinishedAt: 2026-08-02 11:42:24 +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:*622d2c90-4d5e-49e0-9595-2f75efcbabb3,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-workflowpgcsx/series-workflowpgcsx-convert-artifact-1930879240/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": "f48bdcf3-76c8-4e88-bc63-3d7de52ee93e", "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-workflowpgcsx/series-workflowpgcsx-build-action-394312574/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 11:19:12 +0000 UTC FinishedAt: 2026-08-02 11:42:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*622d2c90-4d5e-49e0-9595-2f75efcbabb3,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-workflowpgcsx/series-workflowpgcsx-convert-artifact-1930879240/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": "f48bdcf3-76c8-4e88-bc63-3d7de52ee93e", "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-workflowpgcsx/series-workflowpgcsx-build-action-394312574/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 11:42:24 +0000 UTC FinishedAt: 2026-08-02 11:42:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 11:42:24 +0000 UTC FinishedAt: 2026-08-02 11:42:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 11:42:24 +0000 UTC FinishedAt: 2026-08-02 11:42:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 11:42:24 +0000 UTC FinishedAt: 2026-08-02 11:42:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowpgcsx/series-workflowpgcsx-convert-artifact-3095011311/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 11:42:34 +0000 UTC FinishedAt: 2026-08-02 11:44:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 11:42:34 +0000 UTC FinishedAt: 2026-08-02 11:44:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f48bdcf3-76c8-4e88-bc63-3d7de52ee93e,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-workflowpgcsx/series-workflowpgcsx-build-action-394312574/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-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 11:44:28 +0000 UTC FinishedAt: 2026-08-02 11:44:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 11:44:28 +0000 UTC FinishedAt: 2026-08-02 11:44:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 11:44:28 +0000 UTC FinishedAt: 2026-08-02 12:10:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 11:44:28 +0000 UTC FinishedAt: 2026-08-02 12:10:00 +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:*622d2c90-4d5e-49e0-9595-2f75efcbabb3,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-workflowpgcsx/series-workflowpgcsx-convert-artifact-3095011311/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": "21828aea-afb9-4bba-a783-8d7b4296ec1e", "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-workflowpgcsx/series-workflowpgcsx-build-action-93950851/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 11:44:28 +0000 UTC FinishedAt: 2026-08-02 12:09: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:*622d2c90-4d5e-49e0-9595-2f75efcbabb3,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-workflowpgcsx/series-workflowpgcsx-convert-artifact-3095011311/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": "21828aea-afb9-4bba-a783-8d7b4296ec1e", "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-workflowpgcsx/series-workflowpgcsx-build-action-93950851/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 12:10:00 +0000 UTC FinishedAt: 2026-08-02 12:10:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 12:10:00 +0000 UTC FinishedAt: 2026-08-02 12:10:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 12:10:00 +0000 UTC FinishedAt: 2026-08-02 12:11:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 12:10:00 +0000 UTC FinishedAt: 2026-08-02 12:11:39 +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:*21828aea-afb9-4bba-a783-8d7b4296ec1e,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-workflowpgcsx/series-workflowpgcsx-build-action-93950851/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-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 12:11:49 +0000 UTC FinishedAt: 2026-08-02 15:14:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 12:11:49 +0000 UTC FinishedAt: 2026-08-02 15:14:42 +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":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"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:*f48bdcf3-76c8-4e88-bc63-3d7de52ee93e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*21828aea-afb9-4bba-a783-8d7b4296ec1e,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-workflowpgcsx/series-workflowpgcsx-build-action-394312574/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-workflowpgcsx/series-workflowpgcsx-build-action-93950851/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 12:11:49 +0000 UTC FinishedAt: 2026-08-02 12:11:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 12:11:49 +0000 UTC FinishedAt: 2026-08-02 12:11:56 +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":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"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-workflowpgcsx/series-workflowpgcsx-convert-artifact-4195658664/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 12:11:49 +0000 UTC FinishedAt: 2026-08-02 12:11:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 12:11:49 +0000 UTC FinishedAt: 2026-08-02 12:11:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 12:11:49 +0000 UTC FinishedAt: 2026-08-02 12:11:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 12:11:59 +0000 UTC FinishedAt: 2026-08-02 15:14:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpgcsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bloom_map_alloc","bloom_map_push_elem","bloom_map_peek_elem"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fdeba03fea78407a8c52faa99177c9f7f29f90eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"afebd9ae-60c1-4e73-9b5c-6bf58a83f9d2","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 12:11:59 +0000 UTC FinishedAt: 2026-08-02 15:14:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f48bdcf3-76c8-4e88-bc63-3d7de52ee93e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*21828aea-afb9-4bba-a783-8d7b4296ec1e,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-workflowpgcsx/series-workflowpgcsx-build-action-394312574/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-workflowpgcsx/series-workflowpgcsx-build-action-93950851/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-workflowpgcsx/series-workflowpgcsx-convert-artifact-4195658664/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,}